Sunteți pe pagina 1din 10

Testare și verificare

​- ​Proiect individual -

Student: Glisca Maria-Luiza,


Grupa: 454
Specificatiile problemei:

Sa se implementeze un program care primeste de la tastatura un numar n, 1 < n < 100, doi
indecsi low si high, low < high. Sa se afiseze numarul de vocale dintre cei doi indecsi.

Input​: n unde este numarul de elemente ale vectorului


Un string de caractere
Primul indice: low numar intreg
Al doilea indice: high numar intreg
Output​: V este numaru de vocale

Testarea funcționala
1. Partiționare de echivalență

Domeniul de intrari:
1. 1 < n < 100 - lungimea sirului de caractere
2. Un sir de caractere
3. Un numar intreg -low
4. Un numar intreg-high

Pentru fiecare intrare, distingem urmatoarele clase de echivalenta:

Pentru n: N_1 = 1…100


N_2 = {n / n < 1}
N_3={n / n > 100}

Pentru a: A_1 = { a / a contine numai valori pozitive(adica litere) }


A_2 = {a / a contine macar o cifra (pozitiva/negativa)}

Pentru low: ​ L_1 = {low / 0 < low < n}


L_2 = {low / low < 0}
L_3 = {low / low > n}

Pentru high: H_1 = {high / 0 < high < n}


H_2 = {high / high < 0}
H_3 = {high / high > n}
In ceea ce priveste domeniul de iesiri, avem un singur raspuns posibil si anume v - care
reprezinta numarul de aparitii ale vocalelor dintre cei doi indici din sir. Aceasta va fi 0 daca
vectorul nu contine nicio vocala intre low si high.

Astfel, obtinem urmatoarele clase de echivalenta globale(pentru intregul program):

➔ C_1111 = {(n, a, high, low) / n in N_1, a in A_1, low in L_1, high in H_1}
➔ C_1112 = {(n, a, high, low) / n in N_1, a in A_1, low in L_1, high in H_2}
➔ C_1113 = {(n, a, high, low) / n in N_1, a in A_1, low in L_1, high in H_3}
➔ C_112 = {(n, a, high, low) / n in N_1, a in A_1, low in L_2}
➔ C_113= {(n, a, high, low) / n in N_1, a in A_1, low in L_3}
➔ C_12 = {(n, a, high, low) / n in N_1, a in A_2}
➔ C_2 = {(n, a, high, low) / n in N_2}
➔ C_3 = {(n, a, high, low) / n in N_3}

In total, avem 8 clase. Alegem urmatoarele date de test:

Date intare Raspuns


1
T_1111 = {5, {c,h,e,v,i}, 2, 4}

Conditions not met.


T_1112 = {5, {c,h,e,v,i},3, -1}

Conditions not met.


T_1113 = {5, {c,h,e,v,i},2,101}

Conditions not met.


T_112={5,{c.h,e,v,i}, -1,_}

Conditions not met.


T_113 ={5,{c,h,e,v,i},101,_}

Conditions not met.


T_12 = {5,{c,h,-2. 1.i}, _, _}

Conditions not met.


T_2 = {0,_,_,_}

Conditions not met.


T_3 = {101,_,_,_}

2. Analiza valorilor de frontiera


Valorile de frontiera sunt:

- Dimensiunea sirului de caractere: n = 0, 1 , 100, 101


- Low ∈ {​-1, 0, n ​-1, n}
- High ∈ {​-1, 0, n ​-1, n}

Distingem urmatoarele clase din punctul de verere al valorilor de frontiera:

- N_1 = { (n, a, high, low)/ n = 1 or n = 100 }


- N_2 = { (n, a, high, low) / n = 0 }
- ​ N_3 = { (n, a, high, low) / n = 101 }
- L_1 = {(n, a, high, low)/ low =0, n-1}
- L_2 = {(n, a, high, low)/ low = -1}
- L_3 = {(n, a high, low)/ low = n}
- H_1 = {(n, a high, low)/high = 0, n-1}
- H_2 = {(n, a high, low)/high = -1}
- H_3 = {(n, a high, low)/high = n}

Alegem urmatorele valori de test. Mentionam ca desi exista in total 3 * 4 * 4 = 48 date de


test, unele alegeri sunt echivalente.

Date intrare Raspuns

T_11h = {(n,{g}, -1, h) / n∈ {1, 100}, h∈ H_h } Conditions not met.

