Skip to main content

Nota dell’editore: Benvenuto nella serie Leadership In Test dal guru e consulente del testing software Paul Gerrard. La serie è pensata per aiutare i tester con qualche anno di esperienza—specialmente chi lavora in team agile—a eccellere nei ruoli di test lead e gestione.

Nell’articolo precedente, abbiamo delineato un manifesto del rischio per aiutare i manager. In questo articolo, ci porremo la classica domanda “Quanti test sono sufficienti?”. Anticipo: dipende dagli stakeholder.

Iscriviti alla newsletter di The QA Lead per essere avvisato quando verranno pubblicate nuove parti della serie. Questi post sono estratti dal corso Leadership In Test di Paul che consigliamo vivamente per approfondire questo e altri argomenti. Se ti iscrivi, usa il nostro codice sconto esclusivo QALEADOFFER per ottenere $60 di sconto sul prezzo completo del corso!

Indipendentemente dal progetto, dall’organizzazione o dall’approccio, c’è sempre spazio per la documentazione. Una buona documentazione è una benedizione, fornendo una traccia utile dell’approccio, dell’ambito, dei piani, dei progetti e dei risultati delle attività di analisi, sviluppo e test. 

In questo articolo parlerò di:

Iniziamo.

Vuoi di più da The CTO Club?

Crea un account gratuito per completare questo articolo e unirti a una comunità di CTO e leader ingegneristici che condividono framework, strumenti e approfondimenti reali per progettare, implementare e scalare tecnologie guidate dall'IA.

Name*
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form
By submitting you agree to receive occasional emails and acknowledge our Privacy Policy. You can unsubscribe at anytime.

Il valore della documentazione

Nei progetti strutturati, i documenti sono solitamente considerati deliverable a sé stanti. In regimi Agile o continui, la documentazione può essere prodotta come sottoprodotto con valore più o meno rilevante.

Scrivere documenti può essere l’attività principale degli autori tecnici professionisti, ma per la maggior parte degli operatori è una scocciatura — per quanto possa essere utile. Sebbene la stesura di documenti possa risultare noiosa per alcuni, il vero problema della documentazione è che, in molti contesti, la maggior parte della documentazione è semplicemente una perdita di tempo. Ha poco valore, è obsoleta, inesatta — o tutte e tre le cose insieme.

Ogni test manager ha scritto strategie di test che nessuno ha letto o condiviso. I tester scrivono paginate di piani di test, script e report, ma l’unica parte realmente utile agli stakeholder sono i riassunti di una pagina all’inizio o alla fine.

Abbiamo tutti scritto documenti che sappiamo avere poco valore e che nessuno leggerà.

Questo deriva da problemi comuni con la documentazione che incontriamo in progetti sia grandi che piccoli. Per ogni documento che scriviamo, ci sono alcune domande a cui dobbiamo rispondere:

  • Che tipo di documento? Una policy o strategia, un approccio o piano, una progettazione o implementazione, o un risultato e interpretazione?
  • Qual è lo scopo del documento?
  • Quale contenuto è necessario per raggiungere quello scopo?
  • Quali fonti di conoscenza servono per creare il contenuto?
  • Se il documento deve cambiare nel tempo, come sarà mantenuto?
  • Quale livello di dettaglio è richiesto?
Come test manager o come team, dovrete capire quali tipi e formati di documentazione sono appropriati e, se devono essere registri accurati o cosiddetti documenti vivi, come mantenerli aggiornati.

Arricchisci la tua casella di posta con più saggezza sulla leadership tecnologica per offrire software e sistemi migliori.

Name*
This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form

I pericoli dei template e del copia/incolla

Se nel tuo progetto si decide che è richiesto un certo documento, ad esempio un piano di test di sistema o un registro dei rischi, è allettante cercare su internet un template pronto per questi (e molti altri) tipi di documento.

Alcuni template possono dichiarare di seguire uno standard o una convenzione e di essere stati scaricati e utilizzati migliaia di volte. A volte un template può sembrare fare proprio al caso tuo. Ma, come vedremo, anche se l’indice sembra completo, può crearti problemi.

Potrebbe anche essere che tu o altri nella tua azienda abbiate preparato un documento simile per progetti precedenti. Potresti essere tentato di copiare e rinominare questo documento, cambiare i riferimenti al vecchio progetto ed editarne il contenuto a piacimento.

Attenzione: Per mia esperienza come revisore indipendente, questo è molto comune e spesso rappresenta davvero un problema. 

