E2E Testing: A Tutorial and Architectural Guide

Testarea end-to-end (E2E) ajută la validarea celor mai importante fluxuri din aplicația dumneavoastră, cum ar fi solicitările de autentificare a utilizatorilor. Pentru dezvoltarea front-end, testele E2E ajută la verificarea dacă a fost prezentată o interfață de utilizator corectă. Pentru dezvoltarea back-end, testele E2E ajută la verificarea dacă un flux important din serviciile dvs. back-end returnează rezultatul așteptat.

Această postare vă va introduce în testarea E2E și vă va oferi sfaturi practice. De asemenea, vom explica cum să scrieți teste reutilizabile, astfel încât acestea să poată fi utilizate pentru a crea mai ușor teste E2E. După cum probabil știți, testele E2E reprezintă adesea o frustrare majoră pentru dezvoltatori, deoarece necesită mult efort pentru a fi scrise, rulate și întreținute.

În primul rând, să aruncăm o privire la locul în care se află testarea E2E în piramida testării software.

Locul testelor E2E în piramida de testare

Când ne uităm la piramida de testare, găsim patru tipuri principale de testare care ne ajută să garantăm calitatea codului:

  1. Testele E2E ajută la verificarea căilor de mare valoare din aplicația dumneavoastră. Cu alte cuvinte, acestea ajută la verificarea poveștilor utilizatorilor, deoarece acestea reprezintă adesea fluxuri în aplicația dumneavoastră.
  2. Testele de integrare ajută la verificarea integrării mai multor funcții sau componente. Testele de integrare vă pot spune dacă codul dvs. funcționează coerent cu alte funcții.
  3. Testele unitare ajută la verificarea logicii de afaceri a funcțiilor. Testele unitare sunt cea mai de bază formă de testare și asigură că logica de afaceri este corectă.
  4. În cele din urmă, nu putem uita de analiza statică sau testarea statică. Testarea statică ajută la găsirea greșelilor de scriere sau a erorilor de tip.

Conform acestei piramide, majoritatea testelor ar trebui să fie teste unitare, cu mai puține teste de integrare și chiar mai puține teste E2E. Cu toate acestea, este totuși important să verificați fluxurile din aplicația dumneavoastră. Testele E2E sunt greu de întreținut și necesită mult efort. Prin urmare, verificați doar cele mai importante fluxuri cu teste E2E. Alte tipuri de teste, cum ar fi testele de integrare și testele unitare, ar trebui să vă ofere deja suficientă încredere în baza dvs. de cod.

Diferite strategii de testare E2E

Dați-mi voie să vă spun că există strategii diferite. Putem alege între testarea E2E orizontală și testarea E2E verticală. Ambele strategii merită explorate, deoarece vă permit să testați diferite scenarii. Haideți să aflăm ce face fiecare strategie.

Strategia #1: Testarea verticală End-to-End

Această strategie se concentrează pe testarea tuturor straturilor piramidei de testare. Ea include teste unitare, teste de integrare și teste UI. Scopul dvs. este de a testa o componentă la nivel granular cu ajutorul testelor unitare, de a testa modul în care o componentă se comportă atunci când interacționează cu alte componente cu ajutorul testelor de integrare și, în cele din urmă, de a verifica comportamentul componentei atunci când utilizatorii interacționează prin intermediul UI.

Cel mai frecvent, doriți să folosiți o conductă de integrare continuă pentru a automatiza aceste teste pentru fiecare confirmare de cod sau cerere de extragere.

Strategia #2: Testarea orizontală End-to-End

Testarea orizontală E2E se concentrează pe verificarea unui flux complet al utilizatorului. Iată un exemplu de flux pentru un magazin online:

  1. Deschideți pagina de produs
  2. Selectați dimensiunea produsului
  3. Adaugați produsul în coșul de cumpărături
  4. Vați la checkout
  5. Completați adresa și informațiile de plată
  6. Completați plata
  7. Afișați ecranul de confirmare a cumpărăturilor

Aici, dorim să verificăm fiecare tranzacție a fluxului utilizatorului. Adesea, acest tip de testare verifică interacțiunea dintre diferite aplicații și verifică schimbările de stare pentru aceste aplicații.

Rețineți că aceste tipuri de teste sunt scumpe de scris. Este nevoie de destul de mult timp pentru a defini fluxurile utilizatorilor și a scrie aceste teste. Prin urmare, încercați să vă concentrați asupra căilor de tranzacție critice pentru aplicația dumneavoastră.