T_121={(1, {e}, -1, Conditions not met.

T_122={(1,{e},, 0, 0), (100, {e, …, e}, 0, 0)} 1

T_123 = {(_, _, _, n)} Conditions not met.

T_133 = {(1, {e}, n ​ 1, n ​ 1)} 1

T_14 = {(_, _, n, _)} Conditions not met.

T_2 = {0, {}, 0, 0} Conditions not met.

T_3 = {101, {g, .., g}, _, _} Conditions not met.

3. Partitionarea in categorii

Avem urmatoarea partitionare in unitati a problemei:


esteVocala:
- Intoarce numarul de aparatii alei vocalei , iar 0 daca nu e nicio vocala.

Date de intare:

T_1 = e => 1
T_2 = g => 0

Solve
- Categorii:
- n: daca se afla in intervalul valid 1..100 sau nu
-sir: daca contine cifre sau nu
-low: {0, .. n-1}
-high: {0,..n-1}
- Alternative:
- n < 0, n = 0, n = 1, n = 2...100, n = 100, n > 101
- sir: contine numai litere sau cel putin o cifra
- low
- low >= 0 && low < n;
- low < 0
- low > n
- low = n-1
-high: analog low

Date de intrare Raspuns

T_1 = (-1,_ ,_ ,_) Conditions not met.

T_2 = (0, {}, _ , _) Conditions not met.

T_311 = {1, {e}, 0, 0} 1


T_312= (1, {e}, -1, _) Conditions not met.

T_313 = (1, {e}, 2, _) Conditions not met.

T_3142=(1, {e}, 0, 1) Conditions not met.

T_4111= (5, {g, e, l ,m ,a}, 3, 4) 1

T_4122=(5, {g, e, l ,m ,a}, 3, [-1, | 5 |, 8] Conditions not met.

T_4113 = (78, {e...e}, 0 , 101) Conditions not met.

T_5144 = (100, {e,...e}, 99, 99} 1

T_32 = (1, {g},_ , _) Conditions not met.

T_42 = (5, {g, g, l ,m ,l}, _, ) Conditions not met.

T_52= (100, {g….g}, _, _ ) Conditions not met.

Testarea structurala

Dam, mai jos, programul in Java:

Graful programului:
Statement Converge
Pentru a realiza acoperirea la nivel de instructiune, ne concentram asupra nodurilor.
Si dam urmatoarele teste:

Date de intrare Raspuns

T_1 = (0, {}, 0, 0) Conditions not met.

T_2 = (1, {a}, -1, 0) Conditions not met.

T_3 = (1, {a}, 0,5) Conditions not met.

T_4 = (6, {‘a’,’f’,’A’,’E’,’g’,’a’}, 0, 4) Conditions not met.

T_5=(5, {b,’d’,’i’,o’,’g’}, 0 , 4) 2

T_6= (5, {b,’d’,’i’,o’,’g},0,0) 0

Branch converge

Instructiuni care duc la ramuri in program:


Pentru a testa acoperirea la nivelul de ramuri, avem urmatoarele teste:

Date de intrare Raspuns

T_1 = (0, {}, 0, 0) Conditions not met.

T_2 = (5, {‘c’, ‘m’, ‘t’, ‘e’, ‘a’}, 6, 3) Conditions not met.

T_3 = (5 {‘c’, ‘m’, ‘t’, ‘e’, ‘a’},2, -2) Conditions not met.

T_4=(5, {‘c’, ‘m’, ‘t’, ‘e’, ‘a’},2, 10) Conditions not met.

T_5=(5, {‘c’, O, ‘t’, “F”, ‘A’},2,4) Conditions not met.

T_6 = ( 1, {e}, 0, 0} 1

Condition converge

Deciziile din programul java

Decizii Contitii individuale

if ​(n < 1
​ ​|| n > ​100 ​|| a == n < ​1
null ​|| low < ​0 ​|| low >= n n > ​100
|| high < ​0 |​ | high >= n) a == ​null
low < ​0
low >= n
high < ​0
high >= n

for ​(​int ​i = ​0​; i < n; ++i) i < n

if ​(a[i] < ​0​) (a[i] < ​0

for ​(​int ​i = low; i <= high; ​i = low


++i) i <= high

if ​(​countVowels​(a[i])) countVowels​(a[i] == true

Pentru a acoperi toate conditiile din setul de mai sus, folosi8m urmatoarea suita de
teste:

Date de intrare Raspuns

T_1 = (0, {}, 0,0} Conditions not met.


T_2 = (101, {}, 0, 1) Conditions not met.

T_3 = (3, {‘f’, ‘g’, ‘h’}, -5, 0) Conditions not met.

T_4=(3,{‘f’, ‘g’, ‘h’},10, 2) Conditions not met.

T_5=(3,{‘f’, ‘g’, ‘h’’},2, -5) Conditions not met.

T_6=(3,‘f’, ‘g’, ‘h’},2, 10) Conditions not met.

T_7 = (1, {‘d’}, 0, 0) Conditions not met.

T_8 = (1, {‘e’}, 0,0) 1

T_9 = (3, {‘g’, ‘e’,’a’}, 1, 2) 1

Complexitatea programului

Formula lui McCabe pentru complexitatea ciclomatica: Dat fiind un graf


complet conectat G cu ​ e arce si n nodurim atunci numarul de circute linear
independente este dat de: V(G) = e - n + 1 unde:
G - graf complet conectat(daca exista o clae
intre oricare doua noduri)
Circuit - cale care incepe si se termina in
acelasi nod
Circuite liniar independente - niciunul nu
poate fi obtinut ca o combinatie a celorlalte
Adaugam urmatoarele noduri in graful de mai sus pentru a completa complet
conectat:
(25, 22), (30, 27), (39, 22)

V(G) = 17 - 13 + 1 = 5

Circuite independente:
- 22 -> 23 -> 24-> 25->22
- 22->23->27->28->29->30->22
- 22->23->27->28-33->39->22
- 33->34->33
- 33->34->35->36->33

Acoperirea la nivel de cale

Numar de cai: 4
Caile posibile:
22.23.24.25
22.23.27.28.29.30
22.23.27.28.33.39
22.23.27.28.33.34.35.36

Date de test:

Date test Raspuns

T_1 = {0, {}, 0, 0} Conditions not met

T_2 = (3, {‘D’,’g’,’h’’}, 0, 1) 0

T_3=(3, {‘h’, ‘f’,e}, 0, 1) 1

Generator de mutanți

S-ar putea să vă placă și