Skip to main content

Nota dell’editore: Benvenuti nella serie Leadership In Test del guru del software testing e consulente Paul Gerrard. La serie è pensata per aiutare i tester con alcuni anni di esperienza—soprattutto quelli che lavorano in team agili—a eccellere nei ruoli di test lead e management.

Nell’articolo precedente, abbiamo illustrato un manifesto del rischio a supporto dei manager. In questo articolo, ci porremo la domanda classica “Quanto testing è sufficiente?”. Spoiler: dipende dagli stakeholder.

Iscriviti alla newsletter di The QA Lead per ricevere notifiche 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 decidi di unirti, utilizza il nostro codice coupon 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 un utile registro di approccio, ambito, piani, design e risultati delle attività di analisi, sviluppo e test. 

In questo articolo parlerò di:

Iniziamo.

Want more from The CTO Club?

Create a free account to finish this piece and join a community of CTOs and engineering leaders sharing real-world frameworks, tools, and insights for designing, deploying, and scaling AI-driven technology.

This field is for validation purposes and should be left unchanged.
Name*

Il valore della documentazione

Nei progetti strutturati, i documenti sono solitamente considerati deliverable a sé stanti. In contesti Agile o a rilascio continuo, la documentazione può venire prodotta come sottoprodotto di valore più o meno rilevante.

La stesura di documenti può essere l’attività principale dei technical writer professionisti ma, per la maggior parte degli operatori, è un’incombenza — per quanto utile possa essere. Anche se scrivere documenti può risultare noioso 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, inaccurata — oppure tutte e tre le cose.

Ogni test manager ha scritto strategie di test che nessuno legge o condivide. I tester producono pagine e pagine di piani di test, script e report, ma l’unico contenuto di interesse per gli stakeholder sono i riassunti di una pagina all’inizio o alla fine.

Tutti abbiamo scritto documenti di cui sappiamo che hanno poco valore e che nessuno leggerà.

Ciò deriva da problemi comuni con la documentazione che incontriamo in progetti grandi e piccoli. Per ogni documento che scriviamo, ci sono diverse domande a cui dobbiamo rispondere:

  • Che tipo di documento? Una policy o una strategia, un approccio o un piano, un design o l’implementazione, oppure un risultato e un’interpretazione?
  • Qual è lo scopo del documento?
  • Quale contenuto serve per raggiungere quello scopo?
  • Quali fonti di conoscenza servono per produrre il contenuto?
  • Se il documento deve cambiare nel tempo, come verrà mantenuto?
  • Quale livello di dettaglio è necessario?
Come test manager o come team, dovrete valutare quali tipi e formati di documentazione sono appropriati e, se questi devono essere registri accurati o cosiddetti documenti viventi, come verranno mantenuti.
Upgrade your inbox with more tech leadership wisdom for delivering better software and systems.

Upgrade your inbox with more tech leadership wisdom for delivering better software and systems.

This field is for validation purposes and should be left unchanged.
Name*

I pericoli dei template e del copia/incolla

Se nel vostro progetto è richiesto un documento specifico, come ad esempio un piano di test di sistema o un registro dei rischi, è facile farsi tentare dalla ricerca su internet di un template preconfezionato per questi (e altri) tipi di documenti.

Alcuni template dichiarano di essere conformi a standard o convenzioni e di essere stati scaricati e utilizzati migliaia di volte. A volte un template può sembrare perfetto per il vostro scopo. Ma, come vedremo, anche se l’indice sembra completo può portarvi in difficoltà.

Potrebbe anche essere che voi o altri nella vostra azienda abbiate redatto un documento simile per progetti precedenti. Potreste essere tentati di copiarlo, rinominarlo, cambiare i riferimenti al vecchio progetto e adattarne i contenuti.

Attenzione: Nella mia esperienza come revisore indipendente questo è molto comune e spesso rappresenta un vero problema. 

Innanzitutto, di solito è palesemente ovvio quando è 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é succede questo?

