Una strategia per la parte di verifica di un progetto descrive gli obiettivi e l'approccio generale delle attività di
test. Essa comprende le fasi di verifica (unità, integrazione e sistema) a cui rivolgersi e i tipi di verifica
(funzioni, prestazioni, caricamento, stress) da eseguire.
La strategia definisce:
-
Tool e tecniche di verifica da utilizzare.
-
Quali criteri di successo e di completamento test verranno utilizzati. Ad esempio, è possibile che i criteri
consentano al software di procedere nella verifica di accettazione quando il 95% degli scenari di test è stato
eseguito correttamente. Un altro criterio è la copertura del codice. In un sistema critico per la sicurezza, questo
criterio potrebbe essere che il 100% del codice dovrà essere coperto dai test.
-
Occorre considerare quanto segue nel caso dei requisiti delle risorse e tenere presenti le seguenti implicazioni di
pianificazione:
-
verifica di tutte le interfacce sui sistemi esterni
-
simulazione di danno fisico o rischio per la sicurezza
Alcune organizzazioni dispongono di strategie di test aziendali, nel cui caso si lavora per applicare tali strategie al
progetto specifico.
Le dimensioni più importanti attorno alle quali occorre pianificazione le attività di test sono:
-
In quale iterazione ci si trova e quali sono gli obiettivi di tale iterazione?
-
Quale fase di test (test dell'unità, test d'integrazione e test di sistema) si sta eseguendo? E' possibile lavorare
tutte le fasi del test in un'iterazione.
Di seguito vengono riportate le possibili modalità di cambiamento delle caratteristiche delle attività di test, a
seconda della posizione in cui ci si trova nelle dimensioni di test precedentemente menzionate. Occorre considerare
numerose caratteristiche, tra cui le risorse necessarie e il tempo impiegato ma, a questo punto, concentrarsi sugli
elementi importanti per definire la propria strategia di test, ad esempio:
-
tipi di test (funzionale, stress, volume, prestazioni, utilizzabilità, distribuzione e così via)
-
criteri di valutazione utilizzati (copertura test basata sul codice/sui requisiti, numero di difetti, MFCT (mean
time between failure) e così via)
-
tecniche di verifica utilizzate (manuali e automatizzate)
Non esiste alcun modello generale che spieghi come vengono distribuiti i tipi di test nei relativi cicli. E'
sufficiente concentrarsi sui differenti tipi di test, a seconda del numero di iterazioni, della dimensione
dell'iterazione e del tipo di progetto che si sta testando.
Si scoprirà che la fase di test del sistema è focalizzata sulla verifica che siano stati verificati tutti i requisiti
testabili espressi in termine di un insieme di scenari di test. Ciò significa che i criteri di completamento saranno
incentrati sulla copertura test basata sui requisiti. Nelle fasi di test dell'unità e di integrazione, ci si renderà
conto che la copertura test basata sul codice è un criterio di completamento molto più appropriato. La figura
successiva mostra in che modo l'utilizzo di questi due tipi di misure di copertura test possono cambiare man mano che
si sviluppano nuove iterazioni del proprio software.
-
Il piano del test dovrebbe definire insiemi di criteri di completamento per il test dell'unità, di integrazione e
del sistema.
-
E' possibile definire differenti insiemi di criteri di completamento per singole iterazioni.
Considerare l'automazione del maggior numero di test possibile sul progetto, in modo specifico del tipo di test
ripetuto diverse volte (test di regressione). Tenere a mente che la creazione e la gestione di test automatizzati è un
gran dispendio di tempo e risorse. Sarà sempre presente una parte di verifica manuale in ogni progetto. La seguente
figura illustra quando e in quali fasi della verifica verranno probabilmente eseguiti test manuali.
Esempio
Le seguenti tabelle mostrano quando vengono identificati diversi tipi di test e forniscono un esempio dei criteri di
completamento da definire. La prima tabella mostra un progetto MIS tipico.
Test di iterazione
|
Test del sistema
|
Test di integrazione
|
Test dell'unità
|
Iterazione 1
|
Verifica automatizzata delle prestazioni per tutti i casi d'uso.
· Sono stati eseguiti tutti i test pianificati.
· Sono stati risolti tutti i difetti con severità 1.
· Sono stati rieseguiti tutti i test pianificati e non è stato identificato alcun nuovo difetto con
severità 1.
|
Nessuno
|
Verifica informale
|
Iterazione 2
|
Verifica automatizzata della funzionalità e delle prestazioni per tutti i nuovi casi d'uso e il
precedente come test di regressione.
· Sono stati eseguiti tutti i test pianificati.
· Sono stati risolti tutti i difetti con severità 1 e 2.
· Sono stati rieseguiti tutti i test pianificati e non è stato identificato alcun nuovo difetto con
severità 1 o 2.
|
Nessuno
|
Verifica informale
|
Iterazione 3
|
Verifica negativa e della funzionalità automatizzata per tutti i nuovi casi d'uso e tutti i precedenti
come test di regressione; deve essere superato il 95% degli scenari di test.
· Sono stati eseguiti tutti i test pianificati.
· Identificati tutti i difetti con severità 1, 2 e 3.
|
Verifica automatizzata, copertura codice del 70%.
|
Verifica informale
|
Iterazione 4
|
Verifica negativa e della funzionalità automatizzata per tutti i casi d'uso, verifica manuale per tutte
le parti non automatizzate e tutti i precedenti come test di regressione. Deve essere superato il 100%
degli scenari di test.
· Sono stati eseguiti tutti i test pianificati.
· Risolti tutti i difetti con severità 1, 2 e 3.
· Sono stati rieseguiti tutti i test pianificati e non è stato identificato alcun nuovo difetto con
severità 1 o 2.
|
Verifica automatizzata, copertura codice dell'80%.
|
Verifica informale
|
La seconda tabella mostra i tipi di test e i criteri di completamento applicati per un sistema critico per la sicurezza
tipico.
Test di iterazione
|
Test del sistema
|
Test di integrazione
|
Test dell'unità
|
Iterazione 1
|
Verifica automatizzata delle prestazioni per tutti i casi d'uso; copertura scenari di test del
100%.
· Sono stati eseguiti tutti i test pianificati.
· Sono stati risolti tutti i difetti con severità 1.
· Sono stati rieseguiti tutti i test pianificati e non è stato identificato alcun nuovo difetto.
|
Nessuno
|
Nessuno
|
Iterazione 2
|
Verifica automatizzata delle prestazioni, negativa e della funzionalità per tutti i casi d'uso;
copertura scenari di test del 100%.
· Sono stati eseguiti tutti i test pianificati.
· Sono stati risolti tutti i difetti con severità 1 o 2.
· Sono stati rieseguiti tutti i test pianificati e non è stato identificato alcun nuovo difetto.
|
Verifica automatizzata delle prestazioni
|
Verifica informale
|
Iterazione 3
|
Verifica automatizzata della documentazione, utilizzabilità negativa, della funzionalità e delle
prestazioni per tutti i casi d'uso; copertura scenari di test del 100%.
· Sono stati eseguiti tutti i test pianificati.
· Risolti tutti i difetti con severità 1, 2 e 3.
· Sono stati rieseguiti tutti i test pianificati e non è stato identificato alcun nuovo difetto.
|
Verifica automatizzata delle prestazioni e precedente come test di regressione
|
Verifica automatizzata, copertura codice del 70%
|
Iterazione 4
|
Verifica automatizzata della documentazione, utilizzabilità negativa, della funzionalità e delle
prestazioni per tutti i casi d'uso; copertura scenari di test del 100%.
· Sono stati eseguiti tutti i test pianificati.
· Risolti tutti i difetti con severità 1, 2 e 3.
· Sono stati rieseguiti tutti i test pianificati e non è stato identificato alcun difetto.
|
Verifica automatizzata delle prestazioni e precedente come verifica di regressione
|
Verifica automatizzata, copertura codice dell'80%
|
|