Ciclu Prelegeri at(2)

download Ciclu Prelegeri at(2)

of 72

  • date post

    15-Jul-2015
  • Category

    Documents

  • view

    685
  • download

    0

Embed Size (px)

Transcript of Ciclu Prelegeri at(2)

Testarea software o privire de ansamblu Scopul acestei prelegeri este de a face mai clare urmtoarele aspecte ale testrii software: Impactul erorilor software asupra vieii noastre Ce prezint erorile software i care este cauza apariiei lor Cine sunt testorii i care este rolul lor n procesul de elaborare a softului n secolul XXI nu ne putem imagina viaa fr produse software. Majoritatea populaiei sunt posesori de calculatoare personale. Tehnologiile informaionale s-au infiltrat n toate domeniile activitii umane. Mergnd la cumprturi putem primi mpreun cu o cutie de margarin sau de cereale un CD-ROM gratis cu un joc video sau cu muzic. Muli dintre noi nu pot petrece o zi fr Internet. Aplicaiile software au nlocuit funcionarii n diverse ramuri, astfel avnd un impact enorm asupra vieii i activitii umane. Pentru a asigura calitatea i sigurana aplicaiilor software se pune un accent deosebit pe testarea acestor din urm. Testarea de software a devenit o profesie tehnic foarte important. Urmtoare exemple pot ilustra foarte bine necesitatea testrii software. Dezvoltarea aplicaiilor software implic o serie de activiti, n care posibilitatea erorii umane este foarte ridicat. Testarea este un element cheie n procesul de dezvoltare, i reprezint o ultim recapitulare a specificaiilor, design-ului i codului. Un studiu al Institutului de Testare Software (Software Testing Institute), relev urmtoarele : Testorii implicai n industria software sunt mai muli dect n orice alt industrie (43%) Testarea software este executat mai degrab n cadrul departamentelor de programare (44%), dect n cadrul unui departament orientat exclusiv pe testare (39%) Doar 4% din productorii software supui acestui studiu prevd nfiinarea unui departament orientat exclusiv pe testare.

Testarea software, prin definiie, urmrete focalizarea pe procesul de identificare a posibilelor erori de program, erori care ar putea avea un impact negativ asupra produsului, i prin urmare asupra clienilor. Satisfacia clienilor este cheia reuitei oricrei afaceri, i asta nu mai este o necunoscut. Aceasta presupune c produsul oferit s fie de calitate ridicat, i s nu produc erori n timpul utilizrii de ctre client. Calitatea ridicat nu poate fi obinut doar cu ajutorul unei echipe de programatori de excepie. Este deja bine tiut faptul c orict de bine pus la punct ar fi produsul dezvoltat, acesta conine totui erori. Implicarea testrii n procesul de producie aduce urmtoarele avantaje: Organizare disciplinat a procesului/dezvoltare i testare matur a procesului de producie. Responsabilii i Managerii de proiect induc o linie bine trasat n scopul urmririi exacte a procesului de producie. nelegerea importanei calitii n procesul de producie, calitate care poate fi obinut doar n urma unei testri profesionale. Impunerea unor reguli i standarde care n timp vor duce la livrarea unor produse de cea mai nalt calitate, i a unor soluii de cea mai nalt calitate pentru clienii organizaiei Unele dintre cele mai scandaloase erori software 1. Aparat medical pentru terapie cu radiaie Therac-25 -6 accidente cu mori i rni grave (1985-87, SUA, Canada) Cauza direct: erori in programul de control Analiz retrospectiv [Leveson 1995]: ncredere excesiv n software (n analiza produsului) fiabilitate siguran 2. Racheta Ariane 5 -Autodistrugere dup o defeciune la 40 s de la lansare (1996) Cauza: conversia 64-bit float 16-bit int genereaz o excepie de depire netratat n programul ADA Cost: 500 milioane dolari (racheta), 7 miliarde dolari (proiectul) Analiz retrospectiv

1