L'utilizzo di un modello predefinito o di un documento esistente come fonte comporta diversi rischi:

  • Sembra completo, ma potrebbe includere argomenti inappropriati ed escluderne altri invece essenziali.
  • Fornisce delle intestazioni per un documento, ma assolutamente nessuna indicazione su quale contenuto sia appropriato per ciascuna sezione.
  • Potrebbe contenere testo che sembra riutilizzabile e che viene copiato inalterato da un progetto precedente non collegato, ma quel testo potrebbe trasmettere un'impressione errata, o essere inaccurato o incompleto.

Utilizzare i modelli per ottenere le intestazioni e il layout di base della formattazione può essere utile, ma il problema principale dei template è questo:

L’uso di un template può far risparmiare tempo; il rischio è di non riflettere abbastanza durante la scrittura.

La tentazione con i modelli è di fidarsi troppo e poi scrivere frasi vuote nelle varie sezioni. Dopotutto, potresti pensare che il documento serva solo a "spuntare una casella" e che tanto nessuno lo leggerà. Il rischio con i template è che si smetta di pensare e si produca un documento che ha poco valore.

Tipi di documentazione di test

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

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

  • Politica e strategia (talvolta chiamato anche Piano di Test Principale)
  • Definizione dei test (detta anche specifica o piani di test, in modo confuso)
  • Progettazione dei test
  • Casi di test
  • Procedure di test o script
  • Esecuzione dei test
  • Pianificazione
  • Registro
  • Rapporto di test

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

Ci sono diversi altri documenti collegati ai test che, in ambienti più burocratici, includerebbero la definizione e la gestione dell’ambiente di test, le procedure di accettazione, i processi di gestione degli incidenti e così via (la gestione degli incidenti sarà trattata in un prossimo articolo).

Un’altra ovvia omissione da quanto sopra sarebbe un piano generale o una pianificazione delle attività di test. Una pianificazione in realtà non è un vero documento di test: è una sottosezione del piano generale del progetto per un progetto strutturato (anche la pianificazione verrà trattata in un prossimo articolo, quindi restate sintonizzati!).

Politica, strategia, Piano di Test Principale

Scopo
  • Una policy di solito copre un'organizzazione e include un sottoinsieme di argomenti che coprono tutti i progetti. Una strategia di solito riguarda un singolo progetto (o applicazione)
  • In generale, la strategia fornisce decisioni prese su questioni logistiche come approccio, passaggi, 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 o il metodo o le informazioni che permetteranno di prendere decisioni (nel progetto)
  • Per situazioni incerte o eventi imprevisti in cui devono essere prese decisioni, la strategia documenterà i principi generali (o il processo) da seguire.
Contenuto
  • Stakeholder, obiettivi, rischi chiave di interesse
  • Principi di test/approccio da adottare, ad es. approccio di test basato sul rischio
  • Processo di test (fasi del testing):
    • obiettivi e ambito
    • criteri di accettazione
    • metodi, tecniche
    • deliverable (documenti)
    • responsabilità
    • Attività di test non funzionali/tecniche
    • Policy di gestione dei fornitori (test)
    • Processo di gestione degli incidenti
    • Fonti dei dati di test
    • Ambienti di test
    • Strategia per strumenti/automazione
  • Formati/modelli di documentazione
Fonti
  • Stakeholder, utenti, BA, sviluppatori, operations
Manutenzione
  • Di solito, documento unico definito per un progetto o un programma
Considerazioni Agile/Continuous La strategia di test per progetti agile che utilizzano Scrum, ad esempio, sarà probabilmente piuttosto breve e composta solo da poche pagine (se viene documentata). Il processo di test potrebbe non avere fasi, ma ci sarà probabilmente una definizione del test ai diversi livelli. Per esempio:
  • Testing in uno sprint o iterazione
  • Testing per una release
  • Testing di integrazione di sistema (con altri sistemi o interfacce)
  • Testing utente (in sprint e/o accettazione a livello di release).
