IS
IS
568799:
;$<=><@?A5BCDECBD=AFG?DHE6<IJKGFE=D
L$MN(O8P
=A<H FEQR
MN$M
;(A
CB
<BAQ
;MS <BJFBCD=<QTM6DEO ABA
( E U
IS
Contenuti
W
Caratteristiche delle prove del software
W
Criteri funzionali
W
Criteri strutturali
W
Analisi dei risultati, l’oracolo
W
Approfondimento: valutazione delle prove
X
! "$#&%('')(*+"-,%/.&%100%32& "$4%
IS
Prova e collaudo
W
Verifica e validazione dinamica
Y
Attività che prevedono l’esecuzione del software
Y
In un ambiente controllato e con ingressi ed uscite definiti
Y
Come verifica (prova sui moduli)
Y
Come validazione (collaudo sul sistema)
W
Metodo intuitivo ma complesso
Y
Progettazione, esecuzione, analisi, correzione dei difetti
Y
Validazione dei risultati, terminazione delle prove
( E Z
! "&#$%$'')$*!+"-,%/.$%V00%32& "$4(%
IS
Caratteristiche
W
Una prova non è sempre definitiva
Y
È definita e ripetibile
Y
I risultati applicano solo alla specifica prova
[Non generalizzabili
Y
Evidenzia un malfunzionamento (presenza di difetti)
[Non può provarne l’assenza!
W
Le prove sono costose
Y
Richiedono molte risorse (tempo, persone, infrastrutture)
Y
Necessitano di un processo definito
Y
Richiedono attività di ricerca del difetto, analisi e correzione
\
! "$#&%('')(*+"-,%/.&%100%32& "$4%
IS
Gli elementi di una prova
W
Caso di prova (test case)
Y
Una tripla <ingresso, uscita, ambiente>
[L’ambiente include l’oggetto della prova
W
Batteria di prove (test suite)
Y
Un insieme (sequenza) di casi di prova
W
Procedura di prova
Y
Il procedimento (automatico e non) per eseguire, registrare analizzare e valutare i risultati di una batteria di prove
( E ]
! "&#$%$'')$*!+"-,%/.$%V00%32& "$4(%
IS
Conduzione di una prova
W
Definizione dell’obiettivo della prova
W
Progettazione della prova
W
Realizzazione dell’ambiente di prova
W
Esecuzione della prova
W
Analisi dei risultati
W
Valutazione della prova
^
! "$#&%('')(*+"-,%/.&%100%32& "$4%
IS
Progettazione
W
Criteri funzionali
Y
A scatola chiusa (black box)
Y
Basati sulla “conoscenza” dei requisiti di qualità
Y
Funzionalità, affidabilità, efficienza
W
Criteri strutturali
Y
A scatola aperta (white box)
Y
Basati sulla “conoscenza” del codice
Y
L’obiettivo primario è esercitare tutto il software del prodotto
W
Combinazione delle strategie → → → → gray box
( E _
! "&#$%$'')$*!+"-,%/.$%V00%32& "$4(%
IS
Criteri funzionali
W
Riduzione dei casi di prova
Y
Selezione casuale o statistica
Y
Valori di frontiera
Y
Partizioni dei dati d’ingresso
W
Grafi causa effetto
Y
Fatti elementari di ingresso e uscita
Y
Specifica come causa-effetto espressi in forma Booleana
Y
Selezione di casi di prova rappresentativi
Y
Strumento di specifica e validazione dei requisiti Vedi pag. 18 di lezione L17
`
! "$#&%('')(*+"-,%/.&%100%32& "$4%
IS
Esempio di grafo causa-effetto
Utente registrato
Password corretta
And Accesso consentito
Utente speciale And Avviso d’errore
N N
And N
And
Accesso negato
N
Requisiti
1. L’accesso è consentito se l’utente è registrato e la password è corretta;
altrimenti l’accesso è negato 2. Se l’utente è speciale e la password
è errata viene emesso un avviso d’errore sulla console di sistema
( E a
! "&#$%$'')$*!+"-,%/.$%V00%32& "$4(%
IS
Criteri strutturali
W
Grafo di flusso
Y
Definisce la struttura del codice identificando le sue parti
Y
Ottenuto a partire dal codice
W
Esercitare la maggior parte del programma
Y
Comandi, condizioni, decisioni
Y
Cammini (ogni iterazione di un ciclo è un cammino distinto)
Y
Assegnamenti ed usi
Y
Assegnamenti ed usi in espressioni e calcoli
! "$#&%('')(*+"-,%/.&%100%32& "$4%
IS
Esempio di grafo di flusso
b
Funzione fattoriale
int fact(int n) { if(n==0)
return 1;
else
return n*fact(n-1);
}
END 1
2 3
4
5
6 t ← ← ← ← n-1
k ← ← ← ← fact(n ← ← ← ← t)
n * k
return n * k n != 0 n == 0
return 1 START
( E U
! "&#$%$'')$*!+"-,%/.$%V00%32& "$4(%
IS
Raffronto
W
Generalità degli approcci
Y
Rispetto alla validità dei risultati
Y
Rispetto alle caratteristiche da provare
Y
Rispetto ai costi da sostenere
W
Dipendenze e implicazioni
Y
L’applicazione di criteri funzionali non dipende dal codice
Y
I criteri strutturali si prestano alla valutazione del grado di
copertura
X
IS
L’oracolo
W
Metodo
Y
Per generare i risultati attesi
Y
Per validare i risultati (senza conoscerli)
Y
Generalmente applicato da agenti automatici
W
Criteri generali
Y
Basati sulle specifiche funzionali
Y
Basati sulla semplificazione delle prove
Y
Basati su componenti indipendenti
( E Z
IS
Risultati dalle specifiche
c
Risultati ricavati dalle specifiche
dSpecifiche formali (generazione di invarianti)
e
Esempio: il numero di elementi di un vettore è invariante rispetto al suo ordinamento
d
Specifiche eseguibili (back-to-back)
d
Esempio: grafi causa-effetto
c
Inversione delle funzioni
dQuando l’inversa è “più facile”
d
A volte disponibile fra le funzionalità di altri componenti
d
Limitazioni per difetti di approssimazione
\
! "$#&%('')(*+"-,%/.&%100%32& "$4%
IS
Semplificazione dei dati
W
Semplificazione dei dati d’ingresso
Y
Provare le funzionalità su dati “semplici”
Y
Risultati noti o calcolabili con altri mezzi
Y
Ipotesi di comportamento costante
W
Semplificazione dei risultati
Y
Accontentarsi di risultati plausibili
Y
Tramite vincoli fra ingressi e uscite
Y
Tramite invarianti sulle uscite
( E ]
! "&#$%$'')$*!+"-,%/.$%V00%32& "$4(%
IS
Programmi indipendenti
W
Versioni precedenti dello stesso codice
Y
Disponibili (per le funzionalità non modificate)
Y
Prove di non regressione
W
Versioni multiple indipendenti
Y
Programmi pre-esistenti (back-to-back)
Y
Sviluppate ad hoc
Y
Semplificazione degli algoritmi
^
! "$#&%('')(*+"-,%/.&%100%32& "$4%
IS
Valutazione delle prove
W
Rapporto costi - confidenza
Y
Le prove sono eseguite per verifica o per validazione
Y
Devono fornire “adeguata confidenza”
[Una prova fornisce solo certezza negativa (presenza di difetti)
Y
La confidenza di una prova costa
W
Valutazione di una prova
Y
Qualità di una prova in sé
[Maggiore qualità → maggiore confidenza
Y
Raggiungimento della confidenza desiderata
( E _
! "&#$%$'')$*!+"-,%/.$%V00%32& "$4(%
IS
La copertura
W
Quanto la prova esercita il prodotto
Y
Copertura funzionale
[Rispetto alla percentuale di funzionalità esercitate
Y
Copertura strutturale
[Rispetto alla percentuale di codice esercitata
W
Una misura della bontà di una prova
Y
Copertura del 100% non è assenza di difetti
Y
Il 100% di copertura può essere irraggiungibile
[Costi eccessivi, codice sorgente non disponibile, codice irraggi ungile non
eliminabile, copertura dei cicli
`
! "$#&%('')(*+"-,%/.&%100%32& "$4%
IS
Maturità di prodotto
c
Valutare l’evoluzione del prodotto
dQuanto il prodotto migliora in seguito alle prove
d
Quanto i difetti tendono a “sparire”
d
Quanto costa la scoperta del prossimo difetto
d
Ha una connotazione empirica, tipica del modello code-and-fix
c
Definire un modello ideale
dModello base: il numero di difetti del software è una costante iniziale
d
Modello logaritmico: le modifiche introducono difetti
( E Ua
! "&#$%$'')$*!+"-,%/.$%V00%32& "$4(%
IS
La funzione µµµµ (t)
totale difetti
tempo di prova modello base modello logaritmico Nel modello logaritmico ogni rimozione di difetto può aggiungerne altri
U
! "$#&%('')(*+"-,%/.&%100%32& "$4%
IS
La funzione λλλλ (t)
tempo di prova
intensità difetti
modello base modello logaritmico
Oltre questo punto ogni rimozione di difetti può introdurne altri
( E UU
! "&#$%$'')$*!+"-,%/.$%V00%32& "$4(%
IS
Criteri economici e qualitativi
totale difetti
tempo di prova modello base Livello minimo dei difetti da eliminare
Livello dei costi corrispondenti all’obiettivo minimo Livello dei costi massimi sostenibili
Livello di qualità ottenibile a costi fissati
UX
! "$#&%('')(*+"-,%/.&%100%32& "$4%
IS
Criteri analitici
Punto di maggior vantaggio = min {ID + CP}
tempo di prova
intensità difetti
modello base costi
( E UZ
! "&#$%$'')$*!+"-,%/.$%V00%32& "$4(%
IS
Riepilogo
W
Caratteristiche delle prove del software
W
Criteri funzionali
W
Criteri strutturali
W
Analisi dei risultati, l’oracolo
W
Approfondimento: valutazione delle prove
U \
IS
Riferimenti
f
H. Zhu e altri, Software Unit Test Coverage and Adequacy, ACM Computing Surveys, Dicembre 1997
f
Standard for Software Component Testing, British Computer Society, SIGIST, 1997
f
M. Madden, Unit Testing Procedures in LaSRS++, Unisys-NASA Langley RC, 1997
f