De ce au nevoie programatorii de testare?

Următoarele două niveluri vor fi dedicate testării în modul în care programatorii au nevoie . Dar mai întâi, să aflăm ce este testarea și de ce este necesară.

În ceea ce privește software-ul, putem spune că sarcina testării este de a verifica dacă programul:

  • face ceea ce are de făcut
  • nu face ceea ce nu ar trebui să facă

Al doilea punct, apropo, nu este mai puțin important decât primul, dar mai târziu.

Să începem cu primul punct. Ce înseamnă „programul face ceea ce trebuie să facă”?

În primul rând, cineva trebuie să facă o listă cu toate cazurile de utilizare pentru program. În al doilea rând, trebuie să descrie cum ar trebui să funcționeze programul, cum ar trebui să se comporte utilizatorul și ce rezultate sunt așteptate. Nu poți continua mai departe.

De îndată ce am scris „cum ar trebui să se comporte utilizatorul”, întreaga idee de a scrie o documentație bună a căzut. Oamenii nu sunt mașini, în plus, oamenii se comportă foarte des cu software-ul după cum le place . Nimeni nu își începe cunoașterea cu tehnologia studiind instrucțiunile. Este un fapt.

Prin urmare, obținem un fapt nou: particularitatea software-ului este că are o mulțime de scenarii de lucru diferite. Unele dintre ele sunt evidente, altele pot fi documentate, altele pot fi presupuse, altele pot fi ghicite, iar celelalte 50% nici nu-ți vor trece prin cap.

Din punctul de vedere al unui programator, majoritatea erorilor nu sunt deloc bug-uri. O eroare este atunci când un program nu funcționează așa cum ar trebui sau conform așteptărilor. Și există o mulțime de situații în care nu este clar cum ar trebui să funcționeze programul sau scenarii care se contrazic...

Există un număr infinit de scenarii și vor exista întotdeauna cazuri în produs când programul nu se comportă conform așteptărilor (programatorul a scris codul pentru doar câteva zeci de scenarii). Prin urmare, se poate argumenta că există întotdeauna erori în orice program și orice produs poate fi îmbunătățit la nesfârșit .

După aceea, totul se reduce la oportunitate. Mai întâi, programatorul remediază erorile cele mai mari, apoi erorile mai mici și așa mai departe. Și, în sfârșit, vine o etapă în care proprietarul produsului consideră că nu este fezabil din punct de vedere economic să continui să lucrezi la el.

Dar să revenim la erorile pe care toată lumea le recunoaște ca fiind erori: programul face evident ceva greșit, a căzut, a spart ceva etc. Astfel de erori pot fi împărțite condiționat în 3 categorii: mari, medii și mici.

Și foarte des se întâmplă ca un programator să lucreze la remedierea erorilor medii sau chiar mici, deși există încă o mulțime de probleme mai grave în proiect. Pur și simplu nu le-a găsit , așa că lucrează la cele mai mari despre care știe.

Prin urmare, în orice proiect ar trebui să existe testeri. Acești oameni învață în mod special să privească produsul din unghiuri diferite. Deci puteți vedea mai multe scenarii ale programului. Sarcina lor este să găsească erori și să le noteze (pentru a nu găsi aceeași eroare de mai multe ori).

Testarea este un proces care vizează găsirea erorilor. Aceste erori ar trebui găsite, descrise și prioritizate. Numai după prioritizarea erorilor putem vorbi despre un proces eficient de îmbunătățire a software-ului.

Amintiți-vă, primul pas pentru rezolvarea unei probleme este să recunoașteți că există o problemă . Nu poți remedia o greșeală despre care nu știi.

Test de automatizare

Cred că am fost cu toții de acord că testarea este importantă, așa că să ne uităm la testarea ca programatorii. Cum văd programatorii testările? Programatorii automatizează munca altor oameni. Ultima meserie care va dispărea va fi profesia de programator.

Automatizăm orice proces pe care îl întâlnim. Deci testarea trebuie să fie automatizată. Și cum să automatizezi căutarea erorilor? Răspuns scurt: nu. Dar și aici ne vine în ajutor faptul că suntem programatori.