Le modalità di utilizzo degli strumenti nel testing per sviluppatori (e tramite BDD o TDD, ad esempio) probabilmente non saranno documentate, ma ci si aspetta che i team di sviluppo sviluppino un approccio e si confrontino con gli altri membri del team man mano che viene integrato nuovo codice. Il ruolo del tester potrebbe essere testare le funzionalità in modo interattivo man mano che vengono rilasciate dagli sviluppatori o fungere da coach di testing per il resto del team. Come per l'uso degli strumenti e/o TDD, il modo di lavorare si evolverà nel tempo e potrebbe non essere mai documentato formalmente.

Definizione del Test (Design, Casi, Procedure)

Scopo
  • Dimostrare il flusso o la tracciabilità tra le fonti di conoscenza e i test da eseguire
  • Documentare la copertura (su più modelli) di aspetti dei requisiti, delle funzionalità di sistema o dei comportamenti degli utenti
  • Consentire agli stakeholder di revisionare l'ambito, l'approccio, la copertura e le scelte effettuate nella creazione dei test da applicare
  • Fornire istruzioni per l'esecuzione dei test con un livello di dettaglio concordato.
Contenuto
  • Ambito del testing – sia ad alto livello (es. funzionalità) che a livello più basso (es. modelli di comportamento)
  • Copertura dei test rispetto agli elementi in ambito (es. matrice di copertura dei requisiti o altro modello di test)
  • Casi di test che identificano funzionalità, pre-condizioni, input e post-condizioni (inclusi i risultati attesi)
  • Procedure di test, riutilizzabili per eseguire casi di test selezionati.
Fonti
  • Stakeholder, utenti, requisiti, design e specifiche
Manutenzione
  • 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 adeguare i documenti, mantenere gli aspetti tracciabili della documentazione e fornire una gestione della configurazione o un registro delle modifiche.
Considerazioni Agile/Continuous L'area della definizione dei test è quella in cui l'approccio agile si differenzia più marcatamente dai progetti strutturati. Potenzialmente, i tester che si concentrano sulle funzionalità man mano che vengono consegnate potrebbero anche non creare alcuna documentazione. Questo è appropriato se esiste una policy o una linee guida di sistema per il testing delle funzionalità, ad esempio. Più verosimilmente, ci sarebbe una breve linea guida (charter) per il test di ogni funzionalità in una sessione di test esplorativo. Una linea guida è come un piano per un breve periodo di esplorazione. Di solito, la linea guida identifica:
  • L'ambito della sessione di test – la/le funzionalità da coprire e/o alcune funzionalità o comportamenti specifici del sistema
  • L'obiettivo della sessione – esplorare certi aspetti dei comportamenti, concentrarsi su qualche rischio o modalità di guasto, applicare determinati scenari selezionati
  • La durata della sessione è tipicamente 45-120 minuti. La sessione è necessariamente limitata nell'ambito, ma i tester sono liberi di esplorare fuori dall'ambito se lo ritengono utile
  • Una linea guida può puntare sull'esplorazione – imparare cosa fa una funzionalità, identificare comportamenti specifici meritevoli di test, valutare quanto testing/quante sessioni servono per testare una funzionalità ampia o complessa, capire quali dati di test potrebbero servire ecc.
  • Una linea guida può concentrarsi specificamente sul testing di una funzionalità, ma può evidenziare alcune aree che necessitano maggiore attenzione rispetto ad altre.
Strumenti BDD e storie in un formato selezionato, ad esempio scenari e storie formattate Cucumber o Gherkin, possono fornire la tracciabilità e il contenuto che design e procedure di test forniscono. Ogni scenario con le clausole ‘given/when/then’ identifica pre-condizioni, input e post-condizioni. Essendo collegati a una singola funzionalità, forniscono un caso/procedura di test minimale e sono comunque tracciabili alle funzionalità. Test che sono stati scriptati per essere eseguiti da strumenti possono avere o meno documentazione intermedia. I team fanno più affidamento sull'osservazione dei test automatizzati e tabelle di dati di test usate dagli script invece che su design di test formalmente documentati.