Innanzitutto, di solito è palesemente evidente che è stata fatta una copia o una modifica. Il linguaggio utilizzato nel testo spesso sembra scollegato dal progetto e ci sono lacune e testi superflui ovunque. Perché accade questo?

Utilizzare un modello predefinito o un documento esistente come fonte comporta diversi rischi:

  • Sembra completo, ma potrebbe includere argomenti inappropriati ed escludere altri essenziali.
  • Fornisce intestazioni per un documento, ma assolutamente nessuna indicazione su quale contenuto sia appropriato per ciascuna intestazione.
  • Potrebbe contenere testi che sembrano riutilizzabili e vengono copiati invariati da un progetto precedente non correlato, ma quel testo potrebbe dare un'impressione sbagliata, oppure essere impreciso o incompleto.

Usare modelli per ottenere intestazioni e una formattazione di base può essere utile, ma il principale problema dei modelli è questo:

Usare un modello può far risparmiare tempo; il rischio è non riflettere abbastanza mentre si scrive.

La tentazione dei modelli è quella di fidarsi troppo e poi scrivere contenuti vuoti per le varie sezioni. Dopotutto, si potrebbe pensare che il documento serva solo a spuntare una casella e che nessuno lo leggerà comunque. Il rischio dei modelli è smettere di riflettere e produrre un documento di scarso valore.

Tipi di documentazione di test

In questa sezione, esamineremo le varie forme di documentazione di test e discuteremo alcune considerazioni nei progetti strutturati o agili/continui rispetto ai tradizionali a cascata. 

Il set principale di documenti di test tende a rientrare nelle seguenti categorie:

  • Politica e strategia (talvolta nota come Master Test Plan)
  • Definizione dei test (nota anche come specifica o piani di test, in modo a volte fuorviante)
  • Progettazione dei test
  • Casi di test
  • Procedure o script di test
  • Esecuzione dei test
  • Pianificazione
  • Registro
  • Rapporto di test

La gamma di tipologie di documenti sopra elencata copre la definizione del processo di test, le principali attività di definizione ed esecuzione e la reportistica. 

Esistono diversi altri documenti collegati ai test che, in ambienti più burocratici, includerebbero le definizioni degli ambienti di test e i processi di gestione, le procedure di accettazione, i processi di gestione degli incidenti e così via (tratteremo la gestione degli incidenti in un prossimo articolo).

Un'altra ovvia omissione dall'elenco sopra sarebbe un piano globale o la pianificazione generale delle attività di test. Un programma non è propriamente un documento di test, è una sottosezione di un piano di progetto strutturato (parleremo anche della pianificazione dei programmi in un prossimo articolo, quindi restate sintonizzati!).

Politica, strategia, Master Test Plan

Scopo
  • Una policy di solito copre un'organizzazione e include un sottoinsieme di argomenti che coinvolgono tutti i progetti. Una strategia di solito copre un singolo progetto (o applicazione)
  • Nel complesso, la strategia fornisce decisioni prese su questioni logistiche di approccio, passaggi di consegne, responsabilità, ambienti, ecc.
  • Alcune di queste decisioni possono essere prese in anticipo e documentate nella strategia
  • Alcune decisioni non possono essere prese ora, ma la strategia può documentare il processo, il metodo o le informazioni che permetteranno di prendere decisioni (nel progetto)
  • Per situazioni incerte, o eventi imprevisti dove devono essere prese decisioni, la strategia documenterà i principi generali (o processi) da seguire.
Contenuti
  • Stakeholder, obiettivi, rischi chiave di interesse
  • Principi/approccio di test da adottare, ad es. test basato sul rischio
  • Processo di test (fasi del test):
    • obiettivi e ambito
    • criteri di accettazione
    • metodi, tecniche
    • deliverable (documenti)
    • responsabilità
    • attività di test non funzionali/tecniche
    • policy di gestione (dei fornitori di test)
    • processo di gestione degli incidenti
    • fonti dei dati di test
    • ambienti di test
    • Strategia di strumenti/automazione
  • Formati/templates di documentazione
Fonti
  • Stakeholder, utenti, BA, sviluppatori, operations
Mantenimento
  • Di solito, un documento redatto una volta sola e definito per un progetto o programma