Cu toate acestea, asigurați-vă că testați aceste fluxuri de utilizator critice pentru diferite condiții. Această strategie vă permite să obțineți o imagine completă a robusteții fluxului utilizatorului. Aceste condiții includ:

  • Scenarii complexe de sincronizare: De exemplu, un bilet la un concert este disponibil pentru dumneavoastră doar timp de 15 minute.
  • Introducerea de date diferite sau date lipsă.
  • Rupturi de flux: Un utilizator decide să părăsească pagina de checkout pentru a vizualiza o altă pagină de produs. De exemplu, trebuie să verificăm dacă componenta salvează starea de checkout.

În continuare, să învățăm când să scriem teste E2E.

Când să scriem teste E2E

S-ar putea să nu știți că testele E2E sunt teste costisitoare pentru a fi rulate în conducta dvs. de integrare continuă. Acestea necesită adesea o mulțime de pregătiri, cum ar fi crearea unei baze de date care imită datele de producție. În plus, acestea reprezintă uneori fluxuri consumatoare de timp în aplicația dumneavoastră. Prin urmare, ele pot fi lente și necesită mai multe resurse pentru a fi executate.

Utilizați testele E2E pentru a verifica cele mai importante fluxuri din aplicația dvs. Exemple de fluxuri de mare valoare includ:

  • Înregistrare și deconectare
  • Înregistrarea unui nou utilizator
  • Adaugarea unui articol în coș
  • Modificarea parolei
  • Cu orice alte fluxuri importante legate de serviciul dumneavoastră

Cu toate acestea, nu uitați să verificați logica de afaceri pe care o scrieți cu teste unitare și de integrare. Combinația dintre testele unitare și cele de integrare ar trebui să vă ofere multă încredere în ceea ce privește calitatea codului dumneavoastră. Testele E2E vă ajută să creșteți această încredere pentru căile critice.

Iată câteva sfaturi practice pentru scrierea testelor E2E.

Consiliere pentru scrierea testelor E2E

Concentrați-vă pe scrierea de teste reutilizabile

Primul și cel mai important sfat este să scrieți teste și componente mici, independente și reutilizabile. Acest lucru vă permite să înșirați mai multe componente mici pentru a crea mai ușor fluxuri complete de utilizator end-to-end. În loc să scrieți o mulțime de componente personalizate doar pentru a fi utilizate de testele E2E, concentrați-vă pe scrierea de componente reutilizabile.

Scrierea de componente mici și independente ajută la reutilizarea codului și reduce timpul de depanare a erorilor. De asemenea, este mai ușor să actualizați componentele mici atunci când se schimbă funcționalitatea sau fluxurile utilizatorilor.

Considerați întotdeauna motivul pentru care scrieți un test E2E

Când doriți să acoperiți un anumit flux cu un test E2E, gândiți-vă dacă merită să îl acoperiți. Testați numai fluxurile de utilizator de mare valoare cu teste E2E. De exemplu, nu ar trebui să testați dacă un mesaj de eroare este afișat atunci când un utilizator introduce o adresă de e-mail incorectă. Acesta este un caz de utilizare mult prea simplu care nu se potrivește unui test E2E. Această cerință poate fi testată pur și simplu cu un test unitar.

Pe de altă parte, merită să testați dacă pagina de conectare vă redirecționează către pagina corectă a aplicației după ce vă conectați cu succes. Acesta este un flux valoros pentru ca utilizatorii dvs. să poată utiliza aplicația. Pe scurt, luați întotdeauna în considerare motivul pentru care scrieți un test E2E.

Testele E2E nu ar trebui să depindă de detaliile de implementare

Nu doriți să actualizați testele E2E de fiecare dată când schimbați detaliile de implementare pentru un anumit flux. Prin urmare, doriți să scrieți componente care vă permit să faceți abstracție de detaliile de implementare. Testele E2E devin mult mai ușor de întreținut și mai distractiv de scris, atunci când detaliile de implementare sunt ascunse în componente. Pe scurt, testele E2E ar trebui să fie independente de detaliile de implementare.

În continuare, să ne uităm la capcanele testelor E2E.

Capcanele testelor E2E

