Boundary Value Analysis – O tehnică de testare a cutiei negre
Știm deja că testarea cutiei negre presupune validarea sistemului fără a cunoaște designul său intern. Am discutat, de asemenea, despre capcanele partițiilor de echivalență și despre modul în care acestea pot eșua la limitele partițiilor. În cazul în care nu ați citit articolul nostru despre partiționarea prin echivalență, vă recomand să îl citiți înainte de a-l citi pe acesta. În acest articol, vom discuta despre o altă tehnică de testare a cutiei negre cunoscută sub numele de Boundary Value Analysis (Analiza valorii limită). Vom vedea, de asemenea, modul în care această tehnică complimentează partiționarea prin echivalență.
- Ce este Boundary Value Analysis?
- Cum se face Boundary Value Analysis?
- Analiza valorii la limită cu partiționarea prin echivalență
- Capcanele analizei valorii la limită
Ce este analiza valorii la limită?
Baza analizei valorii la limită (BVA) este testarea limitelor la partiții (amintiți-vă de partiționarea prin echivalență !). BVA este o extensie a partiționării prin echivalență. Totuși, aceasta este utilizabilă numai atunci când partiția este ordonată, constând din date numerice sau secvențiale. Valorile minime și maxime ale unei partiții sunt valorile de frontieră ale acesteia.
Am văzut că există șanse mari de a găsi defecte la frontierele unei partiții (De exemplu, un dezvoltator care folosește >10 în loc de >= 10 pentru o condiție). Doar partiționarea prin echivalență nu a fost suficientă pentru a detecta astfel de defecte. Prin urmare, a apărut necesitatea de a defini o nouă tehnică care să poată detecta anomaliile la limitele partiției. Așa a apărut analiza valorii limită.
Analiza valorii limită poate fi efectuată la toate nivelurile de testare și este folosită în principal pentru un interval de numere, date și timp.
Cum se face analiza valorii limită?
Acum că ne-am făcut o idee despre analiza valorii limită, să înțelegem cum să derivăm condițiile de testare folosind această tehnică. Ne vom referi la același exemplu de formă de sală de gimnastică (Consultați articolul nostru despre partiția de echivalență) în care trebuie să introducem Vârsta.
Primul pas al analizei valorilor limită este crearea partiției de echivalență, care ar arăta ca mai jos.
Concentrează-te acum pe partiția validă, care variază între 16-60. Avem o abordare în 3 pași pentru a identifica limitele:
- Identificați valoarea limită exactă a acestei clase de partiții – care este 16 și 60.
- Obțineți valoarea limită care este cu unul mai mică decât limita exactă – care este 15 și 59.
- Obțineți valoarea limită care este cu unul mai mult decât limita exactă – care este 17 și 61.
Dacă le combinăm pe toate, vom obține combinațiile de mai jos pentru valoarea limită pentru criteriul de vârstă.
Condiții limită valide : Vârsta = 16, 17, 59, 60
Condiții limită nevalabile : Age = 15, 61
Este simplu de văzut că condițiile de frontieră valide se încadrează în clasa de partiții valide, iar condițiile de frontieră nevalide se încadrează în clasa de partiții nevalide.
Vă puteți da seama de ce nu am folosit 16.1, 15.9, 59.9 și 60.1 ca valori de creștere și descreștere a limitei? Este un concept care are o explicație insuficientă în majoritatea articolelor. Prin urmare, să luăm un alt exemplu pentru a explica acest lucru. Să presupunem că vă introduceți greutatea pe un site web. Pe baza greutății și înălțimii dvs., site-ul vă va indica indicele de masă corporală (IMC). Puteți introduce valori cuprinse între 30 și 150 kg în câmpul de introducere a greutății. Câmpul de introducere a greutății permite doar numere naturale, adică numere întregi pozitive!
În acest caz, dacă veți crea limitele folosind aceeași metodă – veți obține
Valid Boundary Conditions : Vârsta = 30, 31, 149, 150
Condiții limită invalide : Age = 29, 151
Considerați acum același scenariu, dar câmpul de introducere a greutății permite numere zecimale până la 1 zecimală. În acest caz, condițiile limită vor fi:
Valid Boundary Conditions : Vârsta = 30, 30.1, 149.9, 150
Condiții la limită invalide : Age = 29.9, 150.1
Ai văzut diferența? Luăm valoarea minimă acceptabilă de o parte și de alta a limitei. Dacă luăm valoarea de 30,01, atunci ajungem să testăm software-ul pentru două zecimale, în condițiile în care cerința este de o zecimală. Este o condiție de testare separată și nu ar trebui să fie confundată cu valoarea limită.
Măsurarea acoperirii limitei pentru o partiție poate avea loc ca număr de valori limită testate împărțit la numărul total de valori limită de testare identificate.
Analiza valorii limită cu partiționarea prin echivalență
Acum am înțeles destul de bine analiza valorii limită. Așadar, să vedem cum putem să o combinăm cu partiționarea prin echivalență pentru a obține un set complet de condiții de testare.
Întorcându-ne la exemplul nostru anterior, să revizuim din nou diagrama.
Intervalul este de la 16 – 60, iar analiza valorilor limită ne oferă condiții de testare ca fiind 15, 16, 17, 59, 60, 61. Dacă vă uitați cu atenție, nu credeți că am acoperit deja partiția de echivalență validă prin acoperirea lui 17, 59 și partiția de echivalență invalidă prin acoperirea lui 15 și 61? La urma urmei, partiționarea prin echivalență spune că ar trebui să alegem un număr între 16-60 pentru partiționarea validă și mai puțin de 16 sau mai mult de 60 pentru partiționarea invalidă. Așadar, dacă valoarea limită acoperă deja partiționarea prin echivalență, de ce avem nevoie de partiționare ca tehnică separată? Este un concept care nu este clar pentru majoritatea oamenilor și nu multe articole l-au explicat în mod clar.
Teoretic, Boundary value a acoperit într-adevăr partiția de echivalență, dar tot avem nevoie de o partiție. Dacă aplicăm doar Boundary value și aceasta eșuează, nu vom ști niciodată dacă a eșuat condiția de margine sau dacă a eșuat întreaga partiție. Să înțelegem acest lucru cu ajutorul unui exemplu. Continuând cu formularul nostru pentru sala de sport, să presupunem că dezvoltatorul a scris logica de mai jos :
If (age < = 17 ) Then Don’t allow Gym Membership
If (age > 60) Then Don’t allow Gym Membership
Dacă vă uitați la logică, vă veți da seama că logica ar fi trebuit să fie If (age <17), dar dezvoltatorul a adăugat semnul = greșit. De asemenea, v-ați dat seama că lipsește logica pentru întreaga partiție validă? If (age>=16 and age <= 60 ) Then allow Gym membership !
Dacă folosim doar valoarea 17 a condiției de frontieră, va eșua execuția testului. Cu toate acestea, nu vă va spune dacă a eșuat condiția limită sau dacă a eșuat întreaga partiție. Ca atare, este esențial să folosim o valoare a partiției Equivalence, care nu este o valoare de frontieră. În acest caz, dacă folosim valoarea 20, execuția va eșua. Aceasta va da o indicație clară că dezvoltatorul a ratat implementarea întregii partiții.
Atunci, dacă combinăm atât valoarea de frontieră cât și partiția de echivalență, condițiile noastre de testare vor fi :
Condiții de frontieră valide : Vârsta = 16, 17, 59, 60
Condiții limită nevalabile : Vârsta = 15, 61
Partiție de echivalență validă : Vârsta = 25
Partiție de echivalență invalidă : Vârsta = 5 , 65
Capcanele BVA
După aplicarea atât a valorilor limită, cât și a partiției de echivalență, putem spune cu încredere că am obținut toată acoperirea necesară? Din păcate, nu este atât de simplu! Valoarea limită și partiționarea prin echivalență presupun că aplicația nu vă va permite să introduceți alte caractere sau valori. Astfel de caractere, cum ar fi @ sau valori negative sau chiar alfabete, nu vor putea fi introduse. Această presupunere nu este însă valabilă pentru toate aplicațiile și este esențial să le testăm înainte de a putea spune că valoarea câmpului funcționează complet.
Pe lângă aceasta, putem avea situații în care valoarea de intrare depinde de decizia unei alte valori. De exemplu, Dacă formularul Gym are un alt câmp Bărbat și Femeie, iar limita de vârstă va varia în funcție de această selecție. Valoarea limită singură nu poate face față unor astfel de variații, iar acest lucru ne conduce la o altă tehnică de tip cutie neagră numită Testarea tabelelor de decizie. Vom discuta despre aceasta în detaliu în următorul articol. Rămâneți pe recepție!