Testarea – probabil cea mai subevaluată parte a dezvoltării aplicațiilor
Publicat: 2018-04-03De ce ar trebui să te plătesc pentru a-ți testa propria lucrare?
Aceasta este o întrebare pe care am auzit-o mult de-a lungul anilor când discutam despre testarea bugetelor cu clienții. Pentru cei neinițiați, pare o întrebare corectă. Cu toate acestea, oricine este implicat în dezvoltarea de software știe cât de complex și consumator de timp poate fi testarea. Testarea este, de fapt, una dintre cele mai importante părți ale oricărui proiect de dezvoltare software.
O platformă mare de comerț electronic este un lucru incredibil de complex, cu milioane de linii de cod, gigaocteți de date și multe puncte de integrare. Există atât de multe părți mobile interconectate; atât de multe verigi în lanț încât este foarte ușor ca ceva să meargă prost. Aplicația va fi folosită în milioane de moduri diferite printr-o multitudine de browsere pe numeroase dispozitive desktop și mobile. Proiectul de dezvoltare va dura cel puțin 6 luni cu mulți oameni diferiți lucrând la el. Numărul de zone și scenarii care ar putea fi testate este aproape nelimitat. Este o minune că orice funcționează!
Testarea poate fi împărțită în mai multe zone diferite, dar fiecare domeniu de testare este important de luat în considerare. Fiecare proiect este puțin diferit; unor clienți le place să preia o mare parte a testării ei înșiși, unora le place să o externalizeze, în timp ce unii se așteaptă ca dezvoltatorul lor să facă totul. De asemenea, testarea nu este o entitate fixă; poți face multe teste și poți face puțin. Cu cât testezi mai mult, cu atât vei reduce riscul proiectului, dar cu cât va dura mai mult timp și cu atât va costa mai mult.
Testarea unitară
Un test unitar este unul care testează mici „unități” de cod pentru a se asigura că funcționează conform așteptărilor. De exemplu, atunci când un formular este trimis, acesta ar trebui să salveze detaliile introduse într-un tabel al bazei de date. Este un test de sine stătător care, în mod specific și numai, asigură că unitatea funcționează conform așteptărilor. Folosind o adevărată metodologie de dezvoltare bazată pe teste, un dezvoltator va scrie mai întâi un test înainte de a crea efectiv orice cod, astfel încât codul să poată fi considerat finalizat numai când testul trece. În practică, testarea unitară este utilizată numai în unele zone cheie ale aplicației pentru a se asigura că funcțiile de bază funcționează conform așteptărilor. În timp ce testarea unitară poate reduce probabilitatea apariției problemelor funcționale, poate crește și timpul de dezvoltare.
Testarea fumului
Probabil că veți auzi agenția voastră de dezvoltare vorbind des despre testarea fumului. Un test de fum este un subset pragmatic de cazuri de testare care acoperă călătoriile și funcțiile cheie ale utilizatorului în cadrul aplicației dvs. Cel puțin, trebuie așteptat ca dezvoltatorul dvs. să efectueze teste de fum înainte de a vă preda ceva pentru UAT.
Testarea UI
Testarea interfeței cu utilizatorul (UI) poate fi un lucru foarte complex și consumator de timp. Gama uriașă de dispozitive mobile, tablete și desktop, sisteme de operare și browsere care vor fi utilizate pentru a accesa un site web înseamnă că testarea completă manuală a fiecărei combinații este aproape imposibilă. Datorită numărului mare de variații diferite care trebuie acoperite, testarea UI este candidatul perfect pentru testarea automată. Instrumentele automate de testare sunt capabile să urmărească o călătorie prin script prin site-ul dvs. web și să testeze dacă rezultatele așteptate sunt atinse. De asemenea, pot înregistra fiecare călătorie, astfel încât fiecare să poată fi redată. Deși această metodă nu este perfectă, poate reduce semnificativ numărul de probleme majore de UI cu care se poate confrunta un site web.
Unele servicii de testare terță parte, cum ar fi Bug Finders, oferă un serviciu aglomerat în care sute de testeri umani independenți din întreaga lume sunt utilizați pentru a testa un site web și sunt plătiți atunci când găsesc o problemă. Această abordare poate fi o modalitate relativ eficientă din punct de vedere al costurilor de a vă testa aplicația pe sute de combinații dispozitiv/platformă/browser. Este normal ca un ciclu de testare să aibă ca rezultat ridicarea a aproximativ 200 de probleme. Provocarea constă adesea în clasificarea și prioritizarea problemelor, astfel încât să vă concentrați resursele pe tratarea celor mai importante. Fiecare site web va avea un număr constant de probleme de nivel scăzut, care este puțin probabil să fie rezolvate vreodată.
Testare de regresie
Testarea de regresie este o parte extrem de importantă a dezvoltării continue. Este conceput pentru a testa dacă orice modificări aduse unei părți a aplicației au cauzat o problemă în altă parte. De exemplu, o modificare a unei funcții JavaScript utilizată pentru a valida formularul de contact ar putea avea un impact potențial asupra formularelor utilizate în finalizarea comenzii. Datorită naturii complexe a oricărei platforme de comerț electronic, problemele de regresie nu sunt neobișnuite, așa că elaborarea unui plan solid de testare a regresiei este vitală pentru a vă asigura că experiența utilizatorilor dvs. nu este afectată negativ de aceste probleme.
UAT
Testarea de acceptare a utilizatorilor (UAT) este o parte critică a oricărui proiect de dezvoltare și implică clientul să efectueze testarea completă de la capăt la capăt a platformei înainte de a fi pusă în funcțiune. UAT este procesul pe care îl văd cel mai des subestimat. Este, de asemenea, partea unui proiect care este prima care suferă atunci când termenele sunt strânse. Cu toate acestea, acest lucru este probabil să conducă la o rată mai mare de eșec. Pentru orice construcție nouă de site-uri web, vă recomandăm că sunt planificate cel puțin 2 luni de UAT. Site-ul dvs. de comerț electronic este doar o parte a oricărei afaceri comerciale, iar procesul de la capăt la capăt care implică căutarea, finalizarea comenzilor, gestionarea comenzilor, plata, expedierea, serviciile pentru clienți, finanțele și toate celelalte părți ale lanțului trebuie să fie testat.

