white box testing complete guide with techniques
Ce este testarea cutiei albe?
Dacă mergem după definiție, „Testarea cutiei albe” (cunoscută și sub denumirea de transparent, cutie de sticlă sau testare structurală) este o tehnică de testare care evaluează codul și structura internă a unui program.
Testarea cutiei albe implică examinarea structurii codului. Când cunoașteți structura internă a unui produs, pot fi efectuate teste pentru a se asigura că operațiunile interne efectuate în conformitate cu specificațiile. Și toate componentele interne au fost exercitate în mod adecvat.
Ce veți învăța:
- Experienta mea
- Diferența dintre testarea White-Box și Black-Box
- Pași pentru a efectua WBT
- Tipuri și tehnici de testare a cutiei albe
- Exemplu de testare a cutiei albe
- Instrumente de testare a cutiei albe
- Concluzie
- Lectură recomandată
Experienta mea
A trecut aproape un deceniu de când sunt în domeniul testării software-ului și am observat până acum că testerii sunt cei mai entuziaști din întreaga industrie a software-ului.
Motivul principal din spatele acestui lucru este că testerul are întotdeauna ceva de învățat. Fie că este un domeniu, un proces sau o tehnologie, un tester poate avea o dezvoltare completă dacă dorește.
Dar, după cum se spune „Există întotdeauna o latură mai întunecată” .
De asemenea, testerii evită într-adevăr un tip de testare pe care consideră că este foarte complicat și bucata de tort a dezvoltatorului. Da, „Testarea cutiei albe”.
Acoperire
Testarea cutiei albe este acoperirea specificațiilor din cod:
2. Acoperirea segmentului: Asigurați-vă că fiecare instrucțiune de cod este executată o singură dată.
3. Acoperirea sucursalei sau testarea nodului: Acoperirea fiecărei ramuri de cod din toate posibilele a fost.
4. Acoperirea stării compuse: Pentru condiții multiple, testați fiecare condiție cu mai multe căi și o combinație a căii diferite pentru a ajunge la acea condiție.
5. Testarea căii de bază: Fiecare cale independentă din cod este luată pentru testare.
6. Testarea fluxului de date (DFT): În această abordare, urmăriți variabilele specifice prin fiecare calcul posibil, definind astfel setul de căi intermediare prin cod.DFT tinde să reflecte dependențe, dar este în principal prin secvențe de manipulare a datelor. Pe scurt, fiecare variabilă de date este urmărită și se verifică utilizarea acesteia. Această abordare tinde să descopere bug-uri, cum ar fi variabilele utilizate, dar nu inițializate, sau declarate, dar neutilizate, etc.
7. Testarea traseului: Testarea căii este locul în care sunt definite și acoperite toate căile posibile prin cod. Este o sarcină care consumă mult timp.
8. Testarea buclei: Aceste strategii se referă la testarea buclelor unice, a buclelor concatenate și a buclelor imbricate. Buclele și valorile de cod independente și dependente sunt testate prin această abordare.
De ce efectuăm WBT?
A garanta:
- Că toate căile independente din cadrul unui modul au fost exercitate cel puțin o dată.
- Toate deciziile logice verificate pe valorile lor adevărate și false.
- Toate buclele executate la limitele lor și în limitele lor operaționale, validitatea structurilor de date interne.
Pentru a descoperi următoarele tipuri de bug-uri:
- Eroarea logică tinde să se strecoare în munca noastră atunci când proiectăm și implementăm funcții, condiții sau controale care sunt în afara programului
- Erorile de proiectare datorate diferenței dintre fluxul logic al programului și implementarea efectivă
- Erori tipografice și verificarea sintaxei
Această testare necesită abilități detaliate de programare?
Trebuie să scriem cazuri de testare care asigură acoperirea completă a logicii programului.
Pentru aceasta, trebuie să cunoaștem bine programul, adică ar trebui să cunoaștem specificațiile și codul de testat. Cunoașterea limbajelor de programare și a logicii este necesară pentru acest tip de testare.
Limitări
Nu este posibil pentru testarea fiecărei căi a buclelor din program. Aceasta înseamnă că testarea exhaustivă este imposibilă pentru sistemele mari.
Acest lucru nu înseamnă că WBT nu este eficient. Prin selectarea căilor logice importante și a structurii datelor pentru testare este practic posibil și eficient.
Diferența dintre testarea White-Box și Black-Box
Pentru a spune acest lucru în termeni simpli:
Sub testarea casetei negre, testăm software-ul din punctul de vedere al utilizatorului, dar în caseta albă, vedem și testăm codul real.
În testarea Black Box, efectuăm testarea fără a vedea codul intern al sistemului, dar în WBT vedem și testăm codul intern.
Tehnica de testare a cutiei albe este utilizată atât de dezvoltatori, cât și de testeri. Îi ajută să înțeleagă care linie de cod este de fapt executată și care nu. Acest lucru poate indica faptul că lipsește o logică sau o greșeală de scriere, ceea ce poate duce în cele din urmă la unele consecințe negative.
Citire recomandată => Un ghid complet pentru testarea cutiei negre
Pași pentru a efectua WBT
Pasul 1 - Înțelegeți funcționalitatea unei aplicații prin intermediul codului sursă. Ceea ce înseamnă că un tester trebuie să fie bine versat cu limbajul de programare și celelalte instrumente, precum și tehnicile utilizate pentru dezvoltarea software-ului.
Pasul 2 - Creați testele și executați-le.
Când discutăm despre conceptul de testare, „ acoperire ”Este considerat a fi cel mai important factor. Aici voi explica cum să aveți o acoperire maximă din contextul testării cutiei albe.
Citește și=> Graficul cauzei și efectului - Tehnică de scriere dinamică a cazurilor de testare pentru o acoperire maximă
Tipuri și tehnici de testare a cutiei albe
Există mai multe tipuri și metode diferite pentru fiecare tip de testare a cutiei albe.
Consultați imaginea de mai jos pentru referință.
Astăzi, ne vom concentra în principal pe testarea tipurilor de execuție a „tehnicii de testare a cutiei albe”.
3 tehnici principale de testare a cutiei albe:
- Acoperirea declarației
- Acoperirea sucursalei
- Acoperirea căii
Rețineți că declarația, ramura sau acoperirea căii nu identifică nicio eroare sau defect care trebuie reparat. Identifică doar acele linii de cod care nu sunt niciodată executate sau rămân neatinse. Pe baza acestui lucru se pot concentra teste suplimentare.
Să înțelegem aceste tehnici una câte una cu un exemplu simplu.
# 1) Acoperirea declarației:
Într-un limbaj de programare, o afirmație nu este altceva decât linia de cod sau instrucțiuni pentru ca computerul să înțeleagă și să acționeze în consecință. O instrucțiune devine o instrucțiune executabilă atunci când este compilată și convertită în codul obiect și efectuează acțiunea atunci când programul este în modul de rulare.
Prin urmare „Acoperirea declarației” , așa cum sugerează și numele, este metoda de validare dacă fiecare linie a codului este executată cel puțin o dată.
# 2) Acoperirea sucursalei:
„Ramură” într-un limbaj de programare este ca „declarațiile IF”. O declarație IF are două ramuri: T rue și False .
Deci, în acoperirea sucursalei (numită și acoperirea deciziei), validăm dacă fiecare sucursală este executată cel puțin o dată.
În cazul unei „declarații IF”, vor exista două condiții de testare:
- Unul pentru a valida adevărata ramură și,
- Altele pentru validarea ramurii false.
Prin urmare, în teorie, Acoperirea filialei este o metodă de testare care este executată atunci când se asigură că fiecare ramură din fiecare punct de decizie este executată.
# 3) Acoperirea căii
Acoperirea căilor testează toate căile programului. Aceasta este o tehnică cuprinzătoare care asigură că toate căile programului sunt parcurse cel puțin o dată. Acoperirea căii este chiar mai puternică decât acoperirea sucursalei. Această tehnică este utilă pentru testarea programelor complexe.
Să luăm un exemplu simplu pentru a înțelege toate aceste tehnici de testare a cutiei albe.
dezvoltare software programe de ciclu de viață pdf
De asemenea, verificați=> Diferite tipuri de testare
Exemplu de testare a cutiei albe
Luați în considerare pseudocodul simplu de mai jos:
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE”
Pentru Acoperirea declarației - am avea nevoie doar de un caz de testare pentru a verifica toate liniile codului.
Asta inseamna:
Dacă mă gândesc TestCase_01 să fie (A = 40 și B = 70), atunci se vor executa toate liniile de cod.
Acum apare întrebarea:
- Este suficient?
- Ce se întâmplă dacă consider că testul meu este A = 33 și B = 45?
Deoarece acoperirea declarației va acoperi doar partea adevărată, pentru pseudo-cod, un singur caz de test NU ar fi suficient pentru a-l testa. În calitate de tester, trebuie să luăm în considerare și cazurile negative.
Prin urmare, pentru o acoperire maximă, trebuie să luăm în considerare ' Acoperirea sucursalei ' , care va evalua condițiile „FALS”.
În lumea reală, puteți adăuga declarații adecvate atunci când condiția eșuează.
Deci, pseudocodul devine:
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE” ELSE PRINT “ITS PENDING”
Deoarece acoperirea declarației nu este suficientă pentru a testa întregul pseudo-cod, am avea nevoie de acoperirea sucursalei pentru a asigura o acoperire maximă .
Deci, pentru acoperirea filialei, am avea nevoie de două cazuri de testare pentru a finaliza testarea acestui pseudo cod.
TestCase_01 : A = 33, B = 45
TestCase_02 : A = 25, B = 30
Cu aceasta, putem vedea că fiecare linie a codului este executată cel puțin o dată.
Iată concluziile care sunt derivate până acum:
- Acoperirea sucursalei asigură mai multă acoperire decât acoperirea extrasului.
- Acoperirea sucursalei este mai puternică decât acoperirea declarațiilor.
- Acoperirea 100% a sucursalei în sine înseamnă acoperirea extrasului de 100%.
- Dar acoperirea de extras de 100% nu garantează acoperirea de sucursală de 100%.
Acum să trecem la Acoperirea căii:
După cum sa spus mai devreme, acoperirea căii este utilizată pentru a testa fragmentele de cod complexe, care implică practic instrucțiuni de buclă sau combinație de bucle și instrucțiuni de decizie.
Luați în considerare acest pseudocod:
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE” END IF IF A>50 PRINT “ITS PENDING” END IF
Acum, pentru a asigura o acoperire maximă, am avea nevoie de 4 cazuri de testare.
Cum? Pur și simplu - există 2 declarații de decizie, deci pentru fiecare declarație de decizie, am avea nevoie de două ramuri pentru a testa. Unul pentru adevărat și celălalt pentru condiția falsă. Deci, pentru 2 declarații de decizie, am avea nevoie de 2 cazuri de testare pentru a testa partea adevărată și 2 cazuri de testare pentru a testa partea falsă, ceea ce face un total de 4 cazuri de testare.
Pentru a simplifica acestea, să luăm în considerare mai jos diagrama de flux a pseudo-codului pe care îl avem:
Pentru a avea o acoperire completă, am avea nevoie de următoarele cazuri de testare:
TestCase_01: A = 50, B = 60
TestCase_02 : A = 55, B = 40
TestCase_03: A = 40, B = 65
TestCase_04: A = 30, B = 30
Deci calea parcursă va fi:
Linia roșie - TestCase_01 = (A = 50, B = 60)
Linia albastră = TestCase_02 = (A = 55, B = 40)
Linie portocalie = TestCase_03 = (A = 40, B = 65)
Linie verde = TestCase_04 = (A = 30, B = 30)
******************
= >> Contactează-ne pentru a sugera listarea dvs. aici
*****************
Instrumente de testare a cutiei albe
Mai jos este prezentată o listă a instrumentelor de testare a cutiei albe.
# 1) Veracode
Instrumentele de testare a cutiei albe Veracode vă vor ajuta să identificați și să rezolvați defectele software-ului rapid și ușor, la un cost redus. Suportă mai multe limbaje de aplicații, cum ar fi .NET, C ++, JAVA etc. și vă permite, de asemenea, să testați securitatea desktopului, web și a aplicațiilor mobile. Cu toate acestea, există câteva alte beneficii ale instrumentului Veracode. Pentru informații detaliate despre instrumentele de testare a casetei albe Veracode, vă rugăm să consultați linkul de mai jos.
Link-ul: Veracode
# 2) EclEmma
EclEmma a fost inițial conceput pentru teste și analize în cadrul bancului de lucru Eclipse. Este considerat a fi un instrument gratuit de acoperire a codului Java și are și câteva caracteristici. Pentru a instala sau a afla mai multe despre EclEmma vă rugăm să consultați linkul de mai jos.
Link-ul: EclEmma
# 3) RCUNIT
Un cadru care este utilizat pentru testarea programelor C este cunoscut sub numele de RCUNIT. RCUNIT poate fi utilizat în mod corespunzător pe baza termenilor licenței MIT. Este gratuit de utilizat și pentru a instala sau a afla mai multe despre aceasta, vă rugăm să verificați linkul de mai jos.
Link-ul: RCUNIT
# 4) cfix
cfix este unul dintre cadrele de testare unitară pentru C / C ++, care vizează exclusiv ca dezvoltarea de suite de testare să fie cât mai simplă și ușoară posibil. Între timp, cfix este de obicei specializat pentru modul NT Kernel și Win32. Pentru a instala și a afla mai multe despre cfix, vă rugăm să consultați linkul de mai jos
Link-ul: cfix
# 5) Test Google
Googletest este cadrul de testare Google C ++. Descoperirea testelor, testele de deces, testele cu parametri valorici, eșecurile fatale și non-fatale, generarea de rapoarte de testare XML etc. sunt câteva funcții ale GoogleTest, dar există și alte câteva caracteristici. Linux, Windows, Symbian, Mac OS X sunt câteva platforme pe care GoogleTest a fost utilizat. Pentru aDescărcați, vă rugăm să verificați linkul de mai jos.
Link de descărcare: Test Google
# 6) EMMA
Emma este un instrument de acoperire a codului JAVA gratuit, ușor de utilizat. Include mai multe caracteristici și beneficii. Pentru a descărca și a afla mai multe despre Emma, vă rugăm să verificați linkul de mai jos.
Link de descărcare: EMMA
# 7) NUnit
NUnit este un cadru de testare a unității open source ușor de utilizat, care nu necesită nicio intervenție manuală pentru a evalua rezultatele testului. Acceptă toate limbile .NET. De asemenea, acceptă teste bazate pe date și testele rulează paralel sub NUnit. Versiunile anterioare ale NUnit foloseau licența NUnit, dar NUnit 3 este eliberată sub licența MIT. Dar ambele licențe permit utilizarea gratuită fără restricții. Pentru a descărca și a afla mai multe despre NUnit vă rugăm să verificați linkul de mai jos.
Link de descărcare: NUnit
# 8) CppUnit
CppUnit este un cadru de testare unitar scris în C ++ și este considerat a fi portul JUnit. Ieșirea de test pentru CppUnit poate fi fie în format XML, fie în format text. Creează teste unitare cu propria clasă și rulează teste în suitele de testare. Este licențiat sub LGPL. Pentru a descărca și a afla mai multe despre CppUnit vă rugăm să verificați linkul de mai jos.
Link de descărcare: CppUnit
# 9) JUnit
normalizarea în baza de date cu tabele de exemplu
JUnit este un cadru de testare unitar simplu și liniștit care acceptă automatizarea testelor în limbajul de programare Java. Acesta acceptă în principal dezvoltarea testată și oferă și raportul de acoperire a testelor. Este licențiat sub licența publică Eclipse. Pentru descărcare gratuită și pentru a afla mai multe despre JUnit vă rugăm să consultați linkul de mai jos.
Link de descărcare: JUnit
# 10) JsUnit
JsUnit este considerat portul JUnit către javascript. Și este un cadru de testare a unității open source pentru a sprijini Javascript pe partea clientului. Este licențiat sub GNU Public License 2.0, GNU Lesser Public License 2.1 și Mozilla Public License 1.1. Pentru a descărca și a afla mai multe despre JsUnit vă rugăm să verificați linkul de mai jos.
Link de descărcare: JsUnit
De asemenea, verificați toate instrumentele listate mai jos Analiza statică a codului Aici .
Simțiți-vă liber să sugerați instrumente mai simple sau mai avansate pe care le utilizați pentru tehnica cutiei albe.
Concluzie
Bazându-se doar pe testarea cutiei negre nu este suficient pentru acoperirea maximă a testului. Trebuie să avem o combinație atât de tehnici de testare a cutiei negre, cât și a cutiei albe acoperă defectele maxime .
Dacă se face corect, testarea White Box va contribui cu siguranță la calitatea software-ului. De asemenea, este bine ca testerii să participe la aceste teste, deoarece pot oferi cea mai „imparțială” opinie despre cod. :)
Spuneți-ne dacă aveți întrebări cu privire la metodele pe care le-am discutat în acest articol.
Lectură recomandată
- Diferențele cheie dintre testarea cutiei negre și testarea cutiei albe
- Testarea cutiei negre: un tutorial detaliat cu exemple și tehnici
- Testarea funcțională Vs testarea nefuncțională
- Cele mai bune instrumente de testare software 2021 (Instrumente de automatizare a testelor de calitate)
- Gândiți-vă din cutie în timp ce testați software-ul!
- Ghid de testare a portabilității cu exemple practice
- Testarea alfa și testarea beta (un ghid complet)
- Tipuri de testare software: diferite tipuri de testare cu detalii