Testarea software. O perspectiva economica

Luxoft Training
3 min readNov 4, 2021

Testarea exhaustiva a unei solutii software este imposibila. In aceasta serie de articole vom discuta motivele pentru care acest lucru este adevarat.

De ce acest subiect

Ma gandesc la acest subiect de peste un an si inca nu am raspunsuri la toate intrebarile legate de el. Tot acum un an am fost surprins sa descopera ca afirmatia „Testarea exhaustiva a unei solutii software este imposibila” nu era evidenta pentru toata lumea. Eram intr-o discutie cu o persoana care m-a intrebat de ce spun asta. I-am recomandat sa citeasca cartea lui Glenford Myers, Software Reliability: Principles and Practices, unde exista un exemplu legat de aceasta situatie.

Exista o teorema in matematica (teorema lui Cantor) care spune ca un set de numere naturale poate sa fie numarat si, daca este numarat, atunci nu este finit. Si daca avem un calculator care aduna aceste numere, va fi IMPOSIBIL sa il testam exhaustiv.

O alta dovada pentru afirmatia de mai sus este programa ISTQB care spune ca testarea software exhaustiva este imposibila. Si in final mai avem si bunul simt, prezent la toti cei care lucreaza ca sotfware testeri. Cu totii stim si intelegem ca este imposibil sa scriem TOATE test cases si sa selectam TOATE datele legate de testare. Si ca nu putem sa parcurgem TOT codul si sa testam TOATE actiunile pe care utilizatorii le-ar putea face.

Pare un adevar absolut, dar inca apar intrebari legate de asta, in special la nivel de top management:

  • “Cand vom finaliza testele software?” (“A le finaliza” inseamnand “sa rezolvam totul”)
  • “Cand vor fi descoperite TOATE defectele?” (Bineinteles, ca nimeni nu o sa fie satisfacut cu jumate sau chiar 99% din defecte identificate)
  • “Cand vom livra un software lipsit de bug-uri catre client?”
  • Daca exista un defect in solutia software — “De ce nu a fost gasit acest defect?”
  • “De ce nu au fost descoperite toate defectele inainte de punerea in functiune?”

Cum sa raspundem la aceste intrebari? Toate implica testare software exhaustiva, lucru pe care nu il putem face.

Criterii de finalizare a testelor software

Aici mai apare o intrebare: Care sunt criteriile pe baza carora consideram testele software finalizate? Aproape toate aceste criterii ar trebui sa contina:

  • Daca impactul unui defect nerezolvat nu depaseste costul aferent rezolvarii, nu trebuie sa corectezi acest defect
  • Daca impactul unui defect potential nu depaseste costurile aferente cautarii si corectarii, nu trebuie sa cautam acel defect
  • Daca impactul per ansamblu al tuturor defectelor cunoscute dar nerezolvate nu depaseste beneficiile implementarii versiunii existente, ar trebui ca versiunea sa fie implementata (chiar si atunci cand aceste defecte exista)

Mare atentie la cuvintele „costuri” si „beneficii” din lista de mai sus. In cele din urma, daca trebuie sa cheltuiesti mai multi bani (o metrica universala de a masura munca si rezultatele) pentru a corecta un defect versus impactul pe care acest defect l-ar avea din punct de vedere financiar, atunci nu ar trebui sa il corectezi.

Vrei sa incepi o cariera in testare software sau sa iti imbunatatesti abilitatile de testare software? Descopera cursurile noastre.

Alexandr Alexandrov
Software Testing Consultant

Originally published at https://www.luxoft-training.ro.

--

--