ingineria programarii: faza de testare 2

Upload: enrollinfo

Post on 04-Apr-2018

233 views

Category:

Documents


1 download

TRANSCRIPT

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    1/77

    Ingineria programrii

    13. Faza de testare (II)

    Florin LeonUniversitatea TehnicGheorgheAsachi din IaiFacultatea de Automatici Calculatoare

    http://florinleon.byethost24.com/curs_ip.htm

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    2/77

    Faza de testare (II)

    1. Testarea de nivel nalt2. Testarea sistemului3. nregistrarea i urmrirea defectelor4. Analiza i prevenirea defectelor

    5. Testarea extrem6. Principii de testare7. Concluzii

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    3/77

    Faza de testare (II)

    1. Testarea de nivel nalt2. Testarea sistemului3. nregistrarea i urmrirea defectelor4. Analiza i prevenirea defectelor

    5. Testarea extrem6. Principii de testare7. Concluzii

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    4/77

    Testarea de nivel nalt

    Chiar dac s-ar putea realizatestarea perfect a modulelor, totnu s-ar putea garanta lipsa

    erorilor Este nevoie de testarea de nivel nalt

    O eroare se manifest atunci

    cnd programul nu face ceea cese ateapt utilizatorul, n modrezonabil, s fac

    4Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    5/77

    Dezvoltarea

    i testarea

    5

    1. Nevoile utilizatorilor sunttransformate n cerine(scopuri)

    2. Cerinele sunttransformate n obiectivespecifice (fezabilitate, cost,compromisuri, prioriti)

    3. Obiectivele sunt

    transformate n specificaiiexterne (sistemul e vzut cao cutie neagr, se iau ncalcul doar interfeele iinteraciunile cu utilizatorul)

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    6/77

    Dezvoltarea

    i testarea

    6

    Fiecare faz a procesului detestare se concentreaz peun anumit pas al procesuluide dezvoltare i pe o anumitclas de erori

    La sfritul fiecrei fazeexist un pas separat de

    verificare pentru a detectact mai multe erori nainte dea trece la faza urmtoare (deexemplu inspecii ale codului)

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    7/77

    Corespondene

    Scopul testrii modulelor / unitilor este de agsi discrepanele dintre modulele programuluii specificaiile interfeelor acestora

    Scopul testrii funcionale este de a arta cprogramul nu respect specificaiile externe

    Scopul testrii sistemului este de a arta c

    produsul nu respect obiectivele stabilite iniial

    7Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    8/77

    Testarea funcional

    Specificaiile externe reprezint o descriere precis acomportamentului sistemului din perspectiva utilizatorului Descriu toate intrrile i ieirile posibile ale produsului

    Specific toate caracteristicile i combinaiile de caracteristici Testarea funcional este o activitate de tip cutie neagr

    Partiionarea n clase de echivalen

    Analiza valorilor limit

    Grafurile cauz-efect Ghicirea erorilor

    Se bazeaz pe diagramele cazurilor de utilizare,diagramele de stri etc.

    8Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    9/77

    Tipuri de testare funcional

    Testarea navigrii utilizatorului

    Testarea ecranelor de tranzacii

    Testarea fluxurilor de tranzacii

    Testarea ecranelor de rapoarte

    Testarea fluxurilor de rapoarte

    Testarea operaiilor cu bazele de date

    (Create/Retrieve/Update/Delete) Exemplu: dac un raport arat pe ecran ntr-un anumit

    mod, trebuie s arate la fel i n forma tiprit

    9Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    10/77

    Testarea sistemului

    Este de obicei cel mai dificil proces de testare

    Scopul este compararea comportamentuluisistemului cu obiectivele sale iniiale ncearc s demonstreze n ce fel sistemul nui

    ndeplinete obiectivele

    Testarea sistemului este imposibil dac nu existobiective scrise msurabile ale produsului

    Nu se refer la testarea funciilor sistemuluicomplet ( testarea funcional)

    10Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    11/77

    Proiectarea testelor

    Testarea sistemului seproiecteaz analiznd obiectivele

    Cazurile de test se formuleazprin analiza documentaiei

    utilizatorului Pentru fiecare linie din enunul

    obiectivelor, ar trebui sdemonstreze c produsul nu secomport corect

    Nu exist metodologii deproiectare a acestor teste

    Necesit creativitate

    Specificaiile externe corespundtestrii funcionale

    11Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    12/77

    Exemplu: enun de obiective

    pentru comanda display

    12Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    13/77

    Faza de testare (II)

    1. Testarea de nivel nalt2. Testarea sistemului3. nregistrarea i urmrirea defectelor4. Analiza i prevenirea defectelor

    5. Testarea extrem6. Principii de testare7. Concluzii

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    14/77

    Tipuri de testare a sistemului

    Testarea caracteristicilor

    Testareancrcrii

    Testarea la stress

    Testarea volumului

    Testarea utilizabilitii

    Testarea securitii

    Testarea stocrii

    Testarea configuraiei

    Testarea compatibilitii

    Testarea instalabilitii

    Testarea ncrederii

    Testarea recuperrii

    Testarea documentaiei

    Testarea procedurilor

    14Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    15/77

    Testarea caracteristicilor

    engl. facility testing

    Parcurgerea obiectivelor i testarea dacprodusul ndeplinete fiecare obiectiv

    Compararea mental a obiectivelor cudocumentaia utilizatorului este deseorisuficient

    15

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    16/77

    Testareancrcrii

    engl. load testing

    Presupune operarea sistemului n condiii normale sau cuvrfuri anticipate de sarcin i observarea comportamentuluiacestuia

    Ajut la identificarea capacitii operaionale maxime asistemului

    Mediul de test este asemntor cu mediul n care va rulasistemul n producie

    Relevant n special pentru sisteme multi-user, client-serversau pentru servicii cu SLA (service level agreement)

    Util i pentru alte tipuri de produse software: procesoare detext sau grafice, aplicaii cu generatoare de rapoarte etc.

    16

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    17/77

    Testareancrcrii

    Poate ajuta la depistarea cauzelor care scadperformanele, de exemplu: Servere de aplicaii sau alte componente software

    Servere de baze de date Latena sau congestia reelei

    Prelucrrile n partea clientului

    Echilibrarea ncrcrii ntre mai multe servere

    17

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    18/77

    Testarea la stress

    Ajut la estimarea robusteii, disponibilitii i modului de

    tratare a erorilor printr-o ncrcare dincolo de limitele

    normale de operare

    Foarte important mai ales pentru sistemele critice

    Chiar dac testele simuleaz condiii care nu vor aprea

    niciodat, comportamentul sistemului poate da informaii

    importante despre erorile care ar putea aprea n situaiireale de funcionare

    18

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    19/77

    Testarea la stressmotivaie

    Defectarea unui sistem critic poate avea consecine dezastruoase

    Timpul i resursele dedicate testrii tradiionale nu sunt suficiente

    Nu se pot determina toate modurile n care va fi folosit sistemul,de exemplu un sistem de operare va rula aplicaii care nici nu exist

    n momentul testrii Utilizatorii vor rula sistemul pe calculatoare cu mai puine resurse

    dect cele folosite pentru testare

    Concurena este dificil de testat cu metode tradiionale, de exemplurace conditions, deadlocks

    Serverele web pot fi supuse atacurilor de tip denial of service Testarea la stress pentru un timp scurt poate simula operarea

    normal pentru un timp ndelungat, de exemplu poate pune neviden scurgerile de memorie sau folosirea incorect a resurselor

    19

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    20/77

    Discuie

    Testarea la ncrcare variaz condiiile de operare,de exemplu numrul de utilizatori, de tranzacii etc.,meninnd constant configuraia

    Numrul de tranzacii cu 2000, 3000, 4000 de utilizatoriconcureni

    Testarea la stress presupune condiii extreme sauanormale, de exemplu resurse diminuate sau prelucrriintense Numrul de tranzacii cu 2000, 3000, 4000 de utilizatori

    concureni, cu memorie foarte puin pe server, vitez mic areelei etc.

    20

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    21/77

    Testarea volumului

    Presupune expunerea produsului la un volum marede date

    Exemple: Un compilator care primete un fiier surs de 1 MB Un simulator de circuite electronice care primete un circuit

    cu 1000 de componente

    Un procesor de test care primete un document cu 2000

    de pagini Scopul este s arate c programul nu poate

    gestiona volumul de date specificat n obiective

    21

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    22/77

    Accepiuni alternative

    Testarea la stress implic un element de timp: supunereasistemului la o ncrcare foarte mare pentru o perioad scurtde timp Aplicabil mai ales pentru programele care opereaz la ncrcri

    variabile, interactive, n timp real: aplicaii web, programe de control etc. Exemple:

    Dac un sistem poate gestiona maximum 15 task-uri simultan, testareala stress implic rularea a 15 task-uri

    Dac un sistem de control al traficului aerian poate gestiona 200 de

    avioane simultan, se testeaz cu 200 sau 201 avioane sau se simuleazintrarea simultan a unui numr mare de avioane n raza sa de aciune

    Pentru un sistem de control al proceselor, toate procesele monitorizategenereaz semnale simultan

    22

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    23/77

    Accepiuni alternative

    Analogie: evaluarea unei dactilografe Testarea volumului: dac poate face fa unui

    raport de 100 de pagini

    Testarea la stress: dac poate scrie la o rat de50 de cuvinte pe minut

    23

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    24/77

    Testarea utilizabilitii

    engl. usability testing

    ncercarea de a descoperi probleme legate de factoruluman, de utilizarea sistemului

    Consideraii: Interfeele cu utilizatorul trebuie s fie potrivite pentru profilul

    acestuia

    Ieirile trebuie s fie uor de neles

    Mesajele de eroare nu trebuie s reflecte detalii interne de

    programare Interfeele trebuie s aib integritate conceptual, coeren

    24

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    25/77

    Testarea utilizabilitii

    Consideraii: Cnd acurateea este vital, intrrile trebuie s aib suficient de

    multe elemente redundante, de exemplu numr cont, numetitular, PIN etc.

    Sistemul nu trebuie s conin un numr excesiv de opiuni.Accesarea lor trebuie s fie logic i intuitiv. Se pot prezentadoar opiunile folosite frecvent

    Sistemul trebuie s prezinte notificri pentru primirea intrrilor.Dac o operaiune este de durat, utilizatorul trebuie informat

    Sistemul trebuie s fie uor de folosit. De exemplu, dac intrrilesunt case-sensitive, utilizatorul trebuie s cunoasc acest lucru,sau ntr-o succesiune de meniuri sau ferestre, utilizatorul trebuies tie cum s se ntoarc la meniul principal

    25

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    26/77

    Testarea securitii

    engl. security testing

    Trebuie imaginate cazuri de test care s corupsistemul de securitate

    Se pot studia probleme de securitate cunoscuteale altor sisteme i se ncearc demonstrareaexistenei lor n sistemul testat

    Aplicaiile web necesit n general un nivelsuperior de securitate, mai ales site-urile decomer electronic

    26

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    27/77

    Testarea stocrii

    engl. storage testing

    Unele programe au obiective de stocare,referitoare de exemplu la volumul de memorie

    folosit sau la dimensiunea fiierelor temporare Trebuie imaginate cazuri de test care arat c

    programul nu ndeplinete aceste obiective

    27

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    28/77

    Testarea configuraiei

    engl. configuration testing

    Sistemele de operare, sistemele de management al bazelorde date, aplicaiile de transmitere de mesaje/pachete trebuies suporte o mulime de configuraii hardware

    Dispozitive de intrare-ieire

    Linii de comunicaie

    Dimensiuni diferite ale memoriei

    De multe ori, numrul configuraiilor posibile este prea marepentru a fi testat fiecare combinaie n parte

    Trebuie testat sistemul cu fiecare tip de dispozitiv hardware icu configuraiile minime i maxime

    28

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    29/77

    Testarea compatibilitii

    engl. compatibility testing

    Multe sisteme nu sunt complet noi, ci trebuie snlocuiasc sisteme mai vechi sau cu probleme

    Pot exista obiective specifice privindcompatibilitatea cu sistemele existente, sauprocedurile de conversie a datelor

    De exemplu actualizarea unui sistem de managemental bazelor de date

    29

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    30/77

    Testarea instalabilitii

    engl. installability testing

    Unele sisteme software au proceduri complicatede instalare

    Instalarea este primul contact al utilizatorului cusistemul. O instalare defectuoas l poate

    mpiedica s foloseasc n mod adecvat

    produsul software, s aib ncredere n el, sau lpoate determina s aleag un alt produs

    30

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    31/77

    Testarea ncrederii

    engl. reliabiliy testing

    n general, scopul tuturor tipurilor de testare este cretereancrederii

    Testarea ncrederii poate fi dificil Un WAN sau un ISP pot avea ca obiectiv un timp de funcionare de

    99,97% (engl. uptime)

    Este greu de imaginat cum s-ar putea testa sistemul timp de ctevaluni sau ani

    Se poate calcula timpul mediu ntre defectri Exist metode formale de demonstrare a corectitudinii unui

    program. Trebuie demonstrat i c programul se va termina.n cazul general demonstrarea este imposibil, dar se poaterealiza pentru anumite cazuri particulare

    31

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    32/77

    Testarea recuperrii

    engl. recovery testing

    Sistemele de operare, sistemele de management albazelor de date, programele de teleprocesare au de

    obicei obiective de recuperare, care arat cum trebuie sreporneasc sistemul dup defeciuni legate deprogramare, de hardware sau de date

    Testarea presupune crearea (simularea) unor condiii deeroare n mediul extern de execuie

    Testarea i propune s arate c: Funciile de recuperare nu lucreaz corect

    Sistemul nu respect timpul mediu pentru recuperare asumat

    32

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    33/77

    Testarea documentaiei

    engl. documentation testing

    Documentaia este folosit ca un ghid pentruscrierea cazurilor de test la testarea sistemului

    Documentaia utilizatorului trebuie s fieinspectat (ca i codul), analizndu-i-seacurateea i claritatea

    33

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    34/77

    Testarea procedurilor

    engl. procedure testing

    Multe produse software sunt parte a unorsisteme mai mare, incomplet automatizate, care

    implic proceduri urmate de oameni Toate procedurile trebuie testate, de exemplu

    cele pentru operatorii de sistem, administratorul

    de baze de date sau utilizatorii finali

    34

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    35/77

    Executarea testrii sistemului

    Cine trebuie s testeze sistemul Pe ct posibil, nu programatorii

    O echip format din: experi n testare, inginer de factori

    umani (human factors engineer), 1 sau 2 utilizatorireprezentativi, analistul sau proiectantul aplicaiei

    Pe ct posibil, nu organizaia dezvoltatoare Aceasta nu are de fapt motivaia s demonstreze c produsul

    nu ndeplinete obiectivele

    Cel mai economic mod de a realiza testarea sistemului(gsirea numrului maxim de erori cu un anumit cost sau uncost mai mic pentru descoperirea aceluiai numr de erori)este subcontractarea ctre o alt organizaie

    vezi i principiile 2 i 3 spre sfritul cursului35

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    36/77

    Faza de testare (II)

    1. Testarea de nivel nalt2. Testarea sistemului3. nregistrarea i urmrirea defectelor4. Analiza i prevenirea defectelor

    5. Testarea extrem6. Principii de testare7. Concluzii

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    37/77

    Ciclul de via al unui defect

    De cele mai multe ori, persoana care raporteazun defect este diferit de cea care l repar

    Un proiect mare poate include mii de defecte

    n astfel de situaii, raportarea i reparareanu pot fi fcute informal: un defect ar puteafi uitat i/sau redescoperit ulterior cu un efort

    suplimentar

    37

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    38/77

    Ciclul de via al unui defect

    Formal, cnd un defect este descoperitde ctre oricine estenregistrat (logged) ntr-un sistem de control al defectelor

    Defectul este n starea trimis(submitted)

    Repararea defectului este atribuit unei persoane, de obicei

    programatorul iniial, care realizeaz depanarea (debugging) Defectul este n starea reparat (fixed)

    Se verific dac defectul a fost reparat cu succes

    Defectul este n starea nchis (closed)

    38

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    39/77

    Ciclul de via al unui defect

    Ciclul de via poate fi mrit sau micorat n funcie denatura proiectului

    Pentru proiecte mici, un defect poate fi doar deschis

    sau nchis Pentru proiecte critice, un defect poate trece prin mai

    multe faze de urmrire

    Defectele sunt deseori clasificate, pentru a le nelege

    mai bine natura De exemplu: logic, standarde, interfaa cu utilizatorul,

    interfaarea componentelor, performane, documentaie

    39

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    40/77

    Clasificarea dup severitate

    n multe organizaii se folosete o clasificare adefectelor pe 4 niveluri: Defecte critice: afecteaz muli utilizatori, pot ntrzia

    proiectul Defecte majore: au un impact puternic, necesit un volum

    mare de lucru pentru a le repara, dar nu afecteazsubstanial graficul de lucru al proiectului

    Defecte minore: izolate, care se manifest rar i au unimpact minor asupra proiectului

    Defecte cosmetice: mici greeli care nu afecteazfuncionarea corect a produsului software

    40

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

    E l d i i

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    41/77

    Exemplu: descoperirea i

    nchiderea defectelor

    n figur, distana dintre numrultotal de defecte i numruldefectelornchise crete

    Activitatea de dezvoltare trebuie

    ncetinit i trebuie alocate maimulte resurse reparrii defectelor

    Pentru un proiect gestionatcorespunztor, numrul dedefecte deschise ar trebui s se

    reduc spre sfritul proiectului,chiar dac nu este obligatoriu cavariaia s fie monotondescresctoare

    41

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    42/77

    Faza de testare (II)

    1. Testarea de nivel nalt2. Testarea sistemului3. nregistrarea i urmrirea defectelor4. Analiza i prevenirea defectelor

    5. Testarea extrem6. Principii de testare7. Concluzii

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    43/77

    Analiza i prevenirea defectelor

    La nivel organizaional, analiza defectelor poatembunti listele de verificare, procesele sauinstruirea personalului

    La nivelul proiectului, se nva din defecteledescoperite pn la un moment dat pentru a prevenipe ct posibil defectele din restul proiectului

    Prevenirea defectelor

    Crete calitatea: sistemul final va avea mai puine defecte Crete productivitatea: se consum mai puin efort pentru

    repararea defectelor

    43

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    44/77

    Analiza Pareto

    Se bazeaz pe aa-numita regul 80-20: 80% din probleme vin din 20% din sursele posibile

    80% din efecte sunt determinate de 20% din cauze

    Pentru un produs software: 80% din defecte apar din20% din cauzele eseniale sau 80% din defecte segsesc n 20% din cod

    Se realizeaz o diagram Pareto cu numrul de defectede diferite tipuri

    Diagrama identific tipurile principale de defectedescoperite, care au o mare probabilitate de a se regsii n restul proiectului, dac nu se iau unele msuri

    44

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    45/77

    Exemplu: diagram Pareto

    Primele 3 categorii de defecte reprezint mai mult de 88% din total

    Aceste categorii ar trebui s fie inta prevenirii defectelor ulterioare

    45

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    46/77

    Analiza cauzal

    Diagrama Pareto identific tipurile principale de defecte(pot fi considerate efecte)

    Analiza cauzal are scopul de a identifica principalele cauzeale acestor efecte

    nelegerea cauzelor ajut la identificarea soluiilor pentrueliminarea lor

    Cauze majore tipice: procese, oameni, tehnologie, instruire

    Cauzele i sub-cauzele se determin prin brainstorming.Dac se identific mai multe, acestea se prioritizeaz

    Aceast metod de analiz se bazeaz pe diagrama Ishikawa(diagrama cauz-efect)

    46

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    47/77

    Exemplu: diagram Ishikawa

    47

    cauze

    efectul

    sub-cauze

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

    D lt i i l t

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    48/77

    Dezvoltarea i implementarea

    soluiilor

    n aceast faz, se gsesc soluii pentruatenuarea cauzelor descoperite, tot prinbrainstorming

    Soluiile gsite trebuie apoi implementate Trebuie tratate ca activiti ale proiectului

    Este important verificarea efectelor soluiilor,

    pentru a vedea dac sunt eficiente Oamenii sunt convini dac vd rezultate

    De exemplu, analiza defectelor dup implementareasoluiilor

    48

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    49/77

    Exemplu

    49

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    50/77

    Intensitatea defectrilor n timp

    50

    0= intensitatea iniial a defectrilor

    0

    = numrul total de defectri

    Dacnu se cunosc aceste valori, nu se poateestima ncrederea produsului software

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    51/77

    Faza de testare (II)

    1. Testarea de nivel nalt2. Testarea sistemului3. nregistrarea i urmrirea defectelor4. Analiza i prevenirea defectelor

    5. Testarea extrem6. Principii de testare7. Concluzii

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    52/77

    Testarea extrem

    eXtreme Programming (XP), Kent Beck, 1996, Daimler-Chrysler

    Metodologie agilde dezvoltare software

    A facilitat adoptarea noilor limbaje de programare, precumJava i C#, pentru dezvoltarea rapid de aplicaii

    Aplicaiile se creeaz mai uor i mai rapid, ns nu estegarantat calitatea

    Scopul XP: programe de calitate ntr-un timp scurt

    Se bazeaz pe testarea unitilor i pe testarea de recepie(acceptance): cazurile de test se realizeaz nainteacoduluipropriu-zis

    52

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    53/77

    Caracteristicile XP

    Arhitecturi simple, comunicare ntre dezvoltatori i clieni,testare permanent, refactorizare

    XP funcioneaz bine pentru proiecte mici i medii,cu schimbri frecvente ale specificaiilor i undecomunicarea rapid este posibil

    Evit stabilirea tuturor detaliilor de la nceput, permiteschimbrile cerinelor

    Se evit funcionalitile care nu sunt absolut necesarela un moment dat

    Accentul cade pe funcionalitatea ce aduce valoarepentru client

    53

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    54/77

    Testarea extrem

    Reguli: Toate modulele trebuie s aib testele nainte de scrierea codului

    Toate modulele trebuie s treac toate testele nainte de a fi lansatsistemul

    Dificulti: Cum poate fi scris un test pentru un cod inexistent

    Cum afecteaz scrierea acestor teste termenul limit

    Beneficii: ncrederea c programul va respecta specificaiile

    Exprimarea rezultatului final nainte de implementare nelegerea mai bun a cerinelor i specificaiilor

    Se poate ncepe cu o arhitectur mai simpli apoi codul se poaterefactoriza fr teama nerespectrii specificaiilor

    Automatizarea testrii (de exemplu cu NUnit, JUnit etc.)54

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    55/77

    Exemplu

    55

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    56/77

    Cazuri de test

    56

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    57/77

    57Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    58/77

    58Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    59/77

    59Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    60/77

    60Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    61/77

    61

    1

    1

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    62/77

    62Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    63/77

    Rezultatele testrii cu NUnit

    63

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    64/77

    Faza de testare (II)

    1. Testarea de nivel nalt2. Testarea sistemului3. nregistrarea i urmrirea defectelor4. Analiza i prevenirea defectelor

    5. Testarea extrem6. Principii de testare7. Concluzii

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    65/77

    Principii de testare

    1. O parte necesara unui caz de test estedefinirea ieirii sau rezultatului ateptat Dac nu este definit rezultatul ateptat, un rezultat

    plauzibil, dar greit, poate fi interpretat drept corect Ochiul vede ce vrea s vad dorin subcontient

    de a vedea un rezultat corect

    Un caz de test trebuie s aib:

    O descriere a datelor de intrare O descriere precis a rezultatului corect corespunztor datelor

    de intrare respective

    65

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    66/77

    Principii de testare

    2. Programatorii nu ar trebui s-i testezepropriile programe Programatorul tie ce ar trebui s fac o secven de cod i nu i d

    seama cnd face altceva

    Programatorul are o perspectiv constructiv (proiectare/implementare);testarea necesit o perspectiv destructiv

    Programatorul poate evita n mod subcontient gsirea erorilor, de fricaefului/colegilor/clientului etc.

    Programul poate conine erori deoarece programatorul nu a neles

    specificaiile i testele vor suferi de pe urma acestor nenelegeri Principiul nu spune c un programator nu i poate testa propriul cod,

    ci c testarea este fcut mai eficient de altcineva

    Depanarea (debugging) este fcut mai eficient de programatorul iniial

    66

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    67/77

    Principii de testare

    3. Organizaiile nu ar trebui s-i testezepropriile programe Performanele organizaiei i ale managerului de proiect sunt

    deseori msurate drept capacitatea de a termina proiectul la odat limit i cu o limit de cost

    Timpul i costul sunt uor cuantificabile, ns ncredereaprogramuluinu

    Testarea corect scade probabilitatea atingerii obiectivelor decost i de timp

    Nu este imposibil ca organizaiile s-i testeze propriileprograme, ns o testare obiectiv, independent, poate cretecalitatea programului

    67

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    68/77

    Principii de testare

    4. Rezultatele fiecrui test trebuie inspectateamnunit Numeroase experimente au artat c unele erori nu

    sunt detectate, dei simptomele lor puteau fi clarobservate n testele anterioare

    Multe erori descoperite la un moment dat ar fi putut fidetectate din rezultatele testelor anterioare

    68

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    69/77

    Principii de testare

    5. Trebuie scrise cazuri de test att pentrucondiii de intrare invalide i neateptate, ct ipentru condiii de intrare valide i ateptate

    Exist o tendin natural ca testerii s seconcentreze pe condiiile de intrare valide i ateptate(scenariile normale de funcionare ale programului)

    Multe erori apar dup livrare din cauza utilizrii

    programului ntr-un mod neateptat Testarea condiiilor neateptate detecteaz mai multe

    erori dect testarea condiiilor ateptate

    69

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    70/77

    Principii de testare

    6. Programul trebuie examinat pentru a vedeadac nu face ce trebuie; de asemenea, trebuieexaminat pentru a vedea dac face ce nu

    trebuie Programele trebuie examinate pentru detectarea

    efectelor secundare De exemplu, un program de salarii care produce rapoarte

    pentru salariai inexisteni sau terge prima nregistrare dinbaza de date a personalului

    70

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    71/77

    Principii de testare

    7. Cazurile de test abandonabile trebuie evitatedac programul nu este abandonabil Test abandonabil (engl. throwaway): o persoan

    ruleaz programul manual, cu diferite date de intrare Testele dispar dup ce testarea a fost terminat

    Cazurile de test trebuie salvate i re-executate dupefectuarea unor schimbri n program: testarea deregresiune

    71

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    72/77

    Principii de testare

    8. Efortul de testare nu trebuie planificat cupresupunerea tacit c nu se vor descoperi erori Presupunerea greit c testarea arat c programul

    funcioneaz corect

    72

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    73/77

    Principii de testare

    9. Probabilitatea s existe erori suplimentare ntr-oseciune a programului este proporional cu numrul deerori deja descoperite n acea seciune Erorile tind s apar n grupuri

    Unele seciuni ale programului sunt mai predispuse la erori dectaltelepot fi seciuni mai dificile sau seciuni unde a lucrat opersoan mai puin pregtit

    De exemplu, un program are 2 module, A i B. n modulul A s-audescoperit 5 erori iar n B doar 1 eroare. Dac A nu a fost supus

    unei testri mai riguroase, atunci probabilitatea de a gsi maimulte erori n A este mai mare dect probabilitatea de a gsi maimulte erori n B

    73

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    74/77

    Principii de testare

    9. Probabilitatea ca mai multe erori s existe ntr-oseciune a programului este proporional cu numrul deerori deja descoperite n acea seciune

    74

    Relaia surprinztoaredintre numrul de erorirmase i numrul deerori descoperite

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    75/77

    Principii de testare

    10. Testarea este un proces definit decreativitate i provocri intelectuale Creativitatea necesar pentru testare probabil

    depete creativitatea necesar pentru proiectare

    75

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    76/77

    Concluzii

    Testarea detecteaz nu numai erorile de implementare,ci i pe acelea de analiz i proiectare

    Testarea este o metod dinamic de verificare ivalidare, unde un element (un modul sau sistemul ntreg)este executat i i se observ comportamentul

    Testarea se bazeaz pe un plan, care ghideaz ntregulproces: Specific nivelurile testrii i elementele testate

    Cazurile de test specificate sunt inspectate i apoi executate Rezult raportul de testare (cazurile executate) i raportul erorilor

    descoperite

    76

    Florin Leon, Ingineria programarii, http://florinleon.byethost24.com/curs_ip.htm

  • 7/30/2019 Ingineria programarii: Faza de testare 2

    77/77

    Concluzii

    Niciodat nu putem fi siguri c specificaiile sunt 100%corecte

    Niciodat nu putem fi siguri c un instrument de testareeste corect

    Niciun instrument de testare nu poate fi folosit pentrutoateprodusele software

    Testerii nu pot fi niciodat siguri c neleg complet unprodus software

    Niciodat nu putem fi siguri c testarea unui produssoftware este complet