Sunteți pe pagina 1din 29

Vericare i validare software.

Introducere s
Marius Minea 3 octombrie 2011

Tehnici ce vor discutate


Testare black-box (fr acces la surs) aa a Testare white-box/glass-box (cu acces la surs) a Generarea de teste la nivel de modul Metrici de acoperire cu teste Testare de integrare Analiz static a codului surs a a a Analiz dinamic i prolare a as Testarea programelor orientate pe obiecte Testarea programelor concurente Vericare (formal) a modelelor a Generarea automat de teste a bazat pe specicatie / model a Conceperea unui plan de test

Erori grave: Therac-25

- aparat medical pentru terapie cu radiatie - 6 accidente cu morti i rni grave (1985-87, SUA, Canada) s a - cauza direct: erori in programul de control a

Erori grave: Therac-25

- aparat medical pentru terapie cu radiatie - 6 accidente cu morti i rni grave (1985-87, SUA, Canada) s a - cauza direct: erori in programul de control a Analiz retrospectiv [Leveson 1995]: a a ncredere excesiv software ( analiza produsului) a n n abilitate = sigurant a lipsa msurilor de sigurant hardware a a lipsa practicilor de ingineria programrii (proiectare defensiv, a a specicare, documentatie, simplitate, analiz formal, testare) a a corectarea unei erori nu face sistemul mai sigur !!

Erori: racheta Ariane 5


- Autodistrugere dup o defectiune la 40 s de la lansare (1996) a - Cauza: conversia 64-bit oat 16-bit int genereaz o exceptie de a depire netratat programul ADA as a n - Cost: 500 milioane dolari (racheta), 7 miliarde dolari (proiectul)

Erori: racheta Ariane 5


- Autodistrugere dup o defectiune la 40 s de la lansare (1996) a - Cauza: conversia 64-bit oat 16-bit int genereaz o exceptie de a depire netratat programul ADA as a n - Cost: 500 milioane dolari (racheta), 7 miliarde dolari (proiectul) Analiz retrospectiv a a principala cauz: reutilizarea nejudicioas de software a a cod preluat de la Ariane 4, fr reanalizare corespunztoare: aa a - executia nu mai era necesar in timpul erorii a - analiza absentei depirii pentru variabilele neprotejate as necesitatea specicrii i respectrii unei interfete a s a proiectarea greit a redundantei: sistemul de referint inertial i cel de s a a s rezerv scoase din functiune de aceeai eroare a s

Eroarea din procesorul Pentium


Eroare unitatea de aire cu virgul mobil, 1994 n mpt a a algoritm de artire cu refacere, baza 4 mp n determin urmtoarea cifr din ct dintr-un tabel a a a a cteva intrri marcate greit ca dont care a a s cost: cca. 500 milioane dolari

Eroarea din procesorul Pentium


Eroare unitatea de aire cu virgul mobil, 1994 n mpt a a algoritm de artire cu refacere, baza 4 mp n determin urmtoarea cifr din ct dintr-un tabel a a a a cteva intrri marcate greit ca dont care a a s cost: cca. 500 milioane dolari Analiz retrospectiv a a Circuitul putea vericat formal - demonstrare automat de teoreme [Clarke, German & Zhao] a - cu structuri speciale de date pentru reprezentarea nmultirii / artirii mp [Bryant & Chen] dar accentul a fost pus pe componente mai complexe (unitatea de executie, coerenta memoriei cache)

Erori: probele trimise pe Marte


Mars Pathnder, 1997 ajuns pe Marte, proba spatial se reseta frecvent a a cauza: inversiune de prioritate ntre procese cu resurse comune fenomenul i solutia: cunoscute literatura de specialitate ! s n
[Sha, Rajkumar, Lehoczky. Priority Inheritance Protocols, 1990]

1. procesul A de prioritate mic obtine resursa R a 2. A ntrerupt de C (prioritate mare) 3. C ateapt eliberarea lui R; A revine executie s a n 4. A ntrerupt de B (prioritate medie, A < B < C) C ateapt dup B, dei nu depinde de el i are prioritate mai mare! s a a s s Solutia: ridicarea prioritii unui proces care obtine o resurs (A) at a la nivelul celui mai prioritar proces care poate solicita resursa (C)

Erori: probele trimise pe Marte

Mars Climate Orbiter, 1998 dezintegrare la intrarea atmosfer n a eroarea tehnic: discrepanta a ntre uniti de msur sistemele at a a n anglo-american i metric s erori multiple de proces: lipsa unor interfete formale Mars Polar Lander, 1998 trenul de aterizare e activat prematur la intrarea atmosfer n a ocul e interpretat ca aterizare, motoarele sunt oprite s eroarea: lipsa testrii de integrare a

