data based black box testing - users.utcluj.rousers.utcluj.ro/~iuliapopa/lcr/acp/acp lab1.pdf ·...

14
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!

Upload: vuongminh

Post on 02-Feb-2018

230 views

Category:

Documents


2 download

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