Considerazioni Agile/Continuous La strategia di test per progetti agili che usano Scrum, ad esempio, è solitamente piuttosto breve e composta da poche pagine (se viene documentata). Il processo di test potrebbe non avere fasi, ma è probabile che vi sia una definizione del test ai diversi livelli. Ad esempio:
  • Test in uno sprint o iterazione
  • Test per un rilascio
  • Test di integrazione di sistema (con altri sistemi o interfacce)
  • Test utente (in sprint e/o accettazione a livello di rilascio).
Il modo in cui vengono utilizzati gli strumenti nei test degli sviluppatori (e usando BDD o TDD ad esempio) probabilmente non viene documentato, ma ci si aspetta che i team di sviluppo evolvano un approccio e si coordinino con gli altri membri del team man mano che viene inserito nuovo codice. Il ruolo del tester può essere quello di testare le funzionalità in modo interattivo appena vengono rilasciate dagli sviluppatori, oppure quello di fare da coach del testing per il resto del team. Come per l'uso di strumenti e/o TDD, il modo di lavorare evolverà nel tempo e potrebbe non essere mai documentato formalmente.

Definizione dei test (Design, Casi, Procedure)

Scopo
  • Dimostrare il flusso o la tracciabilità tra le fonti di conoscenza e i test da eseguire
  • Documentare la copertura (rispetto a modelli multipli) di aspetti dei requisiti, delle funzionalità del sistema o del comportamento degli utenti
  • Consentire agli stakeholder di rivedere copertura, approccio e scelte fatte nella creazione dei test da applicare
  • Fornire istruzioni per l'esecuzione di test ad un certo livello di dettaglio concordato.
Contenuti
  • Ambito dei test – sia ad alto livello es. funzionalità, che a livello inferiore es. modelli di comportamento
  • Copertura dei test rispetto agli elementi nell'ambito (es. una matrice di copertura dei requisiti o altro modello di test)
  • Casi di test che identificano funzionalità, pre-condizioni, input e post-condizioni (inclusi risultati attesi)
  • Procedure di test, riutilizzabili per eseguire i casi di test selezionati.
Fonti
  • Stakeholder, utenti, requisiti, design e specifiche
Mantenimento
  • In linea di principio, con requisiti fissi, dovrebbe esserci una versione concordata di questi documenti
  • Dove si verificano cambiamenti nei requisiti o nell'ambito, i tester dovranno aggiornare i documenti, mantenere la tracciabilità della documentazione e fornire una gestione della configurazione o un registro delle modifiche.
Considerazioni Agile/Continuous L'area della definizione dei test è quella dove l'approccio agile è più significativamente diverso dai progetti strutturati. Potenzialmente, i tester che si concentrano sulle funzionalità man mano che vengono consegnate potrebbero non creare alcuna documentazione. Questo è appropriato se esiste una policy o un mandato di sistema per il testing delle funzionalità, ad esempio. Più probabilmente, ci sarà un breve mandato per testare ciascuna funzionalità in una sessione di test esplorativo. Un mandato è come un piano per un breve periodo di esplorazione. Il mandato normalmente identifica:
  • L'ambito della sessione di test – la/le funzionalità da coprire e/o certa funzionalità o comportamento specifico del sistema
  • Lo scopo della sessione – esplorare determinati aspetti dei comportamenti, concentrarsi su un rischio o modalità di insuccesso, applicare alcuni scenari selezionati
  • La durata della sessione, tipicamente 45-120 minuti. La sessione è necessariamente limitata nell'ambito, ma i tester sono liberi di esplorare anche fuori dall'ambito se lo ritengono utile
  • Un mandato può puntare sull'esplorazione – per capire cosa fa una funzionalità, identificare specifici comportamenti da testare, valutare quanto testing/quante sessioni siano necessarie su una funzionalità ampia o complessa, capire quali dati di test siano necessari e così via
  • Un mandato può concentrarsi specificatamente sul test di una funzionalità, ma evidenziare alcune aree che richiedono maggiore attenzione rispetto ad altre.
Gli strumenti BDD e le storie in formato selezionato, come ad esempio storie e scenari formattati con Cucumber o Gherkin, possono fornire la tracciabilità e i contenuti che offrono i design e le procedure di test. Ogni scenario con clausole ‘given/when/then’ identifica pre-condizioni, input e post-condizioni. Riferiscono a una singola funzionalità, quindi costituiscono un caso/procedura di test minimum e sono tracciabili quantomeno alle funzionalità. I test che sono stati scriptati per essere eseguiti da strumenti potrebbero o meno avere documentazione intermedia. I team si affidano più all’osservazione dei test automatizzati e alle tabelle di dati di test usati dagli script automatici che ai design di test documentati.

