Documente Academic
Documente Profesional
Documente Cultură
Asigurare a calitatii???
1/31/2021 1
Testare:
este procesul de folosire a unui produs software
pentru a verifica faptul ca respecta cerinte
specifice si pentru a detecta erori.
1/31/2021 2
Asigurare a calitatii:
Calitate?
• Este un concept complex, care depinde de context si
semnifica lucruri diferite pentru persoane diferite.
• Pentru utilizator, inseamna satisfacerea nevoilor si
cerintelor sale.
• Pentru producator, inseamna conformarea cu
specificatiile tehnice.
• Cu alte cuvinte, calitatea inseamna valoare adusa
produsului pentru cineva.
• Testarea nu aduce automat calitate! Ea măsoară nivelul
calității unui produs.
1/31/2021 3
Atributele calitatii:
???
1/31/2021 4
Atributele calitatii:
Fiabilitatea
Fiabilitatea unui obiect(unei componente, unui proces, unui sistem) sau a unei
persoane exprimă siguranța sa în funcționare. Este o funcție de timp F(t), definită drept
probabilitatea ca, în condiții înconjurătoare specificate, obiectul (componenta, procesul,
sistemul) să funcționeze adecvat, menținându-și parametrii prestabiliți în intervalul de timp [0,t).
Practic fiabilitatea este o probabilitate (de bună funcționare) , cu o valoare cuprinsă între 0 și 1.
Eficiența
Capacitatea produsului software de a avea performante corespunzatoare, relative la
resursele si conditiile date.
Portabilitatea
Usurinta prin care un produs software poate fi transferat de pe un echipament pe altul sau
dintr-un mediu in altul.
Folosință (usability)
Capacitatea produsului software de a fi inteles, invatat, utilizat si atractiv pentru utilizator
atunci cand este folosit in anumite conditii.
Mentenabilitate
Usurinta prin care un produs software poate fi modificat pentru a se corecta anumite
defecte, pentru a avea noi cerinte, pentru a face ca in viitor mentenata sa fie mai usoara sau pentru a se
adapta la un mediu schimbat.
1/31/2021 5
Asigurarea calitatii:
Quality Assurance:
Oбеспечение качества:
Modulul 1:
Bazele testării produselor-program - 10 ore
Modulul 2:
Strategii de testare - 20 ore
1/31/2021 6
Lectia 1:
• Procesul de dezvoltare ale produselor
program.
• Terminologia din domeniul testării
produselor-program
• Ciclul de viaţă al dezvoltării produselor-
program
• Modele ale ciclului de dezvoltare ale
produselor-program.
1/31/2021 7
Procesul de dezvoltare ale produselor
program:
clasic
Planificare
Implementa
re
Testare
1/31/2021 8
Procesul de dezvoltare ale produselor
program:
modern
Design/
proiectare
Realise/ Build/
versiune implemetare
Configure/
Test/ testare
configurare
1/31/2021 9
Terminologia din domeniul testării
produselor-program
• Bug - O problemă, eroare, defect, posibilitate nedocumentată, greșeală într-
un sistem software care împiedică sistemul să funcționeze așa cum este de
așteptat este un bug.
• Bug report - Un raport care detaliază un bug într-un program, adică cum se
manifestă, când și care parte a codului este responsabilă, eventual și o
soluție posibilă.
• Bug tracking - Bug tracking-ul este un mod organizat de a ține evidența
bugurilor și a stărilor acestora (deschis, rezolvat, testat, închis). Acesta
poate varia de la forme neorganizate (întâlniri în echipă) la forme organizate
(liste de discuții, mail-uri, soluții specializate).
• Sistem de bug tracking - O aplicație software care are ca rol ușurarea bug
tracking-ului (este o metodă eficientă centralizată și ușor utilizabilă.) Există
soluții gratuite, dar și soluții enterprise cu prețuri foarte ridicate. Un sistem
de bug tracking este un subtip de sistem de issue tracking.
• Sistem de issue tracking - O aplicație software care are ca rol
centralizarea și adresarea tuturor cererilor legate de unul sau mai multe
produse, de la probleme la schimbări de design și aplicări de patch-uri. Cele
mai multe sunt în același timp și bug trackere. În general, sunt mai
complexe decât bug trackerele.
1/31/2021 10
Ciclul de viaţă al dezvoltării
produselor-program:
Ciclul de viaţă al unui produs software
reprezintă intervalul de timp de la momentul deciziei
de realizare şi până la retragerea sau înlocuirea
totală a acestuia cu un nou produs software,
reprezentând orizontul de timp în care operează şi
evoluează produsul program. După glosarul de
termeni -terminologie software - ai IEEE (Institute of
Electric and Electronic Engineering), ciclul de
viaţă reprezintă o abordare sistemică începând cu
dezvoltarea, utilizarea, mentenanţă şi până la
retragerea software-lui
1/31/2021 11
Ciclul de viaţă al dezvoltării
produselor-program:
Etape Obiective Produse finale
Cerinte utilizator Definirea problemei Specificatii cerinte utilizator
1/31/2021 12
Modele ale ciclului de dezvoltare ale
produselor-program:
1/31/2021 13
Modelul spirala:
1/31/2021 14
Modelul cascada:
1/31/2021 15
Modelul V :
1/31/2021 16
Agile:
1/31/2021 17
Integrarea continua:
• Integrarea continua (Continuous integration -
CI) este practica/tehnologia/modelul din ingineria
software de unificare a spațiilor de lucru ale
dezvoltatorilor într-un depozit comun de mai multe
ori pe zi.
• Scopul său principal este cel de a evita
problemele de integrare, denumite „integration
hell”. CI poate fi văzut ca o intensificare a
practicilor de integrare periodică promovate de
metodele deja publicate ale dezvoltării de software
prin proces incremental-iterativ
1/31/2021 18
Integrarea continua:
1/31/2021 19
Controlul versiunilor:
• (din engleză: version control sau revision control) este
un domeniu software care se ocupă cu gestionarea
mai multor versiuni (numite și revizii) ale unor fișiere.
Este aplicată cu predilecție în programare, cu scopul
de a păstra versiuni succesive ale codului sursă al
unui program de calculator. O soluție ar fi arhivarea
separată și completă a fiecărei versiuni a programului
într-o bază de date (pe un purtător de date extern), dar
această metodă ar necesita în general prea mult
spațiu de memorie. În locul ei se utilizează tehnici
speciale, care reduc memoria totală necesară și care
facilitează reconstrucția „în zbor”, la cerere, a oricărei
versiuni din istoria programului.
1/31/2021 20
Controlul versiunilor - Terminologie:
• repository„depozitul“ în care sunt păstrate fișierele curente și versiunile
anterioare. Deseori acest depozit este o bază de date găzduită pe
un server.
• working copy (copie de lucru)copie a fișierelor din repository pe
calculatorul de lucru al unui dezvoltator (de unde și numele). Acestea sînt
fișierele pe care lucrează un dezvoltator în mod obișnuit.
• check-out operația de creare a unei copii de lucru luate din repository
• commit sau check-in operația de introducere în repository a schimbărilor
din copia de lucru
• update (actualizare)introducerea în copia de lucru a schimbărilor făcute de
alte persoane (colegi la același proiect)
la repositorybranch (ramificare)bifurcarea unui set de fișiere în două căi de
dezvoltare distincte
• merge (integrare, împletire)unirea a două versiuni diferite ale unui aceluiași
fișier într-o singură versiune
• Tag o „etichetă“ aplicată fișierelor din repository la un anumit moment
important din "viața" programului, de exemplu la lansarea unui produs
1/31/2021 21
Controlul versiunilor – aplicatii:
• SVN – necomerciala, interfata prietenoasa
• TFS - comerciala
• Source Safe – recomandata programatorilor
• Bazaar – necomerciala, interfata
neprietenoasa
• CVS – interfata neprietenoasa, incorporata in
NetBeans
1/31/2021 22
Recapitulare:
• Procesul de dezvoltare ale produselor
program.
• Terminologia din domeniul testării
produselor-program
• Ciclul de viaţă al dezvoltării produselor-
program
• Modele ale ciclului de dezvoltare ale
produselor-program.
1/31/2021 23
Lectia 2
Organizarea testarii:
1. Riscurile testarii
2. Repartizarea rolurilor
3. Planificari si estimari
9/2/2020 1
Riscurile testarii:
Risc?
Un factor ce poate provoca pe viitor probleme,
de multe ori exprimat in probabilitate si impact
9/2/2020 3
Independenta in testare:
• De programare si de testare se ocupa 2 echipe
total diferite ce nu comunica direct intre ele
De ce?
1. mai usor de gasit greselile altora decit cele
proprii
2. puncte de vedere diferite
9/2/2020 4
Nivelul de independenta:
Testeaza programistii
9/2/2020 5
Structura echipei:
• Project manager – manager de proiect
• Business analitic – analistii
• Developers – programistii
• Quality assurance – asigurarea calitatii
• Support – suportul tehnic
9/2/2020 6
Repartizarea rolurilor:
Lider/manager/coordonator
(test lider) Tester (tester)
• Stabilirea strategiilor de testare si • Revizuirea si contributia la
planificare planificare
• Scrierea strategiilor de revizuire • Setarea mediului de testare
• Planificarea cerintelor: riscurile, • Pregatirea/copierea/crearea
ciclurile, nivelele, tehnicile,
obiectivele, estimarile in timp si datelor pentru testare
bani • Implementarea de teste,
• Coordonarea pregatirilor, executarea, evaluarea
implementarilor si executarilor rezultatelor si documentarea
testelor • Automatizarea testelor
• Hotaraste ce trebuie automatizat, • Rularea de teste si masurarea
in ce limite si cum performantei componentelor
• Repartizarea activitatilor in sistemului
echipa
• Revizuirea testelor
• Scrierea de rapoarte
implementate de alti testeri
9/2/2020 7
*Exceptii:
• Testarea unitara si de integrare - fac
programistii
• Testarea de sistem si de acceptanta - fac
cineva din business sau din utilizatori
9/2/2020 8
Strategii de testare:
• Prin analiza riscurilor
• Bazat pe model
• Bazat pe standarte
• Bazat pe experienta(testare exploratorie)
• Bazat pe consultatii
• Regresiv
***Care? Riscuri??? Personal??? obiective???
Natura proiectului???
9/2/2020 9
Planificarea in modelul V :
Politica
Riscuri Constringeri Resurse Scop Obiective
testarii
Planificarea
testarii de
acceptanta
9/2/2020 10
Structura planului:
Nr. Sectiune Titlul rubricii Descriere
1 Id planului
2 Introducerea
3 Itemii testului
4 Cerinte ce vor fi testate
5 Cerinte ce nu vor fi testate
6 Tehnici
7 Cerintele pt testare
8 Cazuri de suspensie
9 Livrari
10 Procesele testarii
11 Mediul necesar
12 Responsabilitati
13 Necesitatea instruirii pesonalului
14 Orar
15 Riscuri
16 Liste cu aprobari
9/2/2020 11
Criterii de finisare a testarii:
• Toate testele au fost executate cu succes
• O mare parte din cerinte au fost acoperite
• Nu sunt defecte de severitate critica
• Toate defectele de severitate inalta au fost
testate
• Cind bugetul s-a epuizat
• Orarul a fost bine indeplinit si produsul este
gata de utilizare
9/2/2020 12
Estimari:
Metrici de baza: Metrici stabilite de experti:
• Numarul de conditii in test • Analisti
• Numarul de teste scrise • Consultantii proiectului
• Numarul de teste executate • Programisti
• Timpul necesar pt • Suportul tehnic
constructia cazurilor de – Caracteristicile productului
testare – Dezvoltarea productului
• Numarul de defecte gasite
9/2/2020 13
Raportarea:
Nr. Sectiune Titlul sectiunii Detalii
1 Id raportului
2 Sumarul
3 Devieri
4 Rezultate
5 Evaluari
6 Activitati
7 Multumiri, laude, etc
9/2/2020 14
Lectia 2
Organizarea testarii:
1. Riscurile testarii
2. Repartizarea rolurilor
3. Planificari si estimari
9/2/2020 15
Tehnici de proiectare a testarii:
1. Tehnica bazata pe
specificatii / functionalitati (black-
box)
2. Tehnica bazata pe structura (white-
box)
3. Tratare exploratorie și experimentală
Introducere:
• Proiectarea testarii presupune 3 etape:
– Identificarea conditiilor(stare) de testare – un
element, item sau eveniment al unui careva component ce trebuie
verificat prin unul sau mai multe cazuri de utilizare(ex. Functie,
tranzactie, un atribul al calitatii, un element structural) .
– Specificarea cazurilor de testare – un set de multimi de
intrare, ‘conditii de pre-executie’, rezultate asteptate, ‘conditii de post-
executie’, create special pentru un obiectiv sau stare, ce seamna mult
cu un exercitiu.
– Specificarea procedurilor de testare – o secventa de
actiuni pentru executia unui test.
Reprezentare schematica:
Alcatuirea unui caz de testare de
baza:
• Valori permise : 20 litere, “-”.
Datele sunt case-sensitive
validate cind se tasteaza Enter.
Daca datele sunt corecte se
schimba fereastra pentru
introducerea unei cereri, daca nu
sunt valide datele apare un mesaj
de eroare pe pagina curenta.
• Cazuri valide:
Mr Ion Craciun
Ms Ana-Maria Gutu
• Cazuri invalide:
Mr George1 Graf
Ms “Cort” Alina
Ms Popescu ‘Ana’
Tehnica bazata pe
specificatii/functionalitati (black-box)
‘Mini- tehnici’ bazate pe specificatii”
• Stabilirea claselor de valori – equivalence
partitioning
• Stabilirea limitelor claselor – boundary value
analysis
• Alcatuirea tabelelor de decizii – decision table
testing
• Alcatuirea starilor – state transition testing
• Stabilirea cazurilor de testare – use case
testing
Cazuri de utilizare:
Tehnica bazata pe structura
(white-box):
• Diagrame de flux - Flow charts
– Secvente
– Selectie
– Iteratii
• Stabilirea cailor programului
Diagramele de flux:
• Componentele:
– Secventa - o asfel de structura de control se
compune din pasi care se inlantuie unul dupa
altul, in ordinea in care apar in algoritm.
Read(a);
Writeln(b);
C=a+b;
Diagramele de flux:
• Componentele:
– Selectia – permite alegerea unui cai din mai multe
posibile in dependenta de conditia stabilita.
X=15
Count=0
While x<20 do
x:=x+1
count=count+1
End do
Exemplu:
Exemplu:
Diagrama:
Tratare exploratorie și experimentală
Se remarca două abordări de testare utilizate. Prima
dintre ele se numește testare experimentală și
presupune definirea unui test case, efectuarea
testului propriu zis și verificarea rezultatului. În
cazul în care rezultatele nu sunt conforme cu ceea
ce este specificat în test cazuri în rubrica de
rezultate așteptate, tester-ul completează un raport
prin care se raportează defectul echipei de
dezvoltare. Metoda este foarte utilă pentru a
asigura funcționalitățile de baza negociate cu
clientul.
Cea de a doua metoda de testare este testarea
exploratorie. Aceasta reprezintă de cele mai multe ori
rularea unor teste pe care le execută un tester fără a avea
un plan stabilit. Nu este necesară elaborarea unui caz de
testare, ci se urmărește tocmai testarea aplicației în
situații speciale. Scopul acestei metode este acela de a
îmbunătăți calitatea generală a produsului și de a învăța
mai multe despre acesta. De asemenea, poate fi îmbinată
și cu rezolvarea defectelor descoperite pe parcursul
testelor, ceea că mărește eficiența etapei de lucru. De
cele mai multe ori, utilitatea testării exploratorii depinde
de calitățile tester-ului care o efectuează. Un angajat bine
pregătit va fi capabil să inventeze situații mai diverse și să
observe bug-uri mai greu de depistat. Un dezavantaj al
acestei metode este dat de faptul că, de cele mai multe
ori, procedurile se execută manual și nu pot fi
automatizate, așa cum se poate face în cadrul testării
experimentale.
Scopul acestei metode este acela de a imbunatati
calitatea generala a produsului si de a invata mai
multe despre acesta. De asemenea, poate fi
imbinata si cu rezolvarea defectelor descoperite pe
parcursul testelor, ceea ca mareste eficienta etapei
de lucru. De cele mai multe ori, utilitatea testarii
exploratorii depinde de calitatile tester-ului care o
efectueaza. Un angajat bine pregatit va fi capabil sa
inventeze situatii mai diverse si sa observer bug-uri
mai greu de depistat. Un dezavantaj al acestei
metode este dat de faptul ca, de cele mai multe ori,
procedurile se executa manual si nu pot fi
automatizate, asa cum se poate face in cadrul
testarii experimentale.
Scenarii de testare
Scenariu de testare?
• Este un set de instructiuni ce urmeaza sa fie
efectuate pentru a verifica functionalitatea
unei parti a produsului.
• Scenariul de testare – este o activitate ce
utilizeaza scenarii, ce ajuta testerii la
implementarea testelor.
Scenariu de testare:
Structura
Test script
Test step1 Test step2 Test step3 Test step4 Test step1 Test step2 Test step3 Test step4
Caz de testare
Erori???
Caracteristicile statistice ale erorilor pot servi drept ghid pentru dezvoltatori în distribuirea
eforturilor de creare a programelor. În plus, caracteristicile erorilor din procesul de proiectare a
programului ajută la:
1) evaluarea stării reale a proiectului, planificarea intensității și duratei muncii până la finalizarea
acestuia;
2) calcularea eficacitatății necesare a mijloacelor de protecție operațională împotriva erorilor
primare nedetectate;
3) evaluarea resursele informatice necesare în termeni de memorie și performanță, luând în
considerare costul eliminării erorilor;
4) Efectuarea cercetării și alegerii adecvate a indicatorilor de complexitate a componentelor și
tehnicii de calcul, precum și a altor indicatori de calitate.
Analiza erorilor primare din programe se efectuează la două niveluri:
diferențial - luând în considerare tipurile de erori, complexitatea și gradul de automatizare a
detectării lor, costul ajustărilor și etapele celei mai probabile eliminării
generalizate - în funcție de caracteristicile sumare ale detectării lor, în funcție de durata
dezvoltării, funcționării și întreținerii pachetului software.
Erorile tehnologice din documentație și programele de remediere din memoria tehnicii de calcul
reprezintă 5 ... 10% din numărul total de erori detectate în timpul testării. Majoritatea erorilor
tehnologice sunt detectate automat prin metode standartizate.
Erorile software după număr și tipuri sunt determinate în primul rând de gradul de
automatizare a programării și de profunzimea testării programelor/aplicațiilor.
Numărul de erori software depinde de calificările dezvoltatorilor, de volumul total al
pachetului software, de profunzimea interacțiunii logice și informaționale a modulelor
și de o serie de alți factori. Când se dezvoltă programe complexe, erorile de program
pot fi clasificate în funcție de tipurile de operații utilizate în următoarele grupuri: erori
de tipuri de operații; erori variabile; erori de control și cicluri ș.a.
În complexul de programe și sisteme de referință, sunt utilizate diferite metode pentru a
automatiza detectarea erorilor. La etapele inițiale de dezvoltare și de testare a modulelor,
erorile de program reprezintă aproximativ 1/3 din toate erorile. Erorile în utilizarea
operațiunilor în etapele inițiale a dezvoltatorului de program ajung la 14% și apoi scad
rapid pe măsură ce programatorii își îmbunătățesc abilitățile.
Erorile algoritmice sunt mult mai dificil de detectat prin metode de control automatizate
standardizate decât tipurile anterioare de erori. Erorile algoritmice ar trebui să includă, în
primul rând, erorile cauzate de formularea incorectă a sarcinilor funcționale, atunci când
specificațiile nu stipulează pe deplin toate condițiile necesare pentru a obține rezultatul
corect. Aceste condiții sunt formate și rafinate în mare măsură în procesul de testare și
identificare a erorilor în rezultatele funcționării programelor. Erorile cauzate de luarea în
considerare incompletă a tuturor condițiilor pentru rezolvarea problemelor sunt cele mai
frecvente în acest grup și reprezintă până la 70% din toate erorile algoritmice sau
aproximativ 30% din numărul total de erori la etapele inițiale de proiectare.
La erorile algoritmice ar trebui să să se alăture și erori în legăturile dintre module
și grupurile funcționale de programe. Ele pot fi clasificate ca erori de setare
incorectă a problemei. Erorile algoritmice se manifestă în contabilizarea
incompletă a intervalelor de variație a variabilelor, în evaluarea incorectă a
acurateței valorilor utilizate și obținute, în contabilizarea incorectă a relației dintre
diferite variabile, în reprezentarea inadecvată a condițiilor formalizate pentru
rezolvarea unei probleme în specificații sau schemele care urmează să fie
programate etc. Aceste circumstanțe sunt motivul faptului că pentru a corecta
fiecare eroare algoritmică este necesar să se schimbe mult mai mult decât în cazul
erorilor software.