From 8472a76530e2b05dc03f4e78e95c13ac98b3a0be Mon Sep 17 00:00:00 2001 From: Aleenamthw Date: Tue, 2 Sep 2025 13:07:17 +0200 Subject: [PATCH 1/7] =?UTF-8?q?bozza=20test=20unit=C3=A0=20backend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pianodiqualifica_1.3.0.typ | 231 +++++++++++++++++- 1 file changed, 229 insertions(+), 2 deletions(-) diff --git a/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ b/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ index fcce0df..865ee07 100644 --- a/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ +++ b/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ @@ -158,7 +158,7 @@ Misura la differenza tra il valore guadagnato (EV) e il valore pianificato (PV) È utile per identificare eventuali ritardi o anticipi rispetto alla pianificazione, nello specifico valori negativi indicano ritardi. ==== Cost performance index (MPC-CPI) -Misura l’efficienza del costo per il lavoro svolto fino a un determinato momento, in base al valore ottenuto per ogni unità monetaria spesa. +Misura l'efficienza del costo per il lavoro svolto fino a un determinato momento, in base al valore ottenuto per ogni unità monetaria spesa. #figure(kind: table, caption: [Valori accettabili e ottimi del processo di fornitura], table( columns: (auto, 1fr, auto, auto), align: center, @@ -260,7 +260,7 @@ Il valore è ottenuto dal rapporto tra il numero di metriche di qualità soddisf )) == Processi organizzativi -I processi organizzativi riguardano la gestione e l’organizzazione del progetto come la gestione dei processi, il miglioramento e la formazione. +I processi organizzativi riguardano la gestione e l'organizzazione del progetto come la gestione dei processi, il miglioramento e la formazione. === Efficienza temporale (MPC-ET) Valuta l'efficienza con cui il tempo disponibile viene impiegato in attività produttive, ovvero quelle contribuiscono al raggiungimento degli obiettivi del progetto. @@ -414,9 +414,236 @@ Un valore alto implica che i moduli sono strettamente interconnessi, rendendo di = Metodi di testing La seguente sezione descrive le attività di testing effettuate per garantire la qualità del prodotto. + + +== Nomenclatura + + +Ciascun test è identificato univocamente da un codice composto come segue: + +#set align(center) +[*T[Tipologia]-[ID]*] +#set align(left) + +dove: +- *T* : indica che si tratta di un test. + +- *Tipologia* : indica la tipologia del test, che può essere: + - *U* : test di unità; + - *I* : test di integrazione; + - *S* : test di sistema; + - *A* : test di accettazione; +- *ID* : un numero progressivo del test, univoco all'interno della sua tipologia. + +Per ogni test viene specificato lo stato di esecuzione, che può assumere i seguenti valori: +- *S*: superato; +- *F*: fallito; +- *N*: non eseguito. + + + + == Test di unità I test di unità verificano il funzionamento corretto di componenti software più piccoli e indipendenti, sviluppati soprattutto nella fase di progettazione. +=== Test backend +Di seguito viene fornita una tabella contenente i test di unità del backend, di ogni test viene riportato il codice univoco, descrizione e stato di esecuzione. + + +#show figure: set block(breakable: true) +#figure(kind: table, caption: [Test di unità del backend], table( + columns: (auto, 1fr, auto), + align: center, + rows: auto, + inset: 7pt, + table.header([*Codice*], [*Descrizione*], [*Stato*]), + + //bozza con test_log.py + [TU-01], [Verifica che la configurazione del logging sia in modalità produzione, in assenza di variabili d'ambiente specifiche], [S], + + [TU-0X], [Verifica che la configurazione del logging sia in modalità sviluppo, se la variabile d'ambiente _ENV_ è impostata a "dev"], [S], + + [TU-0X], [Verifica che la variabile d'ambiente _ENV_ sia case insensitive], [S], + [TU-0X], + [Verifica che modalità sviluppo sia attiva se la variabile d'ambiente _DEV_ è impostata a uno dei seguenti valori: "true, "1", "yes" o "TRUE"], + [S], + + [TU-0X], + [Verifica che modalità sviluppo non sia attiva se la variabile d'ambiente _DEV_ è impostata a valori diversi da "true", "1", "yes" o "TRUE"], + [S], + + [TU-0X], [Verifica che se _ENV_ è posta a "production" e _DEV_ a "1" prevalga la modalità sviluppo], [S], + [TU-0X], [Verifica che se le variabili sono impostate, sovrascrivano quelle di default], [S], + [TU-0X], [Verifica che il valore della variabile d'ambiente `LOG_LEVEL` sia convertito in maiuscolo], [S], + [TU-0X], [Verifica che il formatter del logging sia configurato con una stringa con il corretto formato], [S], + [TU-0X], [Verifica che l'aggiunta di uno `StreamHandler`, se non presente], [S], + [TU-0X], [Verifica che non venga aggiunto uno `StreamHandler`, se già presente], [S], + + // block Factory + [TU-0X], [Verifica che la classe `BlockFactory`implementi senza errori il pattern _singleton_], [S], + [TU-0X], [Verifica che la creazione del _singleton_ sia thread-safe], [S], + [TU-0X], [Verifica che l'istanza di `BlockFactory` sia inizializzata correttamente], [S], + [TU-0X], [Verifica che la funzione di registrazione dei blocchi di `BlockFactory` funzioni correttamente], [S], + [TU-0X], [Verifica che la funzione di registrazione di `BlockFactory` accetti solo classi che derivano da _Block_], [S], + [TU-0X], [Verifica che la funzione di registrazione di `BlockFactory` sia thread-safe], [S], + [TU-0X], [Verifica la corretta creazione di un blocco], [S], + [TU-0X], [Verifica che la creazione di un blocco con un tipo non registrato sollevi un errore], [S], + [TU-0X], [Verifica il comportamento della funzione `get_supported_types` quando il registro dei blocchi è vuoto], [S], + [TU-0X], [Verifica il comportamento della funzione `get_supported_types` quando sono presenti dei blocchi registrati], [S], + [TU-0X], + [Verifica che la funzione `lookup_implemented` ritorni _true_ per i tipi di blocco registrati e _false_ per quelli non registrati], + [S], + + [TU-0X], [Verifica che la registrazione di un blocco venga loggata dal sistema], [S], + [TU-0X], [Verifica che la creazione di un blocco venga loggata dal sistema], [S], + + //test block.py + [TU-0X], [Verifica l'inizializzazione di un blocco sia con parametri personalizzati sia senza], [S], + [TU-0X], [Verifica che il metodo `_get_setting` recuperi correttamente i valori dalle impostazioni], [S], + [TU-0X], [Verifica il flusso di esecuzione di un blocco], [S], + [TU-0X], [Verifica la funzionalità di logging all'interno di un blocco], [S], + [TU-0X], [Verifica la corretta implementazione del pattern _visitor_], [S], + [TU-0X], [Verifica la corretta rappresentazione degli oggetti blocco], [S], + [TU-0X], [Verifica che la classe astratta `Block` non sia istanziabile], [S], + [TU-0X], [Verifica il comportamento classe astratta `Block` sia corretto], [S], + + //test executionLog + [TU-0X], [Verifica la correttezza delle classi `ExecutionLog` e di `Status` usati per tracciare l'esecuzione dei blocchi], [S], + + //flaskAppSingleton + [TU-0X], [Verifica che la classe `FlaskAppSingleton` rispetti il pattern _singleton_], [S], + [TU-0X], [Verifica che la classe `FlaskAppSingleton` venga inizializzata correttamente], [S], + [TU-0X], [Verifica che la classe `FlaskAppSingleton` gestisca correttamente le richieste], [S], + [TU-0X], [Verifica che la classe `FlaskAppSingleton` non consenta l'istanziazione multipla], [S], + + //mongoDB + + [TU-0X], [Verifica che la classe `MongoDBSingleton` rispetti il pattern _singleton_], [S], + [TU-0X], [Verifica che la corretta istanzazione della classe `MongoDBSingleton` in presenza di un oggetto _Flask_ app], [S], + [TU-0X], [Verifica che la corretta istanzazione della classe `MongoDBSingleton` in assenza di un oggetto _Flask_ app], [S], + [TU-0X], [Verifica che il metodo `get_db` della classe `MongoDBSingleton` restituisca l'oggetto database corretto], [S], + [TU-0X], [Verifica che l'attributo `mongo` venga inizializzato correttamente], [S], + [TU-0X], [Verifica che l'istanza _singleton_ persista anche se acceduta in modi diversi], [S], + [TU-0X], [Verifica che venga sollevata un'eccezione se fallisce l'inizializzazione di `PyMongo`], [S], + [TU-0X], [Verifica che venga sollevata un'eccezione se si prova a chiamare il metodo `get_db` e l'attributo `mongo` è _None_], [S], + + // test jwt.utils + [TU-0X], [Verifica che la funzione `generateJwt` generi correttamente un token JWT contente email e scadenza], [S], + [TU-0X], [Verifica che la funzione `verifyJwt` decodifichi e verifichi correttamente un token], [S], + [TU-0X], [Verifica che la funzione `generateJwt` gestisca correttamente il caso in cui l'email sia una stringa vuota], [S], + + //llmfacade + [TU-0X], [Verifica che la funzione `agent_facade` funzioni correttamente in condizioni normali, simulando l'interazione con AWS], [S], + [TU-0X], [Verifica che la funzione `agent_facade` gestisca correttamente il caso in cui il prompt sia vuoto], [S], + [TU-0X], + [Verifica che la funzione `agent_facade` gestisca correttamente il caso in cui il prompt contenga caratteri speciali e emoji], + [S], + + // JsonParser + [TU-0X], [Verifica che la classe astratta `JsonParserStrategy` non possa essere istanziata direttamente], [S], + [TU-0X], [Verifica che le sottoclassi di `JsonParserStrategy` implementino il metodo `parse`], [S], + [TU-0X], [Verifica che il metodo `parse` gestisca correttamente le stringhe JSON], [S], + + //AI summarize + + [TU-0X], + [Verifica che il comportamento della classe `AISummarize` assicurando che il metodo `execute` restituisca un riassunto corretto], + [S], + + //syswait + [TU-0X], + [Verifica che la classe `SystemWaitSeconds` gestisca correttamente i vari tipi di input come interi, numeri float e stringhe], + [S], + + [TU-0X], + [Verifica che funzione `validate_inputs` della classe `SystemWaitSeconds` restituisca _True_ per i tipi di input validi come interi, numeri float e stringhe], + [S], + + [TU-0X], + [Verifica che funzione `validate_inputs` della classe `SystemWaitSeconds` restituisca _False_ in presenza di valori negativi, stringhe non numeriche o in assenza di input], + [S], + + [TU-0X], [Verifica che funzione `execute` della classe `SystemWaitSeconds` sia eseguita correttamente], [S], + + //telegram + [TU-0X], + [Verifica che la funzione `validate_inputs` della classe `TelegramSendMessage` restituisca _True_ se sono presenti tutti gli input richiesti, ovvero `botToken`, `chatId` e `message`], + [S], + + [TU-0X], + [Verifica che la funzione `validate_inputs` della classe `TelegramSendMessage` restituisca _False_ se non sono presenti tutti gli input richiesti], + [S], + + [TU-0X], [Verifica che funzione `execute` della classe `TelegramSendMessage` sia eseguita correttamente], [S], + [TU-0X], + [Verifica che funzione `execute` della classe `TelegramSendMessage` sia eseguita correttamente quando `"message": "{{LASTOUTPUT}}"`], + [S], + + [TU-0X], [Verifica il comportamento di `execute` in presenza di errori di rete ], [S], + + //notion + + [TU-0X], + [Verifica che la funzione `validate_inputs` della classe `NotionGetPage` restituisca _True_ se sono presenti tutti gli input richiesti, ovvero `pageID` e `internalIntegrationToken`], + [S], + + [TU-0X], + [Verifica che la funzione `validate_inputs` della classe `NotionGetPage` restituisca _False_ se non sono presenti tutti gli input richiesti], + [S], + + [TU-0X], [Verifica che la funzione `execute` della classe `NotionGetPage` sia implementata correttamente], [S], + + [TU-0X], + [Verifica che la funzione `execute` della classe `NotionGetPage` restituisca uno stato di errore in presenza di un errore nella Notion API], + [S], + + [TU-0X], + [Verifica che la funzione `execute` della classe `NotionGetPage` restituisca uno stato di errore in presenza di token invalido], + [S], + + //flow iterator + [TU-0X], [Verifica che la classe `FlowIterator` sia inizializzata correttamente], [S], + [TU-0X], [Verifica che l'esecuzione dei blocchi avvenga in sequenza e che ogni blocco venga eseguito], [S], + [TU-0X], + [Verifica la gestione dell'esecuzione dei blocchi in presenza di errori nell'esecuzione di un blocco, verificando che l'esecuzione si interrompa e che siano presenti i log di errore], + [S], + + //llm sanitize + [TU-0X], + [Verifica che il metodo `add_json` della classe `BaseSanitizationStrategy` funzioni correttamente gestendo vari tipi di input], + [S], + + [TU-0X], [Verifica che il metodo `add_json` della classe `BaseSanitizationStrategy` non sovrascrivi valori esistenti ], [S], + [TU-0X], + [Verifica che il metodo `add_field_if_missing` della classe `BaseSanitizationStrategy` imposti il tipo di default, se mancante], + [S], + + [TU-0X], + [Verifica che più chiamate a `_position_counter` della classe `BaseSanitizationStrategy` generino una griglia di posizioni corretta], + [S], + + //flowManager. + [TU-0X], [Verifica che l'inizializzazione della classe `FlowManager` crei tutti i componenti necessari], [S], + [TU-0X], [Verifica che il metodo `parse_json` della classe `FlowManager` crei i blocchi corretti dopo aver ricevuto i dati JSON], [S], + [TU-0X], + [Verifica che il metodo `parse_json` della classe `FlowManager` sollevi un errore se si cerca di implementare un blocco di tipo non implementato], + [S], + + [TU-0X], + [Verifica che il metodo `start_workflow` della classe `FlowManager` ritorni uno stato _completed_ se il flusso viene eseguito correttamente], + [S], + + [TU-0X], + [Verifica che il metodo `start_workflow` della classe `FlowManager` ritorni uno stato _failed_ se il flusso non viene eseguito], + [S], + + [TU-0X], [Verifica che il metodo `get_status` della classe `FlowManager` ritorni gli stati], [S], + + [TU-0X], [Verifica che la classe `FlowManagerFactory` rispetti il pattern _singleton_], [S], + [TU-0X], [Verifica che la classe `FlowManagerFactory` restituisca un'istanza di `FlowManager`], [S], +)) + + == Test di integrazione I test di integrazione vengono eseguiti successivamente ai test di unità e verificano l'interazione tra più unità software per garantire una corretta integrazione e funzionamento del sistema. From 96d8b12c5572661fdce945cee2915cd6a5ac731c Mon Sep 17 00:00:00 2001 From: Aleenamthw Date: Tue, 2 Sep 2025 15:59:11 +0200 Subject: [PATCH 2/7] bozza test accettazione e sistema --- .../manualeutente_1.0.0.typ | 2 +- .../pianodiqualifica_1.3.0.typ | 222 +++++++++++++++++- 2 files changed, 216 insertions(+), 8 deletions(-) diff --git a/3-PB/documentidiprogetto/manualeutente_1.0.0.typ b/3-PB/documentidiprogetto/manualeutente_1.0.0.typ index 927d0f2..5e3348a 100644 --- a/3-PB/documentidiprogetto/manualeutente_1.0.0.typ +++ b/3-PB/documentidiprogetto/manualeutente_1.0.0.typ @@ -171,7 +171,7 @@ L'errore generico si verifica quando si presenta un problema diverso da quelli p == Verifica account L'utente riceverà un codice di verifica all'indirizzo email fornito nella fase di registrazione (vedi #link()[sezione 3.2]). -L'utente dovrà inserire email e codice di verifica negli appositi campi, come mostrato in figura. Se la verifica viene effettutata subito dopo la registrazione, il campo relativo all'email verrà precompilato dal sistema. +L'utente dovrà inserire email e codice di verifica negli appositi campi, come mostrato in figura. Se la verifica viene effettuata subito dopo la registrazione, il campo relativo all'email verrà precompilato dal sistema. #figure(image("../../assets/img/manualeutente/confirm_account.png", width: 40%), caption: [Schermata di verifica account]) Dopo la verifica dell'account, il sistema reindirizza automaticamente l'utente alla pagina _dashboard_ iniziale, che risulterà vuota in quanto non sono ancora presenti _workflow_ associati all'account appena creato (vedi figura). diff --git a/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ b/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ index 865ee07..483666d 100644 --- a/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ +++ b/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ @@ -446,12 +446,13 @@ Per ogni test viene specificato lo stato di esecuzione, che può assumere i segu == Test di unità I test di unità verificano il funzionamento corretto di componenti software più piccoli e indipendenti, sviluppati soprattutto nella fase di progettazione. -=== Test backend -Di seguito viene fornita una tabella contenente i test di unità del backend, di ogni test viene riportato il codice univoco, descrizione e stato di esecuzione. +Di seguito viene fornita una tabella contenente i test di unità effettuati, di ogni test viene riportato il codice univoco, descrizione e stato di esecuzione. + +È stato raggiunto un _code coverage_ del 95%. #show figure: set block(breakable: true) -#figure(kind: table, caption: [Test di unità del backend], table( +#figure(kind: table, caption: [Test di unità], table( columns: (auto, 1fr, auto), align: center, rows: auto, @@ -464,9 +465,10 @@ Di seguito viene fornita una tabella contenente i test di unità del backend, di [TU-0X], [Verifica che la configurazione del logging sia in modalità sviluppo, se la variabile d'ambiente _ENV_ è impostata a "dev"], [S], [TU-0X], [Verifica che la variabile d'ambiente _ENV_ sia case insensitive], [S], - [TU-0X], - [Verifica che modalità sviluppo sia attiva se la variabile d'ambiente _DEV_ è impostata a uno dei seguenti valori: "true, "1", "yes" o "TRUE"], - [S], + [TU-0X], [Verifica che modalità sviluppo sia attiva se la variabile d'ambiente _DEV_ è impostata a "true], [S], + [TU-0X], [Verifica che modalità sviluppo sia attiva se la variabile d'ambiente _DEV_ è impostata a "1"], [S], + [TU-0X], [Verifica che modalità sviluppo sia attiva se la variabile d'ambiente _DEV_ è impostata a "yes"], [S], + [TU-0X], [Verifica che modalità sviluppo sia attiva se la variabile d'ambiente _DEV_ è impostata a "TRUE"], [S], [TU-0X], [Verifica che modalità sviluppo non sia attiva se la variabile d'ambiente _DEV_ è impostata a valori diversi da "true", "1", "yes" o "TRUE"], @@ -647,13 +649,219 @@ Di seguito viene fornita una tabella contenente i test di unità del backend, di == Test di integrazione I test di integrazione vengono eseguiti successivamente ai test di unità e verificano l'interazione tra più unità software per garantire una corretta integrazione e funzionamento del sistema. + + == Test di sistema -I test di sistema verificano il funzionamento del sistema software nel suo complesso per garantire il soddisfacimento delle specifiche funzionali, prestazionali e di qualità concordate, presenti nel documento dell' #link("https://sigma18unipd.github.io/documentiCompilati/2-RTB/documentidiprogetto/analisideirequisiti_1.2.0.pdf")[analisi dei requisiti] [versione 1.2.0]. +I test di sistema verificano il funzionamento del sistema software nel suo complesso per garantire il soddisfacimento delle specifiche funzionali, prestazionali e di qualità concordate, presenti nel documento dell' #link("https://sigma18unipd.github.io/documentiCompilati/3-PB/documentidiprogetto/analisideirequisiti_2.0.0.pdf")[analisi dei requisiti] [versione 2.0.0]. + +Di seguito viene fornita una tabella contenente i test di sistema effettuati, di ogni test viene riportato il codice univoco, descrizione e stato di esecuzione. + + + +#show figure: set block(breakable: true) +#figure(kind: table, caption: [Test di sistema], table( + columns: (auto, 1fr, auto), + align: center, + rows: auto, + inset: 7pt, + table.header([*Codice*], [*Descrizione*], [*Stato*]), + + //LOGIN + [TS-0X], [Verificare che l'utente possa effettuare _login_ con il proprio account per accedere al servizio], [S], + + [TS-0X], [Verificare che l'utente autenticato possa inserire la sua _e-mail_ per accedere all'applicativo], [S], + + [TS-0X], [Verificare che l'utente possa inserire la sua _password_ per accedere all'applicativo], [S], + [TS-0X], [Verificare che il sistema restituisca un errore se si tenta di eseguire il login con una mail non registrata], [S], + + [TS-0X], [Verificare che il sistema restituisca un errore se rileva ripetuti tentativi di accesso], [S], + + [TS-0X], [Verificare che il sistema restituisca un errore se si tenta di eseguire il login con una mail non verificata], [S], + + //REGISTRAZIONE + + [TS-0X], [Verificare che l'utente non autenticato possa registrarsi con un nuovo account], [S], + + [TS-0X], [Verificare che l'utente non autenticato possa inserire la sua _e-mail_ per registrarsi nell'applicativo], [S], + + [TS-0X], [Verificare che l'utente possa creare la sua _password_ per registrarsi nell'applicativo], [S], + + [TS-0X], [Verificare che l'utente possa reinserire la sua password per la registrazione nell'applicativo], [S], + + [TS-0X], [Verificare che il sistema restituisca un errore per credenziali non valide inserite dall'utente], [S], + + [TS-0X], [Verificare che il sistema restituisca un errore se l'_e-mail_ è già in uso in fase di registrazione], [S], + + [TS-0X], [Verificare che il sistema restituisca un errore se le _password_ non corrispondono tra loro in fase di registrazione], [S], + + [TS-0X], + [Verificare che il sistema restituisca un errore se la _password_ creata è inferiore a 8 caratteri in fase di registrazione], + [S], + + [TS-0X], [Verificare che il sistema restituisca un errore se l'_e-mail_ è già in uso in fase di verifica], [S], + + [TS-0X], [Verificare che il sistema restituisca un errore se si lascia il campo password vuoto], [S], + + [TS-0X], [Verificare che il sistema restituisca un errore nel caso si riscontrino problemi], [S], + + //VERIFICA + + [TS-0X], [Verificare che l'utente possa verificare l'account creato tramite codice di verifica ricevuto per _e-mail_], [S], + + [TS-0X], + [Verificare che il sistema restituisca un errore se l'utente tenta di concludere la registrazione senza inserire il codice di verifica], + [S], + + [TS-0X], [Verificare che il sistema restituisca un errore se il codice di conferma inserito dall'utente è scaduto], [S], + + [TS-0X], [Verificare che il sistema restituisca un errore se il codice di conferma inserito dall'utente è errato], [S], + + //CREAZIONE + [TS-0X], [Verificare che l'utente possa visualizzare la dashboard in seguito al login nell'applicativo], [S], + [TS-0X], [Verificare che l'utente autenticato possa vedere i workflow creati nella dashboard], [S], + + [TS-0X], [Verificare che l'utente possa creare una nuova _routine_], [S], + + [TS-0X], [Verificare che l'utente possa modificare il nome di una _routine_], [S], + + [TS-0X], [Verificare che il sistema restituisca un errore se il nome del _workflow_ viene lasciato vuoto], [S], + + [TS-0X], [Verificare che il sistema restituisca un errore se il nome del _workflow_ ha più di 25 caratteri], [S], + + [TS-0X], [Verificare che l'utente possa generare una _routine_ tramite linguaggio naturale], [S], + + [TS-0X], + [Verificare che il sistema restituisca un errore se il prompt di generazione di una _routine_ tramite linguaggio naturale viene lasciato vuoto], + [S], + + [TS-0X], [Verificare che l'utente possa visualizzare il nome di una _routine_ esistente], [S], + + [TS-0X], [Verificare che l'utente possa visualizzare i dettagli di una _routine_ esistente], [S], + + [TS-0X], [Verificare che l'utente possa visualizzare il diagramma dei blocchi di una _routine_ esistente], [S], + + [TS-0X], [Verificare che l'utente possa eliminare una _routine_ esistente], [S], + + [TS-0X], [Verificare che il sistema restituisca un errore se si tenta di interagire con un _workflow_ inesistente], [S], + + [TS-0X], [Verificare che l'utente possa avviare una _routine_ esistente], [S], + + [TS-0X], [Verificare che l'utente possa avviare una _routine_ esistente dalla dashboard], [S], + + [TS-0X], [Verificare che l'utente possa avviare una _routine_ esistente dalla pagina di modifica del flusso], [S], + + [TS-0X], [Verificare che il sistema restituisca un errore se l'esecuzione del flusso non va a buon fine], [S], + + [TS-0X], [Verificare che l'utente possa aggiungere un blocco ad una _routine_ esistente], [S], + + [TS-0X], [Verificare che l'utente possa aggiungere un blocco del tipo "_Telegram_ - Send Bot Message" ad una _routine_ esistente], [S], + + [TS-0X], [Verificare che l'utente possa aggiungere un blocco del tipo "_AI_ - Summarize" ad una _routine_ esistente], [S], + + [TS-0X], [Verificare che l'utente possa aggiungere un blocco del tipo "_System_ - Wait Second(s)" ad una _routine_ esistente], [S], + + [TS-0X], [Verificare che l'utente possa aggiungere un blocco del tipo "_Notion_ - Get Page" ad una _routine_ esistente], [S], + + [TS-0X], [Verificare che l'utente possa visualizzare le impostazioni di un singolo blocco], [S], + + [TS-0X], [Verificare che l'utente possa visualizzare le impostazioni di un blocco del tipo "_Telegram_ - Send Bot Message"], [S], + + [TS-0X], [Verificare che l'utente possa visualizzare le impostazioni di un blocco del tipo "_System_ - Wait Second(s)"], [S], + + [TS-0X], [Verificare che l'utente possa visualizzare le impostazioni di un blocco del tipo "_Notion_ - Get Page"], [S], + + [TS-0X], [Verificare che l'utente possa modificare le impostazioni di un singolo blocco], [S], + + [TS-0X], [Verificare che l'utente possa modificare le impostazioni di un blocco del tipo "_Telegram_ - Send Bot Message"], [S], + + [TS-0X], [Verificare che l'utente possa modificare le impostazioni di un blocco del tipo "_System_ - Wait Second(s)"], [S], + + [TS-0X], [Verificare che l'utente possa modificare le impostazioni di un blocco del tipo "_Notion_ - Get Page"], [S], + + [TS-0X], + [Verificare che il sistema salvi le modifiche apportate dall'utente alla _routine_ se viene premuto il tasto di salvataggio], + [S], + + [TS-0X], [Verificare che l'utente possa eliminare un blocco da una _routine_ esistente], [S], + + [TS-0X], [Verificare che l'utente possa eliminare un blocco da una _routine_ esistente da tastiera premendo il tasto "backspace"], [S], + + [TS-0X], [Verificare che l'utente possa eliminare un blocco da una _routine_ esistente da interfaccia grafica], [S], + + [TS-0X], [Verificare che l'utente possa collegare due blocchi di una _routine_ esistente], [S], + + [TS-0X], [Verificare che l'utente possa scollegare due blocchi di una _routine esistente_], [S], + + [TS-0X], [Verificare che l'utente possa ritornare alla dashboard dalla pagina di modifica flusso], [S], + + [TS-0X], [Verificare che l'utente possa impostare la modalità del client in dark mode o light mode], [S], + + [TS-0X], [Verificare che l'utente possa effettuare il _logout_ dall'applicativo], [S], +)) == Test di accettazione I test di accettazione sono condotti per verificare che il sistema soddisfi i requisiti e le aspettative del contrattuali, motivo per cui sono condotti insieme al committente.\ Il loro successo è fondamentale per garantire il rilascio definitivo del prodotto. +Di seguito viene fornita una tabella contenente i test di accettazione effettuati in presenza dell'azienda proponente, di ogni test viene riportato il codice univoco, descrizione e stato di esecuzione. + +#show figure: set block(breakable: true) +#figure(kind: table, caption: [Test di accettazione], table( + columns: (auto, 1fr, auto), + align: center, + rows: auto, + inset: 7pt, + table.header([*Codice*], [*Descrizione*], [*Stato*]), + [TA-0X], + [Verificare che l'utente non autenticato possa effettuare la registrazione per accedere al servizio, inserendo mail, password e conferma password], + [S], + + [TA-0X], [Verificare che se le due password non corrispondono venga restituito un messaggio di errore], [S], + [TA-0X], [Verificare che se le due password non corrispondono venga restituito un messaggio di errore], [S], + [TA-0X], [Verificare che la password debba contenere almeno 8 caratteri, in caso contrario che venga mostrato un messaggio d'errore], [S], + [TA-0X], + [Verificare che l'utente non autenticato possa verificare il proprio account inserendo il codice di verifica ricevuto via email], + [S], + + [TA-0X], [Verificare che l'utente non autenticato possa effettuare il login inserendo email e password], [S], + [TA-0X], + [Verificare che l'utente non autenticato riceva un messaggio di errore se tenta di effettuare il login con credenziali errate], + [S], + + [TA-0X], [Verificare che l'utente autenticato acceda direttamente alla dashboard], [S], + [TA-0X], [Verificare che l'utente autenticato possa vedere i workflow creati nella dashboard], [S], + [TA-0X], [Verificare che l'utente autenticato possa creare nuovi workflow], [S], + [TA-0X], [Verificare che l'utente autenticato possa inserire il nome del workflow che desidera creare], [S], + [TA-0X], + [Verificare che l'utente autenticato riceva un messaggio di errore se prova a creare un nuovo workflow lasciando vuoto il campo nome o se inserisce un nome con più di 25 caratteri], + [S], + + [TA-0X], + [Verificare che l'utente autenticato possa vedere in dettaglio il workflow premendo il workflow di interesse dalla dashboard], + [S], + + [TA-0X], [Verificare che l'utente autenticato possa generare un workflow usando il linguaggio naturale, sfruttando _LLM_], [S], + [TA-0X], [Verificare che l'utente autenticato possa creare un workflow manualmente selezionando i blocchi desiderati], [S], + [TA-0X], [Verificare che l'utente autenticato possa modificare il workflow selezionato], [S], + [TA-0X], [Verificare che l'utente autenticato possa aggiungere un blocco manualmente tramite l'interfaccia drag & drop], [S], + [TA-0X], + [Verificare che l'utente autenticato possa cercare il blocco di interesse nel menù laterale a cui si accede tramite il bottone _Add a Block_], + [S], + + [TA-0X], [Verificare che l'utente autenticato possa modificare le impostazioni di un singolo blocco], [S], + [TA-0X], [Verificare che l'utente autenticato possa eliminare un blocco da interfaccia grafica], [S], + [TA-0X], [Verificare che l'utente autenticato possa eliminare un blocco da tastiera, premendo il tasto _backspace_], [S], + [TA-0X], [Verificare che l'utente autenticato possa salvare un workflow], [S], + [TA-0X], [Verificare che l'utente autenticato possa rinominare un workflow], [S], + [TA-0X], [Verificare che l'utente autenticato possa eseguire un workflow dalla pagina dettagli flusso], [S], + [TA-0X], [Verificare che l'utente autenticato possa eseguire un workflow dalla dashboard], [S], + [TA-0X], [Verificare che l'utente autenticato possa eliminare un workflow], [S], + [TA-0X], [Verificare che l'utente autenticato possa rinominare un workflow], [S], + [TA-0X], [Verificare che l'utente autenticato possa effettuare il logout], [S], + [TA-0X], [Verificare che l'utente autenticato possa selezionare il tema che preferisce tra scuro e chiaro], [S], + [TA-0X], [Verificare che siano stati implementati almeno 3 blocchi di automazione], [S], +)) + #pagebreak() From e077961c21559d7c0d2d9c8a1b376ba67957cc31 Mon Sep 17 00:00:00 2001 From: Aleenamthw Date: Tue, 2 Sep 2025 18:21:42 +0200 Subject: [PATCH 3/7] aggiunta test integrazione --- .../pianodiqualifica_1.3.0.typ | 189 +++++++++++++++++- 1 file changed, 188 insertions(+), 1 deletion(-) diff --git a/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ b/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ index 483666d..0083cc6 100644 --- a/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ +++ b/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ @@ -14,7 +14,7 @@ "2025/08/20", "Carmelo Russello", "Marco Egidi", - "Aggiornamento cruscotto di valutazione concluso il decimo sprint", + "Aggiornamento cruscotto di valutazione concluso il decimo sprint e aggiunta scheletro dei test", "1.2.0", "2025/08/06", "Aleena Mathew ", @@ -649,6 +649,193 @@ Di seguito viene fornita una tabella contenente i test di unità effettuati, di == Test di integrazione I test di integrazione vengono eseguiti successivamente ai test di unità e verificano l'interazione tra più unità software per garantire una corretta integrazione e funzionamento del sistema. +Di seguito vengono fornite due tabelle che riportano i test di integrazione effettuati, la prima relativa al backend e la seconda al frontened, di ogni test viene riportato il codice univoco, descrizione e stato di esecuzione. + +=== Test di integrazione backend +#show figure: set block(breakable: true) +#figure(kind: table, caption: [Test di integrazione backend], table( + columns: (auto, 1fr, auto), + align: center, + rows: auto, + inset: 7pt, + table.header([*Codice*], [*Descrizione*], [*Stato*]), + //backend + [TI-0X], + [Verificare che il login di un utente tramite l'endpoint `/login` funzioni correttamente quando le credenziali sono corrette], + [S], + + [TI-0X], + [Verificare che venga lanciata un'eccezione con HTTP status 401 se si effettua il login con credenziali errate e che il messaggio d'errore sia "Invalid email or password"], + [S], + + [TI-0X], + [Verificare che venga lanciata un'eccezione con HTTP status 401 se si effettua il login con credenziali errate e che il messaggio d'errore sia "Invalid email or password"], + [S], + + [TI-0X], + [Verificare che venga lanciata un'eccezione con HTTP status 401 se si effettua il login con un'account non verificato e che il messaggio d'errore sia "User account not confirmed"], + [S], + + [TI-0X], + [Verificare che venga lanciata un'eccezione con HTTP status 401 se si effettua il login con un'account non esistente e che il messaggio d'errore sia "User not found"], + [S], + + [TI-0X], + [Verificare che venga lanciata un'eccezione con HTTP status 429 se si effettuano troppi tentativi di login e che il messaggio d'errore sia "Too many login attempts. Please try again later"], + [S], + + [TI-0X], + [Verificare che la registrazione di un nuovo utente tramite l'endpoint \ `/register` funzioni correttamente quando i dati sono validi ], + [S], + + [TI-0X], + [Verificare che venga lanciata un'eccezione con HTTP status 409 se si effettua la registrazione con un'email già in uso e che il messaggio d'errore sia "User already exists"], + [S], + + [TI-0X], + [Verificare che venga lanciata un'eccezione con HTTP status 500 se si effettuano più registrazioni di quelle consentite e che il messaggio d'errore sia "Email quota limit exceeded"], + [S], + + [TI-0X], [Verificare che la verifica di un utente tramite l'endpoint `/confirm` funzioni correttamente quando i dati sono corretti], [S], + + [TI-0X], + [Verificare che venga lanciata un'eccezione con HTTP status 404 se si effettua la verifica di un account non esistente e che il messaggio d'errore sia "User not found"], + [S], + + [TI-0X], + [Verificare che venga lanciata un'eccezione con HTTP status 404 se si effettua la verifica di un account se si inserisce un codice non valido e che il messaggio d'errore sia "Code not valid"], + [S], + + [TI-0X], + [Verificare che venga lanciata un'eccezione con HTTP status 404 se si effettua la verifica di un account se si inserisce un codice scaduto e che il messaggio d'errore sia "Code Expired"], + [S], + + [TI-0X], [Verificare che l'endpoint `/dashboard` restituisca correttamente la lista dei workflow dell'utente autenticato], [S], + + [TI-0X], + [Verificare che l'endpoint `/dashboard` neghi l'accesso e reindirizzi l'utente quando la verifica JWT fallisce, lanciando un'eccezione con HTTP status 302], + [S], + + [TI-0X], [Verificare che l'endpoint `/logout` funzioni correttamente per un utente autenticato], [S], + + [TI-0X], [Verificare che l'endpoint `/api/new` permetta la creazione di un nuovo _workflow_ per un utente autenticato], [S], + + [TI-0X], + [Verificare che l'endpoint `/api/new` lanci un'eccezione con HTTP status 400 se si cerca di creare un workflow lasciando il campo nome vuoto e che il messaggio d'errore sia "Workflow name is required"], + [S], + + [TI-0X], + [Verificare che l'endpoint `/api/new` lanci un'eccezione con HTTP status 400 se si cerca di creare un workflow con nome che supera i 25 caratteri e che il messaggio d'errore sia "Workflow name must be less than 25 characters"], + [S], + + [TI-0X], + [Verificare che l'endpoint `/api/flows/id>` restituisca correttamente i dati di un workflow esistente per un utente autenticato], + [S], + + [TI-0X], + [Verificare che l'endpoint `/api/flows/` lanci un'eccezione con HTTP status 404 se si richiede un workflow inesistente e che il messaggio d'errore sia "Workflow not found"], + [S], + + [TI-0X], + [Verificare che l'endpoint `/api/flows//delete` permetta la cancellazione di un workflow esistente per un utente autenticato], + [S], + + [TI-0X], + [Verificare che l'endpoint `/api/flows//delete` lanci un'eccezione con HTTP status 404 se si tenta di eliminare un workflow inesistente e che il messaggio d'errore sia "Workflow not found"], + [S], + + [TI-0X], [Verificare che l'endpoint `/api/flows//save` permetta la salvare correttamente un workflow per un utente autenticato], [S], + + [TI-0X], + [Verificare che l'endpoint `/api/flows//save` lanci un'eccezione con HTTP status 400 se si tenta di salvare un workflow con un nome troppo lungo e che il messaggio d'errore sia "Workflow name must be less than 25 characters"], + [S], + + [TI-0X], [Verificare che l'endpoint `/api/flows//run` permetta l'esecuzione di un workflow esistente per un utente autenticato], [S], + + [TI-0X], + [Verificare che l'endpoint `/api/flows//run` lanci un'eccezione con HTTP status 404 se si tenta di eseguire un workflow inesistente e che il messaggio d'errore sia "Workflow not found"], + [S], + + [TI-0X], [Verificare che l'endpoint `/api/prompt` generi correttamente un workflow tramite AI per un utente autenticato], [S], + + [TI-0X], + [Verificare che l'endpoint `/api/prompt` lanci un'eccezione con HTTP status 400 se si tenta di generare un workflow tramite AI senza il campo prompt e che il messaggio d'errore sia "Prompt is required"], + [S], + + [TI-0X], + [Verificare che l'endpoint `/api/prompt` lanci un'eccezione con HTTP status 400 se si tenta di generare un workflow tramite AI con il campo prompt vuoto e che il messaggio d'errore sia "Prompt is required"], + [S], +)) + +=== Test di integrazione frontend + +Per effettuare i test di integrazione del frontend sono stati realizzati test end-to-end utilizzando Cypress che permettono di simulare l'interazione dell’utente con l’applicazione. + +È stato deciso di utilizzare questo approccio perché consente di testare l'intera applicazione in un ambiente che simula l'uso reale, garantendo che tutte le componenti funzionino correttamente insieme e di trovare errori che potrebbero sfuggire ai test di unità o di integrazione tradizionali. + +#show figure: set block(breakable: true) +#figure(kind: table, caption: [Test di integrazione frontend], table( + columns: (auto, 1fr, auto), + align: center, + rows: auto, + inset: 7pt, + table.header([*Codice*], [*Descrizione*], [*Stato*]), + + //LOGIN + [TI-0X], [Verificare che la pagina di login venga visualizzata correttamente], [S], + [TI-0X], + [Verificare che vengano mostrati messaggi di errore se si tenta di effettuare il login lasciando i campi vuoti, verificando che il messaggio d'errore sia "Invalid email address" per il campo email e "Password cannot be empty" per il campo password], + [S], + + [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina _dashboard_ dopo aver effettuato correttamente il login], [S], + + [TI-0X], + [Verificare che vengano mostrati messaggi di errore se si tenta di effettuare il login lasciando i campi vuoti, verificando che il messaggio d'errore sia "Invalid email address" per il campo email e "Password cannot be empty" per il campo password], + [S], + + [TI-0X], + [Verificare che vengano gestiti correttamente gli errori proveniente dal backend simulando un login effettuato con credenziali errate], + [S], + + [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di registrazione dopo aver cliccato sul bottone "Register], [S], + + [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di conferma dopo aver cliccato sul bottone "Confirm your account], [S], + + //REGISTRAZIONE + + [TI-0X], [Verificare che la pagina di _register_ venga visualizzata correttamente], [S], + [TI-0X], + [Verificare che vengano mostrati messaggi di errore se si tenta di effettuare la registrazione lasciando i campi vuoti, verificando che il messaggio d'errore sia "Invalid email address" per il campo _email_ e "Your password must have at least 8 characters" per il campo _password_ e _conferma password_ ], + [S], + + [TI-0X], + [Verificare che venga mostrato un messaggio di errore se, in fase di registrazione, la password e la conferma password non corrispondono, verificando che il messaggio d'errore sia "Passwords don't match"], + [S], + + [TI-0X], + [Verificare che l'utente venga reindirizzato alla pagina di conferma account dopo aver effettuato correttamente la registrazione], + [S], + + [TI-0X], + [Verificare che vengano gestiti correttamente gli errori proveniente dal backend simulando una registrazione effettuata con un'email già in uso], + [S], + + [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di login dopo aver cliccato sul bottone "Login], [S], + + [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di conferma dopo aver cliccato sul bottone "Confirm your account], [S], + + //CONFERMA + [TI-0X], [Verificare che la pagina di conferma venga visualizzata correttamente], [S], + [TI-0X], [Verificare che vengano mostrati messaggi di errore se i dati non sono validi quando si conferma l'account], [S], + [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di login dopo aver confermato correttamente l'account], [S], + [TI-0X], + [Verificare che vengano gestiti correttamente gli errori proveniente dal backend simulando una verifica effettuata con codice errato], + [S], + + [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di login dopo aver cliccato sul bottone "Login"], [S], + + [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di registrazione dopo aver cliccato sul bottone "Register], [S], +)) == Test di sistema From a1ab4b84d58f5d124ead9d86d6030af0f0d1116e Mon Sep 17 00:00:00 2001 From: Aleenamthw Date: Tue, 2 Sep 2025 22:13:11 +0200 Subject: [PATCH 4/7] aggiunti grafici pb --- .../pianodiqualifica_1.3.0.typ | 108 ++++++++++++++++-- assets/chart/PB/BC_chart.svg | 1 + assets/chart/PB/CCO_chart.svg | 1 + assets/chart/PB/RD_RF_chart.svg | 1 + assets/chart/PB/RO_chart.svg | 1 + assets/chart/PB/TSP_chart.svg | 1 + 6 files changed, 106 insertions(+), 7 deletions(-) create mode 100644 assets/chart/PB/BC_chart.svg create mode 100644 assets/chart/PB/CCO_chart.svg create mode 100644 assets/chart/PB/RD_RF_chart.svg create mode 100644 assets/chart/PB/RO_chart.svg create mode 100644 assets/chart/PB/TSP_chart.svg diff --git a/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ b/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ index 0083cc6..c4cd93e 100644 --- a/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ +++ b/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ @@ -1054,7 +1054,7 @@ Di seguito viene fornita una tabella contenente i test di accettazione effettuat = Cruscotto di Valutazione -//TODO: aggiungere linea fine RTB su sprint 8 +//TODO: aggiungere linea fine RTB su sprint 9 inizio PB La seguente sezione riporta un'analisi dell'andamento delle metriche di qualità del prodotto e del processo, in modo da monitorare il progresso del progetto e verificare se gli obiettivi di qualità sono stati raggiunti.\ @@ -1068,6 +1068,10 @@ Dal grafico si osserva che il valore di *MPC-EAC* rimane sempre entro una variaz === PB +Dal grafico si può notare che dallo sprint 8 il valore di *MPC-EAC* si è leggermente alzato in seguito al colloquio RTB, in concomitanza dell'ottavo sprint, a causa delle alcune correzioni da effettuare che hanno portato ad un rallentamento. +Tuttavia, si è riusciti a terminare portando il valore al di sotto del BAC. + + @@ -1081,7 +1085,9 @@ Dal grafico si può notare che il valore di *MPC-EV* è in linea con il valore * === PB - +Il grafico mostra che il valore dell’EV abbia continuato a crescere in modo proporzionale al valore del +PV, dimostrando che il gruppo è riuscito a pianificare correttamente le attività per tutta la durata del progetto. +I due valori si avvicinano sempre di più a quello di BAC indicando che il gruppo è riuscito a essere coerente con il preventivo prodotto. #pagebreak() == Actual Cost (MPC-AC), Estimated To Complete (MPC-ETC) & Estimated At Completion (MPC-EAC) @@ -1095,6 +1101,10 @@ Si può affermare quindi che il progetto è in linea con le aspettative di budge === PB +Dal grafico si può notare come il valore di *MPC-AC* cresca in maniera inversamente proporzionale alla crescita di *MPC-ETC*. +Si può notare che alla fine i valori di *MPC-AC* e *MPC-EAC* finiscono per sovrapporsi e quello di *MPC-ETC* diventa 0. +Si può quindi affermare che il progetto è stato completato rispettando il budget preventivato. + #pagebreak() == Cost Variance (MPC-CV) & Schedule Variance (MPC-SV) @@ -1107,9 +1117,7 @@ Si può notare che il valore di *MPC-SV* ha subito un picco negativo durante il Tuttavia, il valore è tornato a crescere, indicando una ripresa del progetto e un ritorno alla pianificazione iniziale. === PB - - - +Si può notare che i valori di *MPC-SV* e *MPC-CV* si sono stabilizzati subendo un piccolo picco verso la fine, indicando un recupero di eventuali ritardi. #pagebreak() @@ -1122,6 +1130,7 @@ Tuttavia, il valore è tornato a crescere, indicando una ripresa del progetto e Il grafico mostra l'andamento del valore di *MPC-CPI* nel tempo, si può notare che è sempre superiore al limite inferiore e che si avvicina sempre di più al valore ottimo 1, indicando che i costi per completare i lavori sono in linea con quanto stabilito. === PB +Il grafico mostra l'andamento del valore di *MPC-CPI* nel tempo, si può notare che rimasto costante anche in fase di PB, indicando che i costi per completare i lavori sono in linea con quanto stabilito @@ -1137,8 +1146,7 @@ Con l'avanzare del progetto, il valore cresce fino a raggiungere stabilità e va Si può osservare una diminuzione del valore nell'ottavo sprint, a seguito della revisione con il professor Cardin, il quale ha richiesto un maggior dettaglio nella definizione dei requisiti. === PB - - +Si può notare che il valore di *MPC-RSI* ha subito dei picchi a causa di alcuni requisiti emersi dopo un'analisi più approfondita in vista dello sviluppo del MVP, tuttavia il valore rimane sempre entro i limiti accettabili. #pagebreak() @@ -1153,6 +1161,7 @@ Si può notare che il gruppo si è sempre impegnato a correggere gli eventuali e === PB +Si può notare che il gruppo si è sempre impegnato a correggere gli eventuali errori ortografici presenti per raggiungere un valore pari a 0 anche nei documenti redatti in fase di PB. @@ -1167,6 +1176,7 @@ Dal grafico emerge che la percentuale di metriche soddisfatte nei primi due spri === PB +Dal grafico si può notare che la percentuale di metriche soddisfatte cresce costante terminando con un valore pari al massimo, indicando che il gruppo è riuscito a mantenere un buon livello di qualità del prodotto in fase di PB. #pagebreak() @@ -1183,4 +1193,88 @@ Nei primi sprint si ha un'efficienza temporale bassa, dovuta all'inesperienza de === PB +Dal grafico emerge che in fase di PB il gruppo è riuscito a mantenere un'efficienza temporale elevata, dimostrando una buona gestione del tempo. + +//AGGIORNARE 11 + +#pagebreak() + +//TODO GRAFICO +== Requisiti obbligatori soddisfatti (MPD-RO) +#figure(image("../../assets/chart/PB/RO_chart.svg", width: 90%), caption: [ + Stima dei valori RO nel tempo +]) + + + +=== PB + +Dal grafico si può vedere che il gruppo è partito da una buona base del PoC. +Il gruppo si è impegnato a soddisfare la maggior parte dei requisiti obbligatori entro lo sprint 10, fino allo soddisfacimento di tutti i requisiti obbligatori entro la fine del progetto. + + + + + +#pagebreak() + +//TODO GRAFICO +== Requisiti desiderabili e facoltativi soddisfatti (MPD-RD e MPD-RF) +#figure(image("../../assets/chart/PB/RD_RF_chart.svg", width: 90%), caption: [ + Stima dei valori RD e RF nel tempo +]) + + + +=== PB +Dal grafico si può osservare che il gruppo si è impegnato fin dallo sprint 9 a soddisfare il requisito desiderabile individuato, ovvero la possibilità di cambiare tema, raggiungendo così una maggiore soddisfazione dell’utente. + + +#pagebreak() + +//TODO GRAFICO +== Code Coverage (MPD-CCO) +#figure(image("../../assets/chart/PB/CCO_chart.svg", width: 90%), caption: [ + Stima dei valori CCO nel tempo +]) + + + +=== PB +Dal grafico si può notare che il gruppo ha iniziato a lavorare sulla copertura del codice appena terminata la progettazione, passo passo con la stesura del codice. +Questo approccio ha permesso di ottenere una copertura del codice superiore a quella richiesta del 70%. + + +// #pagebreak() + +// //TODO GRAFICO +// == Branch Coverage (MPD-BC) +// #figure(image("../../assets/chart/PB/BC_chart.svg", width: 90%), caption: [ +// Stima dei valori BC nel tempo +// ]) + + + +// === PB +// Dal grafico si può notare che il valore branch coverage ha iniziato a salire nel nono sprint, avvicinandosi molto al valore accettabile. +// A fine progetto, si è raggiunto un valore superiore a quello ottimo, dimostrando che il gruppo ha implementato test efficaci, inoltre dimostra l’affidabilità del codice. + + + +#pagebreak() + +//TODO GRAFICO +== Test superati in percentuale (MPC-TSP) +#figure(image("../../assets/chart/PB/TSP_chart.svg", width: 90%), caption: [ + Stima dei valori TSP nel tempo +]) + + + +=== PB +Dal grafico si può notare che il valore dei test superati è sempre stato elevato. +Questo dimostra che i test sviluppati sono sempre stati superati. +Si è consapevoli che il fatto che i test vengano completamente superati non è garanzia di un software privo di errori o lacune, tuttavia è pur sempre indice di qualità del codice. + +//valuta inserimento del coupling diff --git a/assets/chart/PB/BC_chart.svg b/assets/chart/PB/BC_chart.svg new file mode 100644 index 0000000..f9ca140 --- /dev/null +++ b/assets/chart/PB/BC_chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/chart/PB/CCO_chart.svg b/assets/chart/PB/CCO_chart.svg new file mode 100644 index 0000000..74e5b95 --- /dev/null +++ b/assets/chart/PB/CCO_chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/chart/PB/RD_RF_chart.svg b/assets/chart/PB/RD_RF_chart.svg new file mode 100644 index 0000000..ef4df35 --- /dev/null +++ b/assets/chart/PB/RD_RF_chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/chart/PB/RO_chart.svg b/assets/chart/PB/RO_chart.svg new file mode 100644 index 0000000..64eaef9 --- /dev/null +++ b/assets/chart/PB/RO_chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/chart/PB/TSP_chart.svg b/assets/chart/PB/TSP_chart.svg new file mode 100644 index 0000000..951c5ed --- /dev/null +++ b/assets/chart/PB/TSP_chart.svg @@ -0,0 +1 @@ + \ No newline at end of file From 2de25c2b4e01969ec79ed232f5a078ffec45d6d1 Mon Sep 17 00:00:00 2001 From: Aleenamthw Date: Wed, 3 Sep 2025 11:59:41 +0200 Subject: [PATCH 5/7] grafici --- 3-PB/documentidiprogetto/glossario_1.1.1.typ | 18 +- .../pianodiqualifica_1.3.0.typ | 625 +++++++++--------- assets/chart/PB/AC_ETC_EAC_chart.svg | 2 +- assets/chart/PB/CO_chart.svg | 2 +- assets/chart/PB/CPI_chart.svg | 2 +- assets/chart/PB/CV_SV_chart.svg | 2 +- assets/chart/PB/EAC_chart.svg | 2 +- assets/chart/PB/ET_chart.svg | 2 +- assets/chart/PB/PV_EV_chart.svg | 2 +- assets/chart/PB/RSI_chart.svg | 2 +- assets/chart/PB/SQM_chart.svg | 2 +- 11 files changed, 350 insertions(+), 311 deletions(-) diff --git a/3-PB/documentidiprogetto/glossario_1.1.1.typ b/3-PB/documentidiprogetto/glossario_1.1.1.typ index be3e653..77bfe01 100644 --- a/3-PB/documentidiprogetto/glossario_1.1.1.typ +++ b/3-PB/documentidiprogetto/glossario_1.1.1.typ @@ -4,11 +4,24 @@ titoloDocumento: "Glossario", responsabili: "Matteo Marangon", redattori: ("Mirco Borella", "Matteo Marangon", "Aleena Mathew", "Pietro Crotti"), - verificatori: ("Alessandro Bernardello", "Carmelo Russello", "Marco Egidi", "Pietro Crotti", "Matteo Marangon", "Aleena Mathew"), + verificatori: ( + "Alessandro Bernardello", + "Carmelo Russello", + "Marco Egidi", + "Pietro Crotti", + "Matteo Marangon", + "Aleena Mathew", + "Mirco Borella", + ), tipo: "Documento Interno", destinatari: ("Sigma18", "Prof. Tullio Vardanega", "Prof. Riccardo Cardin"), versioneAttuale: "1.1.1", versioni: ( + "1.2.0", + "2025/08/29", + "Aleena Mathew", + "Mirco Borella", + "Aggiunta termini", "1.1.1", "2025/08/29", "Matteo Marangon", @@ -332,6 +345,9 @@ Intervallo di tempo fisso, definito nella metodologia di sviluppo software Agile == Sprint Planning Processo nel quale si definiscono le attività da svolgere e i prodotti attesi da ogni ciclo di sviluppo (sprint). +== StreamHandler +Classe nel framework di logging di un linguaggio di programmazione (es. Python) che invia i messaggi di log a uno stream. Serve come un gestore di base per incanalare i log a una destinazione di output, permettendo di specificare dove devono essere scritti i record di log. + #pagebreak() = T diff --git a/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ b/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ index c4cd93e..5fa06f6 100644 --- a/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ +++ b/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ @@ -103,23 +103,25 @@ Sarà possibile salvare le automazioni generate e avviarle in un secondo momento == Glossario +//TODO fix link Data la presenza di termini tecnici e acronimi, è stato redatto un glossario per facilitare la comprensione del documento.\ Alla prima occorrenza, tali termini saranno opportunamente segnalati tramite la seguente notazione: #glossario("parola"), e sarà fornita un'accurata definizione nel #link("https://sigma18unipd.github.io/documentiCompilati/2-RTB/documentidiprogetto/glossario.pdf")[Glossario]. == Riferimenti === Riferimenti normativi -- *Norme di progetto* [versione 1.0.0] \ #link("https://sigma18unipd.github.io/documentiCompilati/2-RTB/documentidiprogetto/normediprogetto_1.0.0.pdf")[https://sigma18unipd.github.io/documentiCompilati/2-RTB/documentidiprogetto/normediprogetto_1.0.0.pdf] +- *Norme di progetto* [versione 2.0.0] \ #link("https://sigma18unipd.github.io/documentiCompilati/3-PB/documentidiprogetto/normediprogetto_2.0.0.pdf")[https://sigma18unipd.github.io/documentiCompilati/3-PB/documentidiprogetto/normediprogetto_2.0.0.pdf] - * ISO/IEC 12207:1995* [ultimo accesso il: 11/07/2025] \ #link("https://www.math.unipd.it/~tullio/IS-1/2009/Approfondimenti/ISO_12207-1995.pdf")[https://www.math.unipd.it/~tullio/IS-1/2009/Approfondimenti/ISO_12207-1995.pdf] -- *Capitolato C3 - Automatizzare le routine digitali tramite l'intelligenza generativa* [ultimo accesso il: 11/07/2025] \ #link("https://www.math.unipd.it/~tullio/IS-1/2024/Progetto/C3.pdf")[https://www.math.unipd.it/~tullio/IS-1/2024/Progetto/C3.pdf] +- *Capitolato C3 - Automatizzare le routine digitali tramite l'intelligenza generativa* [ultimo accesso il: 01/09/2025] \ #link("https://www.math.unipd.it/~tullio/IS-1/2024/Progetto/C3.pdf")[https://www.math.unipd.it/~tullio/IS-1/2024/Progetto/C3.pdf] === Riferimenti informativi +//TODO fix - *Glossario* [versione 1.0.0] \ #link("https://sigma18unipd.github.io/documentiCompilati/2-RTB/documentidiprogetto/glossario.pdf")[https://sigma18unipd.github.io/documentiCompilati/2-RTB/documentidiprogetto/glossario.pdf] -- *Slide T07 - Qualità del prodotto* [ultimo accesso il: 11/07/2025] \ #link("https://www.math.unipd.it/~tullio/IS-1/2024/Dispense/T07.pdf")[https://www.math.unipd.it/~tullio/IS-1/2024/Dispense/T07.pdf] +- *Slide T07 - Qualità del prodotto* [ultimo accesso il: 01/09/2025] \ #link("https://www.math.unipd.it/~tullio/IS-1/2024/Dispense/T07.pdf")[https://www.math.unipd.it/~tullio/IS-1/2024/Dispense/T07.pdf] -- *Slide T08 - Qualità del processo* [ ultimo accesso il: 11/07/2025] \ #link("https://www.math.unipd.it/~tullio/IS-1/2024/Dispense/T08.pdf")[https://www.math.unipd.it/~tullio/IS-1/2024/Dispense/T08.pdf] +- *Slide T08 - Qualità del processo* [ ultimo accesso il: 01/09/2025] \ #link("https://www.math.unipd.it/~tullio/IS-1/2024/Dispense/T08.pdf")[https://www.math.unipd.it/~tullio/IS-1/2024/Dispense/T08.pdf] #pagebreak() @@ -459,190 +461,221 @@ Di seguito viene fornita una tabella contenente i test di unità effettuati, di inset: 7pt, table.header([*Codice*], [*Descrizione*], [*Stato*]), - //bozza con test_log.py - [TU-01], [Verifica che la configurazione del logging sia in modalità produzione, in assenza di variabili d'ambiente specifiche], [S], + // test_log.py + [TU-01], [Verificare che la configurazione del logging sia in modalità produzione, in assenza di variabili d'ambiente specifiche], [S], - [TU-0X], [Verifica che la configurazione del logging sia in modalità sviluppo, se la variabile d'ambiente _ENV_ è impostata a "dev"], [S], + [TU-02], + [Verificare che la configurazione del logging sia in modalità sviluppo, se la variabile d'ambiente `ENV` è impostata a "dev"], + [S], - [TU-0X], [Verifica che la variabile d'ambiente _ENV_ sia case insensitive], [S], - [TU-0X], [Verifica che modalità sviluppo sia attiva se la variabile d'ambiente _DEV_ è impostata a "true], [S], - [TU-0X], [Verifica che modalità sviluppo sia attiva se la variabile d'ambiente _DEV_ è impostata a "1"], [S], - [TU-0X], [Verifica che modalità sviluppo sia attiva se la variabile d'ambiente _DEV_ è impostata a "yes"], [S], - [TU-0X], [Verifica che modalità sviluppo sia attiva se la variabile d'ambiente _DEV_ è impostata a "TRUE"], [S], + [TU-03], [Verificare che la variabile d'ambiente `ENV` sia case insensitive], [S], + [TU-04], [Verificare che modalità sviluppo sia attiva se la variabile d'ambiente `DEV` è impostata a "true"], [S], + [TU-05], [Verificare che modalità sviluppo sia attiva se la variabile d'ambiente `DEV` è impostata a "1"], [S], + [TU-06], [Verificare che modalità sviluppo sia attiva se la variabile d'ambiente `DEV` è impostata a "yes"], [S], + [TU-07], [Verificare che modalità sviluppo sia attiva se la variabile d'ambiente `DEV` è impostata a "TRUE"], [S], - [TU-0X], - [Verifica che modalità sviluppo non sia attiva se la variabile d'ambiente _DEV_ è impostata a valori diversi da "true", "1", "yes" o "TRUE"], + [TU-08], + [Verificare che modalità sviluppo non sia attiva se la variabile d'ambiente `DEV` è impostata a valori diversi da "true", "1", "yes" o "TRUE"], [S], - [TU-0X], [Verifica che se _ENV_ è posta a "production" e _DEV_ a "1" prevalga la modalità sviluppo], [S], - [TU-0X], [Verifica che se le variabili sono impostate, sovrascrivano quelle di default], [S], - [TU-0X], [Verifica che il valore della variabile d'ambiente `LOG_LEVEL` sia convertito in maiuscolo], [S], - [TU-0X], [Verifica che il formatter del logging sia configurato con una stringa con il corretto formato], [S], - [TU-0X], [Verifica che l'aggiunta di uno `StreamHandler`, se non presente], [S], - [TU-0X], [Verifica che non venga aggiunto uno `StreamHandler`, se già presente], [S], + [TU-09], [Verificare che se `ENV` è posta a "production" e `DEV` a "1" prevalga la modalità sviluppo], [S], + [TU-10], [Verificare che le variabili, se impostate, sovrascrivano quelle di default], [S], + [TU-11], [Verificare che il valore della variabile d'ambiente `LOG_LEVEL` sia convertito in maiuscolo], [S], + [TU-12], [Verificare che il formatter del logging sia configurato con una stringa con il corretto formato], [S], + [TU-13], [Verificare che l'aggiunta di uno #glossario("StreamHandler"), se non presente], [S], + [TU-14], [Verificare che non venga aggiunto uno `StreamHandler`, se già presente], [S], // block Factory - [TU-0X], [Verifica che la classe `BlockFactory`implementi senza errori il pattern _singleton_], [S], - [TU-0X], [Verifica che la creazione del _singleton_ sia thread-safe], [S], - [TU-0X], [Verifica che l'istanza di `BlockFactory` sia inizializzata correttamente], [S], - [TU-0X], [Verifica che la funzione di registrazione dei blocchi di `BlockFactory` funzioni correttamente], [S], - [TU-0X], [Verifica che la funzione di registrazione di `BlockFactory` accetti solo classi che derivano da _Block_], [S], - [TU-0X], [Verifica che la funzione di registrazione di `BlockFactory` sia thread-safe], [S], - [TU-0X], [Verifica la corretta creazione di un blocco], [S], - [TU-0X], [Verifica che la creazione di un blocco con un tipo non registrato sollevi un errore], [S], - [TU-0X], [Verifica il comportamento della funzione `get_supported_types` quando il registro dei blocchi è vuoto], [S], - [TU-0X], [Verifica il comportamento della funzione `get_supported_types` quando sono presenti dei blocchi registrati], [S], - [TU-0X], - [Verifica che la funzione `lookup_implemented` ritorni _true_ per i tipi di blocco registrati e _false_ per quelli non registrati], + [TU-15], [Verificare che la classe `BlockFactory` implementi senza errori il pattern _singleton_], [S], + [TU-16], [Verificare che la creazione del _singleton_ sia thread-safe], [S], + [TU-17], [Verificare che l'istanza di `BlockFactory` sia inizializzata correttamente], [S], + [TU-18], [Verificare che la funzione di registrazione dei blocchi di `BlockFactory` funzioni correttamente], [S], + [TU-19], [Verificare che la funzione di registrazione di `BlockFactory` accetti solo classi che sono sottoclassi di `Block`], [S], + [TU-20], [Verificare che la funzione di registrazione di `BlockFactory` sia _thread-safe_], [S], + [TU-21], [Verificare la corretta creazione di un blocco], [S], + [TU-22], [Verificare che la creazione di un blocco con un tipo non registrato sollevi un errore], [S], + [TU-23], + [Verificare il corretto comportamento della funzione `get_supported_types` della classe `BlockFactory` quando il registro dei blocchi è vuoto], + [S], + + [TU-24], + [Verificare il corretto comportamento della funzione `get_supported_types` della classe `BlockFactory` in presenza di blocchi registrati], + [S], + + [TU-25], + [Verificare che la funzione `lookup_implemented` ritorni _true_ per i tipi di blocco registrati e _false_ per quelli non registrati], [S], - [TU-0X], [Verifica che la registrazione di un blocco venga loggata dal sistema], [S], - [TU-0X], [Verifica che la creazione di un blocco venga loggata dal sistema], [S], + [TU-26], [Verificare che la registrazione di un blocco venga correttamente tracciata nei log dal sistema], [S], + [TU-27], [Verificare che la creazione di un blocco venga correttamente tracciata nei log dal sistema], [S], //test block.py - [TU-0X], [Verifica l'inizializzazione di un blocco sia con parametri personalizzati sia senza], [S], - [TU-0X], [Verifica che il metodo `_get_setting` recuperi correttamente i valori dalle impostazioni], [S], - [TU-0X], [Verifica il flusso di esecuzione di un blocco], [S], - [TU-0X], [Verifica la funzionalità di logging all'interno di un blocco], [S], - [TU-0X], [Verifica la corretta implementazione del pattern _visitor_], [S], - [TU-0X], [Verifica la corretta rappresentazione degli oggetti blocco], [S], - [TU-0X], [Verifica che la classe astratta `Block` non sia istanziabile], [S], - [TU-0X], [Verifica il comportamento classe astratta `Block` sia corretto], [S], + [TU-28], [Verificare l'inizializzazione di un blocco con parametri di default], [S], + [TU-29], [Verificare l'inizializzazione di un blocco con parametri personalizzati], [S], + [TU-30], + [Verificare che il metodo `_get_input` della classe `Block` recuperi correttamente i valori dal dizionario, gestendo chiavi mancanti e valori di default.], + [S], + + [TU-31], [Verificare che il metodo `_get_setting` della classe `Block` recuperi correttamente i valori dalle impostazioni], [S], + + [TU-32], + [Verificare che il metodo `_set_output` della classe `Block` aggiorni l'output e registri i log di esecuzione correttamente], + [S], + + [TU-33], [Verificare che il metodo `_get_output` della classe `Block` ritorni correttamente i dati di output], [S], + [TU-34], [Verificare il flusso di esecuzione di un blocco], [S], + [TU-35], [Verificare la funzionalità di logging all'interno di un blocco], [S], + [TU-36], [Verificare la corretta implementazione del pattern _visitor_], [S], + [TU-37], [Verificare la corretta rappresentazione degli oggetti blocco], [S], + [TU-38], [Verificare che la classe astratta `Block` non sia istanziabile], [S], + [TU-39], [Verificare il comportamento classe astratta `Block` sia corretto], [S], //test executionLog - [TU-0X], [Verifica la correttezza delle classi `ExecutionLog` e di `Status` usati per tracciare l'esecuzione dei blocchi], [S], + + [TU-40], [Verificare che i valori di `Status` usati per la rappresentazione dello stato siano corretti], [S], + + [TU-41], [Verificare che la classe `ExecutionLog` venga istanziata correttamente], [S], //flaskAppSingleton - [TU-0X], [Verifica che la classe `FlaskAppSingleton` rispetti il pattern _singleton_], [S], - [TU-0X], [Verifica che la classe `FlaskAppSingleton` venga inizializzata correttamente], [S], - [TU-0X], [Verifica che la classe `FlaskAppSingleton` gestisca correttamente le richieste], [S], - [TU-0X], [Verifica che la classe `FlaskAppSingleton` non consenta l'istanziazione multipla], [S], + [TU-42], [Verificare che la classe `FlaskAppSingleton` rispetti il pattern _singleton_], [S], + [TU-43], [Verificare che la classe `FlaskAppSingleton` venga inizializzata correttamente], [S], + [TU-44], [Verificare che la classe `FlaskAppSingleton` gestisca correttamente le richieste], [S], + [TU-45], [Verifica che la classe `FlaskAppSingleton` non consenta l'istanziazione multipla], [S], //mongoDB - [TU-0X], [Verifica che la classe `MongoDBSingleton` rispetti il pattern _singleton_], [S], - [TU-0X], [Verifica che la corretta istanzazione della classe `MongoDBSingleton` in presenza di un oggetto _Flask_ app], [S], - [TU-0X], [Verifica che la corretta istanzazione della classe `MongoDBSingleton` in assenza di un oggetto _Flask_ app], [S], - [TU-0X], [Verifica che il metodo `get_db` della classe `MongoDBSingleton` restituisca l'oggetto database corretto], [S], - [TU-0X], [Verifica che l'attributo `mongo` venga inizializzato correttamente], [S], - [TU-0X], [Verifica che l'istanza _singleton_ persista anche se acceduta in modi diversi], [S], - [TU-0X], [Verifica che venga sollevata un'eccezione se fallisce l'inizializzazione di `PyMongo`], [S], - [TU-0X], [Verifica che venga sollevata un'eccezione se si prova a chiamare il metodo `get_db` e l'attributo `mongo` è _None_], [S], + [TU-46], [Verificare che la classe `MongoDBSingleton` rispetti il pattern _singleton_], [S], + [TU-47], [Verificare che la corretta istanzazione della classe `MongoDBSingleton` in presenza di un oggetto _Flask_ app], [S], + [TU-48], [Verificare che la corretta istanzazione della classe `MongoDBSingleton` in assenza di un oggetto _Flask_ app], [S], + [TU-49], [Verificare che il metodo `get_db` della classe `MongoDBSingleton` restituisca l'oggetto database corretto], [S], + [TU-50], [Verificare che l'attributo `mongo` venga inizializzato correttamente], [S], + [TU-51], [Verificare che l'istanza _singleton_ persista anche se acceduta in modi diversi], [S], + [TU-52], [Verificare che venga sollevata un'eccezione se fallisce l'inizializzazione di `PyMongo`], [S], + [TU-53], [Verificare che venga sollevata un'eccezione se si prova a chiamare il metodo `get_db` quando l'attributo `mongo` è _None_], [S], // test jwt.utils - [TU-0X], [Verifica che la funzione `generateJwt` generi correttamente un token JWT contente email e scadenza], [S], - [TU-0X], [Verifica che la funzione `verifyJwt` decodifichi e verifichi correttamente un token], [S], - [TU-0X], [Verifica che la funzione `generateJwt` gestisca correttamente il caso in cui l'email sia una stringa vuota], [S], + [TU-54], [Verificare che la funzione `generateJwt` generi correttamente un token JWT contente email e scadenza], [S], + [TU-55], [Verificare che la funzione `verifyJwt` decodifichi e verifichi correttamente un token], [S], + [TU-56], [Verificare che la funzione `generateJwt` gestisca correttamente il caso in cui l'email sia una stringa vuota], [S], //llmfacade - [TU-0X], [Verifica che la funzione `agent_facade` funzioni correttamente in condizioni normali, simulando l'interazione con AWS], [S], - [TU-0X], [Verifica che la funzione `agent_facade` gestisca correttamente il caso in cui il prompt sia vuoto], [S], - [TU-0X], - [Verifica che la funzione `agent_facade` gestisca correttamente il caso in cui il prompt contenga caratteri speciali e emoji], + [TU-57], [Verificare che la funzione `agent_facade` funzioni correttamente in condizioni normali, simulando l'interazione con AWS], [S], + [TU-58], [Verificare che la funzione `agent_facade` gestisca correttamente il caso in cui il prompt sia vuoto], [S], + [TU-59], + [Verificare che la funzione `agent_facade` gestisca correttamente il caso in cui il prompt contenga caratteri speciali e emoji], [S], // JsonParser - [TU-0X], [Verifica che la classe astratta `JsonParserStrategy` non possa essere istanziata direttamente], [S], - [TU-0X], [Verifica che le sottoclassi di `JsonParserStrategy` implementino il metodo `parse`], [S], - [TU-0X], [Verifica che il metodo `parse` gestisca correttamente le stringhe JSON], [S], + [TU-60], [Verificare che la classe astratta `JsonParserStrategy` non possa essere istanziata direttamente], [S], + [TU-61], [Verificare che le sottoclassi di `JsonParserStrategy` implementino il metodo `parse`], [S], + [TU-62], [Verificare che il metodo `parse` gestisca correttamente le stringhe JSON], [S], //AI summarize - [TU-0X], - [Verifica che il comportamento della classe `AISummarize` assicurando che il metodo `execute` restituisca un riassunto corretto], + [TU-63], + [Verificare che il comportamento della classe `AISummarize` assicurando che il metodo `execute` restituisca un riassunto corretto], [S], //syswait - [TU-0X], - [Verifica che la classe `SystemWaitSeconds` gestisca correttamente i vari tipi di input come interi, numeri float e stringhe], + + [TU-64], [Verificare che la classe `SystemWaitSeconds` gestisca correttamente input di tipo _int_], [S], + + [TU-65], [Verificare che la classe `SystemWaitSeconds` gestisca correttamente input di tipo _float_], [S], + + [TU-66], [Verificare che la classe `SystemWaitSeconds` gestisca correttamente input di tipo _string_], [S], + + [TU-67], + [Verificare che funzione `validate_inputs` della classe `SystemWaitSeconds` restituisca _True_ per i tipi di input validi come _int_, _float_ e stringhe], [S], - [TU-0X], - [Verifica che funzione `validate_inputs` della classe `SystemWaitSeconds` restituisca _True_ per i tipi di input validi come interi, numeri float e stringhe], + [TU-68], + [Verificare che funzione `validate_inputs` della classe `SystemWaitSeconds` restituisca _False_ in presenza di valori negativi], [S], - [TU-0X], - [Verifica che funzione `validate_inputs` della classe `SystemWaitSeconds` restituisca _False_ in presenza di valori negativi, stringhe non numeriche o in assenza di input], + [TU-69], + [Verificare che funzione `validate_inputs` della classe `SystemWaitSeconds` restituisca _False_ in presenza di stringhe non numeriche], [S], - [TU-0X], [Verifica che funzione `execute` della classe `SystemWaitSeconds` sia eseguita correttamente], [S], + [TU-70], [Verificare che funzione `validate_inputs` della classe `SystemWaitSeconds` restituisca _False_ in assenza di input], [S], + + [TU-71], [Verificare che funzione `execute` della classe `SystemWaitSeconds` sia eseguita correttamente], [S], //telegram - [TU-0X], - [Verifica che la funzione `validate_inputs` della classe `TelegramSendMessage` restituisca _True_ se sono presenti tutti gli input richiesti, ovvero `botToken`, `chatId` e `message`], + [TU-72], + [Verificare che la funzione `validate_inputs` della classe\ `TelegramSendMessage` restituisca _True_ se sono presenti tutti gli input richiesti, ovvero `botToken`, `chatId` e `message`], [S], - [TU-0X], - [Verifica che la funzione `validate_inputs` della classe `TelegramSendMessage` restituisca _False_ se non sono presenti tutti gli input richiesti], + [TU-73], + [Verificare che la funzione `validate_inputs` della classe\ `TelegramSendMessage` restituisca _False_ se non sono presenti tutti gli input richiesti], [S], - [TU-0X], [Verifica che funzione `execute` della classe `TelegramSendMessage` sia eseguita correttamente], [S], - [TU-0X], - [Verifica che funzione `execute` della classe `TelegramSendMessage` sia eseguita correttamente quando `"message": "{{LASTOUTPUT}}"`], + [TU-74], [Verificare che funzione `execute` della classe `TelegramSendMessage` sia eseguita correttamente], [S], + [TU-75], + [Verificare che funzione `execute` della classe `TelegramSendMessage` sia eseguita correttamente quando `"message": "{{LASTOUTPUT}}"`], [S], - [TU-0X], [Verifica il comportamento di `execute` in presenza di errori di rete ], [S], + [TU-76], [Verificare il comportamento di `execute` in presenza di errori di rete ], [S], //notion - [TU-0X], - [Verifica che la funzione `validate_inputs` della classe `NotionGetPage` restituisca _True_ se sono presenti tutti gli input richiesti, ovvero `pageID` e `internalIntegrationToken`], + [TU-77], + [Verificare che la funzione `validate_inputs` della classe `NotionGetPage` restituisca _True_ se sono presenti tutti gli input richiesti, ovvero `pageID` e `internalIntegrationToken`], [S], - [TU-0X], - [Verifica che la funzione `validate_inputs` della classe `NotionGetPage` restituisca _False_ se non sono presenti tutti gli input richiesti], + [TU-78], + [Verificare che la funzione `validate_inputs` della classe `NotionGetPage` restituisca _False_ se non sono presenti tutti gli input richiesti], [S], - [TU-0X], [Verifica che la funzione `execute` della classe `NotionGetPage` sia implementata correttamente], [S], + [TU-79], [Verificare che la funzione `execute` della classe `NotionGetPage` sia implementata correttamente], [S], - [TU-0X], - [Verifica che la funzione `execute` della classe `NotionGetPage` restituisca uno stato di errore in presenza di un errore nella Notion API], + [TU-80], + [Verificare che la funzione `execute` della classe `NotionGetPage` restituisca uno stato di errore in presenza di un errore nella Notion API], [S], - [TU-0X], - [Verifica che la funzione `execute` della classe `NotionGetPage` restituisca uno stato di errore in presenza di token invalido], + [TU-81], + [Verificare che la funzione `execute` della classe `NotionGetPage` restituisca uno stato di errore in presenza di token invalido], [S], //flow iterator - [TU-0X], [Verifica che la classe `FlowIterator` sia inizializzata correttamente], [S], - [TU-0X], [Verifica che l'esecuzione dei blocchi avvenga in sequenza e che ogni blocco venga eseguito], [S], - [TU-0X], - [Verifica la gestione dell'esecuzione dei blocchi in presenza di errori nell'esecuzione di un blocco, verificando che l'esecuzione si interrompa e che siano presenti i log di errore], + [TU-82], [Verificare che la classe `FlowIterator` sia inizializzata correttamente], [S], + [TU-83], [Verificare che l'esecuzione dei blocchi avvenga in sequenza e che ogni blocco venga eseguito], [S], + [TU-84], + [Verificare la gestione dell'esecuzione dei blocchi in presenza di errori nell'esecuzione di un blocco, verificando che l'esecuzione si interrompa e che siano presenti i log di errore], [S], //llm sanitize - [TU-0X], - [Verifica che il metodo `add_json` della classe `BaseSanitizationStrategy` funzioni correttamente gestendo vari tipi di input], + [TU-85], + [Verificare che il metodo `add_json` della classe `BaseSanitizationStrategy` funzioni correttamente gestendo vari tipi di input], [S], - [TU-0X], [Verifica che il metodo `add_json` della classe `BaseSanitizationStrategy` non sovrascrivi valori esistenti ], [S], - [TU-0X], - [Verifica che il metodo `add_field_if_missing` della classe `BaseSanitizationStrategy` imposti il tipo di default, se mancante], + [TU-86], [Verificare che il metodo `add_json` della classe `BaseSanitizationStrategy` non sovrascrivi valori esistenti ], [S], + [TU-87], + [Verificare che il metodo `add_field_if_missing` della classe `BaseSanitizationStrategy` imposti il tipo di default, se mancante], [S], - [TU-0X], - [Verifica che più chiamate a `_position_counter` della classe `BaseSanitizationStrategy` generino una griglia di posizioni corretta], + [TU-88], + [Verificare che più chiamate a `_position_counter` della classe `BaseSanitizationStrategy` generino una griglia di posizioni corretta], [S], //flowManager. - [TU-0X], [Verifica che l'inizializzazione della classe `FlowManager` crei tutti i componenti necessari], [S], - [TU-0X], [Verifica che il metodo `parse_json` della classe `FlowManager` crei i blocchi corretti dopo aver ricevuto i dati JSON], [S], - [TU-0X], - [Verifica che il metodo `parse_json` della classe `FlowManager` sollevi un errore se si cerca di implementare un blocco di tipo non implementato], + [TU-89], [Verificare che l'inizializzazione della classe `FlowManager` crei tutti i componenti necessari], [S], + [TU-90], [Verificare che il metodo `parse_json` della classe `FlowManager` crei i blocchi corretti dopo aver ricevuto i dati JSON], [S], + [TU-91], + [Verificare che il metodo `parse_json` della classe `FlowManager` sollevi un errore se si cerca di implementare un blocco di tipo non implementato], [S], - [TU-0X], - [Verifica che il metodo `start_workflow` della classe `FlowManager` ritorni uno stato _completed_ se il flusso viene eseguito correttamente], + [TU-92], + [Verificare che il metodo `start_workflow` della classe `FlowManager` ritorni uno stato _completed_ se il flusso viene eseguito correttamente], [S], - [TU-0X], - [Verifica che il metodo `start_workflow` della classe `FlowManager` ritorni uno stato _failed_ se il flusso non viene eseguito], + [TU-93], + [Verificare che il metodo `start_workflow` della classe `FlowManager` ritorni uno stato _failed_ se il flusso non viene eseguito], [S], - [TU-0X], [Verifica che il metodo `get_status` della classe `FlowManager` ritorni gli stati], [S], + [TU-94], [Verifica che il metodo `get_status` della classe `FlowManager` ritorni gli stati], [S], - [TU-0X], [Verifica che la classe `FlowManagerFactory` rispetti il pattern _singleton_], [S], - [TU-0X], [Verifica che la classe `FlowManagerFactory` restituisca un'istanza di `FlowManager`], [S], + [TU-95], [Verifica che la classe `FlowManagerFactory` rispetti il pattern _singleton_], [S], + [TU-96], [Verifica che la classe `FlowManagerFactory` restituisca un'istanza di `FlowManager`], [S], )) @@ -660,118 +693,112 @@ Di seguito vengono fornite due tabelle che riportano i test di integrazione effe inset: 7pt, table.header([*Codice*], [*Descrizione*], [*Stato*]), //backend - [TI-0X], + [TI-01], [Verificare che il login di un utente tramite l'endpoint `/login` funzioni correttamente quando le credenziali sono corrette], [S], - [TI-0X], - [Verificare che venga lanciata un'eccezione con HTTP status 401 se si effettua il login con credenziali errate e che il messaggio d'errore sia "Invalid email or password"], - [S], - - [TI-0X], + [TI-02], [Verificare che venga lanciata un'eccezione con HTTP status 401 se si effettua il login con credenziali errate e che il messaggio d'errore sia "Invalid email or password"], [S], - [TI-0X], + [TI-03], [Verificare che venga lanciata un'eccezione con HTTP status 401 se si effettua il login con un'account non verificato e che il messaggio d'errore sia "User account not confirmed"], [S], - [TI-0X], + [TI-04], [Verificare che venga lanciata un'eccezione con HTTP status 401 se si effettua il login con un'account non esistente e che il messaggio d'errore sia "User not found"], [S], - [TI-0X], + [TI-05], [Verificare che venga lanciata un'eccezione con HTTP status 429 se si effettuano troppi tentativi di login e che il messaggio d'errore sia "Too many login attempts. Please try again later"], [S], - [TI-0X], + [TI-06], [Verificare che la registrazione di un nuovo utente tramite l'endpoint \ `/register` funzioni correttamente quando i dati sono validi ], [S], - [TI-0X], + [TI-07], [Verificare che venga lanciata un'eccezione con HTTP status 409 se si effettua la registrazione con un'email già in uso e che il messaggio d'errore sia "User already exists"], [S], - [TI-0X], + [TI-08], [Verificare che venga lanciata un'eccezione con HTTP status 500 se si effettuano più registrazioni di quelle consentite e che il messaggio d'errore sia "Email quota limit exceeded"], [S], - [TI-0X], [Verificare che la verifica di un utente tramite l'endpoint `/confirm` funzioni correttamente quando i dati sono corretti], [S], + [TI-09], [Verificare che la verifica di un utente tramite l'endpoint `/confirm` funzioni correttamente quando i dati sono corretti], [S], - [TI-0X], - [Verificare che venga lanciata un'eccezione con HTTP status 404 se si effettua la verifica di un account non esistente e che il messaggio d'errore sia "User not found"], + [TI-10], + [Verificare che venga lanciata un'eccezione con HTTP status 404 se si tenta di verificare un account non esistente e che il messaggio d'errore sia "User not found"], [S], - [TI-0X], - [Verificare che venga lanciata un'eccezione con HTTP status 404 se si effettua la verifica di un account se si inserisce un codice non valido e che il messaggio d'errore sia "Code not valid"], + [TI-11], + [Verificare che venga lanciata un'eccezione con HTTP status 404 se si inserisce un codice non valido per verificare un account e che il messaggio d'errore sia "Code not valid"], [S], - [TI-0X], - [Verificare che venga lanciata un'eccezione con HTTP status 404 se si effettua la verifica di un account se si inserisce un codice scaduto e che il messaggio d'errore sia "Code Expired"], + [TI-12], + [Verificare che venga lanciata un'eccezione con HTTP status 404 se si inserisce un codice scaduto per verificare un account e che il messaggio d'errore sia "Code Expired"], [S], - [TI-0X], [Verificare che l'endpoint `/dashboard` restituisca correttamente la lista dei workflow dell'utente autenticato], [S], + [TI-13], [Verificare che l'endpoint `/dashboard` restituisca correttamente la lista dei workflow dell'utente autenticato], [S], - [TI-0X], + [TI-14], [Verificare che l'endpoint `/dashboard` neghi l'accesso e reindirizzi l'utente quando la verifica JWT fallisce, lanciando un'eccezione con HTTP status 302], [S], - [TI-0X], [Verificare che l'endpoint `/logout` funzioni correttamente per un utente autenticato], [S], + [TI-15], [Verificare che l'endpoint `/logout` funzioni correttamente per un utente autenticato], [S], - [TI-0X], [Verificare che l'endpoint `/api/new` permetta la creazione di un nuovo _workflow_ per un utente autenticato], [S], + [TI-16], [Verificare che l'endpoint `/api/new` permetta la creazione di un nuovo _workflow_ ad un utente autenticato], [S], - [TI-0X], - [Verificare che l'endpoint `/api/new` lanci un'eccezione con HTTP status 400 se si cerca di creare un workflow lasciando il campo nome vuoto e che il messaggio d'errore sia "Workflow name is required"], + [TI-17], + [Verificare che l'endpoint `/api/new` lanci un'eccezione con HTTP status 400 se si cerca di creare un _workflow_ con il campo nome vuoto e che il messaggio d'errore sia "Workflow name is required"], [S], - [TI-0X], - [Verificare che l'endpoint `/api/new` lanci un'eccezione con HTTP status 400 se si cerca di creare un workflow con nome che supera i 25 caratteri e che il messaggio d'errore sia "Workflow name must be less than 25 characters"], + [TI-18], + [Verificare che l'endpoint `/api/new` lanci un'eccezione con HTTP status 400 se si cerca di creare un _workflow_ con nome che supera i 25 caratteri e che il messaggio d'errore sia "Workflow name must be less than 25 characters"], [S], - [TI-0X], - [Verificare che l'endpoint `/api/flows/id>` restituisca correttamente i dati di un workflow esistente per un utente autenticato], + [TI-19], + [Verificare che l'endpoint `/api/flows/` restituisca correttamente i dati di un _workflow_ esistente ad un utente autenticato], [S], - [TI-0X], - [Verificare che l'endpoint `/api/flows/` lanci un'eccezione con HTTP status 404 se si richiede un workflow inesistente e che il messaggio d'errore sia "Workflow not found"], + [TI-20], + [Verificare che l'endpoint `/api/flows/` lanci un'eccezione con HTTP status 404 se si richiede un _workflow_ inesistente e che il messaggio d'errore sia "Workflow not found"], [S], - [TI-0X], - [Verificare che l'endpoint `/api/flows//delete` permetta la cancellazione di un workflow esistente per un utente autenticato], - [S], + [TI-21], [Verificare che l'endpoint `/api/flows//delete` permetta ad un utente autenticato di eliminare un _workflow_ esistente], [S], - [TI-0X], - [Verificare che l'endpoint `/api/flows//delete` lanci un'eccezione con HTTP status 404 se si tenta di eliminare un workflow inesistente e che il messaggio d'errore sia "Workflow not found"], + [TI-22], + [Verificare che l'endpoint `/api/flows//delete` lanci un'eccezione con HTTP status 404 se si tenta di eliminare un _workflow_ inesistente e che il messaggio d'errore sia "Workflow not found"], [S], - [TI-0X], [Verificare che l'endpoint `/api/flows//save` permetta la salvare correttamente un workflow per un utente autenticato], [S], + [TI-23], [Verificare che l'endpoint `/api/flows//save` permetta ad un utente autenticato di salvare correttamente un _workflow_], [S], - [TI-0X], - [Verificare che l'endpoint `/api/flows//save` lanci un'eccezione con HTTP status 400 se si tenta di salvare un workflow con un nome troppo lungo e che il messaggio d'errore sia "Workflow name must be less than 25 characters"], + [TI-24], + [Verificare che l'endpoint `/api/flows//save` lanci un'eccezione con HTTP status 400 se si tenta di salvare un _workflow_ con un nome troppo lungo e che il messaggio d'errore sia "Workflow name must be less than 25 characters"], [S], - [TI-0X], [Verificare che l'endpoint `/api/flows//run` permetta l'esecuzione di un workflow esistente per un utente autenticato], [S], + [TI-25], [Verificare che l'endpoint `/api/flows//run` permetta l'esecuzione di un _workflow_ esistente ad un utente autenticato], [S], - [TI-0X], - [Verificare che l'endpoint `/api/flows//run` lanci un'eccezione con HTTP status 404 se si tenta di eseguire un workflow inesistente e che il messaggio d'errore sia "Workflow not found"], + [TI-26], + [Verificare che l'endpoint `/api/flows//run` lanci un'eccezione con HTTP status 404 se si tenta di eseguire un _workflow_ inesistente e che il messaggio d'errore sia "Workflow not found"], [S], - [TI-0X], [Verificare che l'endpoint `/api/prompt` generi correttamente un workflow tramite AI per un utente autenticato], [S], + [TI-27], [Verificare che l'endpoint `/api/prompt` generi correttamente un _workflow_ tramite AI ad un utente autenticato], [S], - [TI-0X], - [Verificare che l'endpoint `/api/prompt` lanci un'eccezione con HTTP status 400 se si tenta di generare un workflow tramite AI senza il campo prompt e che il messaggio d'errore sia "Prompt is required"], + [TI-28], + [Verificare che l'endpoint `/api/prompt` lanci un'eccezione con HTTP status 400 se si tenta di generare un _workflow_ tramite AI senza il campo prompt e che il messaggio d'errore sia "Prompt is required"], [S], - [TI-0X], - [Verificare che l'endpoint `/api/prompt` lanci un'eccezione con HTTP status 400 se si tenta di generare un workflow tramite AI con il campo prompt vuoto e che il messaggio d'errore sia "Prompt is required"], + [TI-29], + [Verificare che l'endpoint `/api/prompt` lanci un'eccezione con HTTP status 400 se si tenta di generare un _workflow_ tramite AI con il campo prompt vuoto e che il messaggio d'errore sia "Prompt is required"], [S], )) === Test di integrazione frontend -Per effettuare i test di integrazione del frontend sono stati realizzati test end-to-end utilizzando Cypress che permettono di simulare l'interazione dell’utente con l’applicazione. - -È stato deciso di utilizzare questo approccio perché consente di testare l'intera applicazione in un ambiente che simula l'uso reale, garantendo che tutte le componenti funzionino correttamente insieme e di trovare errori che potrebbero sfuggire ai test di unità o di integrazione tradizionali. +Per effettuare i test di integrazione del frontend sono stati realizzati test end-to-end utilizzando il framework Cypress.\ +La scelta è stata motivata dalla capacità del framework di fornire un ambiente integrato per scrivere, eseguire e debuggare test, permettendo di validare funzionalità, interazioni utente e prestazioni. +L'approccio end-to-end garantisce che tutte le componenti funzionino correttamente insieme, identificando errori che potrebbero sfuggire ai test di unità o di integrazione tradizionali. #show figure: set block(breakable: true) #figure(kind: table, caption: [Test di integrazione frontend], table( @@ -782,64 +809,60 @@ Per effettuare i test di integrazione del frontend sono stati realizzati test en table.header([*Codice*], [*Descrizione*], [*Stato*]), //LOGIN - [TI-0X], [Verificare che la pagina di login venga visualizzata correttamente], [S], - [TI-0X], + [TI-30], [Verificare che la pagina di login venga visualizzata correttamente], [S], + [TI-31], [Verificare che vengano mostrati messaggi di errore se si tenta di effettuare il login lasciando i campi vuoti, verificando che il messaggio d'errore sia "Invalid email address" per il campo email e "Password cannot be empty" per il campo password], [S], - [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina _dashboard_ dopo aver effettuato correttamente il login], [S], + [TI-32], [Verificare che l'utente venga reindirizzato alla pagina _dashboard_ dopo aver effettuato correttamente il login], [S], - [TI-0X], - [Verificare che vengano mostrati messaggi di errore se si tenta di effettuare il login lasciando i campi vuoti, verificando che il messaggio d'errore sia "Invalid email address" per il campo email e "Password cannot be empty" per il campo password], + [TI-33], + [Verificare che vengano gestiti correttamente gli errori proveniente dal _backend_ simulando un login effettuato con credenziali errate], [S], - [TI-0X], - [Verificare che vengano gestiti correttamente gli errori proveniente dal backend simulando un login effettuato con credenziali errate], - [S], + [TI-34], [Verificare che l'utente venga reindirizzato alla pagina di registrazione dopo aver cliccato sul bottone "Register"], [S], - [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di registrazione dopo aver cliccato sul bottone "Register], [S], - - [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di conferma dopo aver cliccato sul bottone "Confirm your account], [S], + [TI-35], [Verificare che l'utente venga reindirizzato alla pagina di conferma dopo aver cliccato sul bottone "Confirm your account"], [S], //REGISTRAZIONE - [TI-0X], [Verificare che la pagina di _register_ venga visualizzata correttamente], [S], - [TI-0X], + [TI-36], [Verificare che la pagina di _register_ venga visualizzata correttamente], [S], + [TI-37], [Verificare che vengano mostrati messaggi di errore se si tenta di effettuare la registrazione lasciando i campi vuoti, verificando che il messaggio d'errore sia "Invalid email address" per il campo _email_ e "Your password must have at least 8 characters" per il campo _password_ e _conferma password_ ], [S], - [TI-0X], + [TI-38], [Verificare che venga mostrato un messaggio di errore se, in fase di registrazione, la password e la conferma password non corrispondono, verificando che il messaggio d'errore sia "Passwords don't match"], [S], - [TI-0X], + [TI-39], [Verificare che l'utente venga reindirizzato alla pagina di conferma account dopo aver effettuato correttamente la registrazione], [S], - [TI-0X], - [Verificare che vengano gestiti correttamente gli errori proveniente dal backend simulando una registrazione effettuata con un'email già in uso], + [TI-40], + [Verificare che vengano gestiti correttamente gli errori proveniente dal _backend_ simulando una registrazione effettuata con un'email già in uso], [S], - [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di login dopo aver cliccato sul bottone "Login], [S], + [TI-41], [Verificare che l'utente venga reindirizzato alla pagina di login dopo aver cliccato sul bottone "Login"], [S], - [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di conferma dopo aver cliccato sul bottone "Confirm your account], [S], + [TI-42], [Verificare che l'utente venga reindirizzato alla pagina di conferma dopo aver cliccato sul bottone "Confirm your account"], [S], //CONFERMA - [TI-0X], [Verificare che la pagina di conferma venga visualizzata correttamente], [S], - [TI-0X], [Verificare che vengano mostrati messaggi di errore se i dati non sono validi quando si conferma l'account], [S], - [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di login dopo aver confermato correttamente l'account], [S], - [TI-0X], - [Verificare che vengano gestiti correttamente gli errori proveniente dal backend simulando una verifica effettuata con codice errato], + [TI-43], [Verificare che la pagina di conferma venga visualizzata correttamente], [S], + [TI-44], [Verificare che vengano mostrati messaggi di errore se i dati non sono validi quando si conferma l'account], [S], + [TI-45], [Verificare che l'utente venga reindirizzato alla pagina di login dopo aver confermato correttamente l'account], [S], + [TI-46], + [Verificare che vengano gestiti correttamente gli errori proveniente dal _backend_ simulando una verifica effettuata con codice errato], [S], - [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di login dopo aver cliccato sul bottone "Login"], [S], + [TI-47], [Verificare che l'utente venga reindirizzato alla pagina di login dopo aver cliccato sul bottone "Login"], [S], - [TI-0X], [Verificare che l'utente venga reindirizzato alla pagina di registrazione dopo aver cliccato sul bottone "Register], [S], + [TI-48], [Verificare che l'utente venga reindirizzato alla pagina di registrazione dopo aver cliccato sul bottone "Register"], [S], )) == Test di sistema -I test di sistema verificano il funzionamento del sistema software nel suo complesso per garantire il soddisfacimento delle specifiche funzionali, prestazionali e di qualità concordate, presenti nel documento dell' #link("https://sigma18unipd.github.io/documentiCompilati/3-PB/documentidiprogetto/analisideirequisiti_2.0.0.pdf")[analisi dei requisiti] [versione 2.0.0]. +I test di sistema verificano il funzionamento del sistema software nel suo complesso per garantire il soddisfacimento delle specifiche funzionali, prestazionali e di qualità concordate, presenti nel documento dell'#link("https://sigma18unipd.github.io/documentiCompilati/3-PB/documentidiprogetto/analisideirequisiti_2.0.0.pdf")[analisi dei requisiti] [versione 2.0.0]. Di seguito viene fornita una tabella contenente i test di sistema effettuati, di ogni test viene riportato il codice univoco, descrizione e stato di esecuzione. @@ -854,143 +877,145 @@ Di seguito viene fornita una tabella contenente i test di sistema effettuati, di table.header([*Codice*], [*Descrizione*], [*Stato*]), //LOGIN - [TS-0X], [Verificare che l'utente possa effettuare _login_ con il proprio account per accedere al servizio], [S], + [TS-01], [Verificare che l'utente possa effettuare _login_ con il proprio account per accedere al servizio], [S], - [TS-0X], [Verificare che l'utente autenticato possa inserire la sua _e-mail_ per accedere all'applicativo], [S], + [TS-02], [Verificare che l'utente autenticato possa inserire la sua _e-mail_ per accedere all'applicativo], [S], - [TS-0X], [Verificare che l'utente possa inserire la sua _password_ per accedere all'applicativo], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se si tenta di eseguire il login con una mail non registrata], [S], + [TS-03], [Verificare che l'utente possa inserire la sua _password_ per accedere all'applicativo], [S], + [TS-04], [Verificare che il sistema restituisca un errore se si tenta di eseguire il login con una mail non registrata], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se rileva ripetuti tentativi di accesso], [S], + [TS-05], [Verificare che il sistema restituisca un errore se rileva ripetuti tentativi di accesso], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se si tenta di eseguire il login con una mail non verificata], [S], + [TS-06], [Verificare che il sistema restituisca un errore se si tenta di eseguire il login con una mail non verificata], [S], //REGISTRAZIONE - [TS-0X], [Verificare che l'utente non autenticato possa registrarsi con un nuovo account], [S], + [TS-07], [Verificare che l'utente non autenticato possa registrarsi con un nuovo account], [S], - [TS-0X], [Verificare che l'utente non autenticato possa inserire la sua _e-mail_ per registrarsi nell'applicativo], [S], + [TS-08], [Verificare che l'utente non autenticato possa inserire la sua _e-mail_ per registrarsi nell'applicativo], [S], - [TS-0X], [Verificare che l'utente possa creare la sua _password_ per registrarsi nell'applicativo], [S], + [TS-09], [Verificare che l'utente possa creare la sua _password_ per registrarsi nell'applicativo], [S], - [TS-0X], [Verificare che l'utente possa reinserire la sua password per la registrazione nell'applicativo], [S], + [TS-10], [Verificare che l'utente possa reinserire la sua password per la registrazione nell'applicativo], [S], - [TS-0X], [Verificare che il sistema restituisca un errore per credenziali non valide inserite dall'utente], [S], + [TS-11], [Verificare che il sistema restituisca un errore per credenziali non valide inserite dall'utente], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se l'_e-mail_ è già in uso in fase di registrazione], [S], + [TS-12], [Verificare che il sistema restituisca un errore se l'_e-mail_ è già in uso in fase di registrazione], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se le _password_ non corrispondono tra loro in fase di registrazione], [S], + [TS-13], [Verificare che il sistema restituisca un errore se le _password_ non corrispondono tra loro in fase di registrazione], [S], - [TS-0X], + [TS-14], [Verificare che il sistema restituisca un errore se la _password_ creata è inferiore a 8 caratteri in fase di registrazione], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se l'_e-mail_ è già in uso in fase di verifica], [S], + [TS-15], [Verificare che il sistema restituisca un errore se l'_e-mail_ è già in uso in fase di verifica], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se si lascia il campo password vuoto], [S], + [TS-16], [Verificare che il sistema restituisca un errore se si lascia il campo password vuoto], [S], - [TS-0X], [Verificare che il sistema restituisca un errore nel caso si riscontrino problemi], [S], + [TS-17], [Verificare che il sistema restituisca un errore nel caso si riscontrino problemi], [S], //VERIFICA - [TS-0X], [Verificare che l'utente possa verificare l'account creato tramite codice di verifica ricevuto per _e-mail_], [S], + [TS-18], [Verificare che l'utente possa verificare l'account creato tramite codice di verifica ricevuto per _e-mail_], [S], - [TS-0X], + [TS-19], [Verificare che il sistema restituisca un errore se l'utente tenta di concludere la registrazione senza inserire il codice di verifica], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se il codice di conferma inserito dall'utente è scaduto], [S], + [TS-20], [Verificare che il sistema restituisca un errore se il codice di conferma inserito dall'utente è scaduto], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se il codice di conferma inserito dall'utente è errato], [S], + [TS-21], [Verificare che il sistema restituisca un errore se il codice di conferma inserito dall'utente è errato], [S], //CREAZIONE - [TS-0X], [Verificare che l'utente possa visualizzare la dashboard in seguito al login nell'applicativo], [S], - [TS-0X], [Verificare che l'utente autenticato possa vedere i workflow creati nella dashboard], [S], + [TS-22], [Verificare che l'utente possa visualizzare la dashboard in seguito al login nell'applicativo], [S], + [TS-23], [Verificare che l'utente autenticato possa vedere i _workflow_ creati nella dashboard], [S], - [TS-0X], [Verificare che l'utente possa creare una nuova _routine_], [S], + [TS-24], [Verificare che l'utente possa creare una nuova _routine_], [S], - [TS-0X], [Verificare che l'utente possa modificare il nome di una _routine_], [S], + [TS-25], [Verificare che l'utente possa modificare il nome di una _routine_], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se il nome del _workflow_ viene lasciato vuoto], [S], + [TS-26], [Verificare che il sistema restituisca un errore se il nome del _workflow_ viene lasciato vuoto], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se il nome del _workflow_ ha più di 25 caratteri], [S], + [TS-27], [Verificare che il sistema restituisca un errore se il nome del _workflow_ ha più di 25 caratteri], [S], - [TS-0X], [Verificare che l'utente possa generare una _routine_ tramite linguaggio naturale], [S], + [TS-28], [Verificare che l'utente possa generare una _routine_ tramite linguaggio naturale], [S], - [TS-0X], + [TS-29], [Verificare che il sistema restituisca un errore se il prompt di generazione di una _routine_ tramite linguaggio naturale viene lasciato vuoto], [S], - [TS-0X], [Verificare che l'utente possa visualizzare il nome di una _routine_ esistente], [S], + [TS-30], [Verificare che l'utente possa visualizzare il nome di una _routine_ esistente], [S], + + [TS-31], [Verificare che l'utente possa visualizzare i dettagli di una _routine_ esistente], [S], - [TS-0X], [Verificare che l'utente possa visualizzare i dettagli di una _routine_ esistente], [S], + [TS-32], [Verificare che l'utente possa visualizzare il diagramma dei blocchi di una _routine_ esistente], [S], - [TS-0X], [Verificare che l'utente possa visualizzare il diagramma dei blocchi di una _routine_ esistente], [S], + [TS-32], [Verificare che l'utente possa visualizzare il diagramma dei blocchi di una _routine_ esistente], [S], - [TS-0X], [Verificare che l'utente possa eliminare una _routine_ esistente], [S], + [TS-33], [Verificare che l'utente possa eliminare una _routine_ esistente], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se si tenta di interagire con un _workflow_ inesistente], [S], + [TS-34], [Verificare che il sistema restituisca un errore se si tenta di interagire con un _workflow_ inesistente], [S], - [TS-0X], [Verificare che l'utente possa avviare una _routine_ esistente], [S], + [TS-35], [Verificare che l'utente possa avviare una _routine_ esistente], [S], - [TS-0X], [Verificare che l'utente possa avviare una _routine_ esistente dalla dashboard], [S], + [TS-36], [Verificare che l'utente possa avviare una _routine_ esistente dalla dashboard], [S], - [TS-0X], [Verificare che l'utente possa avviare una _routine_ esistente dalla pagina di modifica del flusso], [S], + [TS-37], [Verificare che l'utente possa avviare una _routine_ esistente dalla pagina di modifica del flusso], [S], - [TS-0X], [Verificare che il sistema restituisca un errore se l'esecuzione del flusso non va a buon fine], [S], + [TS-38], [Verificare che il sistema restituisca un errore se l'esecuzione del flusso non va a buon fine], [S], - [TS-0X], [Verificare che l'utente possa aggiungere un blocco ad una _routine_ esistente], [S], + [TS-39], [Verificare che l'utente possa aggiungere un blocco ad una _routine_ esistente], [S], - [TS-0X], [Verificare che l'utente possa aggiungere un blocco del tipo "_Telegram_ - Send Bot Message" ad una _routine_ esistente], [S], + [TS-40], [Verificare che l'utente possa aggiungere un blocco del tipo "_Telegram_ - Send Bot Message" ad una _routine_ esistente], [S], - [TS-0X], [Verificare che l'utente possa aggiungere un blocco del tipo "_AI_ - Summarize" ad una _routine_ esistente], [S], + [TS-41], [Verificare che l'utente possa aggiungere un blocco del tipo "_AI_ - Summarize" ad una _routine_ esistente], [S], - [TS-0X], [Verificare che l'utente possa aggiungere un blocco del tipo "_System_ - Wait Second(s)" ad una _routine_ esistente], [S], + [TS-42], [Verificare che l'utente possa aggiungere un blocco del tipo "_System_ - Wait Second(s)" ad una _routine_ esistente], [S], - [TS-0X], [Verificare che l'utente possa aggiungere un blocco del tipo "_Notion_ - Get Page" ad una _routine_ esistente], [S], + [TS-43], [Verificare che l'utente possa aggiungere un blocco del tipo "_Notion_ - Get Page" ad una _routine_ esistente], [S], - [TS-0X], [Verificare che l'utente possa visualizzare le impostazioni di un singolo blocco], [S], + [TS-44], [Verificare che l'utente possa visualizzare le impostazioni di un singolo blocco], [S], - [TS-0X], [Verificare che l'utente possa visualizzare le impostazioni di un blocco del tipo "_Telegram_ - Send Bot Message"], [S], + [TS-45], [Verificare che l'utente possa visualizzare le impostazioni di un blocco del tipo "_Telegram_ - Send Bot Message"], [S], - [TS-0X], [Verificare che l'utente possa visualizzare le impostazioni di un blocco del tipo "_System_ - Wait Second(s)"], [S], + [TS-46], [Verificare che l'utente possa visualizzare le impostazioni di un blocco del tipo "_System_ - Wait Second(s)"], [S], - [TS-0X], [Verificare che l'utente possa visualizzare le impostazioni di un blocco del tipo "_Notion_ - Get Page"], [S], + [TS-47], [Verificare che l'utente possa visualizzare le impostazioni di un blocco del tipo "_Notion_ - Get Page"], [S], - [TS-0X], [Verificare che l'utente possa modificare le impostazioni di un singolo blocco], [S], + [TS-48], [Verificare che l'utente possa modificare le impostazioni di un singolo blocco], [S], - [TS-0X], [Verificare che l'utente possa modificare le impostazioni di un blocco del tipo "_Telegram_ - Send Bot Message"], [S], + [TS-49], [Verificare che l'utente possa modificare le impostazioni di un blocco del tipo "_Telegram_ - Send Bot Message"], [S], - [TS-0X], [Verificare che l'utente possa modificare le impostazioni di un blocco del tipo "_System_ - Wait Second(s)"], [S], + [TS-50], [Verificare che l'utente possa modificare le impostazioni di un blocco del tipo "_System_ - Wait Second(s)"], [S], - [TS-0X], [Verificare che l'utente possa modificare le impostazioni di un blocco del tipo "_Notion_ - Get Page"], [S], + [TS-51], [Verificare che l'utente possa modificare le impostazioni di un blocco del tipo "_Notion_ - Get Page"], [S], - [TS-0X], + [TS-52], [Verificare che il sistema salvi le modifiche apportate dall'utente alla _routine_ se viene premuto il tasto di salvataggio], [S], - [TS-0X], [Verificare che l'utente possa eliminare un blocco da una _routine_ esistente], [S], + [TS-53], [Verificare che l'utente possa eliminare un blocco da una _routine_ esistente], [S], - [TS-0X], [Verificare che l'utente possa eliminare un blocco da una _routine_ esistente da tastiera premendo il tasto "backspace"], [S], + [TS-54], [Verificare che l'utente possa eliminare un blocco da una _routine_ esistente da tastiera premendo il tasto "backspace"], [S], - [TS-0X], [Verificare che l'utente possa eliminare un blocco da una _routine_ esistente da interfaccia grafica], [S], + [TS-55], [Verificare che l'utente possa eliminare un blocco da una _routine_ esistente da interfaccia grafica], [S], - [TS-0X], [Verificare che l'utente possa collegare due blocchi di una _routine_ esistente], [S], + [TS-56], [Verificare che l'utente possa collegare due blocchi di una _routine_ esistente], [S], - [TS-0X], [Verificare che l'utente possa scollegare due blocchi di una _routine esistente_], [S], + [TS-57], [Verificare che l'utente possa scollegare due blocchi di una _routine esistente_], [S], - [TS-0X], [Verificare che l'utente possa ritornare alla dashboard dalla pagina di modifica flusso], [S], + [TS-58], [Verificare che l'utente possa ritornare alla dashboard dalla pagina di modifica flusso], [S], - [TS-0X], [Verificare che l'utente possa impostare la modalità del client in dark mode o light mode], [S], + [TS-59], [Verificare che l'utente possa impostare la modalità del client in dark mode o light mode], [S], - [TS-0X], [Verificare che l'utente possa effettuare il _logout_ dall'applicativo], [S], + [TS-60], [Verificare che l'utente possa effettuare il _logout_ dall'applicativo], [S], )) == Test di accettazione I test di accettazione sono condotti per verificare che il sistema soddisfi i requisiti e le aspettative del contrattuali, motivo per cui sono condotti insieme al committente.\ Il loro successo è fondamentale per garantire il rilascio definitivo del prodotto. -Di seguito viene fornita una tabella contenente i test di accettazione effettuati in presenza dell'azienda proponente, di ogni test viene riportato il codice univoco, descrizione e stato di esecuzione. +Di seguito viene riportata una tabella contenente i test di accettazione effettuati in presenza dell'azienda proponente, di ogni test viene riportato il codice univoco, descrizione e stato di esecuzione. #show figure: set block(breakable: true) #figure(kind: table, caption: [Test di accettazione], table( @@ -999,54 +1024,52 @@ Di seguito viene fornita una tabella contenente i test di accettazione effettuat rows: auto, inset: 7pt, table.header([*Codice*], [*Descrizione*], [*Stato*]), - [TA-0X], + [TA-01], [Verificare che l'utente non autenticato possa effettuare la registrazione per accedere al servizio, inserendo mail, password e conferma password], [S], - [TA-0X], [Verificare che se le due password non corrispondono venga restituito un messaggio di errore], [S], - [TA-0X], [Verificare che se le due password non corrispondono venga restituito un messaggio di errore], [S], - [TA-0X], [Verificare che la password debba contenere almeno 8 caratteri, in caso contrario che venga mostrato un messaggio d'errore], [S], - [TA-0X], + [TA-02], [Verificare che venga restituito un messaggio di errore se le due password non corrispondono ], [S], + + [TA-03], [Verificare che venga mostrato un messaggio d'errore se la password non contiene almeno 8 caratteri ], [S], + [TA-04], [Verificare che l'utente non autenticato possa verificare il proprio account inserendo il codice di verifica ricevuto via email], [S], - [TA-0X], [Verificare che l'utente non autenticato possa effettuare il login inserendo email e password], [S], - [TA-0X], + [TA-05], [Verificare che l'utente non autenticato possa effettuare il login inserendo email e password], [S], + [TA-06], [Verificare che l'utente non autenticato riceva un messaggio di errore se tenta di effettuare il login con credenziali errate], [S], - [TA-0X], [Verificare che l'utente autenticato acceda direttamente alla dashboard], [S], - [TA-0X], [Verificare che l'utente autenticato possa vedere i workflow creati nella dashboard], [S], - [TA-0X], [Verificare che l'utente autenticato possa creare nuovi workflow], [S], - [TA-0X], [Verificare che l'utente autenticato possa inserire il nome del workflow che desidera creare], [S], - [TA-0X], - [Verificare che l'utente autenticato riceva un messaggio di errore se prova a creare un nuovo workflow lasciando vuoto il campo nome o se inserisce un nome con più di 25 caratteri], + [TA-07], [Verificare che l'utente autenticato acceda direttamente alla dashboard], [S], + [TA-08], [Verificare che l'utente autenticato possa vedere i _workflow_ creati nella dashboard], [S], + [TA-09], [Verificare che l'utente autenticato possa creare nuovi _workflow_], [S], + [TA-10], [Verificare che l'utente autenticato possa inserire il nome del _workflow_ che desidera creare], [S], + [TA-11], + [Verificare che l'utente autenticato riceva un messaggio di errore se prova a creare un nuovo _workflow_ lasciando vuoto il campo nome o se inserisce un nome con più di 25 caratteri], [S], - [TA-0X], - [Verificare che l'utente autenticato possa vedere in dettaglio il workflow premendo il workflow di interesse dalla dashboard], - [S], + [TA-12], [Verificare che l'utente possa visualizzare il diagramma dei blocchi di una _routine_ esistente], [S], - [TA-0X], [Verificare che l'utente autenticato possa generare un workflow usando il linguaggio naturale, sfruttando _LLM_], [S], - [TA-0X], [Verificare che l'utente autenticato possa creare un workflow manualmente selezionando i blocchi desiderati], [S], - [TA-0X], [Verificare che l'utente autenticato possa modificare il workflow selezionato], [S], - [TA-0X], [Verificare che l'utente autenticato possa aggiungere un blocco manualmente tramite l'interfaccia drag & drop], [S], - [TA-0X], - [Verificare che l'utente autenticato possa cercare il blocco di interesse nel menù laterale a cui si accede tramite il bottone _Add a Block_], + [TA-13], [Verificare che l'utente autenticato possa generare un _workflow_ usando il linguaggio naturale], [S], + [TA-14], [Verificare che l'utente autenticato possa creare un _workflow_ manualmente selezionando i blocchi desiderati], [S], + [TA-15], [Verificare che l'utente autenticato possa modificare il _workflow_ selezionato], [S], + [TA-16], [Verificare che l'utente autenticato possa aggiungere un blocco manualmente tramite l'interfaccia drag & drop], [S], + [TA-17], + [Verificare che l'utente autenticato possa cercare il blocco di interesse nel menù laterale, a cui si accede tramite il bottone _Add a Block_], [S], - [TA-0X], [Verificare che l'utente autenticato possa modificare le impostazioni di un singolo blocco], [S], - [TA-0X], [Verificare che l'utente autenticato possa eliminare un blocco da interfaccia grafica], [S], - [TA-0X], [Verificare che l'utente autenticato possa eliminare un blocco da tastiera, premendo il tasto _backspace_], [S], - [TA-0X], [Verificare che l'utente autenticato possa salvare un workflow], [S], - [TA-0X], [Verificare che l'utente autenticato possa rinominare un workflow], [S], - [TA-0X], [Verificare che l'utente autenticato possa eseguire un workflow dalla pagina dettagli flusso], [S], - [TA-0X], [Verificare che l'utente autenticato possa eseguire un workflow dalla dashboard], [S], - [TA-0X], [Verificare che l'utente autenticato possa eliminare un workflow], [S], - [TA-0X], [Verificare che l'utente autenticato possa rinominare un workflow], [S], - [TA-0X], [Verificare che l'utente autenticato possa effettuare il logout], [S], - [TA-0X], [Verificare che l'utente autenticato possa selezionare il tema che preferisce tra scuro e chiaro], [S], - [TA-0X], [Verificare che siano stati implementati almeno 3 blocchi di automazione], [S], + [TA-18], [Verificare che l'utente autenticato possa modificare le impostazioni di un singolo blocco], [S], + [TA-19], [Verificare che l'utente autenticato possa eliminare un blocco da interfaccia grafica], [S], + [TA-20], [Verificare che l'utente autenticato possa eliminare un blocco da tastiera, premendo il tasto _backspace_], [S], + [TA-21], [Verificare che l'utente autenticato possa salvare un _workflow_], [S], + [TA-22], [Verificare che l'utente autenticato possa rinominare un _workflow_], [S], + [TA-23], [Verificare che l'utente autenticato possa eseguire un _workflow_ dalla pagina _dettagli flusso_], [S], + [TA-24], [Verificare che l'utente autenticato possa eseguire un _workflow_ dalla _dashboard_], [S], + [TA-25], [Verificare che l'utente autenticato possa eliminare un _workflow_], [S], + [TA-26], [Verificare che l'utente autenticato possa rinominare un _workflow_], [S], + [TA-27], [Verificare che l'utente autenticato possa effettuare il logout], [S], + [TA-28], [Verificare che l'utente autenticato possa selezionare il tema che preferisce tra scuro e chiaro], [S], + [TA-29], [Verificare che siano stati implementati almeno 3 blocchi di automazione], [S], )) #pagebreak() @@ -1068,7 +1091,7 @@ Dal grafico si osserva che il valore di *MPC-EAC* rimane sempre entro una variaz === PB -Dal grafico si può notare che dallo sprint 8 il valore di *MPC-EAC* si è leggermente alzato in seguito al colloquio RTB, in concomitanza dell'ottavo sprint, a causa delle alcune correzioni da effettuare che hanno portato ad un rallentamento. +Osservando il grafico emerge che nello sprint 8 il valore di *MPC-EAC* si è leggermente alzato in seguito al colloquio RTB, in concomitanza dell'ottavo sprint, a causa delle alcune correzioni da effettuare che hanno portato ad un rallentamento. Tuttavia, si è riusciti a terminare portando il valore al di sotto del BAC. @@ -1086,7 +1109,7 @@ Dal grafico si può notare che il valore di *MPC-EV* è in linea con il valore * === PB Il grafico mostra che il valore dell’EV abbia continuato a crescere in modo proporzionale al valore del -PV, dimostrando che il gruppo è riuscito a pianificare correttamente le attività per tutta la durata del progetto. +PV, dimostrando che il gruppo è riuscito a pianificare correttamente le attività da svolgere.\ I due valori si avvicinano sempre di più a quello di BAC indicando che il gruppo è riuscito a essere coerente con il preventivo prodotto. #pagebreak() @@ -1101,8 +1124,8 @@ Si può affermare quindi che il progetto è in linea con le aspettative di budge === PB -Dal grafico si può notare come il valore di *MPC-AC* cresca in maniera inversamente proporzionale alla crescita di *MPC-ETC*. -Si può notare che alla fine i valori di *MPC-AC* e *MPC-EAC* finiscono per sovrapporsi e quello di *MPC-ETC* diventa 0. +Dal grafico si può notare come il valore di *MPC-AC* cresca in maniera inversamente proporzionale alla crescita di *MPC-ETC*.\ +Si osserva che nell'ultimo sprint i valori di *MPC-AC* e *MPC-EAC* si sovrappongono e quello di *MPC-ETC* diventa 0.\ Si può quindi affermare che il progetto è stato completato rispettando il budget preventivato. #pagebreak() @@ -1130,7 +1153,7 @@ Si può notare che i valori di *MPC-SV* e *MPC-CV* si sono stabilizzati subendo Il grafico mostra l'andamento del valore di *MPC-CPI* nel tempo, si può notare che è sempre superiore al limite inferiore e che si avvicina sempre di più al valore ottimo 1, indicando che i costi per completare i lavori sono in linea con quanto stabilito. === PB -Il grafico mostra l'andamento del valore di *MPC-CPI* nel tempo, si può notare che rimasto costante anche in fase di PB, indicando che i costi per completare i lavori sono in linea con quanto stabilito +Osservando l'andamento del valore di *MPC-CPI* nel tempo, si può notare che rimasto costante anche in fase di PB, indicando che i costi per completare i lavori sono in linea con quanto stabilito @@ -1146,7 +1169,7 @@ Con l'avanzare del progetto, il valore cresce fino a raggiungere stabilità e va Si può osservare una diminuzione del valore nell'ottavo sprint, a seguito della revisione con il professor Cardin, il quale ha richiesto un maggior dettaglio nella definizione dei requisiti. === PB -Si può notare che il valore di *MPC-RSI* ha subito dei picchi a causa di alcuni requisiti emersi dopo un'analisi più approfondita in vista dello sviluppo del MVP, tuttavia il valore rimane sempre entro i limiti accettabili. +Si può notare che il valore di *MPC-RSI* ha subito delle variazioni a causa di alcune modifiche ai requisiti emersi dopo un'analisi più approfondita in vista dello sviluppo del MVP, tuttavia il valore rimane sempre entro i limiti accettabili. #pagebreak() @@ -1161,7 +1184,7 @@ Si può notare che il gruppo si è sempre impegnato a correggere gli eventuali e === PB -Si può notare che il gruppo si è sempre impegnato a correggere gli eventuali errori ortografici presenti per raggiungere un valore pari a 0 anche nei documenti redatti in fase di PB. +Si osserva che il gruppo ha mantenuto alta l'attenzione alla correttezza ortografica per raggiungere un valore pari a 0 anche nei documenti redatti in fase di PB. @@ -1172,11 +1195,11 @@ Si può notare che il gruppo si è sempre impegnato a correggere gli eventuali e Stima dei valori SQM nel tempo ]) === RTB -Dal grafico emerge che la percentuale di metriche soddisfatte nei primi due sprint era inferiore al _limite inferiore_, ciò è dato dall'iniziale inesperienza del gruppo. Tuttavia, la percentuale cresce progressivamente con l'avanzare degli sprint raggiungendo valori accettabili. +Dal grafico emerge che la percentuale di metriche soddisfatte nei primi due sprint è inferiore al _limite inferiore_, ciò è dato dall'iniziale inesperienza del gruppo. Tuttavia, la percentuale cresce progressivamente con l'avanzare degli sprint raggiungendo valori accettabili. === PB -Dal grafico si può notare che la percentuale di metriche soddisfatte cresce costante terminando con un valore pari al massimo, indicando che il gruppo è riuscito a mantenere un buon livello di qualità del prodotto in fase di PB. +Osservando il grafico si può notare che la percentuale di metriche soddisfatte cresce costante terminando con un valore pari al massimo, indicando che il gruppo è riuscito a mantenere un buon livello di qualità del prodotto in fase di PB. #pagebreak() @@ -1193,9 +1216,7 @@ Nei primi sprint si ha un'efficienza temporale bassa, dovuta all'inesperienza de === PB -Dal grafico emerge che in fase di PB il gruppo è riuscito a mantenere un'efficienza temporale elevata, dimostrando una buona gestione del tempo. - -//AGGIORNARE 11 +Dal grafico emerge che in fase di PB il gruppo è riuscito a mantenere un'efficienza temporale elevata, dimostrando una buona gestione del tempo, grazie all'esperienza acquisita durante la fase di RTB. #pagebreak() @@ -1209,7 +1230,7 @@ Dal grafico emerge che in fase di PB il gruppo è riuscito a mantenere un'effici === PB -Dal grafico si può vedere che il gruppo è partito da una buona base del PoC. +Dal grafico si può notare che il gruppo è partito da una buona base del PoC.\ Il gruppo si è impegnato a soddisfare la maggior parte dei requisiti obbligatori entro lo sprint 10, fino allo soddisfacimento di tutti i requisiti obbligatori entro la fine del progetto. @@ -1227,7 +1248,8 @@ Il gruppo si è impegnato a soddisfare la maggior parte dei requisiti obbligator === PB -Dal grafico si può osservare che il gruppo si è impegnato fin dallo sprint 9 a soddisfare il requisito desiderabile individuato, ovvero la possibilità di cambiare tema, raggiungendo così una maggiore soddisfazione dell’utente. +Dal grafico si può osservare che il gruppo si è impegnato fin dall'inizio a soddisfare il requisito desiderabile individuato, ovvero la possibilità di cambiare tema, raggiungendo così una maggiore soddisfazione dell’utente. + #pagebreak() @@ -1271,10 +1293,11 @@ Questo approccio ha permesso di ottenere una copertura del codice superiore a qu + === PB Dal grafico si può notare che il valore dei test superati è sempre stato elevato. -Questo dimostra che i test sviluppati sono sempre stati superati. -Si è consapevoli che il fatto che i test vengano completamente superati non è garanzia di un software privo di errori o lacune, tuttavia è pur sempre indice di qualità del codice. +Questo dimostra che i test sviluppati sono sempre stati superati.\ +Si è consapevoli che una quantità elevata di test superati non sia garanzia di un software privo di errori o lacune, tuttavia è pur sempre indice di qualità del codice. //valuta inserimento del coupling diff --git a/assets/chart/PB/AC_ETC_EAC_chart.svg b/assets/chart/PB/AC_ETC_EAC_chart.svg index 4a45119..d4a8608 100644 --- a/assets/chart/PB/AC_ETC_EAC_chart.svg +++ b/assets/chart/PB/AC_ETC_EAC_chart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/chart/PB/CO_chart.svg b/assets/chart/PB/CO_chart.svg index 902da1b..734283e 100644 --- a/assets/chart/PB/CO_chart.svg +++ b/assets/chart/PB/CO_chart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/chart/PB/CPI_chart.svg b/assets/chart/PB/CPI_chart.svg index acee275..37a1c07 100644 --- a/assets/chart/PB/CPI_chart.svg +++ b/assets/chart/PB/CPI_chart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/chart/PB/CV_SV_chart.svg b/assets/chart/PB/CV_SV_chart.svg index 58aba48..c5f956f 100644 --- a/assets/chart/PB/CV_SV_chart.svg +++ b/assets/chart/PB/CV_SV_chart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/chart/PB/EAC_chart.svg b/assets/chart/PB/EAC_chart.svg index e127f15..6a13bc7 100644 --- a/assets/chart/PB/EAC_chart.svg +++ b/assets/chart/PB/EAC_chart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/chart/PB/ET_chart.svg b/assets/chart/PB/ET_chart.svg index 24a490e..5ae17c1 100644 --- a/assets/chart/PB/ET_chart.svg +++ b/assets/chart/PB/ET_chart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/chart/PB/PV_EV_chart.svg b/assets/chart/PB/PV_EV_chart.svg index aedc336..e07b027 100644 --- a/assets/chart/PB/PV_EV_chart.svg +++ b/assets/chart/PB/PV_EV_chart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/chart/PB/RSI_chart.svg b/assets/chart/PB/RSI_chart.svg index fe77bbb..d76da7e 100644 --- a/assets/chart/PB/RSI_chart.svg +++ b/assets/chart/PB/RSI_chart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/assets/chart/PB/SQM_chart.svg b/assets/chart/PB/SQM_chart.svg index c053f19..ab7b5bc 100644 --- a/assets/chart/PB/SQM_chart.svg +++ b/assets/chart/PB/SQM_chart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From dee84de6439eae0c8e56b6c90ba46e77df49a843 Mon Sep 17 00:00:00 2001 From: Aleenamthw Date: Wed, 3 Sep 2025 14:30:48 +0200 Subject: [PATCH 6/7] aggiunto cc --- ...lossario_1.1.1.typ => glossario_1.2.0.typ} | 2 +- ...a_1.3.0.typ => pianodiqualifica_2.0.0.typ} | 60 +++++++++++++------ assets/chart/PB/CC_chart.svg | 1 + 3 files changed, 44 insertions(+), 19 deletions(-) rename 3-PB/documentidiprogetto/{glossario_1.1.1.typ => glossario_1.2.0.typ} (99%) rename 3-PB/documentidiprogetto/{pianodiqualifica_1.3.0.typ => pianodiqualifica_2.0.0.typ} (96%) create mode 100644 assets/chart/PB/CC_chart.svg diff --git a/3-PB/documentidiprogetto/glossario_1.1.1.typ b/3-PB/documentidiprogetto/glossario_1.2.0.typ similarity index 99% rename from 3-PB/documentidiprogetto/glossario_1.1.1.typ rename to 3-PB/documentidiprogetto/glossario_1.2.0.typ index 77bfe01..0155121 100644 --- a/3-PB/documentidiprogetto/glossario_1.1.1.typ +++ b/3-PB/documentidiprogetto/glossario_1.2.0.typ @@ -15,7 +15,7 @@ ), tipo: "Documento Interno", destinatari: ("Sigma18", "Prof. Tullio Vardanega", "Prof. Riccardo Cardin"), - versioneAttuale: "1.1.1", + versioneAttuale: "1.2.0", versioni: ( "1.2.0", "2025/08/29", diff --git a/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ b/3-PB/documentidiprogetto/pianodiqualifica_2.0.0.typ similarity index 96% rename from 3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ rename to 3-PB/documentidiprogetto/pianodiqualifica_2.0.0.typ index 5fa06f6..bef2dcc 100644 --- a/3-PB/documentidiprogetto/pianodiqualifica_1.3.0.typ +++ b/3-PB/documentidiprogetto/pianodiqualifica_2.0.0.typ @@ -8,8 +8,13 @@ verificatori: ("Carmelo Russello", "Matteo Marangon", "Pietro Crotti", "Alessandro Bernardello", "Mirco Borella", "Marco Egidi"), tipo: "Documento Esterno", destinatari: ("Prof. Tullio Vardanega", "Prof. Riccardo Cardin", "Var Group S.p.A.", "Sigma18"), - versioneAttuale: "1.3.0", + versioneAttuale: "2.0.0", versioni: ( + "2.0.0", + "2025/09/03", + "Aleena Mathew", + "Alessandro Bernardello", + "Stesura finale della sezione dei test e migliorie varie", "1.3.0", "2025/08/20", "Carmelo Russello", @@ -17,8 +22,8 @@ "Aggiornamento cruscotto di valutazione concluso il decimo sprint e aggiunta scheletro dei test", "1.2.0", "2025/08/06", - "Aleena Mathew ", "Pietro Crotti", + "Matteo Marangon", "Aggiornamento cruscotto di valutazione concluso il nono sprint", "1.1.0", "2025/07/17", @@ -573,7 +578,7 @@ Di seguito viene fornita una tabella contenente i test di unità effettuati, di //AI summarize [TU-63], - [Verificare che il comportamento della classe `AISummarize` assicurando che il metodo `execute` restituisca un riassunto corretto], + [Verificare che il comportamento della classe `AISummarize`, assicurando che il metodo `execute` restituisca un riassunto corretto], [S], //syswait @@ -650,11 +655,11 @@ Di seguito viene fornita una tabella contenente i test di unità effettuati, di [TU-86], [Verificare che il metodo `add_json` della classe `BaseSanitizationStrategy` non sovrascrivi valori esistenti ], [S], [TU-87], - [Verificare che il metodo `add_field_if_missing` della classe `BaseSanitizationStrategy` imposti il tipo di default, se mancante], + [Verificare che il metodo `add_field_if_missing` della classe\ `BaseSanitizationStrategy` imposti il tipo di default, se mancante], [S], [TU-88], - [Verificare che più chiamate a `_position_counter` della classe `BaseSanitizationStrategy` generino una griglia di posizioni corretta], + [Verificare che più chiamate a `_position_counter` della classe \ `BaseSanitizationStrategy` generino una griglia di posizioni corretta], [S], //flowManager. @@ -820,9 +825,13 @@ L'approccio end-to-end garantisce che tutte le componenti funzionino correttamen [Verificare che vengano gestiti correttamente gli errori proveniente dal _backend_ simulando un login effettuato con credenziali errate], [S], - [TI-34], [Verificare che l'utente venga reindirizzato alla pagina di registrazione dopo aver cliccato sul bottone "Register"], [S], + [TI-34], + [Verificare che l'utente venga reindirizzato dalla pagina _login_ alla pagina di registrazione dopo aver cliccato sul bottone "Register"], + [S], - [TI-35], [Verificare che l'utente venga reindirizzato alla pagina di conferma dopo aver cliccato sul bottone "Confirm your account"], [S], + [TI-35], + [Verificare che l'utente venga reindirizzato dalla pagina _login_ alla pagina di conferma dopo aver cliccato sul bottone "Confirm your account"], + [S], //REGISTRAZIONE @@ -843,9 +852,13 @@ L'approccio end-to-end garantisce che tutte le componenti funzionino correttamen [Verificare che vengano gestiti correttamente gli errori proveniente dal _backend_ simulando una registrazione effettuata con un'email già in uso], [S], - [TI-41], [Verificare che l'utente venga reindirizzato alla pagina di login dopo aver cliccato sul bottone "Login"], [S], + [TI-41], + [Verificare che l'utente venga reindirizzato dalla pagina di registrazione alla pagina di login dopo aver cliccato sul bottone "Login"], + [S], - [TI-42], [Verificare che l'utente venga reindirizzato alla pagina di conferma dopo aver cliccato sul bottone "Confirm your account"], [S], + [TI-42], + [Verificare che l'utente venga reindirizzato dalla pagina di registrazione alla pagina di conferma dopo aver cliccato sul bottone "Confirm your account"], + [S], //CONFERMA [TI-43], [Verificare che la pagina di conferma venga visualizzata correttamente], [S], @@ -855,9 +868,13 @@ L'approccio end-to-end garantisce che tutte le componenti funzionino correttamen [Verificare che vengano gestiti correttamente gli errori proveniente dal _backend_ simulando una verifica effettuata con codice errato], [S], - [TI-47], [Verificare che l'utente venga reindirizzato alla pagina di login dopo aver cliccato sul bottone "Login"], [S], + [TI-47], + [Verificare che l'utente venga reindirizzato dalla pagina di conferma alla pagina di login dopo aver cliccato sul bottone "Login"], + [S], - [TI-48], [Verificare che l'utente venga reindirizzato alla pagina di registrazione dopo aver cliccato sul bottone "Register"], [S], + [TI-48], + [Verificare che l'utente venga reindirizzato dalla pagina di conferma alla pagina di registrazione dopo aver cliccato sul bottone "Register"], + [S], )) @@ -1053,7 +1070,7 @@ Di seguito viene riportata una tabella contenente i test di accettazione effettu [TA-13], [Verificare che l'utente autenticato possa generare un _workflow_ usando il linguaggio naturale], [S], [TA-14], [Verificare che l'utente autenticato possa creare un _workflow_ manualmente selezionando i blocchi desiderati], [S], [TA-15], [Verificare che l'utente autenticato possa modificare il _workflow_ selezionato], [S], - [TA-16], [Verificare che l'utente autenticato possa aggiungere un blocco manualmente tramite l'interfaccia drag & drop], [S], + [TA-16], [Verificare che l'utente autenticato possa aggiungere un blocco manualmente tramite l'interfaccia _drag & drop_], [S], [TA-17], [Verificare che l'utente autenticato possa cercare il blocco di interesse nel menù laterale, a cui si accede tramite il bottone _Add a Block_], [S], @@ -1092,7 +1109,7 @@ Dal grafico si osserva che il valore di *MPC-EAC* rimane sempre entro una variaz === PB Osservando il grafico emerge che nello sprint 8 il valore di *MPC-EAC* si è leggermente alzato in seguito al colloquio RTB, in concomitanza dell'ottavo sprint, a causa delle alcune correzioni da effettuare che hanno portato ad un rallentamento. -Tuttavia, si è riusciti a terminare portando il valore al di sotto del BAC. +Tuttavia, si è riusciti a terminare portando il valore al di sotto del *BAC*. @@ -1108,9 +1125,8 @@ Dal grafico si può notare che il valore di *MPC-EV* è in linea con il valore * === PB -Il grafico mostra che il valore dell’EV abbia continuato a crescere in modo proporzionale al valore del -PV, dimostrando che il gruppo è riuscito a pianificare correttamente le attività da svolgere.\ -I due valori si avvicinano sempre di più a quello di BAC indicando che il gruppo è riuscito a essere coerente con il preventivo prodotto. +Il grafico mostra che il valore del *MPC-EV* abbia continuato a crescere in modo proporzionale al valore del *MPC-PV*, dimostrando che il gruppo è riuscito a pianificare correttamente le attività da svolgere.\ +I due valori si avvicinano sempre di più a quello di *BAC* indicando che il gruppo è riuscito a essere coerente con il preventivo prodotto. #pagebreak() == Actual Cost (MPC-AC), Estimated To Complete (MPC-ETC) & Estimated At Completion (MPC-EAC) @@ -1281,6 +1297,16 @@ Questo approccio ha permesso di ottenere una copertura del codice superiore a qu // Dal grafico si può notare che il valore branch coverage ha iniziato a salire nel nono sprint, avvicinandosi molto al valore accettabile. // A fine progetto, si è raggiunto un valore superiore a quello ottimo, dimostrando che il gruppo ha implementato test efficaci, inoltre dimostra l’affidabilità del codice. +#pagebreak() + +=== Complessità ciclomatica (MPD-CC) +#figure(image("../../assets/chart/PB/CC_chart.svg", width: 90%), caption: [ + Stima dei valori CC nel tempo +]) + + +Dal grafico si può osservare che il valore *MPD-CC* è inizialmente elevato ma ha subito una riduzione costante nel tempo, grazie ad una progettazione migliore e a pratiche di refactoring. +Indica che il codice è facilmente leggibile e ben strutturato, portando a una maggiore manutenibilità e testabilità. #pagebreak() @@ -1299,5 +1325,3 @@ Dal grafico si può notare che il valore dei test superati è sempre stato eleva Questo dimostra che i test sviluppati sono sempre stati superati.\ Si è consapevoli che una quantità elevata di test superati non sia garanzia di un software privo di errori o lacune, tuttavia è pur sempre indice di qualità del codice. - -//valuta inserimento del coupling diff --git a/assets/chart/PB/CC_chart.svg b/assets/chart/PB/CC_chart.svg new file mode 100644 index 0000000..0296603 --- /dev/null +++ b/assets/chart/PB/CC_chart.svg @@ -0,0 +1 @@ + \ No newline at end of file From 25ac35bf1e870bcae5aad3e7d266b2dd4f764f44 Mon Sep 17 00:00:00 2001 From: MattWasBwoken Date: Wed, 3 Sep 2025 16:22:42 +0200 Subject: [PATCH 7/7] fix --- .../pianodiqualifica_2.0.0.typ | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/3-PB/documentidiprogetto/pianodiqualifica_2.0.0.typ b/3-PB/documentidiprogetto/pianodiqualifica_2.0.0.typ index bef2dcc..c6ad57c 100644 --- a/3-PB/documentidiprogetto/pianodiqualifica_2.0.0.typ +++ b/3-PB/documentidiprogetto/pianodiqualifica_2.0.0.typ @@ -138,7 +138,7 @@ Di seguito sono riportati gli obiettivi di qualità che il gruppo si impegna a r I processi primari comprendono attività di acquisizione, gestione operativa, manutenzione del software, fornitura e sviluppo. Verranno esaminati solo gli ultimi due, data la natura didattica del progetto. === Fornitura -Si intendono le attività e i compiti svolti dal fornitore, in accordo con l'azienda proponente nel stabilire i vincoli e requisiti del progetto.\ +Si intendono le attività e i compiti svolti dal fornitore, in accordo con l'azienda proponente nello stabilire i vincoli e requisiti del progetto.\ Con l'acronimo _MPC_ (Minimum Predictive Capability) si indica il valore minimo da raggiungere. ==== Earned Value (MPC-EV) @@ -325,7 +325,7 @@ Indica la percentuale di rami decisionali del codice eseguiti durante i test, ut Un valore alto suggerisce che il codice è stato testato approfonditamente e che ha una bassa probabilità di contenere errori. === Statement coverage (MPD-SC) -Indica la percentuale di istruzioni eseguite durante i test.\ Un valore alto alto suggerisce un'analisi pù approfondita del codice e una bassa probabilità di contenere errori. +Indica la percentuale di istruzioni eseguite durante i test.\ Un valore alto suggerisce un'analisi pù approfondita del codice e una bassa probabilità di contenere errori. Il valore è dati dal rapporto tra il numero di istruzioni eseguite e il numero totale di istruzioni nel codice, moltiplicato per 100. @@ -357,7 +357,7 @@ L'usabilità indica la facilità con cui gli utenti possono utilizzare il softwa === Tempo di apprendimento (MPD-TA) Indica il tempo necessario per un utente per imparare ad utilizzare il software.\ -Un valore basso indica che il prodotto è facile da usare e richiede poco tempo per essere appreso donando un'esperienza utente migliore. +Un valore basso indica che il prodotto è facile da usare e richiede poco tempo per essere appreso offrendo un'esperienza utente migliore. === Facilità d'uso (MPD-FU) Indica il numero di errori commessi dagli utenti durante l'interazione con il software.\ @@ -487,7 +487,7 @@ Di seguito viene fornita una tabella contenente i test di unità effettuati, di [TU-10], [Verificare che le variabili, se impostate, sovrascrivano quelle di default], [S], [TU-11], [Verificare che il valore della variabile d'ambiente `LOG_LEVEL` sia convertito in maiuscolo], [S], [TU-12], [Verificare che il formatter del logging sia configurato con una stringa con il corretto formato], [S], - [TU-13], [Verificare che l'aggiunta di uno #glossario("StreamHandler"), se non presente], [S], + [TU-13], [Verificare che venga aggiunto uno #glossario("StreamHandler"), se non presente], [S], [TU-14], [Verificare che non venga aggiunto uno `StreamHandler`, se già presente], [S], // block Factory @@ -550,8 +550,8 @@ Di seguito viene fornita una tabella contenente i test di unità effettuati, di //mongoDB [TU-46], [Verificare che la classe `MongoDBSingleton` rispetti il pattern _singleton_], [S], - [TU-47], [Verificare che la corretta istanzazione della classe `MongoDBSingleton` in presenza di un oggetto _Flask_ app], [S], - [TU-48], [Verificare che la corretta istanzazione della classe `MongoDBSingleton` in assenza di un oggetto _Flask_ app], [S], + [TU-47], [Verificare che la corretta istanziazione della classe `MongoDBSingleton` in presenza di un oggetto _Flask_ app], [S], + [TU-48], [Verificare che la corretta istanziazione della classe `MongoDBSingleton` in assenza di un oggetto _Flask_ app], [S], [TU-49], [Verificare che il metodo `get_db` della classe `MongoDBSingleton` restituisca l'oggetto database corretto], [S], [TU-50], [Verificare che l'attributo `mongo` venga inizializzato correttamente], [S], [TU-51], [Verificare che l'istanza _singleton_ persista anche se acceduta in modi diversi], [S], @@ -822,7 +822,7 @@ L'approccio end-to-end garantisce che tutte le componenti funzionino correttamen [TI-32], [Verificare che l'utente venga reindirizzato alla pagina _dashboard_ dopo aver effettuato correttamente il login], [S], [TI-33], - [Verificare che vengano gestiti correttamente gli errori proveniente dal _backend_ simulando un login effettuato con credenziali errate], + [Verificare che vengano gestiti correttamente gli errori provenienti dal _backend_ simulando un login effettuato con credenziali errate], [S], [TI-34], @@ -849,7 +849,7 @@ L'approccio end-to-end garantisce che tutte le componenti funzionino correttamen [S], [TI-40], - [Verificare che vengano gestiti correttamente gli errori proveniente dal _backend_ simulando una registrazione effettuata con un'email già in uso], + [Verificare che vengano gestiti correttamente gli errori provenienti dal _backend_ simulando una registrazione effettuata con un'email già in uso], [S], [TI-41], @@ -865,7 +865,7 @@ L'approccio end-to-end garantisce che tutte le componenti funzionino correttamen [TI-44], [Verificare che vengano mostrati messaggi di errore se i dati non sono validi quando si conferma l'account], [S], [TI-45], [Verificare che l'utente venga reindirizzato alla pagina di login dopo aver confermato correttamente l'account], [S], [TI-46], - [Verificare che vengano gestiti correttamente gli errori proveniente dal _backend_ simulando una verifica effettuata con codice errato], + [Verificare che vengano gestiti correttamente gli errori provenienti dal _backend_ simulando una verifica effettuata con codice errato], [S], [TI-47], @@ -1108,7 +1108,7 @@ Dal grafico si osserva che il valore di *MPC-EAC* rimane sempre entro una variaz === PB -Osservando il grafico emerge che nello sprint 8 il valore di *MPC-EAC* si è leggermente alzato in seguito al colloquio RTB, in concomitanza dell'ottavo sprint, a causa delle alcune correzioni da effettuare che hanno portato ad un rallentamento. +Osservando il grafico emerge che il valore di *MPC-EAC* si è leggermente alzato in seguito al colloquio RTB, in concomitanza dell'ottavo sprint, a causa di alcune correzioni da effettuare che hanno portato ad un rallentamento. Tuttavia, si è riusciti a terminare portando il valore al di sotto del *BAC*. @@ -1125,8 +1125,8 @@ Dal grafico si può notare che il valore di *MPC-EV* è in linea con il valore * === PB -Il grafico mostra che il valore del *MPC-EV* abbia continuato a crescere in modo proporzionale al valore del *MPC-PV*, dimostrando che il gruppo è riuscito a pianificare correttamente le attività da svolgere.\ -I due valori si avvicinano sempre di più a quello di *BAC* indicando che il gruppo è riuscito a essere coerente con il preventivo prodotto. +Il grafico mostra come il valore del *MPC-EV* abbia continuato a crescere in modo proporzionale al valore del *MPC-PV*, dimostrando che il gruppo è riuscito a pianificare correttamente le attività da svolgere.\ +I due valori si avvicinano sempre di più a quello di *BAC* indicando che il gruppo è rimasto coerente con il preventivo prodotto. #pagebreak() == Actual Cost (MPC-AC), Estimated To Complete (MPC-ETC) & Estimated At Completion (MPC-EAC) @@ -1215,7 +1215,7 @@ Dal grafico emerge che la percentuale di metriche soddisfatte nei primi due spri === PB -Osservando il grafico si può notare che la percentuale di metriche soddisfatte cresce costante terminando con un valore pari al massimo, indicando che il gruppo è riuscito a mantenere un buon livello di qualità del prodotto in fase di PB. +Osservando il grafico si può notare che la percentuale di metriche soddisfatte cresce costantemente, terminando con un valore pari al massimo, indicando che il gruppo è riuscito a mantenere un buon livello di qualità del prodotto in fase di PB. #pagebreak() @@ -1247,7 +1247,7 @@ Dal grafico emerge che in fase di PB il gruppo è riuscito a mantenere un'effici === PB Dal grafico si può notare che il gruppo è partito da una buona base del PoC.\ -Il gruppo si è impegnato a soddisfare la maggior parte dei requisiti obbligatori entro lo sprint 10, fino allo soddisfacimento di tutti i requisiti obbligatori entro la fine del progetto. +Il gruppo si è impegnato a soddisfare la maggior parte dei requisiti obbligatori entro lo sprint 10, fino al soddisfacimento di tutti i requisiti obbligatori entro la fine del progetto. @@ -1264,7 +1264,7 @@ Il gruppo si è impegnato a soddisfare la maggior parte dei requisiti obbligator === PB -Dal grafico si può osservare che il gruppo si è impegnato fin dall'inizio a soddisfare il requisito desiderabile individuato, ovvero la possibilità di cambiare tema, raggiungendo così una maggiore soddisfazione dell’utente. +Dal grafico si può osservare che il gruppo si è impegnato fin dall'inizio a soddisfare il requisito desiderabile individuato, ovvero la possibilità di cambiare tema, raggiungendo così una maggiore soddisfazione dell'utente. @@ -1295,7 +1295,7 @@ Questo approccio ha permesso di ottenere una copertura del codice superiore a qu // === PB // Dal grafico si può notare che il valore branch coverage ha iniziato a salire nel nono sprint, avvicinandosi molto al valore accettabile. -// A fine progetto, si è raggiunto un valore superiore a quello ottimo, dimostrando che il gruppo ha implementato test efficaci, inoltre dimostra l’affidabilità del codice. +// A fine progetto, si è raggiunto un valore superiore a quello ottimo, dimostrando che il gruppo ha implementato test efficaci, inoltre dimostra l'affidabilità del codice. #pagebreak() @@ -1323,5 +1323,5 @@ Indica che il codice è facilmente leggibile e ben strutturato, portando a una m === PB Dal grafico si può notare che il valore dei test superati è sempre stato elevato. Questo dimostra che i test sviluppati sono sempre stati superati.\ -Si è consapevoli che una quantità elevata di test superati non sia garanzia di un software privo di errori o lacune, tuttavia è pur sempre indice di qualità del codice. +Si è consapevoli che una quantità elevata di test superati non sia garanzia di un software privo di errori o lacune, tuttavia è pur sempre indice di qualità del codice.