Documente Academic
Documente Profesional
Documente Cultură
1
CAPITOLUL 1
METODE ȘI TEHNICI DE MONITORIZARE A CALITȚII
Metodolgia Agile descrie un set de principii și practici în scopul livrării produselor de tip
software. Ceea ce descriem noi ca fiind agile în prezent a apărut în urmă cu mult timp, mai precis
în urmă cu cateva decenii. Departamenul de Apărare al Statelor Unite împreună cu NASA au
început să utilizeze dezolvatea iterativă și incrementală încă din anii 1950 sau IID. IID se baza pe
construcția unui sistem caracterizat de executarea mai multor iterații într-o singură secventă,
1
Ash, L., (2003). The web testing companion, Editura Wiley Publishing, Inc, pag 324
2
fiecare iterație conținând lansarea unor noi funcționalități. IID este o metdă extrem de flexibilă,
deoarece multe decizii pot fi luate chaiar în timpul dezvoltării.
În 1960 Evolutionary project management recomandă dezvoltarea în iterații care se întind
pe una sau două săptămâni, în scopul de a livra părți din produs la finalul fiecărei iterații. Ideea
de livrare parțială mai devreme se face pentru a îmbunatăți proiectul la nivel de ansamblu,
deoarece livrând parțial și mai devreme, și feedback-ul vine mai devreme iar acest lucru ajută
echipa să își îmbunătățească tehnica, modul de lucru și cel mai important, să livreze părți din
proiect din ce în ce mai apropiate de ceea ce își dorește clienul. Explicând și aplicând acest
concept, Evolutionary project management demonstreaza că dezvoltarea incrementală, iteratvă,
care generează feedback din partea clientului pe parcurs sunt elemente ale dezvoltării de
software Agile.
Deși metda de lucru Agile a luat naștere din anii 50, abia recent, în ulimii ani una din
șapte companii producătoare de software au început să aplice practicile Agile. Pentru a înțelege
mai din conceptul Agile, să ne imaginăm „abordarea rugby”: în „abordarea rugby” membrii
echipelor dedicate, organizați singuri, lucrează împreună pentru obținerea mingiei în joc, în
scopul de a înscrie un gol pentru echipă.
Agile este o metodologie utilizată de marii producători de pe piața IT: Oracle, IBM,
Microsoft, și nu numai. Din ce în ce mai multe companii adoptă această metodă de lucru de la un
an la altul, evident – metodă adaptată în funcție de nevoile lor. Conform studiilor efectuate de
către specialiști, rata de ducces este următoarea:
- Proiectele Ad-hoc au o rată de success de 49%, 37% sunt contestate iar 14% sunt un
adevărat eșec
- Proiectele iterative, agile au o rată de success de 61%, 28% sunt contestate si doar
11% sunt considerate ca fiind eșuate
Agile înseamnă echipe formate dintr-un număr mic de membri, care lucrează pentru un
scop comun, care colaborează și au ca scop livrarea frecventă, incrementală a unor funcții noi din
cadrul unei aplicații, priotitizare în funcție de diverși factori (nevoie, timp, resurse financiare,
resurse umane). Dezvoltarea iterativă se face în conformitate cu viziunea utilizatorului final și
bazându-se pe feedback-ul clientului. În metodologia Agile scopul princilpal este de a produce
un soft valoros, care să merite efortul.
În cadrul firmelor producătoare de software, managerii de proiect, cei care ghidează și
urmăresc întreaga activitate a proiectelor, se luptă cu trei factori importanți:
- Să livreze la timp, fără întârzieri
- Echipa să își descfățoare activitatea bazându-se pe niște costuri minime
3
- În final, scopul proiectului să fie atins, toate cerințele să fie acoperite
Alte constrângeri ale managerilor de proiect sunt satisfacerea clientului, eventualele
riscuri și calitatea produsului care urmează a fi livrat.
Metodologia Agile ascunde sub umbrela sa mai multe practici, în ideea de a veni în
sprijinul mai multor tipuri de proiecte, în funcție de nevoile echipei în raport cu activitatea în
sine pe care ar trebui să o desfășoare, și bineînțeles, în raport cu nevoile clientului:
- Scrum
- XP (Extreme Programming)
- The Crystal Family
- Kanban2
Principii:
1. Cea mai mare prioritate este satisfacerea clientului prin din timp și continuă a unui
software valoros.
2. „Îmbrașișați” schimbarea cerințelor, chiar dacă sunteți într-o fază avansată a
dezvoltării. Procesul Agile valorifică schimbarile în scopul avantajului competitiv al
clientului.
3. Livrează părți din softul la care lucrezi cu o frecventă de câteva săptămni, chiar și de
câteva luni, de preferat la o scală de timp cât mai redusă.
4. Analiștii și dezvoltatorii trebuie să lucreze îmrepuna, zilnic, până la finalul
proiectului.
5. Construiește-ți proiectul înconjurat de oameni motivați. Ofera-le un mediu de lucru
plăcut și suportul necesar, și oferă-le încrederea ta că vor termina la timp și vor face o
treabă excelentă.
6. Cel mai eficient mod de a transmite informații și de a dezbate anumite subiecte este
printr-o conversație față în față.
7. Softul la care lucrezi reprezintă măsura progresului.
8. Procesul Agile promovează o dezvoltare sustenabilă.
9. Investitorii, dezvoltatorii și utilizatorii trebuie să se afle în armonie.
10. Atenția continuă asupra unei tehnici excelente și asupra unui design bun crește
agilitatea
11. Simplitatea reprezintă arta maximizarii volumului de muncă nefăcut – este esențială.
2
Goodpasture, J., 2016. Project Management the Agile Way, Editura J.Ross pag 17
4
12. Cea mai bună arhitectură, cele mai bune cerințe și cel mai bun design reies din munca
echipelor auto-organizate.3
13. La intervale de timp regulate, echipa reflectă împreună asupra conceptului de cu să
devina mai buni, mai eficienți, apoi membrii echipei iau măsuri în concecință, de
comun acord. 4
Scrum master-ul este acea persoană responsabilă ca Scrum să fie înțeles și adoptat
corect în cadrul echipei. Scrum Master-ul face acest lucru asigurându-se că Echipa Scrum aderă
la teoria, practicile și rolurile Scrum.Scrum Master-ul este un servitor-conducător (servant-
leader) pentru Echipa Scrum. Scrum Master-ul îi ajută pe cei din afara Echipei Scrum să
înțeleagă care din interacțiunile lor cu Echipa Scrum sunt folositoare și care nu. Scrum Master-ul
ajută pe toată lumea să schimbe aceste interacțiuni astfel încât să maximizeze valoarea creată de
Echipa Scrum.5 El decide care este cea mai potrivită persoană pentru o anumită activitate din
cadrul echipei.
3
4
Larman, C. , (2003). Agile and Iterative Development: A Manager's Guide, Editura Addison Wesley, pag. 10
5
Fătulescu, C., (2014). Ce înseamnă să fii Scrum Master? Care sunt responsabilitățile și abilitățile necesare
îndeplinirii cu succes a unui astfel de rol?, [online]. Disponibil la http://www.cornel.fatulescu.ro/educatieit/ce-
inseamna-sa-fii-scrum-master-care-sunt-responsabilitatile-si-abilitatile-necesare-indeplinirii-cu-succes-a-unui-astfel-
de-rol_2.html [Accesat 8 Apr. 2017].
5
Echipa este formată din două categorii de persoane:
- Persoane care ajută la construirea sau la managerierea proiectului, de exemplu: testeri,
programatori, product owner, scrum master.
- Persoane care au interes cu privire la proiectul în lucru dar care nu au niciun fel de
responsabilitate în cadrul lui, de exemplu: utilizatorii finali, clientul, managerii.
Echipa trebuie să aibă în structura sa persoane cu toate calitățile tehnice necesare relizării
proiectului. Membri echipei trebuie să aibă o comunicare bună, de preferat să lucreze în același
birou, să fie entuziaști și să aibă spirit de echipă
Pentru a înțelegere cât mai bună a modului de lucru am ales să exemplific organizarea și
modul de lucru în cadrul practicii Scrum din metodologia Agile. Să ne imaginăm următorul
scenariu: în cadrul unei firme producătoare de software sunt angajate numeroase persoane, pe
diferite poziții:
- 5 analiști și un team leader
- 30 de programatori și un team leader
- 6 testeri și un team leader
- 1 manager de proiect
Deși angajații fac parte din cate o echipă (echipa de analiză, echipa de
programare/dezvoltare, echipa de testare) și au diverse activități în cadrul acestor echipe, ei sunt
implicați și in câte o echipă agilă, astfel:
- un analist care va fi o punte între ceea ce își dorește clientul și ceea ce urmează a fi
dezvoltat
- 4 sau 5 dezvoltatori, în funcție de necesități
- 1 sau 2 testeri, în funcție de necesități
- 1 manager de proiect care va avea întotdeauna p privire de ansablu asupra tuturor
proiectelor
- 1 scrum master
6
- În prima fază sunt structurate cerințele clientului, adaptate la condițiile de lucru și la
resursele avute la dispoziție
- În a doua fază se formulează specificațiile tehnice ale proiectului
- În a treia fază se concepe design-ul aplicației
- În ultima fază se face implementarea în conformitate cu cerințele survenite din fazele
anterioare
Odată finalizată una dintre faze, se face trecere către faza următoare, fără posibilitatea de
a reveni la oricare dintre fazele precedente.
Unul dintre termenii care sunt total excluși din această metodologie este flexibilitatea.
Din cauza faptului că pe parcursul proiectului nu sunt permise modificări și abateri de la planul
inițial, poate genera probleme grave pe parcurs, sau chiar în finalul proiectului. În astfel de
proiecte gigant, dezvoltate în cascadă există riscul ca în final să se ajungă la concluzia că
proiectul rezultat nu este ceea ce și-ar fi dorit clientul, iar acest lucru este cauzat de comunicarea
aproape inexistentă dintre client, echipa de producție și utilizatorul final între faza de planificare
și faza de livrare.
Cel mai mare dezavantaj al acestei practici este faptul ca feedback-ul, de regulă era
colectat de la client foarte târziu, abia în faza de acceptanță a proiectului (adică în faza de pre-
release) sau chiar după faza de release, după ce proiectul are să ajungă în producție și să fie
utilizat de utilizatorii finali. Astfel, în cazul în care în etapa de stabilire a design-ului sau în faza
de dezvoltare vor apărea ceva probleme, clientul poate să le sesiseze și să își exprime
nemulțumirile abia după faza de release. În cazul în care anumite modificări ar fi trebuit realizate
(spre exemplu s-a descoperit o lipsă de funcționalitate, neidentificată în faza de planificare, și se
7
dorește implementarea acesteia) pot avea un impact major asupra proiectului. Impactul se poate
reflecta în două sfere:
- În preț, deoarece orice modificare efectuată atât de târziu va presupune în primul rând
timp cheltuit. Este posibil ca în faza post release membrii echpei să fie deja focusați pe un
alt proiect, și este destul de dificil să se defocuseze de la munca actuală și să își
amintească proiectul precedent. Acest lucru ar însemna și o abatere serioasă de la planul
initial.
- În calitatea proiectului. Dacă se adaugă funcționalități noi într-o fază atât de înaintată a
proiectului, este posibil ca aceste modificări să impacteze mult mai multe zone la care
membrii echipei nu se pot gândi și pot genera erori sau defecte ale aplicației.
În metoda de lucru Agile se păstrează toate etapele din metoda de lucru tradițională, însă
se urmărește dezvoltarea în iterații. Astfel, release-ul (adică punerea în producție) se va face
după mai multe iterații.
O iterație poartă denumirea de sprint. Fiecare sprint conține o fază de planificare, în care
sunt stabilite niște obiective pe termen ceva mai scurt spre deosebire de planificarea din
metodologia tradițională, se stabilește design-ul doar pentru o parte din aplicație ce urmează a fi
dezvoltată și testată. Avantajul major în această metodologie este acela că, eventualele probleme
ce vor fi identificate vor fi „prinse” din timp de către echipa de testare sau chiar de către client și
8
sunt rezolvate fie în iterația curentă, fie într-o iterație următoare, în faza de release ajungându-se
cu o versiune a aplicației cât mai apropiată de ceea ce și-a dorit clientul.
Momentul în care sunt identificate erorile și/sau defectele este cel mai important: cu cât
trece mai mult timp de la apariția unei erori sau a unui defect până la descoperirea, raportarea,
resolvarea si testarea acestuia, cu atât costurile pot crește și problemele create vor afecta și mai
mult comportamentul aplicației. Acest lucru va crește totodată timpul de lucru, evetual numărul
membrilor echipei și va genera conflicte între producător și client. Atâta timp cât clientului i se
vor livra mai puține funcționalități de aplicație însă vor fi mai dese, această practică va genera
feedback progresiv, aducând un aport major pentru întregul proiect.
În ultimii ani din ce în ce mai multe companii producătoare de software încep să
îmbrățișeze metodologia Agile, în detrimentul metodologiei Waterfall din cauza faptului că
medoda cascadă nu aduce un mare succes.
Estimarea sarcinilor este cheia către succesul proiectului. Este esențial ca membrii
echipei să dețină capabilitatea de a estima obiectiv sarcinile care vor intra în sprint și să poată să
aproximeze volumul de sarcini pe care îl pot livra în finalul sprintului.
În metodele de lucru tradiționale, de regulă estimările se face pe baza a cum ar trebui să
decurgă lucrurile în cazurile ideale, însă întotdeauna vor apărea variabile din cauza cărora nu se
vor putea garanta estimările inițiale.
Echipele agile văd lucrul la proiect ca pe o misiune a întregii echipe. Ei se gândesc la
efortul cumulat de care este nevoie pentru a finaliza sarcinile și la complexitatea și suma
concentrării susținute necesare pentru finalizarea sarcinilor din echipă. 6 De exemplu, poate să
dureze o oră pentru a schimba o anvelopă și o oră pentru a reîncărca cutia de siguranțe din
subsol, însă există o diferență majoră înre complexitatea si dificultatea celor două sarcini.
Dificultatea în a reîncărca cutia de siguranțe și a o testa este mult mai mare decât dificultatea
schimbării unei anvelope si a testării ei.
Pentru că echipa se comite că va termina sarcinile ca o entitate comună, este evident că
vor căuta o cale să evidențieze relația dintre sarcini si dificultatea lor.
Story point
Reprezintă un număr care indică mărimea relativă a unei unități de lucru raportată la o
referință mică. Story point-urile reprezintă o unitate de măsură foarte utilă pe termen lung.
6
Barbee, D., 2013. Agile Practices for Waterfall Projects, Editura J.Ross pag 107
9
Reprezintă probabil cea mai utilizată unitate de măsură din cadrul proiectelor agile. Estimarea în
story points reprezintă defapt o combinație între volumul de efort și complexitatea sarcinii.
Pentru o interpretare comună, story point-ul are o definiție dată în cadrul companiei.
Astfel , la nivel de companie va fi mult mai ușor de înteles și de interpretat dificultatea unei
sarcini dacă toată lumea se raportează la aceeași unitate de măsură.
De exemplu un story point poate fi echivalentul unei interogări în baza de date care face
legături între mai multe tabele. În evaluarea unei sarcini să presupune că se votează trei story
point-uri, asta însemnănd că efectuarea acelei sarcini este de aproximativ trei ori mai dificilă
decât o interogate în baza de date care face legături între mai multe tabele.
Această modalitate de estimare ajută și la raportare. Spre exemplu, la final de an se pot
face evaluările echipelor pe baza numărului de story point-uri livrate pe an. De aici poate rezulta
fie că în cadrul unor echipe se dezvoltă task-uri mai dificile, fie că unor echipe le consumă mai
puțin efort realizarea unor sarcini mai dificile.
Planning poker
Folosește șirul de numere al lui Fibonacci ușor adaptat în scopul de a estima cât de
dificilă va fi efectuarea unei sarcini, indiferent de durata de timp. Pentru planning poker avem
numerele 0,1,2,3,5,8 și 13. Au fost adăugate arbitrar numerele 20,40 și 100. Utilizând planning
poker se urmărește evitarea pierderii de timp cu estimările exacte. Scopul principal este acela de
a forma o idee relativă despre volumul de sarcini care poate fi livrat într-o iterație. 7
Pentru
planning poker, fiecare membru al echipei are la dispoziție un set de cărți cu numerele
menționate anterior, și, după ce s-a discutat sarcina care urmează să intre în lucru fiecare
membru al echipei arată câte o carte care să reflecte aprecierea lui cu privire la dificultatea
sarcinii (fiecare punct înseamnă câte un story-point).
7
Barbee, D., 2013. Agile Practices for Waterfall Projects, Editura J.Ross. pag 111
10
Status zilnic (daily scrum)
Într-un sprint, în metoda de lucru Agile fiecare echipă lucrează independent de celelalte și
are cobiective individuale. Din cauza independenței dintre echipe este destul de dificil să se
menționă transparența în cadrul proiectului. De aceea fiecare echipă face zilnic o ședință scurtă
de status, de 10 minute, ședință la care participă toți membrii echipei. Această ședintă se numește
daily scrum. Are loc în fiecare zi la aceeași oră, în același loc. Fecare membru al echipei trebuie
să răspundă la 3 întrebări:
- Ce a făcut în ziua precedentă
- Care sunt blocajele care îl împiedică să își desfășoare activitatea
- Ce va face în ziua curentă
Scrum of scrums
După ce fiecare echipă face ședința de status zilnic, are loc o altă ședință, tot de 10
minute la care participă doar scrum masterii fiecărei echipe și în care fiecare răspunde pe scurt la
aceleași trei întrebări, însă din punct de vedere al întregii echipe. Această ședință poartă
denumirea de scrum of scrums și are loc în fiecare zi la aceeași oră și în același loc. Această
ședință ajută la menținerea transparenței între echipe.
11
Această prezentare are în primul rând un rol de informare, dar și un rol de îmbunătățire. La
sesiunile de demonstrare de regulă se primește feedback valoros cu privire la sarcinile încheiate.
Astfel, datorită feedback-ului, pe viitor membrii echipei vor dezvolta funcționalități mult mai
aproape de necesitățile clientului sau ale altor membri din cadrul companiei.
Retrospectivă
În finalul sprintului echipa se întâlnește pentru o scurta analiză a sprintului care tocmai s-
a încheiat. În baza unei discuții libere sunt punctate lucrurile care au mers bine, lucrurile care au
mers prost și îmbunătățirile care se pot avea în vedere pe viitor. Această analiză ajută membrii
echipei să elimine orice frustrări acumulate pe parcurs și să înceapă un nou sprint în care nu vor
mai repeta aceleași eventuale greșeli.
Se poate întâmpla ca în unele echipe, membrii să nu fie dornici să se exteriorizeze și să își
spună punctul de vedere de față cu ceilalți. În astfel de cazuri se pot aplica diverse practici care
sa colecteze feedback-ul de la membrii echipei pe parcurs. Spre exemplu, fiecare membru al
echipei poate face bilețele pe care să puncteze ce a mers bine, ce a mers prost și ce are loc de
îmbunătățiri și să le adauge într-o cutie comună, la daily-scrum sau chiar înainte de începerea
retrospectivei. Scrum master-ul va fi cel care le citește și astfel vor începe diverse dezbateri pe
baza bilețelelor scrise pe parcurs. Această practică este foarte apreciata, mai ales că, până în
finalul sprintului se uită o parte din lucrurile care nu au mers conform planului inițial.
Planificare
După demonstrare și retrospectivă echipa se întânește pentru a planifica sarcinile din
sprint-ul următor. Product owner-ul vine și prezintă sarcinile care vor intra în sprint. Pe baza
acestor sarcini au loc diverse dezbateri pentru stabilirea soluției, după care se fac estimările în
story point-uri.
Velocitate
Se poate întâmpla ca product owner-ul să propună pentru sprint-ul următor prea multe
sarcini. Astfel, pe baza numărului cumulat de story point-uri, scrum master-ul poate menționa că
echipa nu mai are capacitate de lucru, restul de task-uri urmând să fie dezvoltate în sprint-ul
următor. Velocitatea reprezintă capacitatea măsurată a echipei de a livra. 8
8
Barbee, D., 2013. Agile Practices for Waterfall Projects, Editura J.Ross pag 124
12
CAPITOLUL 2
CONTROLUL CALITĂȚII
9
Stanciu, C., Fometescu, I., L., Chiru, L., Sevan, I., L., (2008). Manualul consumatorului de alimente. București:
Editura Oscar Print.
10
Toma, J., (2006). SR EN ISO 9000:2006 – Sisteme de management al calităţii. Principii fundamentale şi
vocabular. Revista Standardizarea, [online]. Disponibil la
http://standardizarea.ro/revista_standardizarea/Iunie2006.pdf [Accesat 2 Mar. 2017].
13
producătoared de software este etapa de testare a produsului. Fie că este vorba despre un
program, o aplicație sau un site, înainte de faza de lansare a proiectului este nevoie de un proces
bine stabilit și bine executat de testare.
“Testarea este procesul prin care se execută un program cu intenția de a găsi erori.” 11
Testarea este una dintre etapele importante în dezvoltarea produselor software prin care se poate
evalua și îmbunătății calitatea acestuia. Prin urmare, scopul testării este detectarea sistematică a
diferitelor clase de erori în cel mai scurt timp posibil și cu un minim de efort.
Una dintre caracteristicile testării este aceea că pune la dispoziție o viziune independentă
și obiectivă cu privire la produsul software ce se află în primele faze ale dezvoltării.
Testarea este importantă deoarece oricine poate greși în dezvoltarea unui produs
software. Unele dintre aceste greșeli sunt lipsite de importanță, iar unele pot influența foarte mult
modul în care produsul se dezvoltă. Este nevoie să se verifice mereu ceea ce se dezvoltă pentru a
se asigura un nivel ridicat de calitate.
Din moment ce se prespune că se poate greși în implementarea unui produs software, toți
programatorii ar trebui să-și verifice codul. De cele mai multe ori programatorului îi scapă
erorile deoarece știe cum trebuie să funcționeze sistemul și nu are o vedere obiectivă asupra
activității sale. Ideal este ca altcineva să verifice activitatea programatorului, în speță testerul.
Testarea software este foarte importantă din urmatoarele motive:
Este foarte necesar ca defectele și erorile care au fost făcute în timpul fazei de dezvoltare
să fie găsite.
Este important să fie asigurată calitatea produsului software. Un produs de calitate ajută
la câștigarea încrederii beneficiarului aplicatiei sau utilizatorului final.
Asigurarea ca aplicația nu are erori, deoarece acestea pot fi foarte costisitoare în viitor
sau în etapele finale de dezvoltare.
Costul erorilor:
Eroarea este „o acțiune provocată de om care produce un rezultat incorect. Erorile pot
apărea în orice fază a ciclului de dezvoltare.
Defectul (bug-ul sau problema) într-o componentă a sistemului poate determina sistemul
să nu mai funcționeze conform cerințelor și așteptărilor clientului, ba chiar este posibil ca întreg
sistemul să nu mai funcționeze.”12
11
Myers, G., Sandler, C., Badgett, T., (2012). The Art of Software Testing . Editura 3rd Edition, pag. 112
12
Buwalda, P., (2010). Basics of Software Testing. Editura Quality House, pag. 11
14
Un defect este orice comportament neașteptat al aplicației; softul face ceva ceea ce
utilizatorul consideră că nu este bine. Poate fi o deviație de la specificațiile funcționale furnizate
de către product owner. 13
Un singur defect poate cauza un cost foarte mic, sau chiar un cost de milioane.
Dacă luăm drept exemplu un design necorespunzător al unui raport, afișarea datei nu se
face în formatul dorit, acest defect poate fi catalogat drept un cost foarte mic. Impactul este
minimal. În schimb, valoare greșită dintr-un raport poate costa milioane.
Pe de altă parte, erorile unor sisteme pot cauza chiar pierderi de vieți omenești. Spre
exemplu, o defecțiune a sistemului de control al traficului aerian. În general, testarea nu este
exhaustivă, însă pentru aceste domenii, cele care pot impacta viețile oamenilor se încearcă
efectuarea unei testari exhaustive, care să acopere aproape tot sistemul.
Creșterea costurilor cauzate de defecte crește proporțional cu trecerea prin fazele
succesive ale dezvoltarii. Cu cât un defect este identificat mai devreme, cu atât costurile de
reparare sunt mai mici. Spre exemplu, dacă un defect este identificat încă de la începutul
proiectului, de la faza de cerințe, costul de reparare este aproape 0. Dacă defectul este identificat
în timpul dezvoltării, în primele faze, costul de reparare este foarte mic, ca și timp și ca și preț.
Însă dacă un defect este identificat post-producție, costurile pentru rezolvarea lui pot fi majore,
atât ca timp, cât și financiar vorbind. Rezolvarea defectelor în etapa post-producție de asemenea
pot genera și alte probleme în alte zone ale sistemului.
Modelul pentru escalarea costurilor:
Costul corectării unui defect poate fi demonstrat grafic cu ajutorul modelului pentru
escalarea costurilor. Costul corectării unui defect crește alarmant de la o etapă la alta. În industria
testării de software este general acceptat faptul că, costurile pentru fixarea defectelor vor crește
10% odată cu depășirea unei etape de dezvoltare a proiectului.
13
Ash, L., (2003). The web testing companion, Editura Wiley Publishing, Inc, pag 16
15
Figura 2.1 – Fazele testării
Sursa: Buwalda, P., (2010). Basics of Software Testing. Editura Quality House, pag. 11
Unde:
UR = cerințele utilizatorului
FS = specificații funcționale
TS = specificații tehnice
UAT = testare de acceptanță a utilizatorului
Cauzele defectelor:
Sunt multe cauze prin care în produsele software pot fi introduse defecte sau bug-uri. Cea
mai comună cauză este eroarea umană în proiectarea și implementarea produsului. Pe lângă
aceasta mai pot fi enumerate câteva cauze:
Comunicare greșită. Acest factor se poate interpreta în diferite feluri: lipsă de
comunicare sau comunicare incorectă, poate apărea atunci când cerințele sunt incomplete
sau neclare.
A face greșeli este un lucru natural, care ni se întâmplă tuturor. Testarea ne ajută să
identificăm greșelile. Asigurarea calității sau programele de îmbunătățire ne ajută să
învățăm din aceste greșeli și să nu le mai repetăm pe viitor.
Presiunea dezvoltării unui proiect cu constrângeri legate de timp, de buget, de resurse
sau de deadline vor crește probabilitatea ca noi, oamenii, să facem greșeli.
Timp de dezvoltare ireal. În această situație se poate ajunge când testerul nu are
suficiente informații despre produsul pe care îl testează și aplicația este livrată foarte des.
Acest lucru poate duce la un produs cu un nivel scăzut de calitate și cu multe defecte.
16
Erori de programare. Programatorii, ca oricine altcineva, pot face greșeli; cei mai puțin
experimentați sau fără cunoștințe în domeniul ales sunt succeptibili erorilor în timpul
implentării. Lipsa practicii de implentare simple, testarea unitară, metodele de debug sunt
cele mai comune motive prin care sunt introduse bug-uri în fazele de dezvoltare.
Schimbarea cerințelor. Utilizatorul final se poate să nu înțeleagă efectul schimbărilor sau
să-l înțeleagă și să le dorească oricum. Indiferent de dimensiunea schimbărilor, acestea
pot influența părți ale sistemului de altfel fără o legatură directă, introducând defectele de
regresie.
- Cazul de test trece din statusul de neexecutat în statusul Trecut dacă rezultatele așteptate
sunt îndeplinite, în conformitate cu datele de intrare.
- Cazul trece din statusul neexecutat în statusul Picat dacă rezultatele așteptate nu sunt
îndeplinite, în conformitate cu datele de intrare. Pentru acest caz este necesară
argumentarea prin înregistrarea unui defect a motivului pentru care a fost picat cazul de
test.
- Cazul trece din statusul neexecutat în statusul Blocat dacă pe parcursul rulării cazului de
test se identifică un defect blocant, care împiedică continuarea rulării cazului de test curent
sau a cazurilor de test ulterioare. Pentru acest caz este necesară argumentarea prin
înregistrarea unui defect cu statusul blocat, a motivului pentru care a fost blocat cazul de
test.
- Cazul trece din statusul neexecutat în statusul Invalid,dacă pe parcursul rulării se remarcă
faptul că testul în lucru nu mai poate fi executat conform noilor specificații.
Toate defectele și erorile identificate la rularea cazurilor de test vor fi înregistrate, pentru
a argumenta astfel de ce cazul de test a fost picat. Este esențial ca testerul care rulează cazurile
de test să facă o legătură între cazul testat și defectul sau eroarea identificată. Toate defectele și
erorile identificate vor fi fixate de către echipa de dezvoltare. După fixarea lor, va fi necesară
retestarea defectului și reparcurgerea cazului de test.
Un plan de test este un document care descrie care este scopul testării și care sunt
activitățile care vor fi desfățurate în această fază. „Un plan de test trebuie să specifice cum este
aplicată strategia de testare și cu se va efectua testarea softului. Trebuie să identifice toate
excepțiile strategiei de testare și toate celelalte programe cu care software-ul care va fi testat va
18
iteracționa în timpul execuției” 16. De asemenea trebuie să specifice care sunt toate resursele
necesare din această fază și care este graficul activităților ce urmează a fi desfășurate.
Exemplu:
- Numele produsului
- Pregătit de (numele persoanei/persoanelor, data)
- Cuprins
1.0 Introducere
2.0 Obiective și sarcini
2.1 Obiective
2.2 Sarcini
3.0 Scop
4.0 Strategia de testare
4.1 Testare la nivel de unitate de cod
4.2 Testare de integrare
4.3 Testare de performanță
4.4 Testare de acceptanță
4.5 Testare automata
5.0 Graficul activităților
6.0 Controlul procedurilor
7.0 Funcționalități care vor fi testate
8.0 Funcționalități care nu vor fi testate
9.0 Resurse/roluri, responsabilități
10.0 Departamente impactate
11.0 Dependințe
12.0 Riscuri
13.0 Instrumente folosite
14.0 Aprobări17
16
Buwalda, P., (2010). Basics of Software Testing. Editura Quality House, pag 30
17
Thomas, R., (2006). Test plan sample: SoftwareTesting and Quality assurance Templates, [online].
Disponibil la http://www.softwaretestinghelp.com/test-plan-sample-softwaretesting-and-quality-assurance-
templates/ [Accesat 8 Apr. 2017].
19
care în etapa de testare sunt identificate mai multe defecte, se poate realiza o prioritizare a
acestora, în funcție de diverse aspecte, cum ar fi: în funcție de severitate, de dificultate, de
categorie. În plus, în diverse etape ale proiectului sau chiar în finalul lui se pot construi diverse
statistici pe baza defectelor identificate. Presupunând că în prima etapă a proiectului a fost
identificat un număr mare de defecte, în finalul acestei etape se poate realiza o retrospectivă în
baza numărului de defecte, analizând în cadrul echipei ceea ce nu a mers bine, de ce a apărut un
număr așa de ridicat de defecte și cum se poate îmbunătăți activitatea din faza de dezvoltare
pentru ca în faza de testare să fie identificat un număr cât mai redus de defecte.
În cadrul fiecărei companii se impune un anumit șablon pentru înregistrarea defectelor.
Când se identifică un defect este esențial ca persoana care l-a identificat să își amintească ce a
cauzat problema. Această instrucțiune poate părea evidentă, însă identidicarea cauzei și a pașilor
pentru a reproduce problema reprezintă cel mai important punct pentru a putea reproduce
defectul.18 În general, la înregistrarea unui defect trebuie enumerate următoarele elemente:
20
Ridicat
Urgent
Imediat
Cele mai multe defecte sunt raportate cu prioritate Normal. Prioritățile Ridicat, Urgent,
Imediat ar trebui folosite numai în cazuri excepționale.
- Categoria – ar trebui să existe o opțiune de selecție dintre mai multe categorii. În funcție
de categorie se pot face diferse filtrări customizate (spre exemplu, în finalul uneia dintre
fazele proiectului se poate face o filtrare după categoria Prețuri pentru a vedea câte
defecte au fost identificate în această zonă).
- Severitatea – măsoară cât de devastatoare pot fi efectele unui defect. Severitatea descrie
care este impactul asupra unui client – reprezintă riscul și vizibilitatea. 20
- Cine a identificat defectul – defectele pot fi identificate în diverse etape ale proiectului
și de diverse echipe: pot fi identificate de către echipa de testare, în timpul etapei de
testare sau pot fi identificate ulterior acestei etape, adică în producție, fie de către alte
echipe din companie, fie de către utilizatorii finali. Este esențială această mențiune și nu
doar pentru raportare, ci și pentru proces. Defectele identificate de către utilizatorii finali
vor fi tratate cu prioritate, indiferent de prioritatea marcată la înregistrarea defectului.
Pentru transparență și pentru o raportare cât mai eficientă se recomandă utilizarea unor
sisteme speciale pentru înregistrarea defectelor (numite si bugtracking tools). Cu ajutorul lor, nu
numai că înregistrarea defectelor se va face complet, corespunzător, urmând un șablon standard,
cu elemente obligatorii de completat, însă vor ajuta și la filtrarea defectelor în funcție de anumite
criterii, în funcție de necesități.
Exemple de sisteme de bugtracking: RedMine, Mantis, Application Lifecycle
Management, etc. Toate sistemele de bugtracking pot fi configurate astfel încât să fie pliabile pe
nevoile proiectului.
Doar raportarea unui defect sau a unei erori nu este suficientă. Faptul că un defect sau o
eroare a fost raportată nu aduce niciun plus în cadrul procesului dacă defectul sau eroarea nu va
fi rezolvată de echipa de dezvoltare. Prin urmare, defectele și erorile au un întreg ciclu de viață.
În momentul adăugării unui defect în sistemul de bugtracking acesta va dobândi un
status: Nou. Ulerior, defectul va fi preluat de către echipa de dezvoltare în vederea fixării lui și
va dobândi statusul: In progres. Din această fază există doua posibile statusuri ulterioare:
- Rejectat – în cazul în care defectul s-a fixat anterior
20
Ash, L., (2003). The web testing companion, Editura Wiley Publishing, Inc, pag 33
21
- Rezolvat – în cazul în care defectul a fost fixat
Din momentul în care defectul a fost marcat ca rezolvat, acesta poate fi preluat din nou
de către echipa de testare în vederea verificării fixului. Statusul defectului va deveni: În testare.
După ce testerul finalizează testarea defectului, exista două posibile statusuri:
- Redeschis – în cazul în care defectul initial încă se reproduce sau nu a fost fixat în
totalitate
- Testat – în cazul în care defectul a fost fixat
Dacă defectul a fost redeschis, va trece din nou în progres pentru a fi rezolvat.
Dacă defectul fost testat, va ajunge la un manager de release care va valida calitatea
codului scris și valida faptul că a fost respectat standardul de scriere a codului impus în cadrul
companiei. În cazul identificării unor neconformități, managerul de release va putea să
redeschidă defectul pentru a reintra în procesul de fixare. În cazul în care codul este în regulă,
defectul va trece în statusul Închis. Odată cu închiderea defectului, fixul pentru acesta va ajunge
în mediul de producție.
21
Buwalda, P., (2010). Basics of Software Testing. Editura Quality House, pag 54
22
celălalt modul va face încărcarea rezultatelor studenților. Deși ambele module sunt dezvoltate
separat, acestea vor fi testate unul câte unul iar această metodă definește testarea de componente.
Testarea de sistem reprezintă procesul prin care se efectuează testarea tuturor sistemelor
din aplicație integrate pentru a verifica faptul că, sistemul integrat este în conformitate cu
cerințele. 22
22
Buwalda, P., (2010). Basics of Software Testing. Editura Quality House, pag 62
23
Figura 2.5 – Testarea de sistem
Sursa proprie
2.3 Tehnici de testare:black box testing, white box testing, smoke testing,
testare de regresie, re-testare, testare de performanță, testare de stres, testare
de securitate, testare de mentenanță
Black box testing: este testare funcțonală, fără a face referire la structura internă a
compenentelor din cadrul sistemului. 23 Această tehnică de testare are la bază testarea funcțională
și urmărește ce face sistemul, nu cum face. Făcând analogia cu conducerea unui autoturism,
backbox testing este echivalunt cu a conduce mașina. Utilizatorul știe să conducă mașina însă nu
știe (neapărat) ceea ce se întâmplă sub capota mașinii în timpul deplasării.
În cadrul acestui tip de testare, testerul introduce date în aplicație urmărește output-ul
cazului testat. Practic, testerul urmărește ca datele de ieșire să fie în conformitate cu rezultatul
aștepat. Persoana care efectuează acest tip de testare nu trebuie să cunoască structura tehnică a
proiectului, ci trebuie să pornească de la premisa: Codul trebuie să conțină erori.
Avantaje ale testării blackbox:
23
Buwalda, P., (2010). Basics of Software Testing. Editura Quality House, pag 116
24
- Persoana care efectuează testarea nu trebuie (neapărat) să dețină informații tehnice,
precum limbaje de programare
- Cazurile de test sunt concepute din prisma utilizatorului, astfel cresc șansele unei evaluări
obiective a comportamentului în raport cu specificațiile
- Cazurile de test pot să fie construite după ce se stabilesc specificațiile, adică într-o fază
incipientă a proiectului
White box testing: este testarea bazată pe analiza structurii interne a componentelor din
cadrul sistemului. 24
În această tehnică de testare cazurile de test sunt construite pe baza
cunoștiințelor detaliate ale funcționării interne a sistemului, adică pe baza cunoașterii codului. În
cazul acesta accentul pică pe cum lucrează sistemul. Făcând analogia cu conducerea unui
autoturism, whitebox testing este echivalent cu a verifica motorul de către un mecanic după ce a
fost fixată o problemă a acestuia.
Smoke testing: Această tehnică de testare caută să evidențieze dacă produsul este
funcțional înainte de a efectua testarea detaliată a acestuia. Practic sunt validate modificările
făcute asupra codului înainte de rularea cazurilor de test propuse. Acest tip de testare urmărește
ca, cu un efort minim să fie identificate defectele severe. Testele de acest gen se focusează
24
Buwalda, P., (2010). Basics of Software Testing. Editura Quality House, pag 116
25
exclusiv pe modificările aduse în noua versiune a soft-ului. Prin rularea unei suite de smoke test
nu este garantată calitatea, ci doar se validează faptul că softul este încă funcțional după ultimele
modificări, nu are defecte blocante, deci poate fi începută etapa următoare de testare. În cazul în
care există defecte blocante, care împiedică începerea etapei urătoare de testare, versiunea de soft
curentă poate fi respinsă de către echipa de testare, în vederea rezolvării cu prioritate a defectelor
blocante de către echipa de dezvoltare.
Testare de regresie: Testarea de regresie se efectuează fie în finalul unei iterații, fie în
finalul proiectului, fie după retestarea unui defect. Motivul pentru care este necesară testarea de
regresie este că, după numeroase defecte identificate este posibl ca fixurile pentru acestea să
genereze alte defecte sau erori. În timpul testării de regresie practic se testează „în mare”
aplicația, fiind atinse cele mai sensibile zone ale acesteia, zonele care pot avea impact major.
Retestare: Aceasta tehnică de testare se aplică după fixarea defectelor care au fost
redeschise (este vorba despre defectele care au trecut prin următoarele statusuri: Nou, In progres,
Rezolvat, In testare și au fost redeschise din cauza unor neconformități în vederea rezolvării lor).
După rezolvarea defectelor, ele trec prin aceleași etape, deci este nevoie ca echipa de testare să
reteseze fixurile.
Testare automată: Testarea automată este recomandată pentru cazurile în care anumite
cazuri de testare ar trebui repetate de mai multe ori, în diferite faze ale proiectului. Astfel, se vor
compune scenarii de testare pentru cazurile care se repetă, scenarii care vor fi ulterior transpuse
în scripturi, folosind un limbaj de programare. Scriptul va putea fi rulat folosind instrumentele
tehnice aferente ori de câte ori va fi necesar. În general, testarea automată vine în sprijinul
testării de regresie. Astfel, în finalul unei iterații, al unui proiect sau după retestarea unui defect
se recomandă rularea unei suite de teste automate care să acopere cazuri de test din cele mai
importante zone ale proiectului.
Testare de performanță: Definiţia ISTQB pentru Testarea de Performanţă este
"procesul de testare prin care se determină performanţa unui produs". Cu alte cuvinte scopul
nostru este de a afla cât de bun este un produs software, cât de rapid, câţi useri poate să susţină
precum și timpul de răspuns pentru fiecare dintre ei, sau care sunt limitele produsului.
Rezultatele obţinute în urma testelor de performanţă vor ajuta factorii de decizie din Business să
ia o decizie informată cu privire la lansarea unui produs. Testarea de performanţă va oferi
informaţii despre cum se va comporta produsul în utilizarea zilnică, cu acces concurent din
partea utilizatorilor. Rezultatele vor folosi în estimarea resurselor hardware necesare pentru a
susține un anumit număr de utilizatori.25
25
Cosma, A., (2017). Planificarea Testării de Performanţă, [online]. Disponibil la
https://www.todaysoftmag.ro/article/392/planificarea-testarii-de-performanta [Accesat 8 Apr. 2017].
26
Testare de stres: Aceată tehnică de testare este efectuată în scopul de a determina
stabilitatea sistemului în diferite condiții. Spre exemplu, se verifică timpul de răspuns al bazei de
date atunci când se efectuează interogări complexe, care returnează un număr foarte mare de
date. Se mai poate testa comportamentul aplicației în cazul în care nu mai există spațiu în baza
de date, sau atunci când este întreruptă conexiunea la server.
Testare de securitate: securitatea unei aplicații sau a unui program este unul dintre cele
mai importante aspecte. Un software securizat poate fi numit un software de calitate. Este demult
știut faptul că hackerii forțează aplicațiile web în vederea acesării unor conținuturi interzise fi a
furtului de date. Tesarea de securitate urmărește identificarea timpurie a vulnerabilităților
aplicației. Asigurarea securităţii aplicaţiilor informatice este una dintre cele mai importate
probleme care trebuie rezolvată în contextul societăţii informaţionale. Aplicaţiile informatice
primesc, prelucrează, stochează şi transmit o multitudine de informaţii şi date, utilizând o
multitudine de tehnologii de transport şi interfaţă (zone de memorie, socket-uri, variabile de
mediu, fişiere, protocoale de comunicaţie etc.). Identificarea punctelor slabe ale aplicaţiilor şi
corectarea acestora încă timpul fazelor de dezvoltare se realizează printr-un proces de testare
specific, bine planificat şi organizat, conduce la asigurarea încrederii26
În vederea dovedirii faptului că o companie producătoare de software este securizată, este
necesară obținerea unei certificări OWASP (Open Web Application Security Project). OWASP
este o comunitate online care creaza articole disponibile gratuit, metodologii, documentații,
instrumente și tehnologii pentru sfera securității web. 27
Anual, OWASP publică topul celor 10
cele mai întâlnite vulnerabilități identificate în cadrul aplicațiilor web.
Pentru a fi ferită de atacurile hackerilor, o companie producătoare de software trebuie să
efectueze teste de vulnerabilitate pentru a identifica eventuale posibilități de accesare a datelor
confidențiale.
Testare de mentenanță: După ce aplicația la care se lucrează ajunge în mediul de
producție, la utilizatorul final, nu înseamnă că proiectul s-a încheiat. În faza post-producție se vor
face diverse optimizări în scopul de a îmbunătăți aplicația și experiența utilizatorului. Aceste
optimizări au nevoie de testare, atât pentru a garanta corectitudinea codului scris, cât și pentru a
garanta că în urma implementărilor post-producție nu au fost afectate alte funcționalități ale
aplicației.
CAPITOLUL 3
26
Toma, J., (2006). SR EN ISO 9000:2006 – Sisteme de management al calităţii. Principii fundamentale şi
vocabular. Revista Standardizarea, [online]. Disponibil la
http://standardizarea.ro/revista_standardizarea/Iunie2006.pdf [Accesat 2 Mar. 2017].
27
(2017). OWASP, [online]. Disponibil la https://en.wikipedia.org/wiki/OWASP [Accesat 8 Apr. 2017].
27
CERCETARE PRIVIND METODELE ȘI TEHNICILE DE
LUCRU PENTRU MONITORIZAREA ȘI CONTROLUL
CALITĂȚII
28
Lehmann, D.R., Gupta, S., Steckel, J.H., (1998). “Marketing Research, Addison-Wesley, Reading”, Editura Wiley
Publishing, Inc., pag.1.
28
reale specifice firmelor/instituțiilor/organizațiilor. De asemenea cercetările pot fi și cantitative
sau calitative29.
Astfel, pe baza realizării cercetărilor de marketing în domeniul producției de software,
producătorii vor deveni din ce în ce mai capabili să livreze la timp produsele cerute, la o calitate
înaltă, produse demne de competiție, sigure și fără vulnerabilități. Piața IT pune la dispoziția
clienților și a utilizatorilor produse din ce în ce mai variate, cererea fiind din ce în ce mai mare,
astfel în întregul proces de planificare, producție și livrare este o nevoie permanentă de implicare
atât din partea managementului, cât și din partea angajaților pentru a putea face față cererii în
crește și pentru a satisface dorințele unei palete de clienți din ce în ce mai mare.
Primul obiectiv al acestei cercetări este de a determina care este cea mai utilizată
metodă de lucru. S-a pornit de la următoarele ipoteze:
Cel de-al doilea obiectiv al acestei cercetări este de a urmări care este importanța
acordată de angajați etapei de testare. S-a pornit de la următoarele ipoteze:
Cel de-al treilea obiectiv al acestei cercetări este de a evalua care este importanța
acordată de angajați defectelor și înregistrării lor. S-a pornit de la următoarele ipoteze:
29
Naresh, M.K, (2007). Marketing research. An Applied Orientation, Editura Pearson Prentice Hall, Upper Saddle
River, pag. 87
29
Ř înregistrarea defectelor este importantă în primul rând pentru că ajută la o
rezolvare mai eficientă iar în al doilea rând pentru că îmbunătățește vizibilitatea
în procesul de producție.
În cadrul acestei cercetări s-au urmărit acele probleme care se află în legătură cu impactul
pe care îl poate avea existența unor defecte în cadrul programelor create.
Ř s-au identificat cele mai utilizate metode și tehnici de lucru pentru monitorizarea
și controlul calității în domeniul producției de software
Ř s-a definit scopul cercetării, adică stabilirea celei mai utilizate metode de lucru
Ř au fost alese sursele informaţiilor. Eşantionul pe baza căruia au fost generate
resultatele cercetrii de față a fost de 70 persoane de vârste diferite, care lucrează
în domeniul prducției de software, provenite atât din mediul rural cât și din
mediul urban
Ř ca metodă de recoltare a informațiilor a fost folosit chestionarul online
Ř informațiile au fost recoltate, prelucrate și interpretate în vederea calculării
ponderilor răspunsurilor în scopul realizării graficelor reprezentative.
Ř au fost prezentate principalele rezultate obținute
au fost formulate concluziile studiului, aceasta fiind ultima etapă a cercetării de
față. În această
Toate obiectivele care au fost menţionate anterior vor fi atinse prin intermediul cercetării
exploratorii, folosind ca instrument de recoltare a informațiilor un chestionar ce a fost distribuit
online.
Prin intermediul studiului de față se verifică o serie de ipoteze formulate în legatură cu
interesul manifestat de angajați față de metodele și tehnicile de lucru utilizate în domeniul
producției de software.
Concluziile cercetării de față pot constitui baza unor cercetări ulterioare în acest domeniu,
cercetări mai ample care pot fi realizate atât la nivelul companiilor existente pe piața din
România, cât și la nivelul companiilor existente pe piața internațională.
30
În general, denumirea de cercetare ne poate duce duce cu gândul la o investigație
sistematică, controlată și critică asupra unor ipoteze, o activitate pentru descoperirea adevărului,
un efort de dobândire a unor noi cunoștințe. Pentru a realiza o cercetare corectă aceasta trebuie
proiectată în funcţie de scopurile pe care le urmărim, obiectivele fiind extrem de variate.30
Cеrcеtаrеа dе piаţă еstе аcеl tip dе cеrcеtаrе cаrе trаnsformă dаtеlе în informаţii mеnitе
să rеzolvе o problеmă rеcеnt аpărută şi prompt dеfinită, să confеrе аrgumеntе cаntitаtivе şi
cаlitаtivе dеciziеi. Аcеst tip dе cеrcеtаrе еstе dеfinit cа o orgаnizаrе dе mеtodе, procеdее şi
tеhnici dе culеgеrе şi înrеgistrаrе а dаtеlor, prеlucrаrе, prеzеntаrе şi rеprеzеntаrе, аnаlizа şi
intеrprеtаrе а informаţiilor, prognozаrе а modificărilor piеţеi şi mеdiului еxtеrn аl firmеi, dаr şi
dе promovаrе а unеi dеcizii justе şi profitаbilе fundаmеntаlе prin intеrmеdiul unui sistеm dе
indicаtori cе pеrmit cunoаştеrеа şi аnticipаrеа schimbărilor în concеpţiilе şi аtitudinilе
cumpărătorilor, în prеfеrinţеlе şi аspirаţiilе аcеstorа31
30
S. D. Șandor, ” Metode și tehnici de cercetare în științele sociale”, pag 50 , disponibil la http://www.apubb.ro/wp-
content/uploads/2011/02/Suport-MTCS-Ro.pdf
31
Săvoiu, G., Grigorescu, R., Asandei, M., Manole, S., (2004). “Cеrcеtаri si modеlаri dе mаrkеting”, Еditurа
Univеrsitаrа, Bucurеști, 2004.
32
Ibidеm
31
Chestionarul reprezintă acel instrumеnt folosit pentru culegerea datelor de care depinde
reusita oricărei cercetări. Chestionarul conține diverse întrebări cheie, ce sun analizate iar pe
baza lor rezultă îndeplinirea obiectivelor propuse.
În vederea realizării acestui chestionar s-а ţinut seama dе orientarea, obiectivele și
ipotezele cercetării. Întrebările formulate în chestionar sunt unele simple, clare, concise. În
anumire cazuri întrebările pot să lase loc de subiectivism dar fără să influențeze persoana căreia
îi sunt adresate întrebările.
După cum a fost menționat și anterior, chstionarul ce stă la baza acestei cercetări conține
16 întrebări care le permit respondenților să aleagă răspunsul potrivit (Anexa 1).
Еşаntionul este acel аnsаmblu dе unităţi stаtisticе ce sunt еxtrаsе dintr-o anumită
colectivitate, prin mеtodе variate. Principala caracteristică ce ar trebui să fie îndeplinită de
eșantion ar trebui să fie reprezentativitatea, adică mărimеа еşаntionului. Mărimea eșantionului ar
trebui să fie cât mai mare, astfel să poată fi furnizate informații exacte, redundante.
Еşаntionul este format din 70 de persoane, toate cu vârsta mai mare de 18 ani. Întrucât la
întrebarea filtru toate răspunsurile au fost afirmative (toate persoanele care au completat
chestionarul lucrează sau au lucrat în domeniul producției de software), este considerat că toate
răspunsurile pentru acest chestionar au fost eligible în vederea realizării acestei cercetări.
Motivul principal pentru care a fost aleasă cercetarea online, cu ajutorul instrumentului
Google Docs, îl constituie faptul că cercetarea s-a realizat la distanșă, respondenții aflându-se în
mare parte la locul lor de muncă din mai multe locații din București.
Intervalul de timp în care a fost desfășurată cercetarea a fost 15 aprilie – 18 mai 2017.
32
Analizând figura 3.1, pot afirma faptul că s-a confirmat ipoteza conform căreia, metoda
de lucru Agile este cea mai utilizată. 39 de persoane din totalul de 70 susțin că folosesc Agile, în
timp ce 27 dintre ele folosesc Waterfall. Se pare că în prezent, un procent foarte mic de companii
(5,7%) mai folosesc alte metode de lucru în afară de cele două menționate.
Fig. 3.1 – Cea mai utilizată metodă de lucru din cadrul companiilor de IT
Sursа:originаl
33
După cum se poate observa din figura 3.3, o altă ipoteză a fost confirmată, și anume că
angajații apreciază utilitatea estimării sarcinilor de lucru. Doar 4 din 70 de respondenți,
reprezentând un procent de doar 8,3% sunt de părere că estimarea dificultății sarcinilor nu este
utilă, nu aduce niciun plus de valoare proiectului în lucru.
Cea de-a patra ipoteză de la care s-a pornit, și anume că angajașii din domeniul IT
apreciază etapa de testare ca fiind una extrem de delicată și utilă în vederea livrării unui produs
la timp și de calitate, a fost confirmată. Pe o scală de la 1 la 5, 54 de respondenți apreciază
această etapă din procesul de producție ca fiind importantă și foarte importantă. 16 respondenți,
adică 22.9% acordă importanță medie acestei etape. Nicio persoană nu a apreciat testarea ca fiind
inutilă, prin urmare se poate afirma că angajații chiar cred în rezultatele testării.
34
Ba mai mult decât atât: persoanele chestionate sunt de părere că testarea nu aduce o
creștere inutilă a timpului de livrare a unui produs, ci din contră: scade costul de mentenanță, iar
efectuarea unui plan de testare poate chiar să îmbunătățească relația dintre producător și client. În
plus, respondenții au apreciat faptul că testarea nu poate fi considerată exhaustivă. Oricât de
multe arii ale produsului ar fi acoperite de testare, cel mai probabil tot vor rămâne „corner-cases”
care nu vor putea fi testate din diverse motive: fie nu se cunosc acele zone, fie este asumat că
acele zone nu vor fi atinse.
35
O altă ipoteză de la care s-a pornit a fost aceea că cele mai importante elemente de
menționat în momentul înregistrării unui defect sunt pașii de reprodus și prioritatea. Această
ipoteză a fost parțial confirmată întrucât în percepția respondenților pașii pentru reproducerea
unui defect sunt cei mai imporanți (78.6%). Angajații din domeniul IT consideră că prioritatea
unui defect este la fel de importantă ca subiectul detaliat și rezultatele așteptate. Severitatea a
obținut cel mai mic procentaj dintre răspunsurile posibile (48.6%). 14.3% dintre persoanele care
au răspuns întrebărilor din chestionar sunt de părere că mai sunt și alte elemente necesate de
menționat la momentul înregistrării defectelor, și anume: capturi de ecran, date de intrare,
utilizatori.
Ultima ipoteză de la care s-a pornit, și anume că înregistrarea defectelor este importantă
în primul rând pentru că ajută la o rezolvare mai eficientă iar în al doilea rând pentru că
îmbunătățește vizibilitatea în procesul de producție, a fost confirmată: 38.6% dintre răscpunsuri
au fost pentru rezolvarea rapidă, iar 30% pentru îmbunătățirea vizibilității. De menționat ar fi că
cele mai multe răspunsuri au fost pentru toate varianteșe de răspuns.
În urma interpretării rezultatelor se poate observa faptul că angajații din domeniul IT sunt
în general tineri, cei mai mulți dintre ei (64.3%) încadrându-se în intervalul de vârstă de 25-34
ani. Un singur respondent are peste 45 de ani, fapt care dovedește că generația tânără domină
sectorul IT de la noi din țară.
37
Fig. 3.10 – Vârsta
Sursа:originаl
În plus, în continuare cei mai mulți angajați din acest domeniu sunt de sex masculin. Doar
17 dintre cei 70 de respondenți sunt femei, restul de 53, adică peste 75% fiind bărbați. Astfel,
echipele mixte sunt din ce în ce mai rare. Se simte nevoia prezenței feminine în producția
software.
Principala concluzie formulată pe baza rezulatelor interpretate anterior este aceea că cea
mai utilizată metoda de lucru din domeniul IT este metoda Agile. Ba mai mult: angajații care o
utilizează apreciază eficiența tehnicilor de lucru ce aparțin acestei metode. Se poate afirma că
angajații din acest domeniu pun preț pe calitate, prin urmare remarcă beneficiile pe care pe poate
aduce etapa de testare, efectuată corect și cât mai complet, bazată pe un plan de test bine pus la
38
punct. Încurajează în continuare testarea tradițională, manuală, fiind de părere că scripturile
automate nu pot genera obiectivitatea și atenția unei ființe umane.
O altă concluzie ar putea fi formulată pe baza aprecierii înregistrării defectelor: angajații
din domeniul IT remarcă importanța existenței unui întreg sistem de bugtracking (de înregistrare
a defectelor) în care să fie înregistrare defectele pe baza unui șablon, care să conțină în primul
rând pașii de reprodus ai defectului, iar în al doilea rând subiectul detaliat, rezultatele așteptate și
prioritatea rezolvării defectului. Toate aceste elemente sunt importante de menționat în vederea
rezolvării mai rapide a defectelor de către echipa de dezvoltare și pentru îmbunătățirea
vizibilității în întregimea procesului de producție.
De accentuat ar fi faptul că în continuare în domeniul IT cei mai multți angajați sunt
bărbați, doar un sfert din nuărul total de respondenți sunt de sex feminin. Angajații sunt tineri
entuziaști, proveniți în general din mediul urban ce lucrează în proporție de aproape 100% tot în
mediul urban.
3.4 Propuneri
39
să fie documentat, să fie procedurizat pentru ca angajații să conștientizeze și să înțeleagă ciclul
etapelor din procesul de producție. Și mai important este ca angajații să înțeleagă impactul pe
care îl poate avea în tot proiectul nerespectarea unei singure etape.
Propun crearea unei proceduri pentru înregistrarea defectelor. Această procedură aș
recomanda să conțină în primul rând următoarele elemente:
Subiectul detaliat
Pașii de reprodus
Rezultatele actuale
Rezultatele așteptate
Prioritatea
Severitatea
Statusul curent
Persoana care a înregistrat defectul
Persoana resbonsabilă cu rezolvarea defectului
Toate aceste detalii ar contribui la scăderea timpului de rezolvare a defectelor.
Pe lângă procedura pentru înregistrarea defectelor recomand și o procedură pentru
explicarea ciclului de viață al unui defect, pentru a evida eventuale blocaje în timpul etapelor de
dezvoltare – testare – punere în producție și pentru a genera date rapoarte cât mai relevante,
bazate pe activitatea reală a angajaților.
Deși a fost dovedit faptul că testarea automată nu poate înlocui 100% testarea manuală,
recomand efectuarea testării automate în continuare și în paralel cu cea manuală. Această
propunere vine în sprijinul ideii că testarea de regresie poate, într-adevăr să fie înlocuită cu
testarea automată. Astfel, pentru regresie, pentru a testa că alte fluxuri din aplicație nu au fost
afectate de ultimele implementări, se poate concepe o suită automată care să ruleze în finalul
dezvoltării. Astfel, se va economisi timp în echipa de testare.
A fost observată o diferentă majoră între numărul de bărbați și numărul de femei care
lucrează în domeniul IT, raportul fiind de 4 la 1. Propun încurajarea femeilor să activeze în acest
domeniu, pentru a omogeniza echipele. Conform site-ului biziday „specialiștii în recrutare susțin
că nu este vorba despre o discriminare sau o reticență din partea patronilor atunci când vine
vorba despre angajarea unei femei pe o poziție tehnică. Pur și simplu bărbații sunt mai des
interesați de o astfel de carieră.” Recomand în părimul rând echipelor de HR să susțină femeile
într-o astfel de carieră. Să acerde mai multă atenție femeilor care aplică CV-ul pe site-ul de
recrutare. În plus, ar putea să publice pe site-ul propriu sau pe paginile le de socializare diverse
articole motivaționale care să atragă femeile în domeniul IT.
40
Pentru a livra un produs software de calitate, recomand efectuarea a cât mai multe feluri
de testare, care să poată surprinde defectele în diverse faze. Propun implementarea unui proces
de testare pe nivele, care să permită verificarea fiecărei componente în parte a sistemului, apoi a
sistemelor integrate. Cel mai important este ca, în etapa dinaintea punerii proiectului în producție
să se efectueze o testare de sistem, să se verifice comportamentul aplicației cu toate
componentele integrate. Astfel, ar putea fi evitate eventuale probeleme de performanță care pot
apărea în etapa post-producție.
În plus, consider că ar trebui aplicate tehnici de testare cât mai variate, care să implice
testare funcțională dar și non-funcțională pentru a valida că produsul dezvoltat răspunde în
parametri normali indiferent de condiții.
Pentru a asigura transparența necersară pe parcursul desfășurării proiectului și pentru a
încuraja și îmbunătăți comunicarea în cadrul echipelor, dar și comunicarea echipelor între ele,
recomand ședințele zilnice de status în care fiecare angajat să povestească pe scurt ce a făcut în
ziua precedentă, să menționeze eventualele blocaje și să menționeze ce va face în ziua curentă.
Din punctul meu de vedere, comunicarea este cheia către succe, este cea mai importantă la
nivelul oricărei echipe și al oricărei organizații.
Pe lângă ședințele zilnice, sunt de părere că ar fi potrivit ca angajaților să le fie acordat
timpul necesar pentru ședințe de planificare și de retrospectivă. Evident, nu recomand ședințele
în exces, care să îi plictisească pe angajați și care îi fac să le scadă productivitatea, însă susțin
ideea de „brainstorming”. Consider că cele mai bune idei sunt generate în grup, pe urma
dezbaterilor și a părerilor tuturor persoanelor implicate în proiect. Doar acordându-le cuvântul
angajaților putem afla părerile lor, și doar astfel, în calitate de manageri de calitate sa de proiect,
putem lua deciziile potrivite.
CONCLUZII
41
Efectuând cercetarea de față am avut ca scop identificarea metodelor și a tehnicilor de
lucru utilizate de angajații din cadrul firmelor producătoare d esoftware în scopul de a monitoriza
și de a controla calitatea.
În prima fază a cercetării am consultat literatura de specialitate din acest domeniu pentru
a mă informa cu privire la metodele și tehnicile posibile, dar și pentru a vedea care este trendul
lor în domeniul IT. Astfel, am făcut o paralelă între cele două cele mai utilizate metode de lucur:
Agile și Waterfall, prezentând punctele esențiale ale metodei itereatile și ale metodei
incrementale.
În cea de-a doua fază a cercetării am consultat literatura de specialitate în vederea
stabilirii tehnicilor utilizate pentru efectuarea controlului calității. Am prezentat informații despre
procesul de testare pentru a exprima astfel importanța lui în procesul de producție, și ulterior am
prezentat beneficiile testării pe niveluri și beneficiile pe care le poate aduce tesatarea dacă sunt
utilizate tehnici variate.
În cea de-a treia fază a lucrării am ales să fac o cercetare a percepției angajaților din
domeniul producției de software cu privire la metodele și tehnicile de lucru utilizate pentru
monitorizarea și controlul calității. Cercetarea are la bază un chestionar care conține 16 întrebări,
ce a fost adresat către 70 de angajați din domeniu. Pe baza răspunsurilor lor am putut să trag
anumite concluzii relevante pentru studiul meu.
O primă concluzie pe baza cercetării efectuate este acea că metodologia de lucru din
cadrul unei companii poate fi una formală sau informală. Consider că nu este neapărat important
care este metoda de lucru utilizată. Cel mai important aspect este ca toate procesele din
metodologia folosită să fie foarte clar comunicate către toate persoanele implicate în activitate,
pentru a asigura astfel și respectarea lor. Cert este că, pentru clienți și pentru utilizatorii finali ai
produselor create, cel mai important aspect este calitatea produselor. Pentru ei nu este important
cum se întâmlă lucrurile, atâta timp cât produsul finit este unul de calitate.
Astfel, o altă concluzie poate fi aceea că, pentru livrarea unor produse de calitate, care să
satisfacă nevoile consumatorilor dar să fie și sigure din punct de vedere al securității datelor este
necesară efectuarea testării pe mai multe nivele și utilizând tehnici variate. Doar astfel clientul
sau utilizatrul poate primi garanția că produsul utiliat este unul conform cerințelor și nevoilor.
Pot afirma că înregstrarea defectelor identificate în faza de testare poate pe de o parte să
scadă timpul de rezolvare a lor, însă de pe altă parte poate îmbunătăți procesul de producție și
vizibilitatea asupra lui, si totodată poate îmbunătăți relația cu clientul.
Am mai concluzionat faptul că, în acest domeniu este nevoie de mai multă forță de
muncă feminină. Raportul de 1 la 4 nu este unul satisfăcător, ci aduce un dezechilibru în cadrul
echipelor.
42
Concluzia finală a studiului realizat este aceea că domeniul producției de software este
unul complex, în continuă rezolvare, care a devenit esențial existenței umane deoarece în
prezent, întreaga noastră existență are la bază foarte multă tehnologie fie că ne referim la
domeniul medical, domeniul transporturilor, domeniul comunicațiilor etc. România a devenit un
concurent foarte capabil în domeniul producerii de software la nivel internațional. Multe
companii multinaționale optează pentu a-și dezvolta produsele sofware utilizând forță de muncă
românească. Acest lucru se întâmplă în primul rând pentru că raportul calitate – preț al
angajaților români este unul avantajos pentru producătorii străini.
43