Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Versione definitiva
Obiettivo dellesercitazione
Verificare la comprensione dei concetti principali del test a scatola bianca
(copertura delle istruzioni, delle decisioni, . . . ) su un programma Java di
esempio di alcune decine di righe.
Il programma scelto `
e quello del calcolo della data del giorno successivo,
che:
riceve da tastiera tre interi, che rappresentano un giorno, un mese ed
un anno, e
stampa sullo schermo la data successiva, secondo le regole del calendario
gregoriano (quello in uso in Italia dal 4 ottobre 1582).
Per semplicit`
a, si assume che la data in input sia corretta (ad esempio,
sono proibiti numeri negativi, numeri reali, date inesistenti, . . . ).
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 1
Programma in Java
// File DataSuccessiva.java
public class DataSuccessiva {
public static void main (String[] args) {
int giorno, mese, anno, giorni_del_mese = 0;
System.out.println("Data (giorno, mese, anno)?");
giorno = InOut.readInt(); mese = InOut.readInt();
anno = InOut.readInt();
System.out.println("Il giorno successivo al "+ giorno+/
+mese+/+anno+" e ");
switch (mese) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
giorni_del_mese = 31;
break;
case 4: case 6: case 9: case 11:
giorni_del_mese = 30;
break;
case 2:
if ((anno % 4) == 0 && (anno % 400 == 0 || anno % 100 != 0))
giorni_del_mese = 29;
else
giorni_del_mese = 28;
}
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 2
if (giorno == giorni_del_mese) {
giorno = 1;
if (mese == 12) {
mese = 1;
anno = anno + 1;
}
else mese = mese + 1;
}
else
giorno = giorno + 1;
System.out.println(giorno + "/" + mese + "/" + anno);
}
}
Obiettivi specifici
Progettare casi di test secondo i criteri di:
2. costruzione del grafo di controllo del programma (senza rappresentazione delle condizioni)
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 4
/* 8 */ if (giorno == giorni_del_mese) {
/* 9 */ giorno = 1;
/* 10 */ if (mese == 12) {
/* 11 */ mese = 1;
anno = anno + 1;
}
/* 12 */ else mese = mese + 1;
}
else
/* 13 */ giorno = giorno + 1;
/* 14 */ System.out.println(giorno + "/" + mese + "/" + anno);
}
}
non
bisestile
5
mese ==
2
mese ==
4,6,9,11
bisestile
... continua
mese ==
1,3,5,7,8,10,12
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 6
mese ==
12
giorni ==
g d m
...
10
11
mese != 12
12
14
giorni !=
g d m
13
Nota: la complessit`
a ciclomatica di questo grafo `
e pari a 6.
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 7
caso
C1
C2
C3
C4
variabili di input
giorno mese anno
31
12
1999
30
4
1999
18
2
2004
18
2
2003
variabile locale
giorni del mese
31
30
29
28
output previsto
1/1/2000
1/5/1999
19/2/2004
19/2/2003
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 8
istruzione
coperta da
C1
coperta da
C2
coperta da
C3
coperta da
C4
coperta da
almeno un caso
10
11
12
13
14
Ogni istruzione `
e coperta, abbiamo raggiunto lobiettivo 1
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 9
decisione
coperta da
C1
coperta da
C2
coperta da
C3
coperta da
C4
coperta da
almeno un caso
2-3
2-4
2-5
5-6
5-7
8-13
10-11
10-12
8-9
Ogni decisione `
e coperta, abbiamo raggiunto lobiettivo 2
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 11
break;
case 2:
/* 5 */ if (/* L */ (anno % 4) == 0 &&
(/* M */ anno % 400 == 0 || /* N */ anno % 100 != 0))
/* 6 */ giorni_del_mese = 29;
else
/* 7 */ giorni_del_mese = 28;
}
/* 8 */ if (giorno == giorni_del_mese) {
/* 9 */ giorno = 1;
/* 10 */ if (mese == 12) {
/* 11 */ mese = 1;
anno = anno + 1;
}
/* 12 */ else mese = mese + 1;
}
else
/* 13 */ giorno = giorno + 1;
/* 14 */ System.out.println(giorno + "/" + mese + "/" + anno);
}
}
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 14
5
F
N
F
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 15
mese!=1
==3
!=7
!=5
2A
==1
!=3
C
==5
!=8
E
==7
==8
!=10
F
==10
==12
mese!=12
H
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 16
mese!=12
!=4
!=6
==4
!=9
==6
!=11
==9
5L
==11
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 17
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 18
condizione
coperta da
C1
coperta da
C2
coperta da
C3
coperta da
C4
coperta da
almeno un caso
L-7
L-M
M-N
M-6
N-6
N-7
NO
NO
condizione
coperta da
C1
coperta da
C2
coperta da
C3
coperta da
C4
coperta da
almeno un caso
A-3
NO
A-B
B-3
B-C
C-3
C-D
D-3
D-E
E-3
E-F
F-3
F-G
G-3
G-H
NO
NO
NO
NO
NO
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 20
condizione
coperta da
C1
coperta da
C2
coperta da
C3
coperta da
C4
coperta da
almeno un caso
G-H
H-4
H-I
I-4
I-J
J-4
J-K
K-4
K-5
NO
NO
NO
Obiettivo 3, passo 4
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 22
Passi principali:
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 23
caso
C1
C2
C3
C4
variabili di input
giorno mese anno
31
12
1999
30
4
1999
18
2
2004
18
2
2003
output
previsto
1/1/2000
1/5/1999
19/2/2004
19/2/2003
cammino
1-2-B-C-D-E-F-G-3-8-9-10-11-14
1-2-B-C-D-E-F-G-H-4-8-9-10-12-14
1-2-B-C-D-E-F-G-H-I-J-K-L-M-N-6-8-13-14
1-2-B-C-D-E-F-G-H-I-J-K-L-7-8-13-14
caso
C5
C6
C7
C8
C9
C10
C11
C12
C13
C14
C15
variabili di input
giorno mese anno
10
1
2009
11
3
2008
12
5
2007
13
7
2006
14
8
2005
15
10
2004
16
6
2003
17
9
2002
18
11
2001
28
2
2000
28
2
2100
output
previsto
11/1/2009
12/3/2008
13/5/2007
14/7/2006
15/8/2005
16/10/2004
17/6/2003
18/9/2002
19/11/2001
29/2/2000
1/3/2100
cammino
1-A-3-8-13-14
1-A-B-3-8-13-14
1-A-B-C-3-8-13-14
1-A-B-C-D-3-8-13-14
1-A-B-C-D-E-3-8-13-14
1-A-B-C-D-E-F-3-8-13-14
1-A-B-C-D-E-F-G-H-I-4-8-13-14
1-A-B-C-D-E-F-G-H-I-J-4-8-13-14
1-A-B-C-D-E-F-G-H-I-J-K-4-8-13-14
1-A-B-C-D-E-F-G-H-I-J-K-L-M-6-8-13-14
1-A-B-C-D-E-F-G-H-I-J-K-L-M-N-7-8-13-14
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 25
La verifica che i cammini/casi di test C1-C15 ricoprano tutti gli archi del
grafo di controllo con rappresentazione delle condizioni viene lasciata
per esercizio.
Ing. del SW: Esercitazione test scatola bianca. Marco Cadoli. Univ. La Sapienza. A.A. 2005-06 26
Esercizi
Progettare casi di test, utilizzando la metodologia vista, per i programmi
descritti nel seguito.