Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 5 – Test e verifica Ernesto Damiani Università degli Studi di Milano Lezione 2 – Il test
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