Esecuzione dei Test (Pianificazione, Log)

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
  • Identificatore del test, tester, data/ora esecuzione, stato
  • Per i test che sembrano mostrare comportamenti anomali (facoltativo):
    • Dettagli del test come eseguito dove i dettagli differiscono dallo script
    • Esiti effettivi vs attesi
    • Altre osservazioni, interpretazione
    • Stato del test (difetto, anomalia di setup o ambiente, ecc.)
    • Osservazione o id rapporto difetto (ove opportuno)
Fonti
  • Inventario casi/procedure di test, tester
Mantenimento
  • La pianificazione verrebbe modificata in base all'ambito dei test e le procedure aggiornate, rimosse o aggiunte al piano.
  • I test è probabile che vengano eseguiti più volte sia come re-test che come test di regressione. Il log dovrebbe mantenere una cronologia completa per tutti i test in ambito.
Considerazioni Agile/Continuous Se nei progetti agile/continuous non si usano documenti formali di definizione dei test, si compensa in parte incoraggiando i tester a tenere log migliori dell'esecuzione dei test. Quando i test vengono effettuati in sessioni su base di charters, il tester è tenuto a prendere buoni appunti sui test che esegue. Esistono pochi strumenti dedicati all'annotazione dei test che vadano oltre i blocco note, quindi molti tester usano semplici editor di testo, strumenti per prendere appunti o quaderni cartacei. I log tendono a essere utilizzati per registrare tutta l’attività significativa e le osservazioni durante le sessioni mentre vengono svolte. Un tipico log di test esplorativo include aspetti come:
  • Struttura delle funzionalità esplorate (una mappa del territorio)
  • Osservazioni, domande relative alle funzionalità esplorate nella sessione
  • Modelli, liste, tabelle di elementi e idee di test
  • Test eseguiti, catturati con dettaglio sufficiente da poter essere ripetuti
  • Anomalie trovate – fallimenti, comportamenti dubbiosi, lentezza nelle risposte, scarsa esperienza utente e così via
  • Tempo speso per esplorazione, preparazione test, esecuzione, investigazione, registrazione bug, retest, regressione, tempo non produttivo
  • Data/ora della registrazione
Quando i tester registrano l’attività della sessione in strumenti per appunti o altro, utilizzano una sintassi o linguaggio specifico per strutturare i propri appunti. Questi possono essere analizzati da semplici strumenti interni per fornire riepiloghi dell’attività da includere nel report di test. I test eseguiti da strumenti (proprietari o open-source) tengono automaticamente i log. Tipicamente questi log sono interrogabili dallo strumento stesso o da procedure create dall’utente.

Report di Test

Scopo
  • Comunicare l'esito di una fase di test, di test selezionati o di una sessione di test
  • Può anche riferirsi a requisiti tecnici o ad attività di test non funzionali, nel qual caso il contenuto differisce per adattarsi all'obiettivo del test
  • Informare parzialmente gli stakeholder, consentendo loro di prendere decisioni su accettazione o rilascio di un sistema o sottosistema.
