data based black box testing - users.utcluj.rousers.utcluj.ro/~iuliapopa/lcr/acp/acp lab1.pdf ·...
TRANSCRIPT
Lucrari de laborator
1
Material realizat de: prep.drd.ing. Iulia STEFAN
Data based black box testing
Tehnicile de testare in cutie neagra direcționată pe date sunt:
Testarea la limită a valorilor(boundary value testing),
Partajarea in clase de echivalenta,
Tabele de decizie,
Ghicirea valorilor,
Testarea aleatorie.
Toate tehnicile amintite mai sus se aplică direcționat asupra cerințelor referioare la domeniului de
valori ale datelor de intrare. Scopul este de a depista erori de codare datorate atat unei singure
cause, cat si mai multora( single-fault assumption, multiple fault assumption).
Testarea unui program presupune execuția mai multor cazuri de test, fiecare caz(test case)fiind o
combinație intre datele de intrare si un rezultat asteptat.
Testarea la limită (boundary testing)
Pentru x, un numar real cu doua zecimale, in intervalul [a, b], testarea la limită presupune alegerea
de valori de intrare la capetele intervalului, in apropierea numerelor a si b.
O testare a tuturor valorilor posibile ar presupune repetarea testului pentru toate valorile in
intervalul respectiv: IMPOSIBIL.
Metodele prezentate in cadrul cursului au presupus:
Testarea limitelor
Testarea limitelor la extrem
Testarea robusta a limitelor
Testarea robusta a limitelor la extrem
Vezi cursul 1 !
Exerciţiu
Acceseaza adresa urmatoare si rezolva execitiile urmarind informatiile prezentate. Poti executa
manual cazurile de test aici!
Lucrari de laborator
2
Material realizat de: prep.drd.ing. Iulia STEFAN
Avantaje si dezavantataje ale folosirii metodelor de analiza si testare a limitelor
Permite evaluarea comportamentului la limitele unui domeniu, limite care de multe ori e
necesar sa fie impuse prin implementare directa in codul sursa, de aceea fiind mai usor
susceptibile de eroare.
Nu intotdeauna eroarea se manifesta identic in interiorul intervalului (vezi problema
calcularii factorialului in c/c++).
Greu de aplicat in cazul domeniilor de valori booleene(true, false)
Este aplicabila numai in cazul valorilor independente una de cealalta
Aplicabila pentru valori numerice, masurabile
Se pot adauga valori suplimentare care fac parte din zona de aplicabilitate a produsului aflat in
testare sau valori alese pe baza unor informatii statistice.
Lucrari de laborator
3
Material realizat de: prep.drd.ing. Iulia STEFAN
0
x
40
Testarea prin partiţionare in clase de echivalenţă
O metoda pentru a alege valorile pentru datele de intrare este cea a divizarii domeniului valorilor de
intrare in domenii echivalente care sa reducă numărul paşilor de test.
Aceste clase de echivalenţă se aleg pe baza presupunerii ca toţi membrii clasei respective sunt
procesaţi identic de catre produsul software ţintă si se supun acelorasi criterii. Dacă un caz de test,
pentru o anumita clasa, genereaza eroare, atunci se presupune ca toţi membrii clasei respective, vor
evidentia aceeasi problema. Pentru a identifica clasele de date de echivalenţa, se iau in considerare
condiţiile de intrare, adesea surprinse in specificaţiile aplicatiei. Trebuie menţionat faptul ca
utilizarea acestor clase de echivalenţa permite reducerea timpului alocat testelor, ajuta tester-ul sa
aleaga acele valori pentru datele de intrare cu cea mai ridicata probabilitate de gasire a unui defect si
sa acopere un domeniu larg pentru posibilele combinaţii de date intrare/iesire prin specificarea unui
numar mai redus de cazuri de test.
Fie functia
f(x)= x, daca 40>=x>0
–x, daca -40<=x<=0
si
g(y)= 1.5* y, daca 10<y<=60
0.5*y , daca -10< y<=10
Exercitiu cere sa se calculeze suma celor doua numere rezultate prin inlocuirea valorilor x si y.
Clasele de echivalenta sunt determinate de divizarea domeniilor de intrare prin valorile -40, -10,
0, 10, 40, 60.
Pentru prima valoare, x, clasele de echivalenta sunt:
-x
0.25y 1.5y 10
-40
60 -10
Lucrari de laborator
4
Material realizat de: prep.drd.ing. Iulia STEFAN
1) (-inf, -40), invalida
2) [-40,0] valida
3) (0, 40] valida
4) (40, +inf), invalida
Pentru a doua valoare, y, clasele de echivalenta valide sunt:
5) (-inf,-10],
6) (-10,10],
7) (10,60]
8) (60,+inf).
Cazurile de test se pot alege
- simplificat (se aleg valori din clasele de echivalenta valide astfel incat sa fie
reprezentate fiecare cel putin o data),
- accentuat ( se aleg valori din clasele de echivalenta ale fiecarui interval si vor fi
combinate cu valori alese din fiecare clasa de echivalenta a celuilat interval),
- robust simplificat(se aleg valori din clasele de echivalenta valide si invalide
astfel incat sa fie reprezentate fiecare cel putin o data) si
- robust accentuat (fiecare valoare va forma o pereche de test cu valori din fiecare
clasa de echivalenta valida sau invali a celuilalt interval).
Metoda partitionarii prin clase de echivalenta poate fi aplicata simplificat alegand pentru fiecare
clasa de echivalenta valida a primei variabile sau a celei de-a doua variabile, cel putin o situatie de
test. Numarul cazurilor de test este egal cu maximul numarului de clase de echivalenta valide.
Metoda partitionarii prin clase de echivalenta poate fi aplicata accentuat alegand pentru fiecare
clasa de echivalenta valida a primei variabile pe rand cate o valoare din clasele de echivalenta ale
celei de-a doua, s.a.m.d. Numarul cazurilor de test este egal cu produsul dintre numarul claselor de
echivalenta valide.
De exemplu,
Id CT Valorile de intrare
Valoare asteptata
Valoare obtinuta
Clase de echivalenta acoperite de test
1) -20,0 20 2,6 2) 20,35 28.7 3,7
Lucrari de laborator
5
Material realizat de: prep.drd.ing. Iulia STEFAN
- valori posible pentru x ar putea fi: pentru -50, -20, 20,50.
- valori posible pentru y ar putea fi(din interiorul clasei de echivalenta): -20, 0, 35, 70.
O prima varianta a multimii cazurilor de test este:
Id CT Valorile de intrare
Valoare asteptata
Valoare obtinuta
Clase de echivalenta acoperite de test
3) -20,0 20 2,6 4) -20,35 completati 2,7 5) 20,0 completati 3,6 6) 20,35 52.5 3,7
Exerciţii
1) Cine inlocuieste valorile –inf si +inf in cazul crearii unui program care sa realizeze operatia de
insumare?
2) Creati un alt set de date de test care sa exprime tot metoda de partitionarii prin clase de echivalenta
simplificat.
3) Reevaluati exemplul de mai sus, trecand prin toate abordarile de tip partitionare prin clase de
echivalenta, stiind ca g(x) are forma urmatoare
g(y)= 1,5*y, daca 10<y<60
y, daca 10>=y>0
0.5*y , daca -10< y<=0
Metoda partitionarii prin clase de echivalenta abordare robusta simplificata presupune luarea in
considerare si a valorilor claselor de echivalenta invalide. In tabelul de mai jos este redat un
exemplu. Se alege o valoare dintr-o clasa de echivalenta valida, cu o valoare dintr-o clasa de
echivalenta invalida. Numarul cazurilor de test este egal cu numarul maxim de clase de echivalenta
valide + suma claselor de echivalenta invalide.
Id CT Valorile de intrare
Valoare asteptata
Valoare obtinuta
Clase de echivalenta acoperite de test
1) -50,-4 ?? 1,6 2) 62,-4 ?? 4,6 3) -20,0 20 2,6 4) 20,35 28.7 3,7 5) -67,-12 ?? 5,2 6) 65, -3 ?? 8,2
Lucrari de laborator
6
Material realizat de: prep.drd.ing. Iulia STEFAN
Exerciţii
Gasiti o alta solutie pentru completarea tabelului de mai sus( fiecare clasa sa fie reprezentata prin cel putin o
valoare).
Metoda partitionarii prin clase de echivalenta abordare robusta accentuata presupune luarea in
considerare a tuturor combinatiilor posible selectand valori de intrare din calse valide si invalide.
Exerciţii
Completati tabelul aferent abordarii robuste accentuate. Cate cazuri de test rezulta?
“Nu exista reguli sigure si rapide, ci doar cateva indrumari ce pot fi urmate pentru a
descoperi clasele de echivalenţa[1]”.
Din specificaţiile aplicaţiei pot fi surprinse seturile de cerinţe testabile si iesirile corecte, precum si
seturile de date intrare/iesire, insa daca acestea sunt neclare, incorecte, incomplete, ele pot sa ridice
probleme majore in identificarea acestor clase de echivalenţă.
Indrumări pentru găsirea unor clase de echivalentă:
„Dacă este specificată o conditie de intrare pentru produsul software in testare ca un
interval de valori, se va selecta o singura clasă de echivalentă care include domeniul si două
clase de echivalentă invalide, pentru fiecare limită”.
Exemplificare a domeniului valorilor de intrare: varsta posibilă stabilită la intervalul 18 si
120 de ani. Clasa de echivalentă validă este [18,120] iar clasele de valori invalide sunt [-inf,
18) si (120, +inf).
Exerciţii
1) In pagina
https://www.cartrawler.com/wizzair/?clientId=355029&lang=ro, în
zona formularului pentru solicitarea unei maşini închiriate, trebuie
specificata varsta soferului. Avand in vedere varsta la care se poate
obtine un permis de conducere si varsta maximala a unei persoane,
identificati câte o clasa de echivalenţă validă şi două invalide
asociate domeniului valorilor de intrare.
Lucrari de laborator
7
Material realizat de: prep.drd.ing. Iulia STEFAN
1) Identificaţi o alta pagină web unde găsiti un interval de valori
numeric pentru care puteţi aplica indrumarea de mai sus.
„… se va selecta o clasa echivalentă validă care include un număr specificat de valori si
două invalide aflate in afara domeniului respectiv”[1].
Exemplificare:
Domeniu de valori: pachetele posibile de achizitionat pe un site de cumpărături online sunt
de: 1, 2 sau 3 piese.
Clasa de echivalentă validă 1: {1,2,3}
Clasa echivalentă invalidă : numere naturale mai mici decat 1
Clasa de echivalentă invalidă 2: numere naturale mai mari ca 3.
Exerciţii
1. In căsutele de editare aferente zonei „Pasageri:”, gasiti posibilele
clasele de echivalenta asociate(http://wizzair.com/ro-
RO/Search#tab1)
2. Identificaţi în activitatea curentă un alt exemplu edificator.
Daca valorile de intrare sunt eligibile doar dintr-un set de valori(exemplu: A4, A3, B2,...), se
vor forma o clasa de echivalenţă validă conţinând toate valorile corecte şi o clasa conţinând
toate valorile din afara setului.
Exerciţii
In casutele de editare aferente paginii „http://wizzair.com/ ”, găsiţi
posibilele exemplificări.
3.
„Daca există condiţionari, ca de exemplu, datele de intrare trebuie sa prezinte o anumita
forma, se va alege o clasa de echivalenta care să reprezinte sablonul impus si o alta care sa
nu includa aceasta conditionare”.
Exemplificare: [email protected]
Dezvoltati teste pentru a acoperi toate clasele de echivalenţă identificate! Inclusiv cele
invalide!
Daca exista suspiciuni ca vreunul din elementele clasei de echivalenta nu este tratat la fel de
aplicatia sub testare, atunci clasa trebuie partitionata in continuare in clase de echivalenta
reduse ca dimensiuni.
Lucrari de laborator
8
Material realizat de: prep.drd.ing. Iulia STEFAN
Alegerea limitelor claselor de echivalenta se realizeaza in urma anlizei valorilor extreme,
minime, maxime.
Cateva indrumari necesare:
Daca valorile de intrare sunt o enumerare de valori, se vor dezvolta teste atat pentru
valori valide, cat si pentru invalide.
Daca valorile de intrare sunt un interval de numere reale, se vor genera cazuri de test
care sa cuprinda atat valori valide, cat si valori imediat mai mici sau mai mari decat
cel mai mic, respectiv cel mai mare numar.
Cele mai importante elemente dintr-o lista sunt limitele astfel ca este de preferat ca
testul sa le valideze.
Indiferent care conditii sunt de verificat pentru valorile de intrare, fiecare dintre acestea
se verifica separat, individual.
Exercitiu
Completati modelul de tabel de mai jos urmarind solicitarile exercitiilor de mai sus si impunand
alegerea de valori la limita a domeniilor datelor de intrare.
Modul Testat: numele Identificator modul: numele Data: data Tester: numele Identificatorul cazului de test
Valorile de intrare
Valoare asteptata
Valoare obtinuta
Clase de echivalenta acoperite de test
1 2 ...
Exercitii
a) Intr-un orasel din Franta, eliberarea tichetului de calatorie pentru transportul in común
presupune diferentieri in costul biletelor. Utilizatorul trebuie sa specifice varsta. Astfel,
Lucrari de laborator
9
Material realizat de: prep.drd.ing. Iulia STEFAN
automatul de bilete trebuie sa prezinte mai multe optiuni pentru care elibereaza tichete de
calatorie inscriptionate cu mesaje diferite.
Pentru copiii sub 6 ani, transportul este gratuit, pe bilet se incriptioneaza copil.
Pentru tinerii intre 7-18 ani, tichetul de calatorie prezinta o reducere de 50% ; mesajul
tiparit pe bilet trebuie sa fie reducere 50%. Pentru cei intre 18-64, pretul biletului este intreg
(apare pretul intreg), pentru cei peste 64 de ani, transportul este din nou gratuit si apare
inscriptionat mesajul persoane peste 64 de ani.
Creati cazurile de test care valideaza aceste situatii.
Clasele de echivalenta valide sunt:
1. [0-6],
2. [7-18],
3. [19-64],
4. [64-120];
Clasele de echivalenta invalide sunt:
1. [-inf, 0),
2. [121,+inf);
3. Nici o valoare
Alegeti pentru fiecare clasa de echivalenta o valoare de test la mijlocul intervalului si
completati tabelul de mai jos.
Modul Testat: numele Identificator modul: numele Data: data Testor: numele Identificatorul Valorile de intrare
ale testului Valoare asteptata
Valoare obtinuta
Clase de echivalenta acoperite de test
1 4 Gratuit, mesaj copil
1
2 10 Reducere 50%
2
...
b) In tabelul de mai sus adaugati cazuri de test suplimentare créate pe baza metodei boundary
value testing. Cate cazuri de test exista acum?
Lucrari de laborator
10
Material realizat de: prep.drd.ing. Iulia STEFAN
c) In exemplul urmator(accesibil aici), cele doua casute de editare trebuie sa permita
introducerea a unui numar de maxim 20 de caractere si minim de 3. Daca nu este introdus
vreun carácter se afiseaza “ informatie insuficienta”, daca sunt mai mult de 20 de caractere
introduse, se afiseaza “cuvantul este prea lung”. Nu sunt permise caracterele numerice. In
urma apasarii butonului “Afiseaza”, cele doua cuvinte introduse vor fi concatenate
pastrandu-se un spatiu intre ele si vor fi afisate.
Clase de echivalenta aferente informatiilor de mai sus:
1) Cuvantul introdus contine mai putin de 3 caractere.
2) Cuvantul introdus contine intre 3 si 20 de caractere.
3) Cuvantul introdus contine peste 20 de caractere.
4) Cuvantul introdus contine cel putin un carácter numeric.
5) Cuvantul introdus nu contine nici un carácter numeric.
Completati cazurile de test in tabelul urmator:
Modul Testat: numele Identificator modul: numele Data: data Testor: numele Identificatorul Valorile de intrare
ale testului Valoare asteptata
Valoare obtinuta
Clase de echivalenta acoperite de test
1 Gratuit, mesaj copil
1
2 10 Reducere 50%
2
...
Lucrari de laborator
11
Material realizat de: prep.drd.ing. Iulia STEFAN
Testare bazata pe tabele de decizie
Testarea bazata pe analiza domeniului de valori si prin partitionarea la clase de echivalenta
este aplicabila valorilor de intrare independente, adica sunt procesate independent de catre
aplicatia/modulul aflat in testare.
Pentru situatiile cand combinatii ale valorilor de intrare presupun/impun solutii/formule de
calcul diferite este de preferat utilizarea unei alte metode de identificare a cazurilor de test, metoda
bazata pe crearea unui tabel de decizie.
Tabele de decizie sunt o forma de a exprima a proceduri de lucru curente(„bussines rules”)
care deservesc clientul in activitatea lui zilnica. Permit o vizualizare eficienta a cazurilor de test,
pentru evitarea cazurilor incomplete sau lipsa.
Exemple:
1. Calculul ipotecar depinde de varsta, sexul si venitul unei persoane si impune formule de
calcul separate.
2. Calculul impozitului depinde de venitul, varsta, numarul persoanelor avute in intretinere,
numarul de imobile detinute, zona imobilului, numarul de masini.
Tabele de decizie contin 3 tipuri de informatie:
Conditiile (linii) ce determina anumite decizii;
Actiunile(linii) sunt executate in functie de decizii;
Regulile (coloane) – impun valorile de adevar ale variabilelor de intrare - pe baza lor sunt
efectuate actiunile.
Cum se formeaza tabelele de decizie:
Sunt identificate conditiile(care variabile influenteaza actiunile) si valorile pe care le pot lua
aceste conditii(ce intrebari pot adresa astfel incat raspunsul sa fie true sau false?)
Sunt identificate toate actiunile posibile
Sunt identificate numarul maxim de reguli; este 2^n, n numarul de conditii.
Se creeaza toate regulile posibile
Se asociaza o actiune fiecarei reguli marcand intersectia dintre coloana si linie cu x
Se verifica tabelul
Se simplifica tabelul(redu din numarul coloanelor).
Este necesar ca fiecare actiune sa fie marcata cu X in tabelul de decizie.
Cazurile de test posibile sunt determinate de regulile si de conditiile aferente. Valorile asteptate
sunt determinate de actiunile aferente regulilor.
Exemplul urmator se bazeaza pe algoritmul de calcul ipotecar prezentat in cadrul materialului
de curs. Algoritmul se bazeaza pe formula:
Ipoteca=venit*factor_de_risc
Factorul de risc se alege conform tabelului alaturat, pentru un venit intre 1-10000lei.
Pentru situatii in afara celor amintite, raspunsul bancii este: „Nu va incadrati in conditii!”
Lucrari de laborator
12
Material realizat de: prep.drd.ing. Iulia STEFAN
Categorie de varsta Femeie/Factor de risc Barbat/ Factor de risc
tanar 18-30 ani/75 18-35 ani/70
matur 31-40ani/50 36-45ani/55
varstnic 41-50ani/35 46-55ani/30
Exerciţii
1. Pornind de la explicatiile oferite de suportul de
curs, completati tabel accesibil aici!
2. Exprimati cazurile de test ce rezulta evaluand
regulile si conditiile.
Atentie la conditiile cu excludere reciproca!
Reducerea dimensiunilor tabelului este impusa de acele situatii cand aceeasi actiune este
determinata de valori diferite ale conditiilor.
In aceasta situatie conditiile diferite sunt inlocuite de semnul “-“(interpretat ca “indiferent care
valoare). Se va pastra o singura coloana din mai multe care prezinta acelasi set de conditii.
Exerciţii
1. Pe site-ul wizzair.com, http://wizzair.com/ro-RO/Search, este posibila actiunea de rezervare
a unui bilet de avion. Pentru aceasta este nevoie ca o data ales aeroportul de plecare A din
campul “Pleaca din”, in campul “Merge catre” sa fie afisate doar numele de aeroporturi spre
care exista cursa din A.
Corespondentele sunt urmatoarele:
Pleaca din Merge catre
Cluj-Napoca(CJ) Barcelona, Bari, Bassel, Bologna, Bruxelles,
Dortmund, Eindhoven, Geneva, Golone, Londra,
Madrid, Malmo, Milan, Milan Bergamo,
Nureberg, Paris, Palma de
Mallorca,Roma,Telaviv, Valencia, Vnetia
Treviso, Zaragoza
Corfu Budapesta, Varsovia Chopin, Vilnius
Iasi Londra Luton, Milan Bergamo, Venetia Treviso
Lucrari de laborator
13
Material realizat de: prep.drd.ing. Iulia STEFAN
2. La cerinta de mai sus se adauga urmatoarele:
“Data plecarii” permite alegerea datei calendaristice > cu doua zile mai mare decat data curenta.
Se presupune ca aceste curse sunt zilnice.
“Data Retur” permite alegerea variantei “doar dus” sau a unei date calendaristice de retur mai mari
sau egale cu data curenta.
Pentru rezervari realizate cu 2 pana la 5 zi inainte de plecare pretul biletului este intreg.
Pentru rezervari realizate cu 6 pana la 15 zile inainte, pretul intregului este cu 5% mai ieftin.
Pentru rezervari realizate cu 16 pana la 30 zile inainte, pretul biletului este redus cu 10 %.
Pentru rezervari realizate cu 30 pana la 90 zile inainte, pretul biletului este redus cu 25 %.
Pentru rezervari realizate cu 90 pana la 240 zile inainte, pretul biletului este redus cu 50 %.
Pentru grupuri(>11 persoane adulte), reducerea se modifica cu 10% in sus.
Copiiilor sub 4 li se acorda gratuitate 100%.
Creati o prima varianta a tabelului de decizie care sa determine cazurile de test pentru validarea
acestor functionalitati.
Lucrari de laborator
14
Material realizat de: prep.drd.ing. Iulia STEFAN
Bilbiografie:
[1] Illene Burnstein, „Practical Software Testing”(Elsevier 2003), ISBN: 978-0387951317
[2] Liviu Miclea, Material curs ACP: users.utcluj.ro/~miclea
[3] Black, Rex, van Veenendaal, Erik, Graham, Dorothy, Foundations of Software Testing
ISTQB Certification 3rd (third) Edition by, Paperback, 2011, Cengage Learning EMEA