Lezione 2 – Il test
Ingegneria del software
Modulo 1 - Introduzione al processo software
Unità didattica 5 – Test e verifica
Ernesto Damiani
Università degli Studi di Milano
Il software testing (1)
• Test = processo di verifica delle funzionalità e
della correttezza del software attraverso
esecuzioni di prova
– Un test ha successo quando trova un errore non ancora
individuato
– Non è possibile dimostrare l’assenza di errori
Il software testing (2)
In un mondo perfetto
• La correttezza dei programmi sarebbe una
conseguenza logica (dimostrabile a priori) del
loro contenuto
• Testare sarebbe inutile
Nel mondo reale
• Testare è indispensabile
Visioni sbagliate del testing
(di Boris Beizer)
• Il capo: “Se foste dei programmatori decenti
come dite di essere non fareste tutti questi
errori!”
• Il programmatore: “Testare un programma
così semplice? Lo considero un insulto
personale!”
Paradosso del testing
Qualsiasi metodo venga utilizzato per
individuare i fault lascia un residuo di fault
per cui il metodo scelto non è efficace.
Tipi di test (1)
Non-execution-based testing
• Walk-through
– Ispezione diretta del codice
• Cleanroom
– Nel ciclo di vita incrementale, letture e controlli di
qualità del codice
• Verifica di correttezza
– Tecniche formali logico-matematiche
Tipi di test (2)
Execution-based testing
• Testing rispetto alle specifiche (black box
testing)
– Considera i requisiti nel derivare i casi di test
– Non considera la struttura del software
• Testing to code (white box testing)
– Casi di test basati sul codice
– Considera la struttura del software nel derivare i casi
di test
– Valutato in termini di coverage (statement, branch,
path ecc.)
Testing e fasi di sviluppo
• Il testing non è una fase dello sviluppo; va
previsto in tutte le fasi, con significato e modalità
diverse
Tipi di testing
• Strutturale (White box)
• Funzionale (Black box)
• Statistico (Random)
• Mutazionale
• Object-oriented (test degli stati)
Categorie di test
• Unit, Module, Component testing
– White box e black box
• Integration testing
– Test di interoperabilità tra componenti
• System testing
– Test funzionale
– Test di performance
– Test di installazione
• User Acceptance testing
FINE
Scarica

Il test - Università degli Studi di Milano