Esecuzione dei Test (Pianificazione, Registro)

Scopo
  • Specificare l'ordine di esecuzione dei test
  • Registrare lo stato dei test – eseguito/non eseguito e stato
  • Fornire i risultati dell'esecuzione dei test per la reportistica
Contenuto
  • Identificativo del test, tester, data/ora di esecuzione, stato
  • Per i test che mostrano un comportamento anomalo (opzionalmente):
    • Dettagli del test come eseguito dove i dettagli differiscono dallo script
    • Risultati effettivi vs attesi
    • Altre osservazioni, interpretazioni
    • Stato del test (difetto, errore di configurazione o ambientale ecc.)
    • ID dell'osservazione o del report di difetto (dove appropriato)
Fonti
  • Inventario dei casi/procedure di test, tester
Mantenimento
  • Il programma cambierà in linea con l'ambito dei test e le procedure verranno modificate, rimosse o aggiunte al piano.
  • I test probabilmente saranno eseguiti più volte sia come re-test che come test di regressione. Il registro dovrebbe conservare una cronologia completa di tutti i test previsti.
Considerazioni Agile/Continuous Se i progetti agile/continuous non prevedono documenti di definizione dei test, in parte compensano incoraggiando i tester a tenere registri più accurati dell'esecuzione dei test. Quando i test vengono effettuati in sessioni secondo delle "charter", ci si aspetta che il tester tenga buoni appunti sui test eseguiti. Gli strumenti dedicati al logging dei test sono pochi e molto simili a semplici taccuini, così molti tester usano editor di testo semplici, applicazioni per prendere appunti o notebook cartacei. I registri vengono utilizzati per annotare tutte le attività e osservazioni significative mentre vengono svolte le sessioni di test. Un tipico registro di test esplorativi contiene elementi quali:
  • Struttura delle funzionalità esplorate (una mappa del territorio)
  • Osservazioni, domande relative alle funzionalità esplorate nella sessione
  • Modelli, elenchi, tabelle di elementi di test e idee di test
  • Test eseguiti, annotati con dettagli sufficienti per poterli ripetere
  • Anomalie riscontrate – fallimenti, comportamenti dubbi, risposte lente, cattiva esperienza utente e così via
  • Tempo impiegato nell'esplorazione, preparazione dei test, esecuzione, analisi, registrazione dei bug, retest, test di regressione, tempi non produttivi
  • Data/ora della registrazione
Dove i tester annotano l'attività della sessione in strumenti di note-taking o altri strumenti, usano marcature o linguaggi specifici di dominio per strutturare i loro appunti. Questi possono essere interpretati da semplici strumenti interni per fornire riepiloghi delle attività da usare nei report di test. I test eseguiti con strumenti (proprietari o open-source) mantengono automaticamente dei registri. Tipicamente questi log sono interrogabili dallo strumento o da procedure scritte dagli utenti.

Report di Test

Scopo
  • Comunicare l’esito di una fase di test, di test selezionati o di una sessione di test
  • Può anche applicarsi a requisiti tecnici o ad attività di test non funzionali, in tal caso il contenuto differirà per adattarsi all’obiettivo del test
  • Informare parzialmente gli stakeholder in modo che possano prendere una decisione sull’accettazione o il rilascio di un sistema o di un sottosistema.
Contenuto
  • Orari di inizio/fine dei test e durata
  • Ambiente di test
  • Versione/i del software e del sistema sotto test
  • Obiettivi e ambito dei test (da strategia di test, definizione del test)
  • Riepilogo narrativo dei risultati
  • Funzionalità ritenute conformi ai requisiti
  • Rischi ritenuti gestiti
  • Test rilevanti ancora aperti (falliti o bloccati)
  • Funzionalità parzialmente o non testate
  • Rischi parzialmente o non affrontati.
  • Dettagli dei risultati dei test con output dai log dei test ecc.
  • Stato delle soluzioni temporanee per anomalie ancora presenti
  • Analisi dei test
  • Progresso e stato dei test nel tempo
  • Statistiche sugli incidenti
Fonti
  • Strategia di test, definizioni di test, log dei test, rapporti sugli incidenti
  • Gran parte del contenuto di un report di test sarà costituito dagli strumenti utilizzati per registrare le definizioni di test, il log dei test e il registro degli incidenti o difetti.