Vericare i validare: terminologie s

Software Engineering Institute Capability Maturity Model Integration: Vericarea asigur c produsul e construit concordant cu cerintele, a a n a specicatiile i standardele. s Sunt ndeplinite cerintele specicate ? Produsul e construit corect (cum trebuie) ? Validarea asigur a a produsul va utilizabil pe piat. a Produsul acoper nevoile operationale ? a Produsul poate utilizat mediul intentionat ? n Se construiete produsul care trebuie ? s

V & V: terminologie

NASA Software Assurance Guidebook and Standard: V&V: Procesul de a asigura c produsul software: a va satisface cerintele (functionale i altele) validare s i ecare pas construirea sa rezult un produs corect vericare s n a Diferenta dintre vericare i validare e important doar pentru s a teoretician; practicienii folosesc V&V referindu-se la toate activitile care at asigur c software-ul va functiona conform cerintelor. a a

V&V: proces i tehnologii s

Tehnologii inspectie (reviews, inspections, walkthroughs) testare analiz i vericare formal as a Proces faza de conceptie: stabilirea planului de testare analiza cerintelor: scenarii de test pe baza celor de utilizare design: vericarea modelulul raport cu specicarea n implementare: inspectie + testare la nivel de modul integrare: testare de integrare, rapoarte de test

Ce e testarea ?

Testarea e procesul prin care se execut un program cu intentia de a a gsi erori (Myers, The Art of Software Testing). a

Ce e testarea ?

Testarea e procesul prin care se execut un program cu intentia de a a gsi erori (Myers, The Art of Software Testing). a Aproape la fel, dar de fapt invers: Testarea e procesul de a demonstra c programul nu are erori. a (imposibil doar prin testare) Dijkstra: Testing can be used very eectively to show the presence of bugs but never to show their absence. un test de succes e acela care descoper (i localizeaz) o eroare. a s a

Ce e testorul ?

Rolul unui testor e s gseasc erori a a a ct mai devreme cu putint a a (costul corectrii crete odat cu timpul) a s a i s asigure corectarea lor s a (rapoarte, depanare, mentenant) a (Patton, Software Testing)

Erori, cauze i cost s

Cauza / sursa erorilor cele mai multe, cauzate de deciente specicatie n apoi cele originnd faza de proiectare a n doar relativ putine (uneori sub 15%) erori directe de programare Costul erorilor crete, chiar exponential, avansnd procesul de productie s a n O($1) la specicare, O($1000+) dup livrare a

Cauzele i costul erorilor (cont.) s


Dinamica erorilor software [dup John Rushby, SRI] n a 20-50 erori/kloc nainte de testare, 2-4 dup a examinarea formal a codului: 10x reducere de erori a nainte de testare

Cauzele i costul erorilor (cont.) s


Dinamica erorilor software [dup John Rushby, SRI] n a 20-50 erori/kloc nainte de testare, 2-4 dup a examinarea formal a codului: 10x reducere de erori a nainte de testare Studiu de caz pe 10kloc timp real, distribuit: vericare i validare: 52% cost (57% timp) s din acesta, 27% cost examinare, 73% testare n n 21% pt. 4 defecte testarea nala, din care 1 de proiectare n eliminarea prin examinarea codului: 160x mai ecient dect la testare a a

Cauzele i costul erorilor (cont.) s


Dinamica erorilor software [dup John Rushby, SRI] n a 20-50 erori/kloc nainte de testare, 2-4 dup a examinarea formal a codului: 10x reducere de erori a nainte de testare Studiu de caz pe 10kloc timp real, distribuit: vericare i validare: 52% cost (57% timp) s din acesta, 27% cost examinare, 73% testare n n 21% pt. 4 defecte testarea nala, din care 1 de proiectare n eliminarea prin examinarea codului: 160x mai ecient dect la testare a a Studiu dup NASA JPL (sondele Voyager, Galileo) a majoritatea: deciente specicarea cerintelor i a interfetelor n s 1 eroare la 3 pagini de cerinte i 21 pagini de cod s doar 3 din 197 erau erori de programare 2/3 din erorile functionale: omisiuni specicarea cerintelor n majoritatea erorilor de interfat: datorate proastei comunicri a a

Calitile testorului software at

What Makes a Good Software Tester (Patton) They They They They They They They They are explorers. are troubleshooters are relentless are creative are (mellowed) perfectionists exercise good judgment are tactful and diplomatic (?) are persuasive (!)

Principii ale testrii (Myers) a