Procesul de dezvoltare software constă în modificări constante ale acestuia. tocmai în procesul de a face în mod constant schimbări, programatorii de foarte multe ori sparg ceva care a funcționat bine până de curând.

Iar testerii, în loc să caute noi erori, sunt nevoiți să verifice în mod constant dacă am spart ceva care a funcționat bine de mult timp. Așa-numitul test de regresie. Acest tip de testare poate și ar trebui să fie automatizat.

Aici, tot software-ul poate fi împărțit în două părți:

  • programul interacționează cu persoana respectivă
  • programul interacționează cu un alt program

Prima opțiune este mai dificil de automatizat, necesită teste de automatizare speciale, acestea fiind denumite și QA Automation sau Software Test Engineer.

Dar a doua opțiune poate și ar trebui să fie automatizată independent. Dacă aveți un program care:

  • lucrează bine
  • deja testat
  • implementat ca un modul separat sau bloc logic
  • nu plănuiesc să se schimbe
  • alte module sau programe depind de el
  • defecțiunea funcțională este costisitoare

Vă recomand să vă faceți timp pentru a scrie teste pentru acesta care surprind aspecte cheie ale funcționalității sale actuale. Ar fi rezonabil să aloci 5% din timpul tău de lucru pentru aceasta sau 1 zi pe lună.

Nu este nevoie să scrieți teste de dragul testelor.

Nimeni nu vă va sprijini testele. Nu alți programatori, nu dumneavoastră. Nimeni nu face asta. 99% din toate testele scrise sunt abandonate și/sau dezactivate. Dacă nu poți scrie teste - nu scrie. Scrie doar dacă nu te poți descurca fără ele.

Tipuri de testare

Fiecare programator, dacă nu a urmat o pregătire specială, va putea spune cu propriile cuvinte ce este testarea: verificarea dacă programul face ceea ce ar trebui. Cu toate acestea, profesioniștii din acest domeniu disting zone întregi (tipuri) de testare.

Toate testele se învârt cu adevărat în jurul fiabilității și disponibilității software-ului, dar pentru a înțelege mai bine direcția testării, să ne uităm la câteva exemple.

Să presupunem că testați un magazin online tipic. Apoi zonele de testare pot fi împărțite în următoarele tipuri: testare de performanță, testare funcțională, testare de integrare și testare unitară.

Dacă proprietarul site-ului decide să lanseze o campanie publicitară serioasă, atunci mulți utilizatori vor veni pe site în același timp. Este posibil ca site-ul să nu cadă, dar unele dintre secțiunile sale pot fi lente sau chiar să nu mai funcționeze.

Pentru a preveni acest lucru, trebuie să identificați astfel de probleme în prealabil și să luați măsuri pentru a le elimina. Acest lucru se face folosind testarea de încărcare sau se mai numește și testarea performanței.

De asemenea, poate doriți să testați modul în care funcționează API-ul backend și să testați fiecare funcție a acestuia: înregistrare, autentificare, adăugare în coș, procesare plăți, scrieri în baze de date etc. Totul ar trebui să funcționeze conform TOR. În acest caz, trebuie să efectuați o testare funcțională .

Magazinul dvs. online este cel mai probabil integrat cu servicii terțe: trimiterea de scrisori și SMS-uri, sisteme de plată, chat-uri de asistență online, colectare de feedback de la utilizatori, sisteme de publicitate etc. Pentru a vă asigura că toate acestea funcționează conform intenției, trebuie să testați integrarea . .

În cele din urmă, produsele complexe sunt adesea împărțite în module independente. Din astfel de module, puteți asambla produsul final, ca de la un constructor. Dacă dezvoltați un astfel de modul sau interacționați cu astfel de module, atunci va trebui să faceți teste unitare .

În concluzie, putem spune că testarea funcțională este necesară pentru a testa fiecare funcție individuală a site-ului. Integrare - pentru testarea interacțiunii modulelor și sistemelor mari ale produsului dumneavoastră. Modular - pentru a testa un modul separat, ei bine, testarea performanței - pentru a verifica funcționarea site-ului dvs. sub sarcină.

Pot exista și mai multe tipuri de testare: cu cât produsul este mai complex, cu atât mai multe aspecte ale dezvoltării sale trebuie controlate.