Mantenimento
  • Questo è uno snapshot in un momento specifico della fase di esecuzione dei test e non viene mantenuto.
Considerazioni Agile/Continuous Lo scopo di un report di test in un progetto agile potrebbe coprire una singola iterazione o sprint, il testing per un rilascio, oppure una fase di test ad un livello superiore come integrazione o accettazione dell’intero sistema. Comunque sia, lo scopo non cambia. Gran parte del contenuto di un report di test deriva da strumenti o appunti dei tester. Il riepilogo narrativo dei risultati è scritto da un test lead o dal tester per una fase di test di dimensioni ridotte. Come di consueto, il report sarà probabilmente meno formale e ci saranno probabilmente meno dati grezzi che possano costituire la base per analisi sofisticate. Sicuramente, durante le iterazioni, il progresso rispetto all’iterazione in termini di funzionalità o storie consegnate, testate e approvate dagli utenti, potrebbe essere registrato in uno strumento o in una KanBan board pubblica. In questo modo, gli stakeholder sono costantemente aggiornati sul progresso durante l’iterazione e c’è minore necessità di un report formale al termine di un periodo di test. La visibilità sul progresso è una preoccupazione chiave per i team agili. Con riunioni frequenti, magari giornaliere attorno a una Scrum board ad esempio, i membri del team condividono la loro comprensione del progresso, si mettono in discussione tra loro e concordano costantemente la situazione (e i passaggi successivi). In questo modo, potrebbe non essere mai necessario un report di test formale perché il team è sempre informato e aggiornato. Se i tester tengono appunti scritti delle loro attività di sessione, allora non ci sono dati analizzabili disponibili per presentare report automatizzati, quindi i report di sessione e di progresso potrebbero essere presentati in modo pubblico e visuale. Ciò richiede un livello elevato di disciplina e buone capacità comunicative da parte dei tester. Il responsabile dei test dovrà fornire un report altrettanto informativo agli stakeholder basandosi su report verbali.

Alcuni consigli

Il tema della documentazione nei progetti è delicato tanto per i tester quanto per gli altri membri del team di progetto.

La maggior parte delle persone considera la scrittura della documentazione un peso.

Ecco alcuni aspetti da tenere a mente nella progettazione della vostra documentazione.

  1. La documentazione deve avere uno scopo e un pubblico ben definiti. Se il vostro pubblico non ha bisogno della documentazione, non la leggerà. Se non è in linea con i loro obiettivi, non vi si sentiranno coinvolti.
  2. In generale è meglio raccogliere la registrazione di un’attività prima o mentre la si svolge. Ad esempio, il TDD definisce i test prima che venga scritto il codice. I log delle sessioni di test dovrebbero essere raccolti durante la sessione e non scritti successivamente.
  3. I dati essenziali per registrare un aspetto del testing possono essere minimi. Ad esempio, un test annotato su un quaderno può essere sufficiente per il tester ma difficilmente sarà analizzabile. Forse un semplice log testuale con qualche markup potrebbe essere altrettanto veloce da registrare ma anche analizzabile da uno strumento personalizzato.
  4. Le procedure di test potrebbero non essere affatto necessarie se i tester conoscono bene il sistema sotto test. In certi casi potrebbe bastare un semplice obiettivo o mandato di test. I casi di test preparati possono essere documentati in modo minimale in un foglio di calcolo.

Infine

La necessità è la madre della documentazione.

Se preparate una documentazione completa per i vostri stakeholder e loro non la leggono, è perché non vedono valore in essa.

È meglio presentare a uno stakeholder un foglio bianco e aggiungere insieme gli argomenti che deve vedere in un documento e lavorare da lì. Potrebbero chiedere moltissimi contenuti, ma in realtà ciò di cui hanno davvero bisogno è piuttosto semplice. Continuate a chiedervi: “perché vogliono questo?”

Grazie per la lettura, seguiteci la prossima volta quando ci rimboccheremo le maniche per cominciare con un po’ di test planning.

Iscriviti alla newsletter di The QA Lead per ricevere una notifica quando saranno pubblicate le nuove parti della serie. Questi post sono estratti dal corso Leadership In Test di Paul che consigliamo vivamente per approfondire questo e altri argomenti. Se decidi di iscriverti, utilizza il nostro codice sconto esclusivo QALEADOFFER per ottenere $60 di sconto sul prezzo completo del corso!