Ce este Test Harness? (Exemple)
โก Rezumat inteligent
Test Harness รฎn testarea software reuneศte module, drivere, date de testare ศi instrumente de execuศie, astfel รฎncรขt echipele sฤ valideze modulele รฎnainte de a exista fiecare dependenศฤ, transformรขnd ciclurile de testare blocate รฎn verificฤri automate ศi repetabile, care raporteazฤ rezultatele fฤrฤ efort manual.

Testaศi harness รฎn testarea software-ului
Testaศi harness รฎn testarea software-ului este o colecศie de stub-uri, drivere ศi alte instrumente de asistenศฤ necesare pentru a automatiza execuศia testului. Harnaศul de testare executฤ teste utilizรขnd o bibliotecฤ de teste ศi genereazฤ rapoarte de testare. Harnaศul de testare conศine toate informaศiile necesare pentru compilarea ศi rularea unui test, cum ar fi cazurile de testare, portul de implementare ศintฤ (TDP), fiศierul sursฤ testat, stub-uri etc.
Simplu spus, un sistem de hamuri รฎncadreazฤ componenta pe care doriศi sฤ o verificaศi รฎntr-un mediu controlat. Modulele รฎnvecinate care lipsesc sunt รฎnlocuite cu programe fictive mici, intrฤrile sosesc dintr-un set de date fix, iar fiecare rezultat este scris รฎntr-un jurnal รฎn loc sฤ fie citit de pe un ecran. Secศiunile care urmeazฤ explicฤ de ce echipele construiesc un astfel de sistem, din ce este alcฤtuit, cum funcศioneazฤ ศi unde se potriveศte.
De ce sฤ folosiศi Test Harness?
Existฤ un sistem de ham pentru a elimina aศteptarea din ciclul de testare. Deoarece simuleazฤ orice nu este รฎncฤ gata, un testare software Echipa poate รฎncepe verificarea comportamentului รฎn primul sprint, mai degrabฤ decรขt dupฤ integrarea finalฤ. Diagrama de mai jos aratฤ unde se aflฤ o reศea รฎntre scripturile de testare ศi aplicaศia testatฤ.
- Automatizaศi procesul de testare
- Executaศi seturi de teste de cazuri de testare
- Generaศi rapoarte de testare asociate
- Suport pentru depanare
- Pentru a รฎnregistra rezultatele testelor pentru fiecare dintre teste
- Ajutฤ dezvoltatorii sฤ mฤsoare acoperirea codului la nivel de cod
- Creศteศi productivitatea sistemului prin automatizare
- รmbunฤtฤศiศi calitatea componentelor software ศi a aplicaศiilor
- Pentru a gestiona condiศia complexฤ pe care testatorii le sunt dificil de simulat
Aceste cรขศtiguri conteazฤ cel mai mult รฎn ciclurile de lansare scurte. Cรขnd codul este livrat de mai multe ori pe sฤptฤmรขnฤ, un defect care supravieศuieศte pรขnฤ la etapa de integrare costฤ mult mai mult. tracmai mult decรขt unul prins de un ciot รฎn ziua รฎn care a fost scris. Aceastฤ recompensฤ apare, รฎnsฤ, doar atunci cรขnd hamul este asamblat din piesele potrivite.
Componentele cheie ale unui cablaj de testare
Un ham nu este un singur program, ci un ansamblu de piese, fiecare eliminรขnd un obstacol care altfel ar รฎmpiedica rularea nesupravegheatฤ a unui test.
- Scripturi de testare: Instrucศiuni automate care precizeazฤ paศii de efectuat ศi rezultatul aศteptat, scrise conform script de testare convenศii.
- Motor de execuศie a testelor: Runner-ul care citeศte scripturile รฎn ordine, rezolvฤ dependenศele ศi declanศeazฤ execuศia secvenศialฤ sau paralelฤ.
- Depozit de date de testare: Valorile de intrare pฤstrate รฎn afara scriptului รฎn CSV, JSON, XML sau o bazฤ de date iniศializatฤ, adesea completate de testarea instrumentelor de generare a datelor.
- drivere: Module de apelare fictive care invocฤ componenta testatฤ atunci cรขnd stratul superior real, cum ar fi o interfaศฤ cu utilizatorul, este neterminat.
- Stubs: Modulele fictive apelau la returnarea de rฤspunsuri predefinite, de exemplu, un serviciu de platฤ care rฤspundea โPlatฤ reuศitฤโ fฤrฤ a contacta o bancฤ.
- Validator de ieศire: Logicฤ de afirmaศie care comparฤ rezultatul real cu valoarea aศteptatฤ ศi marcheazฤ fiecare caz ca fiind admis sau eศuat.
- Stratul de รฎnregistrare ศi raportare: Marcaje temporale, capturi de ecran, ieศiri din consolฤ ศi un rezumat al execuศiei care evidenศiazฤ fiecare eศec tracposibil ulterior.
รndepฤrtaศi orice piesฤ ศi hamul nu mai este automat, deoarece atunci trebuie furnizat ceva manual la fiecare cursฤ.
Cum funcศioneazฤ un ham de testare?
Un ham repetฤ aceeaศi buclฤ la fiecare execuศie. Cunoaศterea acelei bucle รฎศi spune exact unde se aflฤ propriul tฤu... testarea automatizฤrii conectฤrile de active ศi care pas eศueazฤ atunci cรขnd o rulare devine roศie.
- Pregฤtiศi mediul: Cablajul rezolvฤ configuraศia mediului, deschide conexiuni ศi รฎncarcฤ dispozitive de fixare, astfel รฎncรขt fiecare rulare รฎncepe din aceeaศi stare cunoscutฤ.
- รncฤrcaศi scripturile de testare: Scripturile, parametrii ศi rezultatele aศteptate sunt citite din repozitoriu. Nimic nu este introdus รฎn timpul execuศiei, ceea ce face ca o a doua execuศie sฤ fie comparabilฤ cu prima.
- รnlocuiศi modulele lipsฤ: ศoferii รฎnlocuiesc apelanศii care nu existฤ รฎncฤ, iar apelurile scurte รฎnlocuiesc serviciile neterminate, instabile sau costisitoare de apelat.
- Invocaศi aplicaศia testatฤ: Motorul de execuศie declanศeazฤ fluxul de lucru descris de script, fie cฤ este vorba de un apel de metodฤ, de un API cerere sau o interacศiune cu browserul.
- Capturaศi rezultatul real: Valorile returnate, sarcinile utile de rฤspuns, rรขndurile bazei de date, liniile de jurnal ศi starea ecranului sunt toate รฎnregistrate pe mฤsurฤ ce sunt produse.
- Comparaศi cu rezultatele aศteptate: Validatorul de ieศire activeazฤ fiecare valoare capturatฤ. Orice nepotrivire marcheazฤ cazul ca fiind eศuat ศi รฎnregistreazฤ atรขt valoarea aศteptatฤ, cรขt ศi cea observatฤ.
- รnregistrare ศi raportare: Ham-ul scrie un marcaj temporal trace a rulฤrii ศi genereazฤ un raport de succes/eศec pe care un dezvoltator รฎl poate citi fฤrฤ a rula din nou nimic.
- Dฤrรขma: Datele temporare, conexiunile ศi starea stub-ului sunt ศterse, astfel รฎncรขt urmฤtorul caz nu poate moศteni reziduuri de la acesta.
๐ก Sfat: Reรฎmprospฤtaศi modulele de rฤspuns ori de cรขte ori se modificฤ modulul real. Un modul de rฤspuns care รฎncฤ rฤspunde cu formatul din trimestrul trecut va raporta o rulare verde, รฎn timp ce integrarea live este deja defectฤ.
Un exemplu practic concretizeazฤ bucla. Sฤ presupunem cฤ pagina de finalizare a comenzii este gata, dar gateway-ul de platฤ nu. Un driver lanseazฤ cererea pe care interfaศa ar trimite-o รฎn mod normal, un stub rฤspunde mai รฎntรขi cu โPlatฤ reuศitฤโ ศi apoi cu un timeout, iar validatorul confirmฤ comanda รฎntr-un caz ศi o solicitare de reรฎncercare รฎn celฤlalt. Ambele cฤi sunt verificate รฎnainte ca echipa gateway-ului sฤ scrie o linie de cod.
Existฤ douฤ contexte รฎn care este utilizat Test Harness
Acelaศi mecanism serveศte douฤ scopuri distincte, iar vocabularul se schimbฤ uศor รฎn funcศie de care dintre ele te afli.
- Testarea automatizฤrii: Acesta conศine scripturi de testare, parametri necesari pentru a rula aceste scripturi ศi pentru a aduna rezultate pentru a le analiza
- Testare de integrare: Este folosit pentru a pune รฎmpreunฤ douฤ unitฤศi de cod sau modul care interacศioneazฤ รฎntre ele pentru a verifica dacฤ comportamentul combinat este sau nu conform aศteptฤrilor.
Luaศi รฎn considerare un modul de autentificare ศi un modul de profil care trebuie sฤ facฤ schimb de un token de utilizator. รn contextul integrฤrii, un driver simuleazฤ o autentificare reuศitฤ ศi transmite token-ul logicii de profil, astfel รฎncรขt harta datelorping, verificarea permisiunilor ศi randarea ecranului pot fi verificate รฎnainte de finalizarea serviciului de autentificare real. รn contextul automatizฤrii, aceeaศi pereche de cazuri este adฤugatฤ la o suitฤ ศi rulatฤ din nou la fiecare compilare, fฤrฤ ca cineva sฤ o mai atingฤ.
Tipuri de hamuri de testare
Deoarece software-ul este construit รฎn straturi, un sistem de hamuri este de obicei specializat รฎn stratul pe care รฎl verificฤ. Patru tipuri acoperฤ aproape fiecare proiect.
A cablaj de testare unitarฤ exerseazฤ cele mai mici porศiuni de cod, cum ar fi o singurฤ funcศie sau metodฤ, fiecare dependenศฤ fiind รฎnlocuitฤ de un stub. Este cel mai rapid de executat ศi cel mai ieftin de รฎntreศinut, motiv pentru care testarea unitara Suitele sunt de obicei primul sistem de gestionare pe care o echipฤ รฎl construieศte. Testarea unui calcul de impozit fฤrฤ a atinge modulul de facturare este o utilizare tipicฤ.
An cablaj de testare a integrฤrii verificฤ dacฤ douฤ sau mai multe module coopereazฤ corect ศi este stratul unde apar nepotrivirile de date ศi apelurile eศuate. Este cablajul descris รฎn testarea de integrare contextul de mai sus, de exemplu verificarea faptului cฤ un serviciu de comenzi transmite sarcina utilฤ corectฤ unui serviciu de platฤ.
A cablaj de testare a sistemului gestioneazฤ un flux complet end-to-end prin interfaศฤ, serviciu ศi bazฤ de date, astfel รฎncรขt testarea sistemului poate confirma cฤ regulile de business sunt valabile odatฤ ce fiecare strat este prezent. A ham de testare de regresie apoi ruleazฤ din nou suita acumulatฤ dupฤ fiecare modificare, ceea ce face ca testarea regresiei practic atunci cรขnd trebuie repetate cรขteva sute de scenarii la fiecare รฎmbinare.
Testaศi unelte pentru cablaj
Fiecare dintre aceste tipuri este construit รฎn mod normal pe baza unui instrument existent, mai degrabฤ decรขt de la zero. Cele douฤ opศiuni clasice rฤmรขn cadrele de lucru la nivel de unitate:
- Junit: Instrument utilizat รฎn timpul utilizฤrii Java
- Nunit: Instrument folosit pentru utilizare .Cadru net
Dincolo de aceste douฤ, majoritatea echipelor adaugฤ instrumente care extind hamul la browser, la stratul API sau la profilul de รฎncฤrcare. Tabelul de mai jos mapeazฤ opศiunile comune รฎn funcศie de rolul pe care รฎl joacฤ fiecare.
| Instrument | Cel mai potrivit pentru | Rol รฎn interiorul hamului |
|---|---|---|
| JUnit | Java unitฤศi ศi suite de integrare | Furnizeazฤ drivere, accesorii ศi afirmaศii |
| NUnit | Cod C# ศi VB.NET pe platforma .NET | Acelaศi rol ca JUnit pentru limbaje .NET |
| Selenium | Fluxuri end-to-end bazate pe browser | Acศioneazฤ ca driver pentru stratul de interfaศฤ cu utilizatorul |
| TestNG | Mare Java apartamente care necesitฤ grupareping ศi alergฤri paralele | Serveศte ca motor de execuศie a testelor |
| PyTest | Python servicii ศi verificฤri la nivel API | Fixฤrile servesc ศi ca ศtifturi ศi furnizori de date |
| Apache JMeter | Scenarii de sarcinฤ, stres ศi performanศฤ | Genereazฤ trafic sintetic pentru aplicaศia testatฤ |
| Postman | REST API contracverificarea t | Oferฤ servere mock care รฎnlocuiesc endpoint-urile neterminate |
Indiferent de combinaศia pe care o alegeศi, cablajul se amortizeazฤ doar atunci cรขnd funcศioneazฤ nesupravegheat, aศa cฤ conectaศi-l la integrare continuฤ lucrare devreme. Un catalog mai amplu de opศiuni este listat รฎn Guru99 instrumente de testare rezumat. O distincศie รฎncฤ provoacฤ confuzie ศi meritฤ sฤ o clarificaศi รฎnainte de a alege ceva.
Test Harness vs Test Framework
Un sistem de รฎmperechere (ham) ศi un framework de automatizare sunt adesea tratate ca fiind acelaศi lucru, รฎnsฤ rฤspund la รฎntrebฤri diferite: sistemul de รฎmperechere este cel care executฤ un test, รฎn timp ce framework-ul este structura รฎn interiorul cฤreia sunt proiectate testele. Tabelul de mai jos le prezintฤ una lรขngฤ alta.
| Test ham | Testarea cadrului de automatizare |
|---|---|
| Un ham de testare este compus din drivere ศi stub-uri, care sunt mici programe false care interacศioneazฤ cu software-ul testat. | Este un set de procese, proceduri, abdomentracconceptul t ศi un mediu รฎn care testele automate sunt proiectate ศi implementate |
| Nu puteศi sฤ โรnregistraศi ศi redareโ script รฎn Test Harness | Un tester poate manual scriptul โรnregistrare ศi redareโ รฎn acest cadru |
| Harnaศul de testare conศine toate informaศiile necesare pentru compilarea ศi rularea unui test, cum ar fi cazurile de testare, portul de implementare ศintฤ (TDP), fiศierul sursฤ testat, stub-uri etc. | Cadrul de automatizare a testelor conศine informaศii precum biblioteca de testare, instrumente de testare, practici de testare automatฤ, o platformฤ de testare etc. |
| Un ham de testare este clasificat รฎn Testarea automatizฤrii Testare de integrare |
Cadrul de automatizare exemple Testare bazatฤ pe date Testare bazatฤ pe cuvinte cheie Testare bazatฤ pe modularitate Testare hibridฤ Testare bazatฤ pe model Code testare condusฤ Testare bazatฤ pe comportament |