UAT este adesea confundat sau fuzionat cu SIT (System Integration Testing), unde veți testa în mod specific integrarea între mai multe sisteme. SIT face parte din testarea de la capăt la capăt, care asigură că toate părțile lanțului funcționează corect împreună.
UAT bun implică crearea de cazuri de testare și planuri de testare. Acestea iau, în general, forma unui set de script-uri (un script fiind un set de sarcini de executat) prin care un tester manual le va rula și fie trece sau eșuează testul în funcție de rezultat. Nu este neobișnuit ca un plan de testare UAT end-to-end să includă peste 500 de cazuri de testare.
A în UAT este unul dintre motivele pentru care este atât de important. La sfârșitul procesului UAT, se va considera în general că ați acceptat cererea, așa că este important să o testați temeinic pentru a vă asigura că funcționează exact așa cum v-ați așteptat. Acest lucru nu înseamnă că erorile nedescoperite nu vor fi în garanție, dar dacă există o funcționalitate care nu funcționează în modul în care vă așteptați, aceasta trebuie preluată în UAT. Celălalt motiv pentru care este atât de important este că este ultima șansă de a ridica probleme înainte de a fi lansat. Orice erori și probleme pot avea un impact negativ asupra experienței utilizatorului.
UAT necesită mult efort din partea clientului, lucru care este adesea subestimat. Unii clienți folosesc agenții externe de testare pentru a-i sprijini în timpul UAT, ceea ce poate reduce semnificativ riscul unui proiect în care clientul nu are forța umană pentru a realiza UAT în mod eficient.
Testare de securitate
Uneori sunt foarte surprins de faptul că unii comercianți nu reușesc să ia suficient de serios testele de securitate. Nu este neobișnuit să constatăm că retailerul nu știe când a efectuat ultima dată un test de penetrare pe platforma lor web. Aceștia sunt, în general, cei care nu au fost încă loviți de un atac cibernetic (sau nu știu încă că au fost loviți). În climatul actual în care criminalitatea cibernetică continuă să crească în frecvență și sofisticare, și mai ales cu GDPR la orizont în Europa, testarea de securitate este din ce în ce mai importantă. Toate platformele web de comerț electronic ar trebui să fie testate de un terț specialist cel puțin anual, dar în mod ideal de două ori pe an. De asemenea, este recomandabil ca aplicația dvs. să fie scanată pentru vulnerabilități folosind software specializat, cum ar fi Nessus, în mod regulat. La Envoy avem tendința de a scana platformele web ale clienților noștri săptămânal pentru a ne asigura că vulnerabilitățile aplicațiilor sunt detectate foarte rapid. Cel puțin ar trebui să efectuați scanări de securitate a aplicației înainte de fiecare lansare în producție. Nu este bine să așteptați 6 luni până la următorul test de penetrare când ați introdus o nouă vulnerabilitate a aplicației.
Test de performanta
Testarea performanței este, în general, utilizată pentru a determina cât de mult trafic, solicitări de pagini, utilizatori concurenți și volumul de comenzi poate gestiona site-ul dvs. Este un proces mai greu decât vă puteți imagina, deoarece, pentru a testa cu exactitate, trebuie să imitați comportamentul real al utilizatorului și, după cum veți ști, utilizatorii reali fac o mulțime de lucruri diferite. Cel mai bun lucru pe care îl puteți face este să imitați călătoriile cheie ale utilizatorului, cum ar fi căutarea, adăugarea în coș și finalizarea achiziției. În mod ideal, doriți să efectuați teste de încărcare în mediul dvs. de producție, mai degrabă decât într-un mediu de pregătire, deoarece vă va oferi o imagine mult mai adevărată, dar este, de asemenea, probabil ca platforma să vă deconecteze la un moment dat în timpul testului.
Majoritatea comercianților cu amănuntul tind să efectueze teste de încărcare o dată pe an, în mod normal înainte de perioadele de vârf de tranzacționare, cum ar fi Black Friday sau Crăciunul. Problema pe care aceasta o poate cauza este că, de la ultimul test anual, este posibil să fi fost aduse aplicației un număr mare de modificări, dintre care unele pot avea un impact incremental asupra performanței. Dacă un test anual de sarcină arată o performanță de scădere în comparație cu anul precedent, este foarte greu de determinat care schimbare sau modificări din ultimul an au contribuit la acea scădere a performanței. De asemenea, este posibil să nu vă ofere suficient timp pentru a rezolva problemele de performanță înainte de începerea tranzacțiilor de vârf.
Pentru a contracara acest lucru, este recomandabil să efectuați benchmarkuri de performanță înainte de fiecare lansare de cod nou. Acestea nu trebuie să fie efectuate într-un mediu de producție atâta timp cât fiecare test este efectuat în același mediu, deoarece scopul este de a determina dacă performanța a crescut sau a scăzut față de ultima versiune. Această abordare permite echipelor de dezvoltare să înțeleagă de unde provin creșterile sau scăderile de performanță. Acest lucru, desigur, necesită timp și, prin urmare, va crește timpul și costurile de dezvoltare
Deși lista de mai sus nu este exhaustivă, puteți vedea că domeniul de aplicare al testării în dezvoltarea de software poate fi foarte mare și complex. Fiecare tip de testare necesită timp și efort și nu trebuie doar să presupuneți că totul se face ca standard, fără taxe suplimentare. Companiile cu un accent puternic pe testare vor aloca până la 40% din timpul oricărui proiect pentru testare, ceea ce poate fi o sumă foarte surprinzătoare. Testarea bună poate reduce riscul unui proiect și se poate plăti singur pe termen lung, deoarece va duce la mai puține erori, o performanță mai bună și o experiență generală mai bună pentru clienții dvs.