Contenuto
  • Orari di inizio/fine e durata dei test
  • Ambiente di test
  • Versione/i del software e del sistema in test
  • Obiettivi e ambito del testing (dalla strategia di test, definizione dei test)
  • Riepilogo narrativo dei risultati
  • Funzionalità ritenute funzionanti come richiesto
  • Rischi considerati risolti
  • Test significativi ancora da eseguire (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 rimaste
  • Analisi dei test
  • Avanzamento e stato dei test nel tempo
  • Statistiche sugli incidenti
Fonti
  • Strategia di test, definizioni di test, log dei test, report sugli incidenti
  • Gran parte del contenuto di un report di test deriva dagli strumenti utilizzati per registrare la/le definizione/i di test, il log dei test e il log degli incidenti o dei difetti.
Mantenimento
  • Si tratta di uno snapshot nel tempo per una fase di esecuzione dei test e non viene mantenuto.
Considerazioni Agile/Continuous Lo scopo di un report di test in un progetto agile potrebbe riguardare una singola iterazione o sprint, i test in vista di un rilascio, o una fase di test di livello superiore, come l'integrazione o l'accettazione complessiva del sistema. In ogni caso, lo scopo rimane invariato. Gran parte del contenuto di un report di test sarà tratto da strumenti o appunti dei tester. Il riepilogo narrativo dei risultati viene scritto da un test lead o dal tester nelle fasi di test di scala più piccola. Come di consueto, il report sarà probabilmente meno formale e ci saranno probabilmente meno dati grezzi su cui basare analisi sofisticate. Sicuramente, durante le iterazioni, l'avanzamento all'interno dell'iterazione in termini di funzionalità o user story consegnate, testate e approvate dagli utenti, potrebbe essere registrato in uno strumento o in una bacheca KanBan pubblica. In questo modo, gli stakeholder sono tenuti informati durante tutta l'iterazione e c'è meno necessità di un report formale alla fine di un periodo di testing. La visibilità dell'avanzamento è una preoccupazione chiave per i team agili. Con meeting regolari, magari stand-up giornalieri intorno a una Scrum board, ad esempio, i membri del team condividono la comprensione dello stato dei lavori, si pongono domande e concordano costantemente la situazione (e i passi 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 la reportistica di sessione e avanzamento potrebbe essere presentata in modo pubblico e visivo. Questo richiede un alto livello di disciplina e buone capacità comunicative da parte dei tester. Il test lead o il manager dovrà fornire ai portatori di interesse dei report altrettanto informativi, basati su report verbali.

Alcuni Consigli

Il tema della documentazione nei progetti è delicato sia per i tester che per gli altri membri dei team di progetto.

La maggior parte delle persone considera la scrittura della documentazione come un compito noioso.

Ecco alcune cose da tenere a mente quando si progetta la propria documentazione.

  1. La documentazione deve avere uno scopo e un pubblico ben definiti. Se il tuo pubblico non ha bisogno della documentazione, non la leggerà. Se non è in sintonia con i suoi obiettivi, non la riterrà utile.
  2. In generale è meglio registrare l’attività prima o mentre la si svolge. Per esempio, TDD cattura i test prima che il codice venga scritto. I log delle sessioni di test dovrebbero essere annotati durante la sessione e non dopo.
  3. I dati essenziali per registrare un aspetto del testing potrebbero essere minimi. Ad esempio, un test scritto su un taccuino può bastare al tester ma non è facilmente analizzabile. Forse un semplice log testuale con un po’ di markup sarebbe altrettanto veloce da annotare ma potrebbe anche essere analizzato da uno strumento apposito.
  4. Le procedure di test potrebbero non essere nemmeno necessarie se i tester conoscono bene il sistema sotto test. Forse è sufficiente solo un obiettivo di test o una carta test. I casi di test preparati possono essere documentati in modo minimo tramite un foglio di calcolo.

Infine

La necessità è la madre della documentazione.

Se prepari una documentazione esaustiva per i tuoi stakeholder e loro non la leggono, è perché non ne vedono il valore.

È meglio presentare a uno stakeholder un foglio bianco e aggiungere insieme gli argomenti che desidera vedere in un documento, lavorando a partire da lì. Magari chiederà tantissimi contenuti, ma ciò di cui ha realmente bisogno spesso è molto più semplice. Continua a chiederti: "Perché lo vuole?"

Grazie per la lettura, torna la prossima volta quando ci rimboccheremo le maniche e inizieremo a pianificare i test.

Iscriviti alla newsletter di The QA Lead per essere avvisato quando le nuove parti della serie saranno pubblicate. 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 coupon esclusivo QALEADOFFER per ottenere $60 di sconto sul prezzo completo del corso!