Iată o listă de capcane comune asociate cu testele E2E:

  • Testele E2E nu ar trebui să încerce să testeze cât mai mult posibil dintr-o singură dată. Adesea, dezvoltatorii scriu teste E2E uriașe care verifică fiecare aspect al fluxului utilizatorului. Păstrați lucrurile simple și verificați cele mai importante aspecte ale fluxului utilizatorului. De exemplu, pentru un flux de autentificare, trebuie doar să verificați dacă utilizatorul a fost redirecționat către pagina aplicației. Astfel, dezvoltatorilor le va fi mai ușor să mențină și să actualizeze testele E2E.
  • Când un test E2E eșuează, poate fi dificil să găsiți cauza exactă a eșecului. Cu toate acestea, puteți reduce eforturile de depanare necesare prin acoperirea logicii dvs. de afaceri cu teste unitare și de integrare. Unele instrumente oferă, de asemenea, o bună analiză a cauzelor profunde, inclusiv capturi de ecran și jurnale de consolă ale etapelor de testare eșuate, ceea ce poate reduce timpul de depanare.
  • Testele E2E necesită o cantitate considerabilă de timp în conducta dvs. de integrare continuă (CI). Acestea vă pot bloca conducta CI, ceea ce încetinește dezvoltarea generală. Acest lucru înseamnă că ar putea fi necesar să investiți în conducta dvs. CI pentru a avea mai multe conducte pentru rularea testelor.
  • Testele E2E sunt un efort continuu. De fiecare dată când se adaugă o nouă funcționalitate sau se schimbă funcționalitatea veche, este probabil că va trebui să vă actualizați testele E2E. Cu toate acestea, putem reduce acest efort prin scrierea de componente reutilizabile care abstractizează detaliile de implementare. În plus, unele instrumente folosesc inteligența artificială pentru a ajuta la adaptarea testelor atunci când codul se modifică, reducând întreținerea testelor.

Acum, să aruncăm o scurtă privire la diferențele dintre testarea de sistem și testarea E2E.

Testarea de sistem vs. Testarea E2E – Care este diferența?

Deci, care este diferența dintre testarea de sistem și testarea E2E? Testarea sistemului se concentrează pe validarea atât a cerințelor funcționale, cât și a celor nefuncționale. Adesea, este finalizată de o echipă externă care tratează aplicația ca pe o cutie neagră. Cu alte cuvinte, aceștia nu știu nimic despre funcționarea aplicației, cu excepția cerințelor pe care ar trebui să le îndeplinească.

Cu toate acestea, această formă de testare este adesea confundată cu testarea E2E, deoarece testarea sistemului este o formă de testare E2E. Deși, testarea sistemului verifică mult mai mult decât testarea E2E. De exemplu, testarea sistemului măsoară scalabilitatea, performanța sau fiabilitatea. În timp ce testarea E2E se concentrează pe finalizarea corectă a fluxurilor de utilizatori.

În cele din urmă, să rezumăm învățămintele acestui articol.

Concluzie privind E2E

Testele end-to-end sunt destul de puternice, deoarece ajută la validarea fluxurilor de utilizatori de mare valoare sau a povestirilor utilizatorilor. Ele ajută la garantarea calității aplicației dumneavoastră.

Cu toate acestea, scrierea și întreținerea testelor E2E poate necesita timp și efort semnificativ. Este posibil să se reducă acest efort prin scrierea unor componente mici, reutilizabile, care abstractizează detaliile de implementare. Unele instrumente ajută, de asemenea, la crearea unor teste mai rezistente prin utilizarea AI sau a mai multor atribute pentru a identifica fiecare element. Prin urmare, nu trebuie să actualizați testele E2E de fiecare dată când detaliile de implementare se schimbă pentru fluxurile de utilizator de mare valoare. În plus, componentele reutilizabile vă permit să înșiruiți aceste componente pentru a crea cu ușurință fluxuri de testare E2E.

Testele E2E ar trebui să acopere cele mai importante fluxuri ale aplicației dumneavoastră. Acestea testează fluxurile pe care utilizatorii și clienții dvs. le urmează pentru a obține valoare din aplicația dvs. Dacă nu pot să se logheze sau să adauge un articol în coș, fie vor pleca (dacă pot), fie vor suna la asistență dacă sunt forțați să utilizeze aplicația dvs. De exemplu, doriți să acoperiți fluxul de conectare și deconectare, dar sunteți mai puțin interesat să verificați un mesaj de eroare după introducerea unei adrese de e-mail greșite.

În final, testele E2E ar trebui să fie distractiv de scris. Ele nu ar trebui să necesite mult timp și efort pentru a fi scrise și întreținute. Păstrați testele E2E simple și concentrați-vă pe componente reutilizabile și veți vedea rezultate excelente!

Acest articol a fost scris de Michiel Mulders. Michiel este un dezvoltator blockchain pasionat care iubește să scrie conținut tehnic. În afară de asta, îi place să învețe despre marketing, psihologia UX și antreprenoriat. Când nu scrie, probabil că se bucură de o bere belgiană!

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.