Corso di Ingegneria del Software a.a. 2009/2010 Mario Vacca mario.vacca1@istruzione.it
Concetti base Strategie di testing Bibliografia Sommario
Concetti di base Concetti di base Error (1) The difference between a computed, observed, or measured value or condition and the true, specified, or theoretically correct value or condition. For example, a difference of 30 meters between a computed result and the correct result. (2) An incorrect step, process, or data definition. For example, an incorrect instruction in a computer program. (3) An incorrect result. For example, a computed result of 12 when the correct result is 10. (4) A human action that produces an incorrect result. For example, an incorrect action on the part of a programmer or operator. Note: While all four definitions are commonly used, one distinction assigns definition 1 to the word error, definition 2 to the word fault, definition 3 to the word failure, and definition 4 to the word mistake. (da IEEE 610.12 Standard Glossary of Software Engineering Terminology, pag. 31)
Concetti di base Concetti di base Errore errore difetto o anomalia malfunzionamento o guasto
Concetti di base Concetti di base Verifica e Validazione (V&V) Verifica: stiamo realizzando correttamente il prodotto? Controlla la qualità delle attività svolte durante una fase dello sviluppo. Validazione: stiamo realizzando il prodotto corretto? Controlla la qualità del prodotto rispetto ai requisiti del committente.
Concetti di base Concetti di base Strategie di testing : processo scopo: individuare gli errori di funzionamento di un software the process of executing a program with the intent of finding errors (P. Jalote A Concise Introduction to Software Engineering Springer, 2008, pag. 229 )
Concetti di base Concetti di base Test Case, Test Suite, and Test Harness test case Insieme di test input e condizioni di esecuzione test suite Un gruppo di casi di test test harness framework
Concetti base Strategie di testing Bibliografia Sommario
Programma corretto P programma funzione P : D! R P(d), d 2 D corretto se soddisfa le specifiche, non corretto se diverso dal risultato previsto dalle specifiche. P corretto, 8d 2 D ; ok(p ; d)
Test ideale Caso di test d 2 D Test ideale Un insieme di test T si dice ideale se e solo se ogni volta che P è scorretto, allora esiste d 2 T tale che P è scorretto per d.
Criterio di selezione Un criterio di selezione di test C per un programma P è un insieme di predicati su D Un test T è selezionato dal criterio C se 8t 2 T 9c 2 C tale c(t) e 8c 2 C9t 2 T tale c(t)
Criteri di selezione affidabili e validi Un criterio di selezione di test C è affidabile per un programma P se per ogni coppia di test T 1, T 2 selezionati dal criterio C, il test T 1 ha successo se e solo se T 2 ha successo. Un criterio di selezione C è valido per un programma P se il programma P non è corretto, esiste almeno un test T selezionato da C che ha successo su P.
Teorema di Goodenough e Gerhart C affidabile e valido, T selezionato da C, T non ha successo allora P è corretto
Problemi indecidibili Dato P qualsiasi, stabilire se la sua esecuzione su un input arbitrario termina
Teorema di HOWDEN Non esiste un algoritmo che, dato un programma arbitrario P, generi un test finito definito da un criterio affidabile e valido.
Tesi di Dijkstra Il testing di un programma può rivelare la presenza di malfunzionamenti, ma mai dimostrarne l assenza.
Problemi indecidibili Teorema di Weyuker Dato P qualsiasi, i seguenti problemi sono indecidbili: esiste almeno un dato di ingresso che causa l esecuzione di un particolare comando? esiste un particolare dato di ingresso che causa l esecuzione di una particolare condizione (branch)? è possibile trovare almeno un dato di ingresso che causa l esecuzione di ogni comando di P? è possibile trovare almeno un dato di ingresso che causa l esecuzione di ogni condizione (branch) di P? è possibile trovare almeno un dato di ingresso che causa l esecuzione di ogni cammino di P?
Concetti base Strategie di testing Bibliografia Sommario
Concetti di base Strategie di testing revisione formale il testing procede bottom up (dal componente al sistema) uso di tecniche differenziate sviluppatore o tester debugging
Concetti di base Strategie di testing da R. Pressman Ingegneria del software Mc Graw Hill Italia, 5a edizione, 2007, pag. 486
Concetti base Strategie di testing Bibliografia Sommario
Strategie di testing Scriveremo i test prima di scrivere il codice, in continuazione. Conserveremo questi test per tutta la durata del sistema, e li eseguiremo frequentemente tutti assieme. Deriveremo dei test anche dalla prospettiva del cliente. da K. Beck Programmazione estrema, Addison-Wesley, 2000, pag. 126
Problema Necessità dei test Difficoltà di realizzarli
Il testing secondo la XP Secondo la XP si deve lavorare in accordo con la natura umana, e il testing è contrario alla natura umana. I test sono uno strumento per verificare il comportamento del sistema (CHE È LA COSA CHE INTERESSA) I test che si devono scrivere nell XP sono isolati ed automatici. da K. Beck Programmazione estrema, Addison-Wesley, 2000, pag. 127
Il testing secondo la XP Secondo la XP si deve lavorare in accordo con la natura umana, e il testing è contrario alla natura umana. I test sono uno strumento per verificare il comportamento del sistema (CHE È LA COSA CHE INTERESSA) I test che si devono scrivere nell XP sono isolati ed automatici. da K. Beck Programmazione estrema, Addison-Wesley, 2000, pag. 127
Il testing secondo la XP Secondo la XP si deve lavorare in accordo con la natura umana, e il testing è contrario alla natura umana. I test sono uno strumento per verificare il comportamento del sistema (CHE È LA COSA CHE INTERESSA) I test che si devono scrivere nell XP sono isolati ed automatici. da K. Beck Programmazione estrema, Addison-Wesley, 2000, pag. 127
Il testing secondo la XP I test devono essere non interagenti essere automatici collaudare ciò che potrebbe non funzionare pagare
Il testing secondo la XP Se il codice è talmente semplice da non poter non funzionare, e vi accertate che il codice in questione funziona realmente nella pratica, allora non dovete scrivere test. Se vi consigliassi di collaudare ogni cosa, v accorgereste ben presto che la maggior parte dei test che state scrivendo sono privi di valore, e se foste come me smettereste di scriverli dicendo: Questo testing è per gli stupidi. da K. Beck Programmazione estrema, Addison-Wesley, 2000, pag. 127
Il testing secondo la XP : tipi di test Test unitari relativi ai metodi programmatori successo 100 % Test funzionali relativi alle storie clienti (in collaborazione con il collaudatore del gruppo) non sempre 100 %
Il testing secondo la XP : tipi di test Test parallelo Stress test Test della scimmia
Bibliografia Concetti base Strategie di testing Bibliografia Sommario
Bibliografia Bibliografia Riferimenti bibliografici 1. R. Pressman Ingegneria del software Mc Graw Hill Italia, 5a edizione, 2007, capitoli 15 e 16. 2. IEEE 610.12 Standard Glossary of Software Engineering Terminology. 3. K. Beck Programmazione estrema, Addison-Wesley, 2000, (capitolo 18). 4. P. Jalote A Concise Introduction to Software Engineering Springer, 2008, par. 7.4, capitolo 8. 5. C. Ghezzi, M. Jazayeri, D. Mandrioli Ingegneria del software. Fondamenti e principi, Pearson Education Italia, 2004.