Software testing este un proces de executare a unui program sau aplicație cu intenția de a
găsi erorile software.
Poate fi, de asemenea, denumit ca un proces de validare și verificare a faptului că un
program software, o aplicație sau un produs:
Există multe exemple în care erorile software au dus la pierderi de vieți omenești sau la
pierderi de milioane de dolari. Unele dintre ele sunt enumerate mai jos.
Knights Capital Group a pierdut 440 de milioane de dolari în 30 de minute din cauza
unei erori în algoritmul lor de tranzacționare la 1 august 2012. Cota companiei a
scăzut cu 75% în două zile după ce software-ul a împins tranzacțiile defecte pentru
peste 150 de acțiuni diferite.
Mt. Hack Gox Bitcoin - Mt. Gox, care era cel mai mare schimb bitcoin din lume la
acea vreme, a fost piratat în iunie 2011 și a pierdut aproximativ 850.000 de bitcoini,
evaluați la peste o jumătate de miliard de dolari.
Vehiculul spațial Mariner 1 Spacecraft de 18 milioane de dolari a fost distrus odată ce
a fost sigur că se va prăbuși după decolare. Eșecul a fost urmărit înapoi la o cratimă
lipsă care a lăsat semnale greșite de ghidare să fie trimise rachetei.
4. Testarea este necesară pentru a oferi clienților facilități, cum ar fi livrarea de produse de
înaltă calitate sau aplicații software care necesită costuri de întreținere mai mici și, prin
urmare, rezultate în rezultate mai precise, consistente și fiabile.
o Produsul de înaltă calitate are de obicei mai puține defecte și necesită un efort
de întreținere mai mic, ceea ce înseamnă, la rândul său, costuri reduse.
5.Testarea este necesară pentru o performanță eficientă a aplicației software sau a produsului.
Dacă în anumite condiții de mediu și situație se execută defecte ale aplicației sau produsului,
sistemul va produce rezultate greșite provocând o defecțiune.
-Eșecurile pot apărea și din cauza unei erori umane în interacțiunea cu software-ul, poate că
este introdusă o valoare greșită de intrare sau o ieșire este interpretată greșit.
-În cele din urmă, eșecurile pot fi cauzate și de cineva care încearcă în mod deliberat să
provoace o defecțiune în sistem.
Eroare sunt la dezvoltarea software-ului, defect la nivel de testare și eșec la nivel de produs
Nu este necesar ca defectele sau erorile introduse în produs să fie numai de către
software. Pentru a înțelege mai departe să luăm un exemplu. Un bug sau un defect poate fi, de
asemenea, introdus de un analist de afaceri. Defecțiunile prezente în specificații, cum ar fi
specificațiile cerințelor și specificațiile de proiectare, pot fi detectate în
timpul verificărilor . Atunci când defectul sau eroarea este surprinsă în timpul revizuirii nu
poate duce la eșec, deoarece software-ul nu a fost încă executat.
Aceste defecte sau erori sunt raportate nu pentru a învinui dezvoltatorii sau orice alte
persoane, ci pentru a judeca calitatea produsului. Calitatea produsului este extrem de
importantă. Pentru a câștiga încrederea clienților, este foarte important să livrați produsul de
calitate la timp.
-Conditii de mediu
-Daune intentionate
-Consecinte potentiale ale erorilor anterioare
Specificația este practic un document scris care descrie aspectele funcționale și nefuncționale
ale software-ului prin utilizarea prozei și a imaginilor. Pentru specificațiile de testare nu este
necesar să aveți cod. Fără a avea cod, putem testa specificațiile. Aproximativ 55% din toate
erorile prezente în produs se datorează greșelilor prezente în caietul de sarcini. Prin urmare,
testarea specificațiilor poate economisi mult timp și costuri în viitor sau în etapele ulterioare
ale produsului.
Pot apărea erori în utilizarea sistemului, a produsului sau a aplicației din următoarele motive:
Conditii de mediu:
Din cauza configurării greșite a mediului de testare, testerii pot raporta defectele sau
defecțiunile. Conform sondajelor recente, sa observat că aproximativ 40% din timpul
testerului este consumat din cauza problemelor de mediu și acest lucru are un impact mare
asupra calității și productivității. Prin urmare, sunt necesare medii de testare adecvate pentru
calitate și livrarea la timp a produsului către clienți.
Consecințele potențiale ale erorilor anterioare: Erorile constatate în etapele anterioare ale
dezvoltării ne reduc costurile de producție. Prin urmare, este foarte important să găsiți eroarea
în etapa anterioară. Acest lucru se poate face prin revizuirea documentelor de caiet de sarcini
sau printr-o prezentare generală.
1. Este posibil ca persoana care utilizeaza aplicatia software sau produsul sa nu aiba
cunostinte suficiente despre produs.
2. Poate că software-ul este utilizat în mod greșit, ceea ce duce la defecte sau eșecuri .
3. Este posibil ca dezvoltatorii să fi codat incorect și pot exista defecte prezente în proiectare.
4. Configurare incorectă a mediilor de testare.
Costul poate fi masurat prin impactul defectelor si atunci cand le gasim. dacă eroarea se
găsește în specificațiile cerințelor în timpul colectării și analizei cerințelor, atunci este
oarecum ieftin să o remediați. Corectarea specificației cerințelor poate fi făcută și apoi poate fi
reemisă. În același mod, când defectul sau eroarea se regăsește în proiectare în timpul
revizuirii proiectului, atunci proiectul poate fi corectat și poate fi re-emis. Dar dacă eroarea nu
este cuprinsă în specificații și nu este găsită până la acceptarea utilizatorului, atunci costul
pentru remedierea acestor erori sau defecte va fi mult prea scump.
Dacă eroarea este comisă și defectul care rezultă este detectat în faza de cerințe, atunci este
relativ ieftin să o remediați. În mod similar, dacă se face o eroare de specificare a cerințelor
și se constată defectul în consecință în faza de proiectare, atunci proiectarea poate fi
corectată și reeditată cu cheltuieli relativ mici. Același lucru este valabil și pentru faza de
construcție . Dacă totuși, un defect este introdus în specificația cerințelor și nu este detectat
până la testarea acceptării sau chiar odată ce sistemul a fost implementat, va fi mult mai
scump de remediat.
Ciclul de viata al defectelor este un ciclu prin care trece un defect in timpul vietii sale. Începe
atunci când este găsit defectul și se termină atunci când un defect este închis, după ce se
asigură că nu este reprodus. Ciclul de viață al defectelor este legat de eroarea găsită în
timpul testării.
Critic: Defectul care are ca rezultat terminarea sistemului complet sau a uneia sau mai
multor componente ale sistemului și cauzează corupția extinsă a datelor. Funcția
eșuată este inutilizabilă și nu există o metodă alternativă acceptabilă pentru a obține
rezultatele necesare, atunci severitatea va fi declarată critică.
Major: Defectul care duce la terminarea întregului sistem sau a uneia sau mai multor
componente ale sistemului și cauzează corupția extinsă a datelor. Funcția eșuată este
inutilizabilă, dar există o metodă alternativă acceptabilă pentru a obține rezultatele
necesare, atunci severitatea va fi declarată ca fiind majoră.
Moderat: Defectul care nu are ca rezultat rezilierea, dar face ca sistemul să producă
rezultate incorecte, incomplete sau inconsistente, atunci severitatea va fi declarată ca
fiind moderată.
Minor: Defectul care nu are ca rezultat rezilierea și nu
dăunează utilizabilității sistemului și rezultatele dorite pot fi ușor obținute prin
rezolvarea defectelor, atunci severitatea este declarată ca fiind minoră.
Cosmetic: Defectul legat de îmbunătățirea sistemului în care modificările sunt legate
de aspectul și câmpul aplicației, atunci severitatea este declarată ca fiind cosmetică
2.Prioritate-Prioritatea definește ordinea în care ar trebui să rezolvăm un defect. De
exemplu: dacă numele companiei este scris greșit în pagina de pornire a site-ului web, atunci
prioritatea este mare și severitatea este scăzută pentru a remedia problema.
Scăzut: Defectul este un iritant care ar trebui reparat, dar repararea poate fi amânată
până după remedierea defectelor mai grave.
Mediu: Defectul trebuie rezolvat în cursul normal al activităților de dezvoltare. Poate
aștepta până când se creează o nouă versiune sau versiune.
Înalt: Defectul trebuie rezolvat cât mai curând posibil, deoarece defectul afectează
grav aplicația sau produsul. Sistemul nu poate fi utilizat până când nu a fost efectuată
reparația.
o Scenarii:Prioritate ridicată și severitate ridicată : o eroare care apare la
funcționalitatea de bază a aplicației și care nu va permite utilizatorului să
utilizeze sistemul. (De exemplu, un site care păstrează detaliile elevului, dacă
salvează înregistrarea dacă nu permite salvarea înregistrării, atunci acesta este
un bug cu prioritate ridicată și severitate ridicată.)
Prioritate ridicată și gravitate redusă: greșelile de ortografie care apar pe pagina de
copertă sau pe titlul sau titlul unei aplicații.
Severitate ridicată și prioritate redusă: o eroare care apare la funcționalitatea
aplicației (pentru care nu există nicio soluție) și care nu va permite utilizatorului să
utilizeze sistemul, ci prin clic pe link, care este rar utilizat de către utilizatorul final.
Prioritate scăzută și severitate scăzută: Orice problemă cosmetică sau ortografică
care se află într-un paragraf sau în raport.
5. Pesticide paradox: dacă aceleași tipuri de teste sunt repetate din nou și din nou, în cele din
urmă același set de cazuri de testare nu va mai putea găsi noi erori. Pentru a depăși acest
„paradox al pesticidelor”, este cu adevărat foarte important să revizuiți periodic cazurile de
testare și trebuie scrise teste noi și diferite pentru a exercita diferite părți ale software-ului sau
sistemului pentru a găsi potențial mai multe defecte.
6 Testarea este dependenta de context: Diferite tipuri de site-uri sunt testate diferit.
-Sa implementeze politica de testare si/sau strategia de testare. (Strategia de testare este o
schita ce descrie portiunea de testare a ciclului de dezvoltare software. Este creată pentru a
informa PM, testerii și dezvoltatorii despre unele probleme cheie ale procesului de testare.
Aceasta include obiectivele testării, metoda de testare, timpul total și resursele necesare
pentru proiect și mediile de testare.).
-Pt a determina resursele de testare necesare, cum ar fi persoanele, mediile de testare, PC-
urile.
-Pt a determina criteriile de iesire trebuie sa stabilim criterii precum Criterii de acoperire.
(Criteriile de acoperire reprezinta procentul de afirmatii din software care trebuie executate in
timpul testarii. Acest lucru ne va ajuta să urmărim dacă finalizăm corect activitățile de testare.
Acestea ne vor arata ce sarcini si verificari trebuie sa finalizam pentru un anumit nivel de
testare inainte de a putea spune ca testarea este terminata)
2. Analiza si proiectare:
3. Implementare si executie
Pe baza evaluării riscurilor proiectului, vom stabili criteriile pentru fiecare nivel de testare, cu
care vom măsura „testarea suficientă”. Aceste criterii variază de la proiect la proiect și sunt
cunoscute sub numele de criterii de ieșire .(exit criteria)
Criteriile de ieșire intră în imagine, atunci când:
- cazurile maxime de testare sunt executate cu un anumit procentaj de trecere.
- Rata de erori scade sub un anumit nivel.
- Când ați atins termenele limită.
5. Activitati de inchidere a testelor (Test closure activities) se fac cand software-ul este
livrat. Testarea poate fi inchisa si din alte motive:
i. Pentru a verifica livrabilele planificate care sunt livrate efectiv și pentru a vă asigura că
toate rapoartele incidentelor au fost rezolvate.
ii. Pentru a finaliza și arhiva programe de testare, cum ar fi scripturi, medii de testare etc.,
pentru reutilizare ulterioară.
iii. Pentru a preda instrumentele de testare către organ*izația de întreținere. Acestea vor oferi
suport software-ului.
iv să evalueze modul în care s-a desfășurat testarea și să învețe lecții pentru lansări și proiecte
viitoare.
Testarea si revizuirea aplicatiilor sunt diferite de analiza si dezvoltarea lor. Prin aceasta vrem
să spunem că, dacă construim sau dezvoltăm aplicații, lucrăm pozitiv pentru a rezolva
problemele din timpul procesului de dezvoltare și pentru a realiza produsul în conformitate cu
specificațiile utilizatorului.
Cu toate acestea, în timpul testării sau revizuirii unui produs, căutăm defectele
sau defecțiunile produsului. Astfel, construirea software-ului necesită o mentalitate diferită
de testarea software-ului.
*Echilibrul dintre auto-testare si testarea independenta
Comparația făcută pe mentalitatea testerului și dezvoltatorului din articolul de mai sus este
doar pentru a compara cele două perspective diferite.
Ei își testează întotdeauna componenta pe care au construit-o. În timp ce își testează propriul
cod, găsesc multe probleme, astfel încât programatorii, arhitectul și dezvoltatorii își testează
întotdeauna propriul cod înainte de a-l da oricui. Cu toate acestea știm cu toții că este dificil să
ne găsim propriile greșeli.
Deci, programatorii, arhitectul, analistul afacerilor depind de ceilalți pentru a-și testa
activitatea. Această altă persoană ar putea fi un alt dezvoltator din aceeași echipă sau
specialiștii în testări sau testeri profesioniști. Oferirea de aplicații specialiștilor în testare sau
testerilor profesioniști permite o testare independentă a sistemului.
Acest grad de independență evită prejudecata autorului și este adesea mai eficient în
găsirea defectelor și a eșecurilor .
Există mai multe niveluri de independență în testarea software, care este listat aici de la cel
mai scăzut nivel de independență la cel mai înalt:
i. Teste efectuate de persoana care a scris articolul.
ii. Teste de către o altă persoană din cadrul aceleiași echipe, ca un alt programator.
iii. Teste efectuate de persoana dintr-un grup diferit, cum ar fi o echipă de testare
independentă.
iv. Teste efectuate de o persoană dintr-o altă organizație sau companie, cum ar fi testarea
subcontractată sau certificarea de către un organism extern.
Dar, în același timp, trebuie să fim foarte atenți la modul în care reacționăm sau raportăm
defectelor și eșecurilor programatorilor. Suntem mulțumiți pentru că am găsit o eroare bună,
dar cum vor reacționa analistul de cerințe, proiectantul, dezvoltatorul, managerul de proiect și
clientul.
Persoanele care construiesc aplicația pot reacționa defensiv și pot lua acest defect
raportat drept critică personală.
Managerul de proiect poate fi supărat pe toată lumea pentru că susține proiectul.
Clientul poate pierde încrederea în produs, deoarece vede defecte.
Deoarece testarea poate fi văzută ca activitate distructivă, trebuie să avem grijă în timp ce
raportăm defectele și eșecurile noastre cât mai obiectiv și politicos posibil.
Un tester independent poate afla în mod repetat mai multe defecte, altele și diferite
decât un tester care lucrează în cadrul unei echipe de programare - sau un tester care
este de profesie programator.
În timp ce analiștii de afaceri, personalul de marketing, proiectanții și programatorii își
aduc propriile ipoteze la specificația și implementarea articolului supus testului, un
tester independent aduce un set diferit de ipoteze la testare și la recenzii, care adesea
ajută la expunerea defectelor ascunse și Probleme
Un tester independent care raportează conducerii superioare își poate raporta
rezultatele cu onestitate și fără nicio preocupare pentru represalii care ar putea rezulta
din sublinierea problemelor în munca colegilor sau, mai rău, în continuare, a
managerului.
O echipă independentă de testare are adesea un buget separat, care ajută la asigurarea
unui nivel adecvat de bani cheltuiți pentru instruirea testerului, instrumentele de
testare , echipamentele de testare etc.
În plus, în unele organizații, testerii dintr-o echipă independentă de testare ar putea fi
mai ușor să aibă o carieră care să ducă la roluri mai în vârstă în testare.
Software-ul de calitate este, în mod rezonabil , gratuit de erori sau defecte , livrat
la timp și în limita bugetului, îndeplinește cerințele și / sau așteptările și este
menținut.
CAPITOLUL 2
a. Ce este verificarea in testarea software-ului? Ce este verificarea software-ului?
Un produs poate trece în timpul verificării, deoarece se face pe hârtie și nu este necesară nicio
aplicație funcțională sau funcțională. Dar, atunci când aceleași puncte care au fost verificate
pe hârtie sunt de fapt dezvoltate, atunci aplicația sau produsul care rulează poate eșua în
timpul validării. Acest lucru se poate întâmpla deoarece atunci când un produs sau o aplicație
este construit conform specificațiilor, dar aceste specificații nu sunt la înălțime, prin urmare
nu reușesc să răspundă cerințelor utilizatorului.
Avantajele validării:
Validarea se face practic de testeri în timpul testării. În timp ce validați produsul dacă se
constată o anumită abatere în rezultatul real de la rezultatul așteptat, atunci se raportează o
eroare sau se ridică un incident . Nu toate incidentele sunt erori. Dar toate erorile sunt
incidente. Incidentele pot fi, de asemenea, de tip „Întrebare” în cazul în care funcționalitatea
nu este clară pentru tester.