Documente Academic
Documente Profesional
Documente Cultură
Domeniul de intrari:
Exista 4 intrari:
un intreg pozitiv n
un vector de intregi v
numarul pentru care caut divizori: x
optiune de a cauta divizori pari sau impari: p
N_1 = 1..20
N_2 = { n | n < 1 }
N_3 = { n | n > 20 }
X_1 = 10..30
X_2 = { x | x < 10 }
X_3 = { x | x > 30 }
optiunea de a cauta divizori pari sau impari este binara, deci se distring 2 clase de echivalenta
P_1 = { p }
P_2 = { i }
Clasele de echivalenta pentru intregul program se pot obtine ca o combinatie a claselor individuale:
6 clase
Intrari
Rezultat afisat
n v x p
“N trebuie sa fie mai mare decat 0 si mai
0 mic sau egal cu 20”
“N trebuie sa fie mai mare decat 0 si mai
22 mic sau egal cu 20”
4 [1,2,3,4] 16 'p' Afiseaza 2.
6 [1,5,15,45,10,12] 15 'i' Afiseaza 3.
“X trebuie sa fie mai mare decat 10 si mai
5 [1,2,3,4,5] 9 'p' mic sau egal cu 30”
“X trebuie sa fie mai mare decat 10 si mai
5 [1,2,3,4,5] 35 'p' mic sau egal cu 30”
N_1 : 1, 20
N_2 : 0
N_3 : 21
X_1 : 10, 30
X_2 : 9
X_3: 31
C_1 : c_11 are 0 divizori, c_12 are 20 divizori
C_111:
(1 , [4] , 10 , ’p’ ) ,
(1 , [4] , 30 , ’p’) ,
C_112:
(1 , [4] , 10 , ’i’ ) ,
(1 , [4] , 30 , ’i’) ,
C_12:
(1 , [4] , 9 , ’p’ ) ,
C_13:
(1 , [4] , 31 , ’p’ ),
(0 , [] , 12 , ’p’ )
C_3:
Intrari
n v x p
1 [4] 10 'p'
1 [4] 30 'p'
20 [3,5,7,9,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43] 10 'p'
20 [2,10,2,10,2,10,2,10,2,10,2,10,2,10,2,10,2,10,2,10] 10 'p'
20 [1,7,17,13,1,7,17,13,1,7,17,13,1,7,17,13,1,7,17,13] 30 'p'
20 [2,6,10,2,6,10,2,6,10,2,6,10,2,6,10,2,6,10,2,6] 30 'p'
1 [4] 10 'i'
1 [4] 30 'i'
20 [3,8,7,9,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,4] 10 'i'
20 [1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5] 10 'i'
20 [2,4,6,8,10,12,14,16,18,20,2,4,6,8,10,12,14,16,18,20] 30 'i'
20 [1,5,15,1,5,15,1,5,15,1,5,15,1,5,15,1,5,15,1,5] 30 'i'
1 [4] 9 'p'
20 [1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2] 9 'p'
1 [4] 31 'p'
20 [1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2] 31 'p'
0 [] 12 'p'
21 [1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2] 12 'p'
Pasi:
1. Descompune specificatia functionala in unitati ( programe, functii etc.) care pot fi testate separat : avem o
singura unitate
2. Identifica parametrii: n, v, x, p
3. Gaseste categorii:
n: daca este in intervalul valid 1..20
v: daca este de lungime minima, medie sau intermediara
x: daca este in intervalul valid: 10..30
p: daca este ’p’ sau ’i’
n
1) {n|n<0}
2) 0
3) 1 [ok, lungime1]
4) 2..19 [ok, lungime_medie]
5) 20 [ok, lungime20]
6) 21
7) { n | n > 21 }
v
x
1) {x|x<9}
2) 9
3) 10 [ok, lungime1]
4) 11..09 [ok, lungime_medie]
5) 30 [ok, lungime20]
6) 31
7) { x | x > 31 }
Din specificatia de testare ar trebui sa rezulte 7 * 3 * 7 * 2 = 294 de cazuri de testare. Pe de alta parte, unele
combinatii de alternative nu au sens si pot fi eliminate. Acest lucru se poate face adaugand constrangeri acestor
alternative. Constrangerile pot fi fie proprietati ale alternativelor fie conditii de selectie bazate pe aceste proprietati. In
acest caz, alternativele vor fi combinate doar daca conditiile de selectie sunt satisfacute. Folosind acest procedeu, in
exemplul nostru vom reduce numarul cazurilor de testare la 34.
n1
n2
n3v1x1
n3v1x2
n3v1x3p1
n3v1x3p2
n3v1x4p1
n3v1x4p2
n3v1x5p1
n3v1x5p2
n3v1x6
n3v1x7
n4v2x1
n4v2x2
n4v2x3p1
n4v2x3p2
n4v2x4p1
n4v2x4p2
n4v2x5p1
n4v2x5p2
n4v2x6
n4v2x7
n5v3x1
n5v3x2
n5v3x3p1
n5v3x3p2
n5v3x4p1
n5v3x4p2
n5v3x5p1
n5v3x5p2
n5v3x6
n5v3x7
n6
n7
7. Creeaza date de test
Intrari
n v x p
-1
0
21
23
1 [4] 5 'p'
1 [4] 9 'p'
1 [5] 10 'p'
1 [2] 10 'i'
1 [5] 16 'p'
1 [5] 16 'i'
1 [5] 30 'p'
1 [2] 30 'i'
1 [4] 31 'p'
1 [4] 37 'p'
4 [4,5,6,7] 5 'p'
4 [4,5,6,7] 9 'p'
4 [5,7,9,11] 10 'p'
4 [2,7,9,11] 10 'i'
4 [5,7,9,11] 16 'p'
4 [5,6,7,11] 16 'i'
4 [5,7,8,11] 30 'p'
4 [2,6,7,11] 30 'i'
4 [4,5,6,7] 31 'p'
4 [4,5,6,7] 37 'p'
20 [18,36,54,72,90,18,36,54,72,90,18,36,54,72,90,18,36,54,72,90] 5 'p'
20 [18,36,54,72,90,18,36,54,72,90,18,36,54,72,90,18,36,54,72,90] 9 'p'
20 [1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5] 10 'p'
20 [1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5] 10 'i'
20 [18,36,54,72,90,18,36,54,72,90,18,36,54,72,90,18,36,54,72,90] 17 'p'
20 [18,36,54,72,90,18,36,54,72,90,18,36,54,72,90,18,36,54,72,90] 17 'i'
20 [18,36,54,72,90,18,36,54,72,90,18,36,54,72,90,18,36,54,72,90] 30 'p'
20 [18,36,54,72,90,18,36,54,72,90,18,36,54,72,90,18,36,54,72,90] 30 'i'
20 [18,36,54,72,90,18,36,54,72,90,18,36,54,72,90,18,36,54,72,90] 31 'p'
20 [18,36,54,72,90,18,36,54,72,90,18,36,54,72,90,18,36,54,72,90] 37 'p'
Nota: O alta categorie poate fi considerata numarul de divizori pe care ii are numarul x in vectorul v. Aceasta
categorie poate fi adaugata celor existente.
2.
2 throw new IllegalArgumentException("N trebuie sa fie mai mare decat 0 si mai mic sau egal cu 20");
3 if (n != v.length) {
6 throw new IllegalArgumentException("X trebuie sa fie mai mare decat 10 si mai mic sau egal cu 30");
10 if (p == 'p') {
12 num++;
}
13 else
15 num++;
16 return num;
}
Statement Coverage
Intrari
Rezultat afisat Instructiuni parcurse
n v x p
0 [] 15 'p' 1,2
1 [3,4] 15 'p' 1,3,4
1 [3] 9 'p' 1,3,5,6
1 [3] 15 's' 1,3,5,7,8
1 [10] 20 'p' 1,3,5,7,9,10,11,12,9,16
1 [9] 18 'i' 1,3,5,7,9,10,13,14,15,9,16
Decision Coverage
Intrari Instructiuni
Rezultat afisat
n v x p parcurse
"N trebuie sa fie mai mare decat 0 si mai mic sau
0 [] 15 'p' egal cu 20"
1 [3,4] 15 'p' "Dimensiunea vectorului trebuie sa fie N."
"X trebuie sa fie mai mare decat 10 si mai mic sau
'p'
1 [3] 9 egal cu 30"
1 [3] 15 's' "P trebuie sa fie p-par sau i-impar"
1 [10] 20 'p' 1
1 [2] 20 'p' 0
1 [9] 18 'i' 1
1 [2] 18 'i' 0
Condition Coverage
Intrari
Rezultat afisat Instructiuni parcurse
n v x p
"N trebuie sa fie mai mare
decat 0 si mai mic sau egal
0 [] 15 'p' cu 20"
[5, 6, 9, 18, 36, 54, 72, 90, 18, 36, "N trebuie sa fie mai mare
54, 72, 90, 18, 36, 54, 72, 90, 18, decat 0 si mai mic sau egal
23 36, 54, 72, 90] 16 'p' cu 20"
4 [2,6,7,11] 30 'i' 0
"Dimensiunea vectorului
'p'
1 [3,4] 15 trebuie sa fie N."
4 [2, 6, 7, 11] 30 'i' 0
"X trebuie sa fie mai mare
decat 10 si mai mic sau egal
1 [3] 9 'p' cu 30"
"X trebuie sa fie mai mare
decat 10 si mai mic sau egal
1 [3] 33 'p' cu 30"
1 [2] 18 'i' 0
4 [2,6,7,11] 30 'i' 0
1 [10] 20 'p' 1
"P trebuie sa fie p-par sau i-
's'
1 [3] 14 impar"
1 [10] 20 'p' 1
1 [10] 20 'p' 1
4 [2, 6, 7, 11] 30 'i' 0
1 [9] 18 'i' 1
1 [4] 18 'p' 0
1 [4] 16 'p' 1
1 [5] 18 'i' 0
1 [4] 16 'p' 1
1 [5] 18 'p' 0
1 [9] 18 'i' 1
1 [4] 18 'p' 0
Se ia n = 0 si n = 1
(1.1.1.1.1.1.1.1.1.(1.((1.1+null).1.1+null) + ((1.1.1+null).1.1+null) + null).1.1 + null) =
= (1(1(1+1))1)
=2
Numar de cai = 2
Intrari
Rezultat afisat Instructiuni parcurse
n v x p
1 [10] 20 'p' 1 1,3,5,7,9,10,11,12,9,16
1 [9] 18 'i' 1 1,3,5,7,9,10,13,14,15,9,16
5. Folosind generatorul de mutanti, raportul a fost 100%, nu a mai ramas niciun mutant in viata!