principala cauz: reutilizarea nejudicioasa de software cod preluat de la Ariane 4, fr reanalizare corespunztoare: 3. Eroarea din procesorul Intel Pentium Eroare n unitatea de mprire cu virgula mobila, 1994 Cost: cca. 400 milioane dolari Analiz ulterioar Circuitul putea fi verificat formal -demonstrare automat de teoreme [Clarke, German & Zhao] -cu structuri speciale de date pentru reprezentarea nmulirii/mpririi [Bryant & Chen] Accentul a fost pus pe componente mai complexe (unitatea de execuie, coerena memoriei cache) Eroarea software Din exemplele de mai sus se poate vedea impactul erorilor software asupra noastr. Erorile pot fi catastrofice, cnd provoac pierderi de viei omeneti sau pot fi nite inconveniene dac este vorba de exemplu de un joc pe calculator. Majoritatea erorilor sunt mult mai complicate dect par la prima vedere. Sunt ns i erori simple, subtile despre care nu se poate cu siguran de spus, dac este o eroare adevrat sau nu. Un testor bun trebuie s poat folosi diferii termeni pentru a descrie ce s-a ntmplat cnd a euat softul. n continuare este dat o list cu termenii folosii: 1. Defect (Defect) 2. Excepie (Variance) 3. Eec (Failure) 4. Problem (Problem) 5. Eroare (Error) 6. Incident (Incident) 7. Anomalie (Anomaly) 8. Inconsisten (Inconsistency) 9. Aparen (Feature) 10. Neajuns (Fault) 11. Bug Care dintre aceti termeni vor fi folosii pentru descrierea erorilor ine doar de cultura companiei i de stadiul la care a fost descoperit eroarea. Dac ne uitm n dicionar, observm c toate aceste cuvinte se deosebesc foarte puii, unele fiind chiar sinonime De obicei orice eroare software este numit bug, ns acest termen nu poate fi acceptat cnd se completeaz diferite rapoarte despre testarea softului. n cadrul acestui curs v-om folosi termenul: eroare software. nainte de a formula definiia erorii software avem nevoie de un termen de reper: specificaia produsului software. Specificaia produsului este un acord al echipei de dezvoltare software, n care este definit: cum ar trebui el s fie, cum este ntr-adevr, ce trebuie s fac i ce nu trebuie s fac acest produs. Definiie. Erorile software apar cnd una sau mai multe dintre urmtoarele afirmaii sunt adevrate: 1. Softul nu execut ceva ce specificaiile spun c trebuie s execute. 2. Softul execut ceva ce specificaiile spun c nu trebuie s execute. 3. Softul execut ceva ce n specificaii nu este menionat. 4. Softul nu execut ceva ce specificaiile nu menioneaz dar ar trebui s menioneze. 5. Softul este greu de neles, greu de folosit, lent sau se vede c nu a fost proiectat corect. Aceast definiie a erorilor acoper o mare parte de probleme, de acea testorii folosesc aceste reguli pentru a identifica diferite tipuri de probleme n aplicaiile software. Cauzele i costul erorilor Poate fi surprinztor, dar cel mai mic procent de erori sunt cele provenite de programare. Cele mai multe erori sunt cauzate de deficienele din specificaie ( 60%), uneori specificaia pur i simplu nu este scris. Alte motive specificaia nu este descris n detaliu, a fost modificat constant i nu a fost adus la cunotina ntregii echipe de dezvoltare. Alt surs de erori este etapa de proiectare ( 30%), cauzele apariiei erorilor aici sunt similare cu cele din specificaii ( modificri, comunicarea rea etc.). Relativ puine (uneori sub 15%) sunt erorile directe de programare. Ele pot aprea din cauza complexitii softului, a documentaiei insuficiente (n special n

2

codul care a fost modificat), a timpului insuficient planificat pentru programare sau a erorilor de proiectare. Uneori programatorii nu neleg corect cerinele ori cerinele nu sunt formulate bine. Costul erorilor Erorile depistate i fixate in faza de scriere a specificaiilor nu cost practic nimic, cele care nu au fost depistate nainte de faza implementrii i testrii pot ajunge la sute de dolari. Dac ns clientul a gsit defecte dup livrarea i lansarea produsului, costul erorilor poate crete de la mii la milioane de dolari. Deci costul erorilor poate crete exponenial avansnd n procesul de producie de la specificare pn dup livrare. Locul testorului n procesul de elaborare a softului Definiia 1. Scopul testorului este de a depista erorile softului. Se poate rula programul i confirma c el funcioneaz, fr a pune accentul pe detectarea erorilor. Dac se testeaz doar componentele funcionale, pot fi omise multe erori. n cazul n care nu au fost depistate erorile la timp clientul risc s piard muli bani. Deci testorul nu trebuie s se concentreze doar pe detectarea erorilor, el trebuie s se gndeasc cum s fac acest lucru ct mai curnd posibil. De aici avem: Definiia 2. Scopul testorului este de a depista erorile softului ct mai devreme posibil. Dar nici aceasta nu este suficient. Testorul este ochiul clientului, primul care ncearc produsul i el dorete calitate. Deci: Definiia 3. Scopul testorului este de a depista erorile softului ct mai devreme posibil i se asigur c ele au fost fixate i luate msuri n legtur cu aceasta. Aceast definiie final este foarte important. La fel este important faptul c fixarea defectelor nu implic neaprat corectarea softului. n legtur cu aceasta poate fi adugat un comentariu n manualul utilizatorului sau poate fi fcut un seminar special cu utilizatorii. Calitile unui testor bun Cum am menionat mai sus testarea software este o profesie tehnic. Testorii trebuie implicai n procesul de dezvoltare software nc din fazele incipiente, pentru a asigura calitatea bun a produsului soft. Pentru a fi angajat i preuit un testor trebuie s posede urmtoarele caliti: 1. Trebuie s fie un explorator. Testorul software este cel care experimenteaz cu soft-uri noi ncercndu-le funcionalitile. 2. Trebuie s fie nenduplecai. Testorul software este mereu n cutare. El caut erori prin toate cile posibile. 3. Trebuie s fie creativ. Testarea superficial nu este suficient pentru testor. El trebuie s gndeasc creativ i s intuiasc unde poate gsi erori. 4. Trebuie s fie perfecionist. Testorii tind spre perfeciune, cu toate c neleg c n industria software ea este de neatins. 5. Trebuie s posede o bun judecat. Ei trebuie s decid ce trebuie de testat, ct timp i dac o oarecare problem este ntr-adevr o eroare sau nu. 6. Trebuie s aib tact i s fie bun diplomat. El este cel care aduce vetile rele programatorului. 7. Trebuie s fie perseverent. Erorile gsite nu totdeauna sunt vizibile i uneori sunt greu de descris. Testorul trebuie s-i poat expune punctul de vedere i s poat demonstra necesi