Un caz de test trebuie s deneasc ieirea sau rezultatul dorit. a a s pare evident dar ... daca nu, vom vedea ceea ce dorim s vedem a Un programator ar trebui s evite s-i testeze propriul program. a as psihologic, nu dorete s gseasc erori s a a a exceptie: dezvoltarea simultan cu testarea unitar (TDD) a a Corolar: grupul de testori ar trebui s e altul dect cel de dezvoltare a a Sunt necesare cazuri de test pentru conditii de intrare valide i invalide. s Trebuie testat c produsul face ce trebuie i nu face ce nu trebuie ! a s Pstrati i refolositi cazurile de test! a s Nu planicati procesul de testare presupunnd c nu vor gsite erori! a a a Probabilitatea de a gsi erori a ntr-un fragment de cod e proportional cu a numrul de erori deja gsite. a a

Axiome ale testrii (Patton) a

Testarea software e un exercitiu de apreciere a riscurilor Cu ct mai multe erori gseti, cu att mai multe sunt a a s a Paradoxul pesticidelor (Beizer): erorile devin reziliente la teste (pentru a gsi erori noi e nevoie de teste noi) a Nu toate erorile gsite vor corectate a E greu de spus cnd o eroare e o eroare ... a Specicatiile produselor nu sunt niciodat denitive a Testorii nu sunt cei mai populari membri ai echipei de proiect :) Testarea de software e o profesie tehnic guvernat de o disciplin a a a

Disciplina testrii: organizare i metrici a s


Exemplu de raport succint de testare (Marnie Hutcheson, Software Testing Fundamentals)
As per our agreement, we have tested 67 percent of the test inventory [...] the most important tests in the inventory as determined by our joint risk analysis. The bug nd rates and the severity composition of the bugs we found were within the expected range. Our bug x rate is 85 percent. It has been three weeks since we found a Severity 1 issue. There are currently no known Severity 1 issues open. Fixes for the last Severity 2 issues were regression-tested and approved a week ago. Overall, the system seems to be stable. The load testing has been concluded. The system failed at 90 percent of the design load. The system engineers [...] will need three months to implement the x. Our recommendation is to ship on schedule, with the understanding that we have an exposure if the system utilization exceeds the projections before we have a chance to install the previously noted x.

Testarea ntrebri fundamentale a

[Cem Kaner, Black-box software testing course, Florida Inst. of Tech] Ce testm ? Ce vrem s am din asta ? a a a Care e misiunea testrii ? a Cum organizm lucrul pentru a a ndeplini misiunea ? Problema strategiei testrii a Cnd am testat destul ? a Problema msurrii testare a a n

Testarea o viziune mai general a

o investigatie tehnic a produsului de testat efectuat pentru a oferi a a persoanelor implicate informatie legat de calitate [Kaner] a investigatie: cutare activ, organizat de informatii a a a tehnic: experimente, logic, modele, algoritmi, unelte a a produsul testat: ce primete clientul, totalitate s n (software, hardware, baze de date, documentatie, etc.) persoane implicate: succesul produsului, i al testrii n s a

Scopuri ale testrii a


[ Kaner 2003 What is a good test case ? ] gsirea de defecte: mai ales prtile interesante (acoperire bun) a n a a gsirea ct mai multor defecte: timp limitat a a n oprirea livrrii premature / suport pentru decizie: livrare sau nu a minimizarea costului de suport tehnic evaluarea conformantei la specicatii / reguli / standarde minimizarea riscurilor de accidente (i costurilor legale ...) s gsirea de scenarii de utilizare sigur (functionare corect) a a a evaluarea calitii produsului (dar nu doar prin testare) at Ce nu poate face testarea ? vericarea produsului (absenta de erori) asigurarea calitii produsului (problem de proces) at a

Calitile unui bun caz de test at

puternic: ans mare de a descoperi o anumit eroare dac exist s a a a a convingtor (problem important) i credibil (e realist s apar) a a a s a a reprezentativ / probabil pentru client uor de evaluat (e o eroare sau nu?) / uor de depanat / informativ s s de complexitate potrivit (progresiv) a a relevant privind functionarea / performanta produsului (de ex. detecteaz modicri comportament / performant) a a n a

Cteva utilitare de a ncercat


CHESS testarea programelor concurente http://research.microsoft.com/en-us/projects/CHESS/ Klee http://klee.llvm.org/ testare C/C++ prin executie simbolic a Pex http://research.microsoft.com/en-us/projects/Pex/ testare C# prin executie simbolic a

Java Pathnder http://babelfish.arc.nasa.gov/trac/jpf model checking i testare / executie simbolic s a Randoop http://people.csail.mit.edu/cpacheco/randoop/ testare prin generare aleatoare + feedback, pentru Java Blast (vericator pentru C), CREST (executie concret + simbolic), a a Daikon(generare de invarianti), ESCJava2 (analiz static), KeY, Why a a (vericare deductiv), ... a

S-ar putea să vă placă și