irea Procesului de Testare folosind Tehnologiile Agile COORDONATOR ȘTIINȚIFIC: ABSOLVENT: Conf. Univ. Dr. Viorel Ionescu Popa Dan-Valentin SESIUNEA… [611968]

UNIVERSITATEA “TITU MAIORESCU” DIN BUCUREȘTI

FACULTATEA DE INFORMATICĂ

LUCRARE DE LICENȚĂ

Îmbunătă
ț
irea Procesului de Testare folosind

Tehnologiile Agile

COORDONATOR ȘTIINȚIFIC: ABSOLVENT: [anonimizat]. Univ. Dr. Viorel Ionescu Popa Dan-Valentin

SESIUNEA IUNIE/IULIE

2020

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

Cuprins

1.

Testare software
4

1.1 De ce conteaz
ă
testarea software-ului
4

1.2 Ce este testarea software
4

1.3 Defecte
ș
i e
ș
ecuri
5

1.4 Combina
ț
ii de intrare
ș
i precondi
ț
ii
5

1.5 Scopul
6

1.6 Ce este SDLC
6

1.6.1 De ce sa folosesti SDLC
7

1.6.2 Caracteristicile SDLC
7

1.7 Ce este STLC
7

1.7.1 De ce sa folosesti STLC
8

1.7.2 Caracteristicile STLC
8

1.8 Diferen
ț
e dintre SDLC
ș
i STLC
8

1.9 Metodologia Agile
8

1.10 Impactul Agile in testare
9

2.


Metodologia Agile
10

2.1 Despre Metodologia Agile
10

2.2 Ce înseamn
ă
s
ă
test
ă
m într-o echip
ă
Agile
10

2.3 Agile nu este potrivit pentru toate organiza
ț
iile
10

2.3.1 Tipuri de Metodologii Agile
11

2.3.2 Metodele de testare Agile
14

2.3.3 Cum s
ă
alinia
ț
i testarea cu un proces de livrare Agile
19

3.

Metodologia SAFe
20

3.1 Ce este Scaled Agile Framework (SAFe)
20

3.1.1 De ce sa folosesti Agile Framework
20

3.1.2 Cand se folose
ș
te Scaled Agile Framework
21

2

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

3.1.3 Cum se diferen
ț
iaz
ă
de alte practici Agile
21

3.2 Funda
ț
ia Scaled Agile Framework
22

3.2.1 Principiile SAFe Lean-Agile
22

3.2.2 SAFe Agile – Valori de baz
ă
22

3.2.3 Liderii Lean Agile
23

3.2.4 Modul de gandire in Agile
23

3.3 Manifestul Agile
25

3.3.1 Nivelul echipei
26

3.3.2 Nivel de program
27

3.3.3 Nivelul portofoliului
28

3.3.4 Nivelul fluxului valoric
29

4. Testarea
ș
i calitatea în cadrul SAFe
30

4.1 Calitate la nivel de echip
ă
30

4.2 Calitate la nivel de program
31

4.3 Calitate la nivel de portofoliu
33

4.3.1 Definirea temelor strategice cu un accent pe calitate
33

4.3.2 Prioritizeaz
ă
conformitatea Epice-lor
34

4.4 Un rol pentru testeri, manageri de testare
ș
i al
ț
i profesioni
ș
ti de calitate
34

5. Crearea unui Framework de testare automat
ă
35

5.1 Alegerea unui limbaj de programare
35

5.2 Alegerea unui Unit Test framework
36

5.3 Arhitectura framework-ului: Page Object Model
ș
i Page Factory
38

5.4 Exemplu proiect: Page Object Model
ș
i Page Factory
41

5.5 Alegerea unui mecanism de raportare
48

5.6 Implementarea Docker
49

5.7 Implementarea Selenium Grid
51

5.8 Implementarea cu GitHub pentru controlul versiunilor
53

5.9 Implementarea CI / CD
55

3

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

1.
Testare software

1.1 De ce contează testarea software-ului

Testarea
este
o
parte
vitală
a
întregului
proces
de
dezvoltare
software.
Fără
aceasta,
companiile
au
mai

multe
ș
anse

livreze
produse
de
calitate
slabă,
dificil
de
utilizat,
predispuse
la
erori
ș
i
chiar

vulnerabile la amenin
ț
ările de securitate.

În
cel
mai
rău
caz,
e
ș
ecul
de
a
testa
ș
i
apoi
furniza
produse
inferioare
poate
aduce
prejudicii
grave

reputa
ț
iei
unei
companii.
De
asemenea,
poate
face
clien
ț
ii

se
gândească
de
două
ori
la
cumpărarea

produselor companiei.

Testarea
a
fost
mult
timp
o
parte
cheie
a
ciclului
de
via
ț
ă
al
dezvoltării
software,
dar
abordarea
testării

suferă
modificări
fundamentale.
Una
dintre
cele
mai
mari
tendin
ț
e
este
folosirea
Metodei
Agile
pentru

procesul de testare ca înlocuitor al metodelor tradi
ț
ionale de testare.

1.2 Ce este testarea software

[1]

Este o investiga
ț
ie realiza tă pentru a oferi păr
ț
ilor interesate informa
ț
ii despre calitatea produsului sau

serviciului software testat. Testarea software poate oferi, de asemenea, o viziune obiectivă
ș
i

independentă a software-ului pentru a permite companiei să aprecieze
ș
i să în
ț
eleagă riscurile

implementării software-ului. Tehnicile de testare includ procesul de executare a unui program sau a

unei aplica
ț
ii cu inten
ț
ia de a găsi bug-uri

[2]

software (erori sau alt e defecte)
ș
i verificarea dacă

produsul software este potrivit pentru utilizare.

Testarea software implică executarea unei componente software sau a unei componente de sistem

pentru a evalua una sau mai multe proprietă
ț
i de interes. În general, aceste proprietă
ț
i indică măsura în

care componenta sau sistemul testat:


îndepline
ș
te cerin
ț
ele care au ghidat proiectarea
ș
i dezvoltarea acestuia;


răspunde corect la tot felul de intrări;


î
ș
i îndepline
ș
te func
ț
iile într-un timp acceptabil;


este suficient de utilizabil;


poate fi instalat
ș
i rulat în mediile propuse;


realizează rezultatul general dorin
ț
a păr
ț
ilor interesate .

Deoarece numărul de teste posibile chiar
ș
i pentru componente software simple este practic infinit,

toate testările software utilizează o anumită strategie pentru a selecta teste care sunt realizabile pentru

timpul
ș
i resursele dispon ibile. Drept urmare, testarea software de obicei (dar nu exclusiv) încearcă să

execute un program sau o aplica
ț
ie cu inten
ț
ia de a găsi bug-uri software (erori sau alte defecte).

4

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

Sarcina de testare este un proces iterativ, deoarece atunci când este rezolvat un bug, poate lumina alte

bug-uri mai adânci sau chiar poate crea altele noi.

Testarea software poate furniza informa
ț
ii obiective
ș
i independente despre calitatea software-ului
ș
i

riscul e
ș
ecului utilizatoril or sau sponsorilor.

Testarea software poate fi efectuată imediat ce există software executabil (chiar dacă par
ț
ial complet).

Abordarea generală a dezvoltării software determină adesea când
ș
i cum se efectuează testarea. De

exemplu, într-un proces pe etape, majoritatea testării au loc după ce cerin
ț
ele sistemului au fost

definite
ș
i apoi implemen tate în programe testabile. În schimb, sub o abordare Agile, cerin
ț
ele,

programarea
ș
i testarea su nt deseori efectuate simultan.

Un scop principal al testării este detectarea defec
ț
iunilor software, astfel încât defectele să poată fi

descoperite
ș
i corectate. T estarea nu poate stabili că un produs func
ț
ionează corect în toate condi
ț
iile,

ci doar că acesta nu func
ț
ionează corect în condi
ț
ii specifice. Domeniul de testare software include

adesea examinarea codului
ș
i execu
ț
ia codului respectiv în divers e medii
ș
i condi
ț
ii. În cultura actuală

de dezvoltare de software, o organiza
ț
ie de testare poate fi separată de echipa de dezvoltare. Există

diverse roluri pentru membrii echipei de testare. Informa
ț
iile derivate din testarea software pot fi

utilizate pentru a corecta procesul prin care este dezvoltat software.

1.3 Defecte
ș
i e
ș
ecuri

Nu toate defectele software sunt cauzate de erori de codificare. O sursă obi
ș
nuită de defecte

costisitoare sunt lipsurile de cerin
ț
ă, adică cerin
ț
ele nerecunoscute care duc la erori de omisiune din

partea proiectantului de programe. Lacunele de cerin
ț
ă pot fi adesea cerin
ț
e nefunc
ț
ionale, cum ar fi

testabilitatea, scalabilitatea, mentenabilitatea, performan
ț
a
ș
i securitatea.

Defec
ț
iuni software apar prin următoarele procese. Un programator face o eroare (gre
ș
eală), care are

ca rezultat un defect (defect, eroare) în codul sursă al software-ului. Dacă acest defect este executat, în

anumite situa
ț
ii, sistemul va produce rezultate gre
ș
ite, provocând o defec
ț
iune. Nu toate defectele vor

duce neapărat la e
ș
ecuri. De exemplu, defectele codului mort nu vor duce niciodată la e
ș
ecuri. Un

defect se poate transforma într-un e
ș
ec atunci când mediul este schimbat. Exemple de schimbări în

mediu includ software-ul rulat pe o nouă platformă hardware computer, modificări ale datelor sursă

sau interac
ț
iunea cu difer ite programe software. Un singur defect poate duce la o gamă largă de

simptome de e
ș
ec.

1.4 Combina
ț
ii de intrar e
ș
i precondi
ț
ii

O problemă fundamentală a testării software este aceea că testarea sub toate combina
ț
iile de intrări
ș
i

precondi
ț
ii (stare ini
ț
ială) nu este posibilă, chiar
ș
i cu un produs simplu. Aceasta înseamnă că numărul

de defecte dintr-un produs software poate fi foarte mare, iar defectele care apar rar sunt dificil de găsit

la testare. Mai semnificativ, dimensiunile nefunc
ț
ionale ale calită
ț
ii (modul în care se presupune că

este fa
ț
ă de ceea ce se pre supune că trebuie) – utilizabilitatea, scalabilitatea, performan
ț
a,

5

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

compatibilitatea, fiabilitatea – pot fi extrem de subiective; ceva care constituie o valoare suficientă

pentru o persoană poate fi intolerabil pentru alta.

Dezvoltatorii de software nu pot testa totul, dar pot utiliza designul combinator de teste pentru a

identifica numărul minim de teste necesare pentru a ob
ț
ine acoperirea dorită. Proiectarea combinată a

testelor permite utilizatorilor să ob
ț
ină o acoperire mai mare a testelor cu mai pu
ț
ine teste. Indiferent

dacă sunt în căutarea vitezei sau a adâncimii testelor, pot utiliza metode de proiectare combinatorie a

testelor pentru a construi varia
ț
ii structurate în cazurile lor de testare.

1.5 Scopul

Scopul primordial pentru procesul de testare este identificarea erorilor de software, izolarea
ș
i

fixarea/corectarea defectelor care au cauzat aceste erori. Deseori este un exerci
ț
iu non-trivial,

deoarece testarea nu poate demonstra cu certitudine de 100% că produsul fun
ț
ionează corect în

orice condi
ț
ii; testarea do ar poate demonstra că produsul nu func
ț
ionează corect în anumite

condi
ț
ii. În scopul testării deseori se include atât examinarea statică a codului sursă, cât
ș
i

examinarea codului în execu
ț
ie în diferite împrejurări
ș
i sub diferite condi
ț
ii. Informa
ț
ia ob
ț
inută

în urma procesului de testare poate fi folosită pentru corectarea
ș
i îmbunătă
ț
irea procesului

conform căruia se dezvoltă produsul software.

[3]

1.6 Ce este SDLC

SDLC (Software Development Life Cycle – Ciclul de Via
ț
ă al Dezvoltării Software) define
ș
te

toate etapele standard implicate în procesul de dezvoltare a software-ului. Ciclul de via
ț
ă SDLC

este un proces de dezvoltare a software-ului printr-o manieră treptată în următoarea ordine

[4]

:

1.
Faza cerin
ț
elor;

2.
Faza de analiză;

3.
Faza de proiectare;

4.
Faza de dezvoltare;

5.
Faza de testare;

6.
Faza de implementare
ș
i între
ț
inere.

Fiecare etapă are un criteriu definit de intrare
ș
i

ie
ș
ire.

1.6.1 De ce sa folosesti SDLC


Acesta î
ș
i propune să producă un sistem

software de înaltă calitate, care vă ajută

să îndeplini
ț
i a
ș
teptările clien
ț
ilor;

6

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


O revizuire formală este creată după finalizarea fiecărei etape care asigură un control

optim al managementului;


SDLC vă ajută să crea
ț
i documenta
ț
ii de sistem;


Produce multe produse intermediare care pot fi revizuite pentru a verifica dacă pot

satisface nevoile utilizatorului
ș
i sunt în conformitate cu cerin
ț
ele men
ț
ionate;


SDLC ajută la asigurarea faptului că cerin
ț
ele de sistem pot fi urmărite înapoi la cerin
ț
ele

de afaceri declarate;


Fiecare fază are un criteriu specific de livrare, intrare
ș
i ie
ș
ire;


Etapele de dezvoltare merg una câte una, ceea ce este o op
ț
iune ideală pentru proiectele

mici sau mijlocii în care cerin
ț
ele sunt clare.

1.6.2 Caracteristicile SDLC


Structura
ș
i func
ț
iile modelului sunt bine documentate, iar rezultatul testat este disponibil;


Proiectul poate fi finalizat pas cu pas înainte de începerea unui alt proiect. Unită
ț
ile de

proiect sunt distincte
ș
i u
ș
or de identificat;


Gestionarea riscurilor este parte integrantă a modelului;


Proiectul poate fi documentat astfel încât toate piesele lipsa să fie descoperite din timp.

1.7 Ce este STLC

STLC (Software Testing Life Cycle – Ciclul de via
ț
ă al testării software) este procesul de testare

care este executat într-o manieră bine planificată. În procesul STLC, se desfă
ș
oară diverse

activită
ț
i pentru îmbunătă
ț
irea calită
ț
ii produsului. Cu toate acestea, etapele STLC se ocupă doar

de testarea
ș
i detectarea e rorilor, dar nu
ș
i de dezvoltarea în sine.

Ciclul de via
ț
ă al testarii software are următoarele

etape.

[5]

1.
Analiza cerin
ț
elor

2.
Planificarea testelor

3.
Proiectare test

4.
Configurarea mediului de testare

5.
Executarea testelor

6.
Încheierea testelor

1.7.1 De ce sa folosesti STLC


STLC îmbunătă
ț
e
ș
te procesul de testare

devenind mai sofisticat, consistent
ș
i mai eficient;


Pute
ț
i include rep ere
ș
i rezultate pentru fiecare etapă a pro iectului;

7

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


U
ș
or de în
ț
eles
ș
i de implementat chiar dacă modelul este extins la diferite niveluri;


Fiecare modul al proiectului este testat înainte de începutul unui nou modul;


Cerin
ț
a proiectulu i specific este măsurată în func
ț
ie de rezultatul real.

1.7.2 Caracteristicile STLC


STLC analizează cerin
ț
ele sistemului colectate de la clien
ț
i
ș
i păr
ț
i interesate;


Ajută la crearea Matricei de Trasabilitate;


Identifica tehnica de testare
ș
i tipurile de testare;


Pute
ț
i analiza feza bilitatea automatizării cu STLC;


Identifica informa
ț
iile despre mediul de testare unde testul propriu-zis ar trebui să fie

executat.

1.8 Diferen
ț
e dintre SDL C
ș
i STLC


SDLC define
ș
te toate fazele standard implicate în procesul de dezvoltare a software-ului,

în timp ce procesul STLC define
ș
te diverse activită
ț
i pentru a îmbunătă
ț
i calitatea

produsului;


SDLC este un ciclu de via
ț
ă pentru dezvoltare, în timp ce STLC este un ciclu de via
ț
ă

pentru testare;


În SDLC, echipa de dezvoltare creează planuri de proiectare la nivel înalt
ș
i scăzut, în

timp ce în STLC, analistul de testare creează planul de testare pentru System Testing
ș
i

Integration Testing;


În SDLC, codul real este dezvoltat, iar activitatea efectivă se desfă
ș
oară conform

documentelor de proiectare, în timp ce în STLC echipa de testare pregăte
ș
te mediul de

testare
ș
i execută cazuri de testare;


Ciclul de via
ț
ă SD LC ajută o echipă să finalizeze cu succes dezvoltarea software-ului, în

timp ce etapele STLC acoperă doar testarea software-ului.

1.9 Metodologia Agile

Metoda
Agile
de
dezvoltare
a
software-ului
oferă
o
abordare
alternativă
pentru
testarea
software-ului.

Printre
reperele
Agile
se
numără
faptul

folose
ș
te
secven
ț
e
incrementale,
iterative
ale
lucrărilor

cunoscute în mod obi
ș
nuit ca „

Sprinturi



[6]

.

Sprinturile
sunt
perioadele
alocate
pentru
fazele
specifice
ale
unui
proiect
de
dezvoltare
ș
i
sunt

considerate
complete
atunci
când
perioada
stabilită
pentru
o
fază
expiră.
Lucrările
la
acea
fază
se

încheie,
chiar
dacă
membrii
echipei
consideră

este
nevoie
de
mai
mult
efort,
iar
următoarea
fază
a

proiectului
începe
ș
i
parcurge
intervalul
de
timp
desemnat.
Acest
proces
continuă
până
la
finalizarea

tuturor etapelor proiectului.

8

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

Cele
două
modele
principale
de
dezvoltare
care
se
încadrează
în
Metoda
Agile
sunt

Scrum
ș
i

Kanban

.

Scrum
este
una
dintre
cele
mai
populare
metodologii
de
testare
software
ș
i
este,
de

asemenea,
un
cadru
pentru
gestionarea
lucrărilor,
cu
accent
pe
dezvoltarea
de
software.
Modelul

Scrum
oferă
o
strategie
flexibilă
de
dezvoltare
a
produselor
care
permite
echipelor
de
dezvoltare

lucreze
ca
unită
ț
i
indiv iduale
pentru
a
atinge
un
obiectiv
comun
ș
i
permite
echipelor

se

autoorganizeze prin încurajarea apropierii fizice sau a colaborării online a tuturor membrilor echipei.

Kanban
este
o
modalitate
de
a
proiecta,
gestiona
ș
i
îmbunătă
ț
i
fluxul
de
lucru
al
unui
proiect
de

dezvoltare,
permi
ț
ând
organiza
ț
iilor

înceapă
cu
fluxul
de
lucru
existent
ș
i

realizeze
îmbunătă
ț
iri

treptate
prin
vizualizarea
fluxului
de
muncă,
limitarea
lucrărilor
în
curs
ș
i
concentrarea
pe
finalizarea

lucrărilor.

1.10 Impactul Agile in testare

În
metodele
Agile,
testarea
este
încorporată
în
procesul
de
dezvoltare.
Dezvoltatorii
de
software
sunt

instrui
ț
i

scrie
teste
fie
înainte,
fie
odată
cu
scrierea
codului.
Fiecare
subsistem
al
unui
program
este

încapsulat
într-un
set
de
teste
unitare
care
se
asigură

continuă

facă
ceea
ce
ar
trebui

facă.
Acest

lucru
face
mult
mai
u
ș
or

identifica
ț
i
ș
i

izola
ț
i
problemele
pe
măsură
ce
produsul
evoluează
în

timp.
Dat
fiind
faptul

dezvoltarea
produselor
software
poate
fi
dinamică
ș
i

mul
ț
i
factori
pot

afecta performan
ț
a
ș
i vulnerabilitatea, aceasta este o capacitate im portantă de testare.

Testerii
sunt
integra
ț
i
ca
membri
ai
echipei
de
dezvoltare,
astfel
încât

poată
efectua
teste
pe
măsură

ce
sunt
finalizate
mici
bucă
ț
i
de
func
ț
ionalitate.
O
colaborare
mai
strânsă
ș
i
bucle
de
feedback
mult

mai scurte permit găsirea problemelor mai devreme, împiedicând crearea unor probleme ulterioare.

Testerii
din
organiza
ț
iile
Agile
primesc
adesea
instruire
suplimentară
ș
i
acces
la
instrumente
mai
bune,

ceea ce le permite să scrie
ș
i să execute teste automate la nivelul

GUI

ș
i

API

.

Aceste
teste
automate
ș
i
testele
unitare
men
ț
ionate
anterior
sunt
factori
critici
în
capacitatea
echipelor

Agile
de
a
livra
rapid
pe
o
perioadă
prelungită.
Fără
ele,
metodele
Agile
pot
genera
o
explozie
ini
ț
ială

de
viteză,
dar
apoi
se
pot
opri,
deoarece
greutatea
testării
manuale
face
imposibilă
eliberarea
rapidă
a

noilor functionalitati.

9

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

2.
Metodologia Agile

2.1 Despre Metodologia Agile

Metodologiile Agile î
ș
i au rădăcinile în planificarea adaptativă, livrarea timpurie
ș
i îmbunătă
ț
irea

continuă, toate având în vedere posibilitatea de a răspunde rapid
ș
i u
ș
or la schimbări. Drept urmare, nu

este surprinzător faptul că 88% dintre responden
ț
i din Raportul de State of Agile al VersionOne 2017

[7]

au clasat „capacitatea de a se adapta la schimbare” drept beneficiul numărul unu al îmbogă
ț
irii Agile.

Cu toate acestea, pe măsură ce tot mai multe echipe de dezvoltare adoptă o filozofie Agile, testerii s-au

străduit să păstreze ritmul. Acest lucru se datorează faptului că adoptarea pe scară largă a Agile a

determinat echipele să emită versiuni
ș
i software complet fără documente pe o bază mai frecventă.

Această frecven
ț
ă a oblig at testerii să se deplaseze atunci când efectuează teste, cum lucrează cu

dezvoltatorii
ș
i

BA

[8]

ș
i chiar ce teste efectuează, toate păstrân d standardele de calitate.

2.2 Ce înseamnă să testăm într-o echipă Agile?

Principiile Agile se referă la a fi colaborativ, flexibil
ș
i adaptativ. Este construit pe premisa că lumea

se schimbă acum în mod regulat
ș
i asta înseamnă că echipele software nu mai au ani de zile pentru a

aduce noi produse pe pia
ț
ă. În acel timp, ofertele concuren
ț
ilor sau a
ș
teptările clien
ț
ilor se pot

schimba, iar echipa riscă irelevan
ț
a. Agile minimizează acest risc, ajutând echipele să colaboreze mai

mult împreună prin adaptarea la ceea ce trebuie să aibă succes echipa. Face acest lucru prin încurajarea

echipelor să-
ș
i arate în m od regulat munca
ș
i să adune feedback, astfel încât să se poată adapta la

schimbare rapid.

2.3 Agile nu este potrivit pentru toate organiza
ț
iile

Fiecare organiza
ț
ie este u nică
ș
i se confruntă cu factori interni dif eri
ț
i (adică dimensiunea organiza
ț
iei

ș
i păr
ț
ile interesate)
ș
i factori externi (adică clien
ț
ii
ș
i reglementările). Pentru a ajuta la satisfacerea

diferitelor nevoi ale diferitelor organiza
ț
ii, există diferite metodologii Agile
ș
i mai multe tipuri diferite

de teste pe care le pute
ț
i face în timp ce lucra
ț
i în cadrul uneia dintre aceste metodologii agile. Care

mix este potrivit pentru echipa ta va depinde de factorii, nevoile
ș
i obiectivele tale interne
ș
i externe.

Să aruncăm o privire la ce presupun unele dintre cele mai populare metodologii Agile
ș
i metode de

testare:

10

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


Metodologiile Agile


Scrum


Kanban


Metodele de Testare


Modalită
ț
ile de testare în cadrul Dezvoltării conduse de comportament (

BDD

)

[9]


Modalită
ț
ile de testare în cadrul Dezvoltării conduse de testul de acceptare

(

ATDD

)

[10]


Testarea exploratorie


Testarea bazată pe sesiune

2.3.1 Tipuri de

Metodologii Agile

I.
Scrum:


Ce este?

Scrum este un cadru de proces Agile pentru gestionarea lucrărilor complexe de

cunoa
ș
tere, cu un accent ini
ț
ial pe dezvoltarea de software , de
ș
i a fost utilizat în alte domenii
ș
i

începe lent să fie explorat pentru alte lucrări complexe, cercetare
ș
i tehnologii avansate. Este

conceput pentru echipe de zece sau mai pu
ț
ini membri, care î
ș
i desfă
ș
oară activitatea în

obiective care pot fi finalizate în cadrul itera
ț
iilor de tip timeboxed, numite sprinturi, nu mai

mult de o lună
ș
i cel mai frecvent două săptămâni, apoi urmăresc progresul
ș
i re-planifică în 15

minute întâlniri zilnice în timp, numite

scrumuri

[11]

zilnice.

Scrum începe cu o cerin
ț
ă sau o “poveste de utilizator”

[12]

care prezintă modul în care func
ț
iile ar

trebui să fie efectuate
ș
i testate. Echipa apoi trece printr-o serie de sprinturi pentru a oferi rapid mici

explozii de valoare. Pentru a ajuta echipa să func
ț
ioneze în acest mod flexibil
ș
i pentru a evita

schimbarea priorită
ț
ilor, S crum cere ca răspunsurile la întrebări să fie primite de la bun început.


Cum este diferit de modelul Waterfall?

În timp ce Waterfall include mai multe cicluri de

testare
ș
i remedier e a erorilor înainte de a lansa un produs, Scrum este mult mai colaborativ
ș
i

mai iterativ. Una dintre cele mai mari diferen
ț
e este că Waterfall solicită documente din timp.

Această documenta
ț
ie face mai dificilă schimbarea caracteristicilor pe măsură ce procesul

continuă, ceea ce poate fi negativ în unele medii (cum ar fi software de calitate pentru

consumatori)
ș
i unul pozitiv (cum ar fi cele în care echipa încearcă să lanseze o rachetă,

deoarece nimeni nu dore
ș
te cerin
ț
e pentru ceva periculos c are se schimbă frecvent). Acestea

fiind spuse, s-ar putea să vă gândi
ț
i la Scrum ca la multe „mini Waterfall-uri”, deoarece

cerin
ț
ele sunt bine definite la începutul fiecărui sprint
ș
i nu ar trebui să se schimbe în interiorul

11

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

acestuia. Diferen
ț
a este că cerin
ț
ele detaliate pentru următ orul sprint nu sunt stabilite cu luni

înainte.

Scrum solicită o colaborare mai regulată între testeri, dezvoltatori
ș
i BA, de obicei sub formă de

scrumuri zilnice
ș
i retrosp ective sprint, pentru a asigura o comunicare
ș
i aliniere adecvată. În plus,

există un Scrum Master

[13]

care ajută cu eliminarea impedimentelor din calea progresului echipei de

dezvoltare, eliminând blocarile din echipă pentru a se asigura că pot fi cei mai eficien
ț
i. Scrum Master

poate fi oricine din echipă, cum ar fi un dezvoltator sau un tester.


Ce presupune?

Scrum oferă una dintre cele mai u
ș
oare tranzi
ț
ii pentru echipele care provin

dintr-un mediu de tip Waterfall, deoarece este bazat pe timp cu sprinturi
ș
i versiuni ce poate fi

planificat în avans. Acestea fiind spuse, necesită itera
ț
ii mai rapide
ș
i o colaborare mai

puternică.


Pentru cine este?

Datorită itera
ț
iilor sale rapide, Scrum este cel mai potrivit pentru echipele ai

căror clien
ț
i
ș
i păr
ț
i interesate doresc să fie implicate activ. Această colaborare permite echipei

să facă modificări pentru viitoarele itera
ț
ii. Membrii cheie ai echipei care ar trebui să fie

implica
ț
i în abord area Scrum includ:


Proprietarul produsului (PO)

[14]

;


Scrum Master (SM);


Dezvoltatori;


Ingineri de automatizare;


Testeri;


Păr
ț
ile inter esate.


Care sunt cele mai bune practici?

Pe lângă comunicarea puternică, colaborarea
ș
i

adaptabilitatea, alte bune practici pentru testeri, urmând o metodologie Scrum, includ:


Determinarea criteriilor de acceptare bazate pe comunicarea (de obicei sub forma unei

pove
ș
ti a ut ilizatorului) de la un reprezentant de vânzări sau un client (notă: această

conexiune directă ar trebui să contribuie la reducerea comunicărilor gre
ș
ite);


Utilizarea criteriilor de acceptare pentru a dezvolta codul
ș
i a asigura aprobarea echipei

pentru acel cod;


Testarea codului în medii asemănătoare cu cutii de nisip, precum
ș
i în medii

asemănătoare produc
ț
iei înainte de a-l implementa în produc
ț
ie.

II.
Kanban:

12

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

Ce este?

Kanban este un cadru popular utilizat pentru implementarea Metodologia Agile. Acesta

necesită o comunicare în timp real a capacită
ț
ii
ș
i transparen
ț
a deplină a muncii. Articolele de lucru

sunt reprezentate vizual pe o placă kanban

[15]

, permi
ț
ând membrilor echipei să vadă în orice moment

starea fiecărei lucrări.

[16]

Spre deosebire de Scrum, Kanban nu este bazat pe timp. Mai degrabă, se bazează exclusiv pe

prioritate. Când un dezvoltator este pregătit pentru următoarea sarcină (task), o va lua pe următoarea

cea mai prioritară din lista de activită
ț
i. Deoarece există mai pu
ț
ine întâlniri de planificare, această

abordare înseamnă că echipa trebuie să fie extrem de apropiată. În acest tip de mediu, dacă

dezvoltatorii lucrează mult mai repede decât testerii, blocajele vor cre
ș
te. În aceste situa
ț
ii, oricine din

echipă ar trebui să sară
ș
i să ajute în diferite domenii. Desigur, satisfacerea acestei nevoi necesită o

mare flexibilitate
ș
i adapt abilitate.


Cum este diferit de tipul Waterfall?

Kanban are în continuare cerin
ț
e precum Waterfall, dar

cerin
ț
ele se pot sc himba, deoarece echipa de testare nu începe să se gândească la testarea

fiecărei cerin
ț
e până când dezvoltatorul nu o va selecta din partea de sus a listei. Planificarea

grea care vine într-un mediu de Waterfall este excelentă în unele cazuri, cum ar fi atunci când

construie
ș
ti lucrur i scumpe, dar nu este întotdeauna necesară. Cu Kanban, lansările sunt încă

planificate, dar echipele nu promit, de obicei, nimănui func
ț
ii până la anumite date, cu excep
ț
ia

cazului în care articolul în cauză este aproape de partea de sus a listei.


Ce presupune?

Kanban oferă o tranzi
ț
ie simplă pentru echipele potrivite. Pentru a face o

tranzi
ț
ie lină către Kanban, BA, dezvoltatorii, testerii
ș
i păr
ț
ile interesate ar trebui să comunice

în mod regulat. Atunci când trece
ț
i la Kanban, este important să re
ț
ine
ț
i că această metodologie

oferă cea mai rapidă modalitate de a aduce codul la produc
ț
ie, dar este posibil ca acesta să aibă

unele datorii tehnice. Acest lucru se datorează faptului că echipa de dezvoltarea, fără a
ș
ti

întotdeauna ce urmează, nu produce cel mai reutilizabil cod.


Pentru cine este?

Kanban este cel mai potrivit pentru echipe mici sau echipe care nu produc

caracteristici pentru public
ș
i / sau promit anumite date pentru lansări. În plus, este o

metodologie de vârf la alegere pentru orice produse sau echipe axate în principal pe lucrările de

între
ț
inere, deoare ce bug-urile nu sunt întotdeauna simple
ș
i deseori necesită cercetări pentru

rezolvare, ceea ce face ca gestionarea timpului să fie dificilă. Echipele care nu pot minimiza

cantitatea de planificare pentru probleme sunt probabil mai bune în urma unei metodologii

Scrum sau Waterfall. Membrii echipei care ar trebui să fie implica
ț
i într-un mediu Kanban

includ:


Proprietarul produsului(PO);


Manager de proiect(PM);


Dezvoltatori;


Ingineri de automatizare;

13

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


Testeri.


Care sunt cele mai bune practici?

Pe lângă men
ț
inerea vizibilită
ț
ii
ș
i prioritizarea colaborării,

cele mai bune practici pentru testeri urmând o metodologie Kanban includ:


Păstrarea unei linii de comunicare foarte deschise între proprietarii de afaceri,

dezvoltatori
ș
i testeri;


Asigurarea echipei are flexibilitate pentru a-
ș
i asuma alte roluri în afara

responsabilită
ț
ilor de bază pentru a ajuta la eliminarea blocajelor;


Făcând pe toată lumea un proprietar al produsului, astfel încât să fie orientate spre

rezultat.

2.3.2 Metodele de testare Agile

I.
Modalită
ț
ile de te stare în cadrul

Dezvoltării conduse de comportament (BDD):


Ce este?

Mul
ț
i oameni au auzit despre sau au folosit Test Driven Development (TDD). De

exemplu, dezvoltatorii folosesc TDD pentru a scrie teste unitare

[17]

. BDD se bazează pe

acelea
ș
i principii ca TDD, dar în loc de teste unitare, solicită teste de nivel superior la nivel de

afaceri. În loc să înceapă cu un teste unitare tehnic orientat către TDD, BDD începe cu o

cerin
ț
ă ini
ț
ială bazată pe comportamentul utilizatorului fin al
ș
i solicită teste care „pot fi citite

de om”
ș
i chiar po t înlocui unele documenta
ț
ii cu cerin
ț
e. Această cerin
ț
ă se bazează pe

comportamente pe care ar trebui să le prezinte produsul, creând un ghid etan
ș
pentru ca

inginerii să-l poată utiliza în timp ce dezvoltă teste.

Mai exact, BDD începe cu o specifica
ț
ie func
ț
ională folosind sintaxa Give / When / Then. Această

specifica
ț
ie ghidează apo i dezvoltatorii, testerii
ș
i proprietarii de produse(PO). Utilizează func
ț
ii de

testare automate pentru a determina completitudinea
ș
i rafinarea codului până la trecerea testului, la fel

ca în abordarea TDD, cu excep
ț
ia nivelului echipei. Pentru a asigura trecerea testului (
ș
i de obicei

necesită mai multe încercări), dezvoltatorul ar trebui să refactorizeze codul, nu să adauge

func
ț
ionalită
ț
i noi.

Pe scurt, BDD necesită o strategie de automatizare „inteligentă” care conduce la un nivel ridicat de

eficien
ț
ă. Această strateg ie diferen
ț
iază BDD de alte metodologii Agile.


Prin ce se diferen
ț
iază de testarea standard în Waterfall?

BDD este extrem de diferită de

testarea standard de tip Waterfall, deoarece metoda Waterfall necesită scrierea timpurie a

cazurilor în conformitate cu cerin
ț
ele
ș
i solicită executarea acestor teste până la sfâr
ș
itul

ciclului de dezvoltare. Cu BDD într-un mediu Agile, testele nu se bazează însă pe cerin
ț
e, iar

testarea se întâmplă împreună cu dezvoltarea func
ț
iilor.

14

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

În plus, în cadrul unei metodologii Waterfall, testerii sunt cei care scriu cazurile de testare. În

abordarea BDD,

BO

[18]

sunt cei care definesc testele. Acest mod de lucru reduce comunicarea (sau

comunicarea gre
ș
ită) între BA, dezvoltatori
ș
i testeri.


Ce presupune?

Modificarea unei metodologii BDD poate fi dificilă atunci când echipa se

obi
ș
nuie
ș
te cu un stil tradi
ț
ional de testare. Este necesar ca un BA sau un tester să scrie teste

înainte ca dezvoltatorii să scrie specifica
ț
ia testului în cod care să se potrivească. Este un nou

tip de coordonare în cadrul echipei, dar este extrem de pozitiv prin faptul că echipa lucrează

împreună ca o unitate,

utilizatorii comerciali

[19]

inclu
ș
i.


Pentru cine este?

Metodologia BDD este ideală pentru echipele care lucrează pe software

centrat pe caracteristici
ș
i / sau echipe care pun experien
ț
a utilizatorului pe primul loc. Printre

membrii cheie ai echipei care ar trebui să fie implica
ț
i se numără:


BO / BA;


PM

[20]

;


Dezvoltatori;


Inginer automat / testerul .


Care sunt cele mai bune practici?

Cele mai bune practici pentru testeri care urmează o

metodologie BDD includ:


Simplificarea documenta
ț
iei pentru a men
ț
ine întregul proces cât mai simplist posibil;


Îmbră
ț
i
ș
area unui model „

trei prieteni



[21]

în care p roprietarul, dezvoltatorul
ș
i testerul

produsului formează o echipă unită;


Folosirea unui cadru de testare precum Cucumber

[22]

pentru a defini criteriile;


Construirea de teste automate într-un mod care să le faciliteze reutilizarea cât mai mult

posibil;


Având anali
ș
tii de afaceri să înve
ț
e sintaxa Gherkin

[23]

ș
i să scrie cazuri de testare direct.

II.
Modalită
ț
ile de te stare în cadrul

Acceptance Test Driven Development (ATDD):


Ce este?

ATDD este asemanator cu BDD, deoarece necesită mai întâi crearea de teste
ș
i

solicită ca, codul să fie scris pentru a trece aceste teste. Cu toate acestea, spre deosebire de

TDD, unde testele sunt de obicei teste unitare orientate spre tehnică, în ATDD testele sunt de

obicei teste de acceptare orientate către clien
ț
i.

Ideea din spatele ATDD este că percep
ț
ia utilizatorului asupra produsului este la fel de importantă ca

func
ț
ionalitatea, deci acea stă percep
ț
ie ar trebui să conducă la per forman
ț
a produsului pentru a ajuta la

cre
ș
terea adoptării. Pentru a aduce la via
ț
ă aceste idei, ATDD colectează informa
ț
iile de la clien
ț
i,
ș
i le

folose
ș
te pentru a dezvolt a criteriile de acceptare pentru testele manuale sau automate
ș
i apoi dezvoltă

15

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

traducerea criteriilor de testare în testele de acceptare. Ca
ș
i TDD
ș
i BDD, ATDD este o metodologie

de

testare mai intai

, nu un proces bazat pe cerin
ț
e.

La fel ca metodologiile TDD
ș
i BDD, ATDD ajută la eliminarea zonelor poten
ț
iale pentru

neîn
ț
elegere, eliminând n evoia dezvoltatorilor de a interpreta modul în care produsul va fi utilizat.

ATDD merge cu un pas mai departe decât TDD
ș
i BDD, însă, deoarece merge direct la sursă (clientul)

pentru a în
ț
elege cum va fi utilizat produsul. În mod ideal, această conexiune directă ar trebui să

contribuie la minimizarea necesită
ț
ii de reproiectare a func
ț
iilor în noile versiuni.


Cum este diferit de testarea standard în Waterfall?

ATDD este diferită de testarea standard

în Waterfall, deoarece este o metodologie de prim test. Testarea standard solicită ca
ș
i cazurile

de testare să fie scrise în avans pe baza cerin
ț
elor, în timp ce ATDD nu este un proces de

testare condus de cerin
ț
e.


Ce presupune?

Deoarece ATDD reprezintă o astfel de îndepărtare de la metodele tradi
ț
ionale,

trecerea de la una la alta nu este u
ș
or pentru echipe. Pentru a fi în cea mai bună pozi
ț
ie pentru a

adopta o metodologie ATDD, echipele trebuie să ob
ț
ină achizi
ț
ionarea păr
ț
ilor interesate, ceea

ce se poate dovedi provocator uneori.


Pentru cine este?

Datorită accentului său pe percep
ț
ia utilizatorului, ATDD este cel mai

potrivit pentru echipele care sunt concentrate pe experien
ț
a utilizatorului, au obiective în jurul

ratelor ridicate de adop
ț
ie
ș
i doresc să reducă la minimum numărul de modificări ale func
ț
iilor

în versiunile viitoare. Membrii cheie ai echipei care ar trebui să fie implica
ț
i într-un mediu

ATDD includ:


Client / Avocat client;


Dezvoltator;


PO / BA;


Inginer testare automată / testeri;


PM.


Care sunt cele mai bune practici?

Cele mai bune practici pentru testeri care urmează o

metodologie ATDD Agile includ:


Interac
ț
ionând strâns cu clien
ț
ii, pentru a determina a
ș
teptările;


Se bazează pe membrii echipei orientate către clien
ț
i, cum ar fi reprezentantul vânzărilor,

agen
ț
ii de s ervicii pentru clien
ț
i
ș
i managerii de cont, pentru a în
ț
elege a
ș
teptările

clien
ț
ilor;


Dezvoltarea criteriilor de acceptare bazate pe a
ș
teptările clien
ț
ilor;


Prioritizarea a două întrebări:


Clien
ț
ii vor folosi sistemul dacă face X?


Cum putem valida dacă sistemul face X?

16

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

III.
Testare Exploratori

[24]

:


Ce este?

Este un tip de testare software în care cazurile de testare nu sunt create în avans, ci

testerii verifică sistemul din mers. Ace
ș
tia pot nota idei despre ce trebuie testat înainte de

executarea testului. Testarea exploratorie se concentrează mai mult pe testare ca activitate de

„gândire”.

Testele exploratorii nu sunt scrise. Mai degrabă, este vorba despre dezvoltarea celor mai bune teste

bazate pe fiecare software unic. Datorită abordării sale nescrise, testarea exploratorie imită adesea

modul în care utilizatorii vor interac
ț
iona cu software-ul în via
ț
a reală.

Testarea exploratorie respectă patru principii cheie:


Planificarea testelor paralele, proiectarea testelor
ș
i executarea testelor;


Specific, dar flexibil;


Aliniat la investigarea poten
ț
ialelor oportunită
ț
i;


Impartasire de cuno
ș
tin
ț
e.


Cum este diferit de testarea standard în Waterfall?

Testarea exploratorie se poate efectua

atât în mediul Waterfall, cât
ș
i în Agile, dar integrarea strânsă între testeri
ș
i dezvoltatori

într-un mediu Agile ajută la u
ș
urarea oricăror blocaje care ar putea ie
ș
i la suprafa
ț
ă în timp ce

se efectuează teste exploratorii într-un mediu de tip Waterfall.

În plus, pentru a efectua teste exploratorii într-un mediu de tip Waterfall, documenta
ț
ia privind

rezultatele testelor este o necesitate, iar această documenta
ț
ie ar trebui să fie u
ș
or de urmărit la cerin
ț
e.


Ce presupune?

Îmbră
ț
i
ș
area testării exploratorii este rela tiv u
ș
oară, deoarece este rapid de

lansat (
ș
i la scară) , simplu de învă
ț
at
ș
i oferă avantaje pentru întreaga echipă. Acestea fiind

spuse, este important să re
ț
ine
ț
i că nu ar trebui să fie singu ra formă de testare (mai degrabă, ar

trebui să informeze ce tip de testare se întâmplă în continuare). În plus, de
ș
i este nescris,

testarea exploratorie nu ar trebui să fie nestructurată (testerii mai trebuie să stabilească un

obiectiv, să vă înregistreze activită
ț
ile
ș
i să adopte mental itatea unui anumit utilizator).


Pentru cine este?

Testarea exploratorie poate ajuta la reducerea timpului petrecut în testare, la

găsirea mai multor defecte
ș
i la îmbunătă
ț
irea acoperirii codului. Drept urmare, testarea

exploratorie este cea mai potrivită pentru echipele care nu au suficient timp pentru testare

Membrii cheie ai echipei care ar trebui să fie implica
ț
i în testarea exploratorie sunt:


Testeri (de
ș
i to
ț
i cei din echipă ar trebui să participe într-un fel).

17

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


Care sunt cele mai bune practici?

Cele mai bune practici pentru testerii care utilizează teste

exploratorii includ:


Organizarea func
ț
ionalită
ț
ii din aplica
ț
ie folosind ceva precum un Mindmap

[25]

sau o

foaie de calcul;


Concentrarea pe anumite zone sau anumite scenarii;


Urmărirea a ceea ce este testat pentru a ajuta la reproducerea eventualelor erori;


Documentarea rezultatelor într-un instrument precum qTest Explorer, Squash etc., deci

există o anumită responsabilitate pentru ceea ce a fost testat.

IV.
Testarea bazată pe sesiune:


Ce este?

Este o metodă de testare software care are ca scop combinarea responsabilită
ț
ii
ș
i

testarea exploratorie pentru a oferi descoperirea rapidă a defectelor, controlul managementului

ș
i raportarea metr icilor. Testarea bazată pe sesiuni a fost dezvoltată în 2000 de Jonathan
ș
i

James Bach. Testarea bazată pe sesiune poate fi utilizată pentru a introduce măsurarea
ș
i

controlul într-un proces de testare imatur
ș
i poate constitui o bază pentru îmbunătă
ț
iri

semnificative ale productivită
ț
ii
ș
i detectării erorilor. Test area bazată pe sesiune poate oferi

beneficii atunci când cerin
ț
ele formale nu sunt prezente, incomplete sau se schimbă rapid

[26]

.

Testarea bazată pe sesiune asigură această structură prin efectuarea de teste în timpul sesiunilor fără

întreruperi, în timp ce se testează se solicită testerilor să raporteze testele care au avut loc în fiecare

sesiune. În plus, testarea bazată pe sesiuni ar trebui eliminată cu un „reziduu” între testatorul

(testatorii)
ș
i managerul c are acoperă cele cinci puncte PROOF: Ce s-a întâmplat (

P

ast), ce s-a ob
ț
inut

(

R

esults), ce s-a ob
ț
inut (

O

bstacles), ce mai trebuie făcut (

O

utlook)
ș
i cum simte testerul despre asta

(

F

eelings).


Cum este diferit de testarea standard de tip Waterfall?

Testarea bazată pe sesiuni poate fi

efectuată atât în mediile Agile, cât
ș
i în Waterfall, dar este mai favorabilă colaborării strânse

între testeri
ș
i dez voltatori, care se găse
ș
te de obicei în me diile Agile.


Ce presupune?

La fel ca în cazul testării exploratorii, adoptarea testării bazate pe sesiuni se

dovede
ș
te relativ u
ș
oară, deoarece este u
ș
or de ridicat
ș
i lansat rapid. Pentru testerii obi
ș
nui
ț
i

deja cu testarea exploratorie, cel mai mare obstacol este aceea de a include structura

suplimentară pentru care apelează testarea bazată pe sesiune. La fel ca în cazul testărilor

exploratorii, echipele care efectuează testarea bazată pe sesiuni ar trebui să-
ș
i amintească că nu

este o oprire finală, ci mai degrabă o metodă care să ajute la determinarea celui mai bun tip de

testare pe care urmează să-l efectueze.


Pentru cine este?

Testarea bazată pe sesiune poate ajuta la reducerea timpului de testare,

cre
ș
terea descope ririi defectelor
ș
i a acoperirii codului, ce ea ce este ideal pentru echipele care

18

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

se confruntă cu restric
ț
ii de timp
ș
i au nevoie de mai mult e îndrumări pentru a determina ce

tipuri de teste trebuiesc executate. Este ideal
ș
i pentru echipele care au găsit beneficii în

testarea exploratorie, dar care trebuie să îmbunătă
ț
ească responsabilitatea pe parcursul

întregului proces. Membrii cheie ai echipei care ar trebui să fie implica
ț
i în testarea bazată pe

sesiuni includ:


Testeri;


Manageri.


Care sunt cele mai bune practici?

Cele mai bune practici pentru testerii care utilizează

testarea bazată pe sesiuni sunt:


Schi
ț
ează o misiune, astfel încât testerii să
ș
tie cat mai mult despre software-ul pe care îl

testează;


Dezvoltarea unui plan clar care indică misiunea, zonele software-ului de testat, care

testerul va rula sesiunea, când va avea loc sesiunea
ș
i cât timp, testele proiectate
ș
i

executate, bug-urile găsite
ș
i notele generale;


Executarea sesiunii de testare fără întreruperi;


Documentarea clară a activită
ț
ilor
ș
i a notelor în tim pul sesiunii;


Ț
inerea une i mini
ș
edin
ț
e între tester
ș
i manager pentru a examina rezultatele sesiunii
ș
i

a discuta pa
ș
ii următori pentru testare.

2.3.3 Cum să alinia
ț
i test area cu un proces de livrare Agile

După ce stabili
ț
i ce metod ologie de testare este potrivită pentru organiza
ț
ie, procesul încă nu este

finalizat. Încă trebuie să alinia
ț
i testarea la livrare. Pentru a atinge acest obiectiv, vă recomandăm o

abordare în trei rânduri:

1.
Implica
ț
i-vă în procesul de dezvoltare cât mai devreme posibil:

Cu cât testerii se pot implica mai devreme, cu atât mai bine. În mod ideal, testerii ar trebui să fie

prezen
ț
i încă din prima zi . Acest lucru se datorează faptului că acordarea testerilor un loc la masă oferă

la fiecare pas un nivel mai bun de cunoa
ș
tere a cerin
ț
elor
ș
i obiectivelor, încurajează colaborarea.

2.
Testa
ț
i frecvent:

19

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

Pe măsură ce tot mai multe echipe adoptă metodologii Agile, eficien
ț
a este totul. Această nevoie de

viteză a determinat echipele să îmbră
ț
i
ș
eze
ș
i DevOps
ș
i integrarea continuă(

CI

[27]

) pentru a men
ț
ine

lucrurile în mi
ș
care
ș
i asta necesită testare mai frecventă..

3.
Testele trebuie create cât mai repede cu putin
ț
ă:

Ț
inând cont de nevoia de viteză în lumea Agile, condusă de DevOps, testerii trebuie să grabeasca

procesul de creare a testelor. Dacă ave
ț
i un loc la masă pentru toate conversa
ț
iile de la bun început, ar

trebui să vă ajute în această privin
ț
ă.

3.
Metodologia SAFe

3.1 Ce este Scaled Agile Framework (SAFe)?

Scaled Agile Framework (SAFe)

[28]

este o bază de cuno
ș
tin
ț
e online disponibilă gratuit, care vă

permite să aplica
ț
i practic i u
ș
oare la nivel de companie. Oferă o e xperien
ț
ă simplă, u
ș
oară pentru

echipa de dezvoltare software. Întregul cadru este împăr
ț
it în trei segmente

Echipa

,

Programul

ș
i

Portofoliul

. SAFe permite echipei:


Implementarea de software
ș
i sisteme Lean-Agile la nivel de întreprindere;


Se bazează pe principiile Lean
ș
i Agile;


Oferă îndrumări detaliate pentru activitatea la portofoliul companiei, fluxul valoric, program
ș
i

echipă;


Este conceput pentru a răspunde nevoilor tuturor păr
ț
ilor interesate din cadrul unei organiza
ț
ii.

3.1.1 De ce sa folosesti Agile Framework:

Este simplu
ș
i u
ș
or, dar se extinde pentru a face fa
ț
ă nevoilor fluxurilor de valori mari
ș
i dezvoltării

complexe a sistemului. Prin implementarea unui Agile Framework, ve
ț
i avea următoarele avantaje:

[29]

20

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


Productivitatea

crescută


cu

20 – 50%;


Calitatea

crescută


cu peste

50%;


Timpul de comercializare

mai rapid cu

30-75%;


Cre
ș
terea implic ării angaja
ț
ilor

ș
i a

satisfac
ț
iei în muncă.

3.1.2 Cand se folose
ș
te Scaled Agile Framework:


Atunci când o echipă este interesată să implementeze o abordare Agile în mod constant pe

programe
ș
i porto folii mai mari, cu mai multe echipe;


Când mai multe echipe î
ș
i desfă
ș
oară propriul mod de imp lementare Agile, dar se confruntă în

mod regulat cu obstacole, întârzieri
ș
i e
ș
ecuri;


Când echipele vor să lucreze independent;


Când dori
ț
i să sca la
ț
i Metodologia Agile la nivelul întregi i organiza
ț
ii, dar nu sunte
ț
i sigur ce

roluri noi pot fi necesare sau ce roluri existente (adică, management) trebuie să se schimbe
ș
i

cum;


Când a
ț
i încercat să extinde
ț
i Metodologia Agile în întreag a organiza
ț
ie, dar trebuie aliniata o

strategie uniformă sau consecventă între departamentele de afaceri, la nivel de program
ș
i de

echipă;


Atunci când o organiza
ț
ie trebuie să-
ș
i îmbunătă
ț
ească timpul de dezvoltare a produsului
ș
i

dore
ș
te să
ș
tie cum alte companii au reu
ș
it să escaladeze în Metodologia Agile cu SAFe.

3.1.3 Cum se diferen
ț
iază de alte practici Agile:


Este disponibil public
ș
i gratuit;


Disponibil într-o formă extrem de accesibilă
ș
i utilizabilă;


Rezultă u
ș
or, prac tic dovedit
ș
i specific nivelului;


Modifică / men
ț
ine constant / men
ț
ine regulat practicile A gile utilizate cel mai frecvent;


Oferă extensii utile practicilor comune Agile;


Motivează practicile Agile într-un context al întreprinderii;


Oferă o imagine completă de dezvoltare de software;

21

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


Vizibilitatea sau transparen
ț
a este prezentă pe toate nivelurile;


Continuă sau face feedback regulat cu privire la calitate
ș
i îmbunătă
ț
ire.

3.2 Funda
ț
ia Scaled Agi le Framework:

1.
Principiile Lean-Agile;

2.
Valorile de bază;

3.
Conducere Lean-Agil;

4.
Mod de gândire Lean-Agile;

5.
Comunită
ț
i de pra ctică (grup de oameni care lucrează constant la practicile SAFe);

6.
Implementarea 1-2-3.

3.2.1 Principiile SAFe Lean-Agile

[30]

:

Aceste principii
ș
i valori de bază pentru SAFe trebuie în
ț
elese, expuse
ș
i continuate pentru a ob
ț
ine

rezultatele dorite:


Ave
ț
i o perspectiv ă economică;


Aplica
ț
i sisteme d e gândire;


Asumă variabilitatea; păstra
ț
i op
ț
iunile;


Construi
ț
i treptat cu cicluri rapide de învă
ț
are integrate;


O evaluare obiectivă a sistemelor de lucru;


Vizualiza
ț
i
ș
i limita
ț
i

WIP

[31]

(lucrări în curs), reduce
ț
i dimensiunile lotului
ș
i gestiona
ț
i

lungimile cozii;


Aplica
ț
i caden
ț
a, sincroniza
ț
i cu planificarea dintre mai multe domenii;


Deblochează motiva
ț
ia intrinsecă a lucrătorilor pregatiti;


Descentraliza
ț
i luarea deciziilor.

3.2.2 SAFe Agile – Valori de bază:

SAFe Agile se bazează pe aceste patru valori.

a)
Alinierea:


SAFe acceptă alinierea.


Alinierea începe de la:

22

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


Teme strategice în portofoliul de datea and;


Se deplasează la Vision
ș
i Road Map a listelor de date
ș
i apoi;


Se mută în Backlog-urile echipei.

b)
Calitate încorporată:


Se asigură că fiecare livrare incrementală reflectă standardele de calitate;


Calitatea nu este „adăugată mai târziu” este încorporată de la început;


Calitatea încorporată este o condi
ț
ie prealabilă a Lean
ș
i este obligatorie.

c)
Transparentă:


Transparen
ț
a este facilitatorul încrederii;


SAFe ajută compania să ob
ț
ină transparen
ț
ă la toate nivelurile – Executivi, manageri de

portofoliu
ș
i alte păr
ț
i interesate;


Toată lumea poate vedea în portofoliu Backlog / Kanban, Backlogs de programe /

Kanban
ș
i Team Backlog / Kanban;


Fiecare nivel are o în
ț
elegere clară a obiectivelor

PI

[31]

;


Programele Train au vizibilitate în întârzierile echipei, precum
ș
i alte date din program;


Echipele
ș
i programele au vizibilitate în Epics.

d)
Executarea programelor:


SAFe pune accentul pe sistemele de lucru
ș
i pe rezultatele afacerii.


SAFe nu este util dacă echipele nu pot executa
ș
i oferi în mod continuu valoare.

3.2.3 Liderii Lean Agile:

Liderii Lean Agile sunt studen
ț
i
ș
i profesori pe tot parcursul vie
ț
ii. Ajută echipele să construiască

sisteme mai bune prin în
ț
elegerea
ș
i expunerea Principiilor Lean- Agile SAFe.

În calitate de facilitator pentru echipe, responsabilitatea finală este adoptarea, succesul
ș
i îmbunătă
ț
irea

continuă a evolu
ț
iilor Lea n-Agile. Pentru schimbare
ș
i îmbunătă
ț
ire continuă, liderii trebuie să fie

instrui
ț
i.

Principiile acestor lideri Lean-Agile


Conduce schimbarea;


Cunoa
ș
te calea; A ccentuează învă
ț
area pe tot parcursul vi e
ț
ii;


Dezvolta
ț
i oamen ii;


Inspira
ț
i
ș
i alinia
ț
i la misiune; Minimizează restric
ț
iile;


Descentralizarea luării deciziilor;


Debloca
ț
i motiva
ț
ia intrinsecă a lucrătorilor califica
ț
i.

23

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

3.2.4 Modul de gandire in Agile:

Modul de gandire in Agile este reprezentat de doua lucruri:

A.
The SAFe House of Lean;

B.
Manifestul Agile.

A. The SAFe House of Lean

:

Obiectivul Lean este imbatabil: Pentru a oferi o valoare maximă a clientului în cel mai scurt timp, cu

cea mai înaltă calitate posibilă clientului.

În figura mai jos sunt explicate Obiectivul, Stâlpii
ș
i Funda
ț
ia „SAFe House of Lean”

[33]

.

24

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

B. Manifestul Agile

Descoperim modalită
ț
i mai bune de a dezvolta software. Prin această lucrare am ajuns să punem în

valoare:

25

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

[34]

De aceea, de
ș
i există o valoare în articolele din dreapta, valorizăm mai mult elementele din stânga.

3.3 Manifestul Agile

1.
Cea mai mare prioritate este satisfacerea clientului printr-o livrare continuă
ș
i timpurie a unui

software valoros;

2.
Îmbră
ț
i
ș
a
ț
i cerin
ț
ele în schimbare, chiar târziu în dezvoltare. Procesele agile valorifică

schimbările în beneficiul clientului;

3.
Furniza
ț
i un softw are func
ț
ional frecvent, de la câteva săp tămâni la câteva luni, cu o preferin
ț
ă

pe termenul cat mai scurt;

4.
Dezvoltatorii
ș
i oamenii de afaceri trebuie să colaboreze zilnic pe toată durata proiectului;

5.
Construi
ț
i proiect e în jurul unor persoane motivate. Dă-le sprijin
ș
i mediul de care au nevoie
ș
i

ai încredere în ei pentru a-
ș
i termina munca;

6.
Cea mai eficientă metodă de comunicare cu o echipă de dezvoltare este o conversa
ț
ie fa
ț
ă în

fa
ț
ă;

7.
Software-ul func
ț
ional este măsura principală a progresului;

26

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

8.
Procesele agile promovează dezvoltarea durabilă. Sponsorii, dezvoltatorii
ș
i utilizatorii ar

trebui să poată men
ț
ine un ritm constant la nesfâr
ș
it;

9.
O aten
ț
ie continuă la excelen
ț
a tehnică
ș
i un design bun îmbunătă
ț
e
ș
te agilitatea;

10.
Simplitatea – arta de a maximiza cantitatea de muncă nerealizată – este esen
ț
ială;

11.
Cele mai bune arhitecturi, cerin
ț
e
ș
i proiecte apar din echi pe de auto-organizare;

12.
La intervale regulate, echipa reflectă asupra modului de a deveni mai eficace, apoi ajustează
ș
i

î
ș
i reglează compo rtamentul în consecin
ț
ă.

3.3.1 Nivelul echipei

Toate echipele SAFe fac parte dintr-unul

Agile Release Train

[35]

(ART):


Echipele SAFe sunt echipe împuternicite, auto-organizatoare, autogestionatoare;


Fiecare echipă este la fel de responsabilă pentru definirea, construirea
ș
i testarea Story-urilor

din Backlog-ul echipei lor într-o itera
ț
ie de lungime fixă;


Echipele planifică
ș
i execută itera
ț
ii într-un timp de două săptămâni, în conformitate cu

obiectivele convenite;


Echipele vor folosi rutina Scrum / Kanban pentru a livra sisteme de înaltă calitate
ș
i pentru a

efectua un Demo către echipa de UAT

[36]

la fiecare două săptămâni;


Toate echipele diferite din ART vor crea un sistem integrat
ș
i testat. Păr
ț
ile interesate vor

evalua
ș
i vor răsp unde cu feedback rapid;


Acestea aplică practici de calitate deja încorporate.


Fiecare echipă Scrum va avea 5-9 membri, care include toate rolurile necesare pentru a

construi o valoare incrementală a calită
ț
ii în fiecare itera
ț
ie.


Rolurile Scrum includ:


Echipa(Dev+QA);


SM;


PO, Etc..


SAFe împarte cronologia de dezvoltare într-un set de itera
ț
ii în cadrul unui PI (Program

Increment);


Durata PI este cuprinsă între 8-12 săptămâni;


Echipa va folosi Story-uri pentru a oferi valoarea. PO-ul va avea autoritatea asupra creării
ș
i

acceptării Story-urilor;


Story-urile con
ț
in cerin
ț
ele Clientului;


Backlog-ul include user story-uri care sunt identificate în timpul planificării PI.


Identificarea, elaborarea, prioritizarea, programarea, implementarea, testarea
ș
i acceptarea

story-urilor sunt cerin
ț
ele principale ale activită
ț
ii de management la nivel de echipă.


Fiecare itera
ț
ie oferă:

27

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


O cre
ș
tere valoroasă a noilor func
ț
ionalită
ț
i;


Realizarea prin model repetat constant;


Planificarea itera
ț
iei;


Angajarea unor func
ț
ionalită
ț
i;


Executarea iteratiilor construind
ș
i testând Story-uri;


Demo către UAT a noilor func
ț
ionalită
ț
i;


Retrospectiva;


Repeta
ț
i următoarea itera
ț
ie;


Echipele sprijină, de asemenea, Demo-ul de sistem la sfâr
ș
itul fiecărei itera
ț
ii. care este punctul

de integrare critic pentru ART;


Fluxurile cu valoare mai mare vor avea mai multe ART-euri;


Itera
ț
iile de

inova re
ș
i planificare

[37]

(IP)

valorifică echip ele cu o oportunitate de inovare
ș
i

explorare.

3.3.2 Nivel de program

La nivel de program, Valoarea SAFe este livrată de Agile Release Train (ART). Iterarea este

pentru echipă, iar Train este pentru program:


Agile Release Train (ART) este vehiculul principal pentru livrarea valorii la nivelul

programului. Oferă un flux de valoare organiza
ț
iei;


Durata Program Increment (PI) este de 8 până la 12 săptămâni;


ART este format din 5 – 12 echipe Agile (~ 50 – 125+ persoane), care includ toate rolurile
ș
i

infrastructura necesară pentru a furniza software complet testat, func
ț
ional, la nivel de sistem;


Fiecare PI este o casetă de timp cu mai multe itera
ț
ii. În timpul căruia este dezvoltată
ș
i livrată

o incrementare valoroasa;


În fiecare PI, se vor întâmpla sesiuni „demo”
ș
i „Inspectare
ș
i adaptare”;


La nivel de program, SAFe pune accent pe principiul alinierii. Acest lucru se datorează faptului

că eforturile multiple ale echipei sunt integrate pentru a crea valoare clien
ț
ilor;


Ierarhia artefactului SAFe este Epics-> Func
ț
ii-> Story-uri de utilizator(User Story);


La nivel de program, PM / Manager de programe are autoritate pe con
ț
inut. El define
ș
te
ș
i

acordă prioritate datei de întârziere a programului;


Documentul de rezervă al programului este o listă prioritară de func
ț
ii;


La nivel de program, caracteristicile pot fi create sau pot proveni din Epice-uri definite la nivel

de portofoliu;


Func
ț
iile se desco mpun în Povesti de Utilizator
ș
i se transferă în documentele de la nivel de

echipă;

28

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


Rolul Managerului de Produs sau al Release Train Engineer ar putea fi gestionat de Managerul

de program / Manager de proiect senior;


Rolul arhitectului de sistem la nivelul programului este de a colabora zilnic cu echipele. Se

asigură că sunt îndeplinite cerin
ț
ele nefunc
ț
ionale. De asemenea, lucrează cu arhitectul

întreprinderii la nivel de portofoliu pentru a se asigura că există o pistă arhitecturală suficientă

pentru a sus
ț
ine n evoile viitoare ale utilizatorilor
ș
i ale afacerii;


Proiectarea interfe
ț
ei, ghidul experien
ț
ei utilizatorului
ș
i elementele de design pentru echipe

sunt furnizate de UX Designers;


Chief-Scrum Master rolul este jucat de „Release Train Engineer”;


O echipă diversă (de la marketing, dezvoltare, calitate, opera
ț
iuni
ș
i desfă
ș
urare) formează

„Echipa de gestionare a eliberării”. Ace
ș
tia vor aproba comunicările de rutină ale solu
ț
iilor de

calitate pentru clien
ț
i;


Implementarea software-ului în mediile clien
ț
ilor
ș
i livrarea cu succes este efectuata de echipa

DevOps.

3.3.3 Nivelul portofoliului

Cel mai înalt nivel de interes / îngrijorare / implicare / în SAFe este SAFe Portfolio:


Portofoliul oferă blocurile de bază pentru organizarea fluxului de valoare pentru Lean-Agile

prin unul sau mai multe fluxuri de valori;


Portofoliul ajută la dezvoltarea de sisteme
ș
i solu
ț
ii descrise în teme strategice (leagă un

portofoliu SAFe la schimbarea strategiei de afaceri a unei companii);


Pentru îndeplinirea obiectivelor strategice, nivelul portofoliului încapsulează aceste elemente.

Acesta oferă bugetele de bază
ș
i alte mecanisme de guvernare. În acest fel, se asigură că

investi
ț
ia în fluxu rile de valori oferă randamentele necesare companii;


Un portofoliu este conectat bidirec
ț
ional pentru afaceri:


Pentru a ghida portofoliul către obiectivele mai mari ale afacerii în schimbare, oferă

teme strategice;


O altă direc
ț
ie indică fluxul constant al valorilor portofoliului.


Nivelul portofoliului SAFe con
ț
ine oameni, procese
ș
i sisteme de solu
ț
ie necesare
ș
i solu
ț
ii de

care o companie trebuie să î
ș
i îndeplinească obiectivele strategice;


Fluxurile de valoare sunt obiectivele principale în Portofoliu, cu ajutorul cărora se pot finan
ț
a

persoane
ș
i alte re surse necesare pentru construirea solu
ț
iilor;


Conceptele cheie utilizate aici sunt:


Conexiune la Enterprise,


Managementul portofoliului de programe,

29

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


Gestionarea Epice-lor fluxului de portofoliu.

3.3.4 Nivelul fluxului valoric

Nivelul fluxului valoric este op
ț
ional în SAFe:


Nivelul fluxului valoric este destinat / proiectat pentru companiile / organiza
ț
iile care sunt:

1.
De dimensiuni mari;

2.
Independente;

3.
Avand solu
ț
ii complexe;

4.
Solu
ț
iile lo r necesită de obicei mai multe ART-uri;

5.
Au contribu
ț
ia furnizorilor;

6.
Se confruntă cu cele mai mari provocări ale sistemelor;

7.
Pentru sisteme cyber-fizice;

8.
Pentru software, hardware, electricitate
ș
i electronică, optică, mecanică, fluidică
ș
i

multe altele.


Construirea acestui tip de sisteme necesită adesea sute, chiar mii de practicieni, furnizori

externi
ș
i interni.


Dacă sistemele sunt cruciale pentru misiune. E
ș
ecul solu
ț
iei, sau chiar un subsistem, are

consecin
ț
e econom ice
ș
i sociale inacceptabile.


Dacă companiile pot fi construite cu câteva sute de practicieni, este posibil să nu aibă nevoie de

construc
ț
iile acest ui nivel.


Construirea solu
ț
iilor de flux de valori într-un model Lean-Agile necesită artefacte

suplimentare, coordonare
ș
i construc
ț
ii. Deci, acest nivel c on
ț
ine un cadru economic care să

ofere limite financiare pentru fluxul valoric.


Suporta caden
ț
a
ș
i sincronizarea pentru mai multe ART-u ri
ș
i furnizori. Include reuniuni de

planificare pre
ș
i post PI
ș
i solu
ț
ie demonstrativă.


Oferă roluri suplimentare care sunt: Engineer Stream Value, Architect Solution / Engineering

ș
i Management So lution.

30

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

4. Testarea
ș
i calitatea în cadrul SAFe

[38]

4.1 Calitate la nivel de echipă

Una dintre valorile de bază ale SAFe este calitatea cu care este construită în interior. Practicile de

calitate încorporate se asigură că fiecare element din solu
ț
ie, la fiecare cre
ș
tere, respectă standardele de

calitate adecvate pe toată durata dezvoltării. SAFe recomandă construirea de teste înainte de scrierea

codului. O altă practică recomandată de SAFe este munca în pereche. La nivel de echipă, testerii pot,

de exemplu, să se asocieze atât cu utilizatorii cât
ș
i cu dezvoltatorii pentru a co-crea teste. Testerii care

nu pot scrie cod, pot încă să se asocieze cu membrii echipei lor
ș
i să examineze testele automate
ș
i să

discute frecven
ț
a cu care trebuie efectuate testele. Testerii pot juca un rol principal pentru a se asigura

că to
ț
i membrii echipei în va
ț
ă
ș
i folosesc metode de testare Agile. De exemplu. prin facilitarea

discu
ț
iilor cu echipa desp re modul de introducere a metodelor precum ATDD
ș
i BDD. Când utiliza
ț
i

ATDD
ș
i / sau BDD, test erii pot sus
ț
ine PO-ul
ș
i pot încuraja ca în timpul perfec
ț
ionării să se partajeze

cele mai comune exemple
ș
i să se asigure că sunt discutate excep
ț
iile. Această practică oferă echipei

de dezvoltare o bună în
ț
elegere a problemelor care trebuie rezolvate. Pe tot parcursul dezvoltării de

Story-uri
ș
i caracteristici, testerii se pot asocia cu membrii echipei pentru a defini
ș
i testa

constrângerile. Acela
ș
i lucru este valabil
ș
i pentru testarea nefunc
ț
ională. Împerechează cu PO-ului sau

31

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

cu BA pentru a lua în considerare aspecte nefunc
ț
ionale. Dacă testerii au abilită
ț
i de securitate sau

performan
ț
ă, pot contribu i
ș
i la testarea nefunc
ț
ională în echipele Agile.

La un nivel mai practic, testerii ar putea revizui

Definition of Done

[39]

(DOD) pentru a ajuta echipele

să definească măsuri de calitate pentru subiecte precum integrarea end-to-end
ș
i testarea

nonfunctionala. DOD este un instrument excelent pentru integrarea calită
ț
ii în proces. În timp ce

discută membrii echipei este posibil să identifice teste valoroase care nu sunt făcute sau făcute în afara

sprintului. Compara
ț
ia de fini
ț
iei efectuate de o echipă cu cea a ce lorlalte echipe permite alinierea între

echipe.

În practică, adesea, vedem că executarea testelor se face încă manual
ș
i dacă unele teste sunt rulate

automat, acestea au fost de obicei create după ce codul a fost făcută scris, în loc de a folosi o abordare

de

test-first

. Testele automatizate (dacă există) sunt adesea rulate de pe o platformă separată care nu

este integrată în procesul de compilare, iar procesul de eliberare este adesea doar par
ț
ial automatizat
ș
i

un proces vulnerabil. SAFe afirmă că organiza
ț
iile ar trebui să urmărească un proces de construire

repetitiv
ș
i îndemânatic c are să permită implementarea rapidă în diverse medii. Testerii pot contribui

subliniind necesitatea acestui lucru
ș
i asigurând că sunt incluse teste automate de regresie func
ț
ională

ș
i non-func
ț
ională. De
ș
i multe dintre măsurile men
ț
ionate nu sunt noi pentru dezvoltatori, având un

fundal de

Continuous Integration/Continuous Deployment

[40]

(CI / CD), multe organiza
ț
ii continuă

să implementeze aceste practici. Din păcate, SAFe nu abordează în mod explicit necesitatea unei

strategii de calitate eficiente pentru a sprijini echipele Agile. Credem că testerii, managerii de testare
ș
i

al
ț
i profesioni
ș
ti de testare pot contribui la nivel de echipă prin at ragerea aten
ț
iei asupra practicilor de

calitate
ș
i necesitatea une i strategii de calitate. Oferim valoare ajutând la implementarea practicilor

relevante de asigurare a calită
ț
ii
ș
i testare.

4.2 Calitate la nivel de program

Testerii profesioni
ș
ti pot adăuga valoare prin promovarea unui mod de lucru de calitate
ș
i prin

definirea
ș
i implementare a unei strategii de calitate buna. Strategia de calitate va fi definită cel mai

probabil la nivelul Programului. Întrucât define
ș
te ceea ce este necesar pentru ca o solu
ț
ie integrată
ș
i

testată să fie livrată clien
ț
ilor. Implementarea acesteia va avea, de asemenea, un impact asupra

nivelului echipei. O strategie de calitate asigură că este clar ceea ce este esen
ț
ial din diverse

perspective, atât de afaceri, tehnologice
ș
i opera
ț
ionale. Prezintă ce trebuie testat
ș
i cum se face acest

lucru. Poate fi eficient să includă punctele de vedere
ș
i interesele furnizorilor externi
ș
i ale păr
ț
ilor

interesate, cum ar fi ofi
ț
erul de conformitate. SAFe folose
ș
te framework-ul de testare Agile al lui

Brian Marick

[41]

ca ghid pentru a determina diferitele abordări pe care le poate adopta. Dar credem că o

strategie de calitate ar trebui să definească
ș
i modul în care se adună feedback-ul privind calitatea
ș
i

progresul produsului. Este important ca obiectivele PI să fie utilizate pentru a direc
ț
iona colec
ț
ia de

feedback
ș
i informa
ț
ii. Strategia de calitate poate schi
ț
a cum se întâmplă acest lucru în practică. O

strategie de calitate ar trebui, de asemenea, să abordeze calitatea testelor. Lucrările de testare au nevoie

32

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

de audit
ș
i cum sunt antre nate echipele la testarea lor? În unele organiza
ț
ii, managerii de testarea ajută

echipa prin efectuarea scanărilor de îmbunătă
ț
ire a testelor
ș
i facilitarea echipei cu adoptarea de

practici de automatizare a testelor
ș
i CI / CD. Un alt element de abordat în strategia calită
ț
ii este

organizarea testelor care nu se încadrează într-un sprint. În practică, vedem prea des organiza
ț
ii care

nu au o privire de ansamblu
ș
i concentrare. O strategie clară de calitate, care aliniază echipele
ș
i

munca lor
ș
i oferă o persp ectivă comună asupra activită
ț
ii care trebuie realizată. Acest lucru nu duce

numai la solu
ț
ii de calitat e mai bună, ci reduce
ș
i surprizele întârziate
ș
i permite echipelor să discute

despre progres, impedimente
ș
i să-
ș
i planifice foaia de parcurs, da că este necesar. Se asigură că

echipele
ș
tiu ce se a
ș
teaptă de la ei, testarea nu este uitată
ș
i oferă loc antrenării
ș
i predării echipelor.

Aceasta din urmă este o problemă cheie. Odată cu adoptarea de Agile, testarea este o responsabilitate a

echipei
ș
i, cel mai adesea , testarea este făcută de dezvoltatori
ș
i utilizatori care au o expertiză limitată

în testare. Se simt incerti în ceea ce prive
ș
te modul în care testează sau le lipse
ș
te entuziasmul,

deoarece nu în
ț
eleg ce să facă. Considerăm că pot face o treabă
ș
i mai bună atunci când primesc

instruire relevantă
ș
i sunt ajuta
ț
i de testeri cu experien
ț
ă să îmbunătă
ț
ească proiectarea, execu
ț
ia,

asisten
ț
a instrumentelor, înregistrarea
ș
i raportarea. Dezvoltatorii
ș
i utilizatorii vor permite

organiza
ț
iilor să aibă o pr ivire multidisciplinară asupra calită
ț
ii
ș
i vor cre
ș
te flexibilitatea echipei. În

unele organiza
ț
ii, vedem că persoanele cu rol de conducere de calitate se alătură comunită
ț
ii de

practică
ș
i ini
ț
iază evenimente de îmbunătă
ț
ire, instruire
ș
i cuno
ș
tin
ț
e.

În SAFe ultimul sprint din PI este rezervat pentru planificarea PI-ului
ș
i, dacă este nevoie, integrarea

diferitelor active ale sistemului sau solu
ț
iei. Testerii pot contribui în mod obi
ș
nuit la acest sprint cu

facilitarea analizei riscurilor
ș
i a analizei cauzelor rădăcină (Root cause analysis – RCA). Identificarea

riscurilor de afaceri
ș
i tehnice înainte sau în timpul planificării PI poate duce la criterii suplimentare de

acceptare sau chiar la noi Story-uri pentru a acoperi riscurile specifice care trebuie să fie disponibile în

timp ce planifică următorul PI. Multe organiza
ț
ii nu efectuează în mod regulat RCA. De aceea, ei nu

reu
ș
esc să în
ț
eleagă rela
ț
ia dintre incidente
ș
i testare. Prin configurarea unei bucle de feedback, testerii

pot ajuta organiza
ț
ia să cr eeze solu
ț
ii potrivite
ș
i să se asigure că echipele Agile
ș
tiu ce teste contează

cel mai mult. În timpul planificării PI de obicei managerul de dezvoltare senior explica practicile de

dezvoltare. Ar fi firesc ca managerii de teste să discute cu managerul de dezvoltare senior cum să

îmbunătă
ț
ească automatiz area testelor
ș
i să asigure linii directoar e clare pentru echipa Agile. Al
ț
i

parteneri cheie pentru testeri
ș
i manageri de testare sunt persoanele din diversele roluri de arhitect

SAFe care sunt responsabile pentru viziunea arhitecturii, construind pista arhitecturală
ș
i ajutând

echipele Agile să-
ș
i îmbu nătă
ț
ească continuu excelen
ț
a tehnică. Construirea caracteristicilor
ș
i

func
ț
ionalită
ț
ii testabile care cre
ș
te testabilitatea este vitală pentru a men
ț
ine ritmul
ș
i a oferi valoare.

Testarea integrării
ș
i integ rarea este o provocare cheie pentru organiza
ț
iile la scară largă, deoarece este

greu de organizat activită
ț
i în echipă din interiorul echipelor. Nivelul programului SAFe este conceput

pentru a ajuta la ameliorarea provocărilor tipice de integrare. Testerii
ș
i managerii de testarea ar trebui

33

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

să sublinieze importan
ț
a testării , astfel încât testarea integrării să fie luată în considerare la PI

Planning.

O altă provocare tipică la nivelul Programului este de a ne asigura că sunt disponibile medii adecvate

de testare. Testele de integrare, a
ș
a cum am men
ț
ionat anterior, ar trebui să fie executate în fiecare

itera
ț
ie, dar unele teste ar putea fi mai bune de efectuat în ultimul sprint al PI.

Pentru a ob
ț
ine feedback
ș
i a afla cum este folosit sistemul, este i mportant ca solu
ț
iile software să fie

implementate
ș
i oferite ut ilizatorilor săi frecvent
ș
i cu cât mai pu
ț
ine întârzieri posibil. Testarea

modelului de opera
ț
iune p entru a asigura pregătirea opera
ț
ională ar trebui să fie un subiect în timp ce

se definesc obiectivele PI.

O altă provocare în cadrul SAFe este guvernarea. Am observat că progresul
ș
i calitatea sunt adesea

discutate într-o
ș
edin
ț
ă

Scrum-of-Scrums

[42]

, dar indica
ț
iile de progres sunt adesea subiective
ș
i

incomplete. Testarea ajută la o informa
ț
ie transparentă
ș
i obiectivă a software-ului de lucru disponibil.

Asigura
ț
i-vă că sunt dispo nibile date
ș
i medii adecvate pentru a e valua progresul lansării.

Pentru a rezuma multe dintre măsurile descrise ca se încadrează bine în CI / CD, unde identificăm

continuu nevoile pie
ț
ei
ș
i ne propunem să ob
ț
inem solu
ț
ia integrată testată în produc
ț
ie cât mai curând

ș
i des. SAFe nu descrie a ceste practici în detaliu. Prin urmare, integrarea componentelor
ș
i sistemelor

în mod regulat provoacă cea mai mare parte a ART-urilor în Agile. Profesioni
ș
tii în testare pot

contribui prin sus
ț
inerea u nui mod de gândire de calitate, descris într-o strategie de calitate,

coordonând
ș
i planificând practicile de calitate cu persoane relevante atât înainte cât
ș
i în timpul

planificării PI, cât
ș
i oferi nd contribu
ț
ii ale testarii în discu
ț
iile din jurul progresului
ș
i în evaluarea

software-ului de lucru.

4.3 Calitate la nivel de portofoliu

La nivel de portofoliu, temele strategice sunt transpuse în fluxuri de valoare
ș
i Epice-uri. Acest nivel

este pinul de legătură între obiectivele organiza
ț
ionale
ș
i activitatea de dezvoltare care se realizează.

Acest lucru con
ț
ine

„ce”

ș
i

„cum”,

atât aspecte tehnice, cât
ș
i culturale. Da că dorim să încorporam

calitatea în organiza
ț
ie, ac easta ar trebui realizată la acest nivel. SAFe nu define
ș
te un ambasador de

calitate, dar considerăm că ar putea exista un rol important pentru cineva la acest nivel.

Dacă ne uităm la procesele SAFe, el / ea ar putea contribui prin:

4.3.1 Definirea temelor strategice cu un accent pe calitate

Asigura
ț
i-vă că, atunci câ nd sunt definite temele strategice, acestea nu se concentrează numai pe

„func
ț
ionalitatea de aface ri nouă”. Reducerea datoriei tehnice, arhitectura testelor, sus
ț
inerea
ș
i

dezvoltarea unor bune practici de evaluare a calită
ț
ii trebuie, de asemenea, să fie prioritare, deoarece

acestea permit o rată de livrare durabilă. În timp ce echipele IT încearcă să ob
ț
ină timp
ș
i bani pentru a

34

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

optimiza peisajul IT, rămâne o luptă pentru a aborda aceste elemente datorită faptului că calitatea este

insuficient acceptată.

4.3.2 Prioritizează conformitatea Epice-lor

Conformitatea ar trebui planificată
ș
i păzită. La nivel de portofoliu, asigura
ț
i-vă că sunt definite

Epice-urile de conformitate
ș
i func
ț
ionalitatea necesară cu privire la securitatea, trasabilitatea
ș
i

asigurarea veniturilor este implementată. Un accent de calitate va asigura că dovada corectă

(înregistrarea, testarea controalelor
ș
i a documenta
ț
iei) este disponibilă. Acest lucru va ie
ș
i în eviden
ț
ă

în timpul auditurilor
ș
i va reduce alinierea ratelor între ceea ce este necesar de către autorită
ț
i
ș
i ceea

ce este pus în aplicare. SAFe descrie Sistemul de Management al Calită
ț
ii –

Quality Management

System

(QMS) ca un set de practici, politici
ș
i proceduri aprobate. QMS se asigură că activită
ț
ile de

dezvoltare
ș
i rezultatele r espectă toate reglementările relevante
ș
i furnizează documenta
ț
ia necesară

pentru a dovedi acest lucru. QMS ar putea fi în portofoliul ofi
ț
erului de conformitate, dar ambasadorul

calită
ț
ii ar trebui să includ ă
ș
i QMS în strategia de calitate.

4.4 Un rol pentru testeri, manageri de testare
ș
i al
ț
i profesioni
ș
ti de calitate

În sec
ț
iunile anterioare am oferit câteva exemple de considerente de calitate care pot fi făcute în

diferite niveluri ale SAFe. Comunicarea
ș
i gestionarea dependen
ț
elor sunt provocări tipice ale scalării.

Măsurile discutate se concentrează pe a avea o strategie, luând în considerare calitatea în timpul

sesiunilor de planificare
ș
i să se asigure că lucrările legate de calitate au prioritate suficientă.

Constatăm că este nevoie de o concentrare de calitate la toate nivelurile.

Oamenii care sunt în prezent în roluri testare
ș
i alte roluri de calitate au multe cuno
ș
tin
ț
e
ș
i pot lua un

rol de ambasador
ș
i să se asigure că calitatea este încorporată. Pentru profesioni
ș
tii de testare, acest

lucru ar putea necesita o anumită abilitate. Automatizarea testelor
ș
i implementarea CI / CD necesită

cuno
ș
tin
ț
e tehnice la nivelul echipei. Pentru a fi eficient la nivel d e program
ș
i de portofoliu, va trebui

să dobânde
ș
ti abilită
ț
i de afaceri. Pentru a face SAFe, profesioni
ș
tii de testare eficientă îi pot ajuta pe

ceilal
ț
i să creeze calitate
ș
i să faciliteze colaborarea largă. Acest l ucru înseamnă că profesioni
ș
tii care

nu testează se vor focusa asupra practicilor de calitate
ș
i testare. Îi putem ajuta prin coaching, predare

ș
i arătându-le avantajele s trategice pe care le poate avea un profesionist de calitate. Scalificarea

necesită munca în echipă a tuturor oamenilor pentru ca aceasta să func
ț
ioneze. Testerii ar putea foarte

bine să conducă pentru a crea con
ș
tien
ț
a că adevărata agilitate a a facerii necesită o calitate integrată.
Ș
i

faptul că punerea în aplicare a cadrului Agile la scară cu ghidul său actual privind practicile de calitate

nu este suficientă. Necesită aten
ț
ie la toate nivelurile, disciplina
ș
i ambasadorii de calitate, care sunt

gata să ajute la construirea de solu
ț
ii de calitate.

35

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

5. Crearea unui Framework de testare automat
ă

Testarea automată este procesul de scriere a codului care testează automat aplica
ț
ia fără a

necesita nicio interven
ț
ie umană, iar rezultatele produse pot fi analizate pentru testare sau raportare

ulterioară, ceea ce reduce în continuare eforturile de testare
ș
i ajută la furnizarea de software de

calitate mai rapid
ș
i mai a ccesibil. Ini
ț
ial necesită un cost pentru d ezvoltarea suitei de teste de

automatizare, dar ajută la furnizarea de software de calitate mai bună, cu mai pu
ț
in efort într-o

perioadă de timp, deoarece va fi necesară mai pu
ț
ină for
ț
ă de muncă pentru a efectua sarcini repetitive.

De
ș
i numeroase o rganiza
ț
ii folosesc testarea automatizata într-o mare măsură, totu
ș
i încă

depind enorm de testarea manuală. Acest lucru se datorează lipsei de cuno
ș
tin
ț
e despre avantajele

testării automate în procesul de dezvoltare a software-ului. Există un set de cazuri de test predefinite

care sunt executate în mod deliberat manual. Rezultatul fiecărui caz de test este apoi comparat cu

comportamentul scontat
ș
i raportarea rezultatelor sau a discrepan
ț
elor, dacă este găsit.

Testarea repetitivă sau repetarea unui set de executare a cazurilor de testare este foarte

obi
ș
nuită în modelele de dezvoltare de tip Agile. Testarea poate deveni o sarcină obositoare atunci

când vine vorba de testarea pe multiple platforme sau de browserere. Efectuarea unui lucru de mai

multe ori pentru diferite sisteme de operare nu numai că consumă mult timp, dar, de asemenea, mută

accentul de la func
ț
ionali tatea reală care urmează să fie livrată; mai ales când termenele sunt stricte.

Prin urmare, este esen
ț
ial ca testarea automată să fie făcută în aproape fiecare organiza
ț
ie pentru a

economisi timp
ș
i pentru a furniza un software de calitate.

Există multe instrumente disponibile pe pia
ț
ă în acest scop, dar

„Selenium

” se remarcă din

toate acestea atunci când vine vorba de testarea automată a aplica
ț
iilor web. Acum, când avem un

instrument atât de puternic, care este open source
ș
i are un suport comunitar mare, care se întinde pe

mai multe sisteme de operare, browsere
ș
i limbaje de programare; atunci apare întrebarea: Cu ce

limbaj de programare ar trebui folosită? După cum am men
ț
ionat deja, Seleniul este compatibil cu

numeroase limbaje de programare
ș
i anume:

Perl

,

Ruby

,

C #

,

Java

,

Python

ș
i a
ș
a mai departe.

5.1 Alegerea unui limbaj de programare

Seleniul

este instrumentul cel mai proeminent în domeniul testării automatizării, în timp

ce

Java

, pe de altă parte, este cel mai utilizat limbaj de programare pe pia
ț
a de astăzi. Ambele

tehnologii fac împreună o combina
ț
ie perfectă pentru testarea automată.

Motive pentru utilizarea Selenium împreuna cu Java pentru testarea automată:

36

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


Deoarece Java este un limbaj utilizat pe scară largă în industria IT, există o comunitate

uria
ș
ă care o sus
ț
ine împreună cu depozitul masiv de libră rii;


Aproape 77% dintre testerii Selenium folosesc Java, ceea ce face schimbul de cuno
ș
tin
ț
e

foarte u
ș
or
ș
i rapid;


Java este un limbaj matur,
ș
i din acest motiv deja exista o mul
ț
ime de cadre, plugin-uri,

API-uri
ș
i bibliote ci care sunt u
ș
or disponibile, care accep tă Java pentru automatizarea

testelor.


Java folose
ș
te JVM ceea ce îl face un limbaj independent de platformă. Cu alte cuvinte, îl

pute
ț
i folosi în ori ce mediu de operare unde este instalat JVM.


Deoarece Java este scris tipic, IDE-urile Java oferă o mul
ț
ime de feedback cu privire la

erorile cu care s-ar putea confrunta în timpul codării.

5.2 Alegerea unui Unit Test framework

Acum am selectat cel mai potrivit limbaj de programare, acum trebuie să alegem un

cadru de testare unitar pe care să ne bazăm. Întrucât am ales deja limbajul Java pentru a scrie

testele, o sa folosesc

TestNG

pentru a scrie testele unitare, deoarece oferă câteva avantaje

importante, cum ar fi:


TestNG

este similar cu

JUnit

, dar este mult mai puternic decât JUnit – mai ales în ceea

ce prive
ș
te testare a claselor integrate.
Ș
i mai bine, TestNG mo
ș
tene
ș
te toate avantajele pe

care JUnit le are de oferit.


TestNG

elimină majoritatea limitărilor cadrelor mai vechi
ș
i vă oferă posibilitatea de a

scrie teste mai flexibile
ș
i mai puternice. Unele dintre caracteristicile marcante sunt:

adnotări u
ș
oare, grupare, secven
ț
iere
ș
i parametrizare.

Codul de mai jos arată un exemplu de TestNG. Aici toate teste din framework folosesc acelea
ș
i

metode

setupDriver()

ș
i

quitDriver()

datorită adnotărilor

@BeforeTest

ș
i

@AfterTest

:

public


class


BaseTest

{


protected

WebDriver driver;


@BeforeTest


public


void


setupDriver

(ITestContext ctx)

throws

MalformedURLException {

String host =

"localhost"

;

DesiredCapabilities dc;

37

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


if

(System.getProperty(

"BROWSER"

) !=

null

&&

System.getProperty(

"BROWSER"

).equalsIgnoreCase(

"firefox"

)){

dc = DesiredCapabilities.firefox();

}

else

{

dc = DesiredCapabilities.chrome();

}


if

(System.getProperty(

"HUB_HOST"

) !=

null

){

host = System.getProperty(

"HUB_HOST"

);

}

String testName = ctx.getCurrentXmlTest().getName();

String completeUrl =

"http://"

+ host +

":4444/wd/hub"

;

dc.setCapability(

"name"

, testName);


this

.driver =

new

RemoteWebDriver(

new

URL(completeUrl), dc);

}


@AfterTest


public


void


quitDriver

(){


this

.driver.quit();


this

.driver =

null

;

}

}

Vă pute
ț
i gândi la o clasă de testare ca o grupare logică a unor cazuri de testare automate care au

acelea
ș
i obiective sau cel pu
ț
in aceea
ș
i zonă de focalizare.

De exemplu, se pot grupa cazuri de testare automate care se concentrează pe verificarea dacă

aplica
ț
ia calculează pre
ț
ul total al co
ș
ului de cumpărături într-o clasă de testare numită

TotalPriceCalculation

. Aceste teste împărtă
ș
esc probabil aceea
ș
i configura
ț
ie ini
ț
ială de navigare

pe site-ul de comer
ț
elect ronic testat
ș
i pa
ș
ii de eliminare a articolelor din co
ș
.

Cu

TestNG

, pute
ț
i grupa , de asemenea, testele din cadrul unei clase de test în subgrupuri

folosind adnotările

@Test

a
ș
a cum este demonstrat în următorul fragmentul de cod:

public


class


SearchTest


extends


BaseTest

{


@Test


@Parameters

({

"keyword"

})


public


void


search

(String keyword){

SearchPage searchPage =

new

SearchPage(driver);

searchPage.goTo();

38

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

searchPage.doSearch(keyword);

searchPage.goToVideos();


int

size = searchPage.getResult();

Assert.assertTrue(size >

0

);

}

}

5.3 Arhitectura framework-ului: Page Object Model
ș
i Page Factory

Page Object Mode

(POM) este un model de design, utilizat în mod automat în testarea

automată care creează Depozitul de obiecte(

Object Repository

) pentru elemente UI web.

Avantajul modelului este că reduce duplicarea codului
ș
i îmbunătă
ț
e
ș
te men
ț
inerea testelor.

Sub acest model, pentru fiecare pagină web din aplica
ț
ie, ar trebui să existe o clasă de pagină

(

Page Class

) corespunzătoare. Această clasă de pagină va identifica elementele Web ale acelei

pagini web
ș
i con
ț
ine, de asemenea, metode de pagină care efectu ează opera
ț
iuni pe acele

elemente Elemente Web. Numele acestor metode ar trebui să fie dat în func
ț
ie de sarcina pe care

o îndeplinesc, adică, dacă se a
ș
teaptă

să apară gateway-ul de plată, numele

metodei POM poate fi

waitForPaymentScreenDisplay()

.

39

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

Page Object Model este un model de design de obiect în Selenium, unde paginile web sunt

reprezentate ca
ș
i clase, ia r diversele elemente de pe pagină sunt definite ca variabile din clasă. Toate

interac
ț
iunile utilizatorilo r posibile pot fi apoi implementate ca metode în clasă:

clickLoginButton();

setCredentials(user_name, user_password);

Deoarece metodele bine numite din clase sunt u
ș
or de citit, aceasta func
ț
ionează ca o modalitate

elegantă de a implementa rutine de test care sunt atât lizibile, cât
ș
i mai u
ș
or de între
ț
inut sau de

actualizat în viitor. De exemplu:

Pentru a sprijini modelul Page Object, folosim Page Factory.

Page Factory

din Selenium este

o extensie la Page Object
ș
i poate fi utilizată în diverse moduri. În acest caz, vom folosi Page Factory

pentru a ini
ț
ializa elemen te web definite în clase de pagini web sau Obiecte de pagină.

Clasele de pagini web sau obiectele de pagină care con
ț
in elemente web trebuie ini
ț
ializate

folosind Page Factory înainte de a putea fi utilizate variabilele elementului web. Acest lucru se poate

face doar prin utilizarea func
ț
iei

initElements

pe PageFactory:

SearchPage page =

new

SearchPage(driver);

PageFactory.initElements(driver, page);

Sau, chiar mai simplu:

SearchPage page = PageFactory.intElements(driver, SearchPage.class)

Sau, în interiorul constructorului clasei:

public


SearchPage

(WebDriver driver){


this

.driver = driver;

PageFactory.initElements(driver,

this

);

}

Page Factory

va ini
ț
ializa fiecare variabilă WebElement cu o referin
ț
ă la un element corespunzător de

pe pagina de web reală bazată pe configurate „locatoare“. Acest lucru se realizează prin utilizarea

adnotărilor

@FindBy

. Cu această adnotare, putem defini o strategie pentru căutarea în sus a

elementului, împreună cu informa
ț
iile necesare pentru identificarea acestuia:

40

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

@FindBy

(how=How.ID, using=

"SubmitLogin"

)

private

WebElement loginButton;

De fiecare dată când o metodă este apelată la această variabilă de tipul

WebElement

, driverul o va găsi

mai întâi pe pagina curentă
ș
i apoi va simula interac
ț
iunea. În cazul în care lucrăm cu o pagină simplă,

ș
tim că vom găsi element ul din pagină de fiecare dată când îl căutăm
ș
i, de asemenea,
ș
tim că în cele

din urmă vom naviga la alta pagină
ș
i nu ne vom mai întoarce la ea, putem cache-ui câmpul căutat

folosind o altă adnotare simplă(

@CacheLookup

):

@FindBy

(how=How.ID, using=

"SubmitLogin"

)

@CacheLookup

private

WebElement loginButton;

Această întreagă defini
ț
ie a variabilei WebElement poate fi înlocuită cu forma ei mult mai concisă:

@FindBy

(id =

"SubmitLogin"

)

private

WebElement loginButton;

Adnotarea @FindBy acceptă o serie de alte strategii care fac lucrurile un pic mai u
ș
oare:

id, name, className, css, tagName, linkText, partialLinkText, xpath

@FindBy

(id=

"username"

)

private

WebElement user_name;

@FindBy

(name=

"passsword"

)

private

WebElement user_password;

@FindBy

(className=

"h3"

)


private

WebElement label;

@FindBy

(css=

"#content"

)

private

WebElement text;

41

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

Odată ini
ț
ializate, aceste variabile WebElement pot fi apoi folosite pentru a interac
ț
iona cu elementele

corespunzătoare din pagină, de exemplu:

user_password.sendKeys(password);

…trimite respectiva secven
ț
a de caractere la câmpul de parolă din pagină
ș
i este echivalent cu:

driver.findElement(By.name(

"user_password"

)).sendKeys(password);

Trecând mai departe, dacă suntem în situa
ț
ia în care trebuie să găsim o listă de elemente într-o pagină

ș
i atunci

@FindBys

este v arianta corecta de folosire:

@FindBys

(

@FindBy

(css=

"div[class='yt-lockup-tile yt-lockup-video']"

)))

private

List<WebElement> videoElements;

Codul de mai sus va găsi toate elementele

div

care au două nume de clasă „yt-lockup-tile”
ș
i

„yt-lockup-video”. Putem simplifica acest lucru
ș
i mai mult înlocuind-o cu următoarea comanda:

@FindBy

(how=How.CSS,using=

"div[class='yt-lockup-tile

yt-lockup-video']"

)

private

List<WebElement> videoElements;

În plus, pute
ț
i utiliza

@FindAll

cu mai multe adnotări

@FindBy

pentru a căuta elemente care se

potrivesc cu oricare dintre localizatoarele date:

@FindAll

({

@FindBy

(how=How.ID, using=

"username"

),

@FindBy

(className=

"username-field"

)})

private

WebElement user_name;

5.4

Exemplu proiect: Page Object Model
ș
i Page Factory

Proiectul este scris în Java + Selenium folosind IDE-ul IntelliJ Ultimate.

Este un proiect de tip Maven.

În fi
ș
ierul POM.xml avem următoarele configura
ț
ii:

<?xml version=

"1.0"

encoding=

"UTF-8"

?>

<project xmlns=

"http://maven.apache.org/POM/4.0.0"

42

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

xmlns:xsi=

"http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation=

"http://maven.apache.org/POM/4.0.0

http://maven.apache.org/xsd/maven-4.0.0.xsd"

>

<modelVersion>

4.0

.0</modelVersion>

<groupId>ro.utm.informatica</groupId>

<artifactId>LucrareLicenta</artifactId>

<version>

1.0

-SNAPSHOT</version>

<dependencies>

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-java</artifactId>

<version>

3.14

.0</version>

</dependency>

<dependency>

<groupId>org.testng</groupId>

<artifactId>testng</artifactId>

<version>

6.14

.3</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>org.testng</groupId>

<artifactId>testng</artifactId>

<version>

6.14

.3</version>

<scope>compile</scope>

</dependency>

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-api</artifactId>

<version>

2.13

.2</version>

</dependency>

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-core</artifactId>

<version>

2.13

.2</version>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

43

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

<artifactId>slf4j-simple</artifactId>

<version>

1.7

.30</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>io.qameta.allure</groupId>

<artifactId>allure-testng</artifactId>

<version>

2.13

.2</version>

</dependency>

</dependencies>

<build>

<finalName>selenium-docker</finalName>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>

3.7

.0</version>

<configuration>

<compilerVersion>

1.8

</compilerVersion>

<source>

1.8

</source>

<target>

1.8

</target>

<testSource>

1.8

</testSource>

<testTarget>

1.8

</testTarget>

</configuration>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-dependency-plugin</artifactId>

<executions>

<execution>

<id>copy-dependencies</id>

<phase>prepare-

package

</phase>

<goals>

<goal>copy-dependencies</goal>

</goals>

<configuration>

<outputDirectory>

${project.build.directory}/libs

44

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

</outputDirectory>

</configuration>

</execution>

</executions>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-jar-plugin</artifactId>

<version>

3.2

.0</version>

<executions>

<execution>

<goals>

<goal>test-jar</goal>

</goals>

</execution>

</executions>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-surefire-plugin</artifactId>

<version>

3.0

.0-M4</version>

<configuration>

<suiteXmlFiles>

<suiteXmlFile>tests-suite.xml</suiteXmlFile>

</suiteXmlFiles>

</configuration>

</plugin>

</plugins>

</build>

</project>

Am creat Page Object “

SearchPage”

, care are urmatoarea structura:

package

com.searchmodule.pages;

import

org.apache.logging.log4j.LogManager;

import

org.apache.logging.log4j.Logger;

45

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

import

org.openqa.selenium.By;

import

org.openqa.selenium.Keys;

import

org.openqa.selenium.WebDriver;

import

org.openqa.selenium.WebElement;

import

org.openqa.selenium.support.FindBy;

import

org.openqa.selenium.support.PageFactory;

import

org.openqa.selenium.support.ui.ExpectedConditions;

import

org.openqa.selenium.support.ui.WebDriverWait;

import

java.util.List;

public


class


SearchPage

{


//aici este introdus logger-ul Log4j


private


static


final

Logger logger =

LogManager.getLogger(SearchPage.class);


private

WebDriver driver;


private

WebDriverWait wait;


//aici localizam elementul campului de cautare


@FindBy

(name =

"q"

)


private

WebElement searchTxt;


//aici localizam elementul butonul "Video"


@FindBy

(linkText =

"Videoclipuri"

)


private

WebElement videosLink;


//aici localizam toate clipurile de pe pagina


@FindBy

(className =

"g"

)


private

List<WebElement> allVideos;


public


SearchPage

(WebDriver driver){


this

.driver = driver;


this

.wait =

new

WebDriverWait(driver,

30

);

PageFactory.initElements(driver,

this

);

logger.debug(

"driver-ul este initializat"

);

//aici este

folosit logger-ul

}

46

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin


//Metode:


//aici deschidem website-ul


public


void


goTo

(){


this

.driver.get(

"https://google.com"

);

}


//aici efectuam o cautare


public


void


doSearch

(String keyword){


this

.wait.until(ExpectedConditions.visibilityOf(searchTxt));


this

.searchTxt.sendKeys(keyword);


this

.searchTxt.sendKeys(Keys.ENTER);

logger.debug(

"pagina google este deschisa"

);

}


//aici suntem pe pagina cu rezultate
ș
i apasam pe butonul "Video"


public


void


goToVideos

(){


this

.wait.until(ExpectedConditions.visibilityOf(videosLink));


this

.videosLink.click();

logger.debug(

"butonul 'video' este ap
ă
sat"

);

}


//aici printam cate clipuri sunt diponibile pe pagina


public


int


getResult

(){

By by = By.className(

"g"

);

this

.wait.until(ExpectedConditions.numberOfElementsToBeMoreThan(by,

0

));

System.out.println(

this

.allVideos.size());

logger.debug(

"este afi
ș
at num
ă
rul total de clipuri diponibile

pe pagina"

);


return


this

.allVideos.size();

}

}

În Clasa

SearchPage

efectuam o căutare pe Google folosind anumit cuvant cheie, după ce

căutarea a fost făcută navigam pe tab-ul “video” după care numărăm cate video-uri sunt afi
ș
ate

pe pagina.

Cu clasele de obiecte de pagină care reprezintă paginile noastre
ș
i interac
ț
iunile utilizatorilor ca

metode ale acestora, putem acum să scriem rutina noastră de testare simplă ca o serie de apeluri

ș
i afirma
ț
ii de metode simple folosind clasa

“SearchTest”

din fol derul

Test

:

47

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

package

com.searchmodule.tests;

import

com.searchmodule.pages.SearchPage;

import

org.testng.Assert;

import

org.testng.annotations.Parameters;

import

org.testng.annotations.Test;

import

tests.BaseTest;

public


class


SearchTest


extends


BaseTest

{


//aici efectuam testul


@Test


@Parameters

({

"keyword"

})

//parametrul este setat din fisierul

.xml TestNG


public


void


search

(String keyword){

SearchPage searchPage =

new

SearchPage(driver);

searchPage.goTo();

searchPage.doSearch(keyword);

searchPage.goToVideos();


int

size = searchPage.getResult();

//aici stocam numarul de

videouri în variabila "size"

Assert.assertTrue(size >

0

);

//aici verificam ca numarul

total de video-uri este mai mare ca 0

}

}

Structura proiectului

arată în felul următor

(cuprinzând mai

multe teste):

48

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

Concluzie

: Page Object
ș
i Page Factory fac u
ș
oară modelarea pa ginilor web în Selenium
ș
i fac via
ț
a

atât a dezvoltatorilor, cât
ș
i a testerilor mult mai simplă. Când sunt făcute corecte, aceste clase de

obiecte de pagină pot fi reutilizate pe întreaga suită de teste
ș
i pentru a vă oferi posibilitatea de a

implementa teste Selenium automatizate pentru proiectele dvs. din timp, fără a compromite

dezvoltarea Agile. Prin abstractizarea interac
ț
iunilor utilizatorilor din modelele de obiecte de pagină
ș
i

men
ț
inerea rutinelor de te stare u
ș
oare
ș
i simple, pute
ț
i adapta setul de teste la cerin
ț
ele schimbătoare,

cu pu
ț
in efort.

5.5 Alegerea unui mecanism de raportare

Generarea de rapoarte este foarte importantă atunci când efectua
ț
i testare automată, precum
ș
i pentru

testarea manuală. Analizând rezultatul, pute
ț
i identifica cu u
ș
urin
ț
ă câte cazuri de testare sunt trecute,

e
ș
uate
ș
i omise. Analizând raportul, ve
ț
i afla care este starea proiectului.

Selenium webdriver este utilizat pentru automatizarea aplica
ț
iei web, dar nu va genera

rapoarte. TestNG va genera raportul implicit. După ce sunt rulate testele apare folderul “

target

” în care

apare folderul “

surefire-reports

” de aici putem deschide fi
ș
ierul “

index.html

” pentru a vizualiza

raportul TestNG. Face
ț
i clic dreapta pe

index.html

ș
i deschide
ț
i cu browserul web.

Suplimentar am introdus
ș
i bibliotecile de la ter
ț
i, cum ar fi Allure Reports, care ne pot ajuta să

generam rapoarte cu rezultatele testelor care sunt mult mai bine explicate
ș
i prezentate. Pentru a

introduce acest raport în proiectul meu m-am folosit de Maven pentru a descărca dependintele:

<dependency>

<groupId>io.qameta.allure</groupId>

<artifactId>allure-testng</artifactId>

<version>

2.13

.2</version>

</dependency>

După ce testele sunt rulate în folderul sursa al proiectului apare folderul “

allure-reports

”, pentru a fi

afi
ș
at acest raport trebuie să rulăm următoarea comanda in terminal “

allure serve <folder_path>

”,

49

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

exemplu cu raportul Allure generat:

5.6 Implementarea Docker

Pentru a rula testele folosind un container Docker trebuie să construim un fi
ș
ier numit



Dockerfile

” în interiorul proiectului în care sa con
ț
ină următoarele comenzi:

#Imaginea de baz
ă
este urm
ă
toarea:

FROM openjdk:

8

u191-jre-alpine3.8

#Instalam

"curl"

ș
i

"jq"

în imaginea de mai sus

RUN apk add curl jq

#Spa
ț
iul de lucru de din Docker, este creat automat

WORKDIR /usr/share/proiectlicenta

#Adaugam fi
ș
ierele de tip .jar

ADD target/selenium-docker.jar selenium-docker.jar

ADD target/selenium-docker-tests.jar selenium-docker-tests.jar

ADD target/libs libs

#putem adauga mai multe tipuri de

fi
ș
iere

(.csv / .json etc), în

func
ț
ie de nevoile proiectului nostru !

#Adaugam fi
ș
ierele TestNG pentru a rula testele

50

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

ADD

module

-book-flight.xml

module

-book-flight.xml

ADD

module

-search.xml

module

-search.xml

ADD

module

-online-order.xml

module

-online-order.xml

ADD tests-suite.xml tests-suite.xml

#Aici descarc un script pentru a verifica dac
ă
nodurile de Selenium

Grid sunt up and running înainte ca testele sa fie pornite

RUN wget

https:

//s3.amazonaws.com/selenium-docker/healthcheck/healthcheck.sh

#Trebuiesc introduse 3 variabile dup
ă
compilare:

#

Browser

(like: chrome or firefox),

Host

(like: localhost) and

Module

(like: book-flight-

module

or search-

module

)

ENTRYPOINT sh healthcheck.sh

#Comanda pentru pornirea testelor este apelata din scriptul

"healthcheck.sh" de mai sus

#java -cp selenium-docker.jar:selenium-docker-tests.jar:libs

/*

-DBROWSER=$BROWSER -DHUB_HOST=$HUB_HOST org.testng.TestNG $MODULE

Acest fi
ș
ier ne des carca un container Docker pentru a fi folosit ca imagine de baza pentru

imaginea noastra, dupa care sunt instalate utilitarele “curl”
ș
i “jq”, după care este setat spa
ț
iul de lucru

din interiorul containerului, după care adaugam fi
ș
ierele proiectului nostru de tipul

.jar

în interiorul

containerului, după care adaugam fi
ș
ierele TestNG pentru a rula testele noastre, după care este

descarcat un script care în timpul rularii testelor se asigura ca Selenium Grid sa fie 100% func
ț
ional

înainte ca testele sa fie pornite.
Ș
i la final este setat punctul de pornire pentru containerul nostru, tot

aici este setata si comanda java pentru a construi containerul nostru.

Următorul pas este sa construim un fi
ș
ier Jenkinsfile tot în interiorul proiectului nostru si care

sa contina următorul script:

pipeline {


// Jenkins master executor trebuie sa fie setat pe "0"

agent any

stages {

stage(

'Build Jar'

) {

steps {

bat

"mvn clean package -DskipTests"

51

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

}

}

stage(

'Build Image'

) {

steps {

bat

"docker build -t=danpopa86/selenium-docker ."

}

}

stage(

'Push Image'

) {

steps {

withCredentials([usernamePassword(credentialsId:

'dockerhub2'

, passwordVariable:

'pass'

, usernameVariable:

'user'

)]) {

bat

"docker push

danpopa86/selenium-docker:latest"

}

}

}

}

}

Acest fi
ș
ier este împăr
ț
it în trei pa
ș
i:


primul pas numit “

Build Jar

” ne compilează proiectul ;


pasul doi numit “

Build Image

” ne construie
ș
te imagine Docker folosindu-se de cerin
ț
ele

specificate în fi
ș
ierul “

Dockerfile

”;


si pasul trei numit “

Push Image

” trimite imaginea nou creata in hub-ul docker



https://hub.docker.com/

Ulterior imaginea urcata în Hub-ul Docker o sa fie folosită în testele noastre.

5.7 Implementarea Selenium Grid

Pentru a implementa Selenium Grid în proiectul nostru folosim func
ț
iile Docker-ului si ale

Jenkins-ului. Detaliem în continuare pa
ș
ii pentru a implementa Selenium Grid:

a)
Facem un fi
ș
ier nu mit “

docker-compose.yaml

” în care adăugăm următorul script:

version:

"3"

services:

hub:

image: selenium/hub:

3.14

chrome:

52

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

image: selenium/node-chrome:

3.14

depends_on:

– hub

environment:

– HUB_HOST=hub

firefox:

image: selenium/node-firefox:

3.14

shm_size:

'1gb'

depends_on:

– hub

environment:

– HUB_HOST=hub

tests-suite:

image: danpopa86/selenium-docker

depends_on:

– chrome

– firefox

environment:

– HUB_HOST=hub

– BROWSER=firefox

– MODULE=tests-suite.xml

volumes:

/d/docker/jenkins/arctest/test-suite:/usr/share/proiectlicenta/test-o
utput

În care specificam ce versiuni de Selenium Grid + versiunile pentru nodurile de Chrome
ș
i Firefox să

folosească,
ș
i după care s pecifică numele imaginii noastre create precedent (în acest caz se nume
ș
te

“danpopa86/selenium-docker”), specificam ce fi
ș
ier TestNG sa fie rulat pentru teste (în acest caz este

folosit fi
ș
ierul “

test-suite. xml

”)
ș
i în plus tot aici îi trimitem
ș
i ce variabilile de environment ce o sa fie

folosite in teste.

b)
Facem un fi
ș
ier nu mit “

Jenkinsfile

” în care adăugăm următorul scrip:

pipeline{

agent any

stages{

stage(

"Start Grid"

){

steps{

53

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

bat

"docker-compose up -d hub chrome firefox"

}

}

stage(

"Run Test"

){

steps{

bat

"docker-compose up –no-color tests-suite"

}

}

}

post{

always(

"Bring everything down"

){

//archiveArtifacts

'/d/docker/jenkins/arctest/test-suite'

bat

"docker-compose down"

}

}

}

În acest fi
ș
ier sunt aplica
ț
i următorii pa
ș
i:


în primul pas numit “

Start Grid

” folosind comanda “

docker-compose up

-hub chrome firefox”

pornim toată infrastructura Selenium Grid;


în pasul doi, numit “

Run Test

” rulam comanda “

docker-compose up –no-color tests-suite

” in

care pornim imaginea docker creata anterior cu toate testele noastre;


în pasul trei numit “

Bring everything down

” rulam comanda “

docker-compose down

” pentru a

opri toate toate containerele Docker.

5.8 Implementarea cu GitHub pentru controlul versiunilor

În acest capitol implementam sistemul de versionare + “

WebHook-ul

” GitHub pentru a

versiona aplicatia noastra si pentru a construi automat imaginea Docker imediat ce orice commit-uri au

fost urcate în GitHub.

În acest fel a fost creat un “

Repository

” in GitHub la urmatoarea adresa:



https://github.com/DanValentin/ProiectLicenta

” aici a fost implementat un “

webhook

” pentru ca în

momentul cand sunt încărcate modificări ale codului automat se trimite o comanda pentru Jenkins ca

54

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

imaginea Docker sa fie actualizată pe https://hub.docker.com cu ultimele modificări:

În Jenkins proiectul trebui sa fie setat sa accepte webhook-uri:

55

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

5.9 Implementarea CI / CD

Pentru a integra complet tot proiectul folosim Jenkins ca CI/CD tool. Pentru aceasta folosim

următoarea comanda Docker pentru a crea un server Jenkins:

docker run -p

8080

:

8080

-p

50000

:

50000

-v

d:/docker/jenkins:/var/jenkins_home jenkins/jenkins:lts

Aici serverul Jenkins asculta pe portul “

8080


ș
i are o mapare cu folderul “

d:/docker/jenkins

”.

În Jenkins facem un proiect nou numit “

Pipeline Project_Build_Github_WebHooks

” pentru a compila

proiectul nostru
ș
i pentru a crea imaginea Docker cu toate dependintele deja făcute, tot aici trebuie sa

setam
ș
i GitHub_webhoo k-ul setat anterior, în acest proiect trebuie sa folosim “

Repo-ul



https://github.com/DanValentin/ProiectLicenta

”:

In imaginea de mai jos este confirmarea ca imaginea noastra a fost creata si incarcata cu succes in

hub.docker.com:

56

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

Acum orice modificare adusă în codul sursa este automat pornit un build in Jenkins care la randul lui

creează nouă imagine
ș
i o încarcă în

https://hub.docker.com

.

Pentru a rula testele din Jenkins a mai fost creat un “

Repository

” in GitHub



https://github.com/DanValentin/selenium_docker-runner

” acesta contine cele doua fisiere



docker-compose.yaml

si

Jenkinsfile

” create anterior care descarca imaginea noastra de pe

hub.docker.com

si porneste testele folosindu-se de fisierul Jenkinsfile. În Jenkins facem un al doilea

proiect numit “

Test_Runner

” în care este folosit “

Repo-ul

” de mai sus. În momentul cand este pornit

acest proiect din Jenkins sunt descărcate automat imaginile pentru Selenium Grid + Imaginea noastra

personalizata, este creata automat o retea interna si sunt rulate testele specificate în fi
ș
ierul



docker-compose.yaml

”:

57

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

După ce teste sunt finalizate în consola putem vedea logurile în felul următor:

58

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

Concluzii

:

Seleniul este un instrument puternic pentru a efectua teste func
ț
ionale
ș
i de

regresie. Pentru a ob
ț
ine cele mai multe avantaje din aceasta, ar trebui să avem o

arhitectură bună pentru framework chiar de la început. Odată ce cimenta
ț
i o funda
ț
ie

puternică, ulterior se pot dezvolta nenumărate teste.

Un framework este utilizat practic pentru a automatiza lucrările de testare. Aceste

teste includ metode de testare precum smoke testing
ș
i/sau regresie
ș
i altele. Testarea se

poate face pe aplica
ț
ii web, aplica
ț
ii mobile
ș
i chiar pe desktop.

Pentru nivelul următor, folosind Selenium Framework, putem sa ne indreptam

atentia catre

Testarea de Securitate a Aplica
ț
iilor Web folosind Selenium,

dar acest

subiect o să-l dezvolt în lucrarea de dizerta
ț
ie.

Bibliografie

:

1 – https://ro.wikipedia.org/wiki/Testare_software

2 – https://www.techopedia.com/definition/24864/software-bug-

3 – https://ro.wikipedia.org/wiki/Testare_software

4 – https://www.softwaretestingmaterial.com/sdlc-vs-stlc/

5 – https://www.softwaretestingmaterial.com/sdlc-vs-stlc/

6 – https://www.atlassian.com/agile/scrum/sprints

7 – https://www.stateofagile.com/#ufh-c-473508-state-of-agile-report

8 – Acronim pentru Business Analyst (Analist de Afaceri) shorturl.at/ajuG8

9 – https://en.wikipedia.org/wiki/Behavior-driven_development

10 – https://en.wikipedia.org/wiki/Acceptance_test%E2%80%93driven_development

11 – https://en.wikipedia.org/wiki/Scrum_(software_development)

12 – User Story https://en.wikipedia.org/wiki/User_story

13 – https://en.wikipedia.org/wiki/Scrum_(software_development)

14 – Product Owner https://www.scaledagileframework.com/product-owner/

15 – https://www.atlassian.com/agile/kanban/boards

59

Îmbunătă
ț
irea Procesului de Testare folosind Tehnologiile Agile Popa Dan-Valentin

16 – https://www.atlassian.com/agile/kanban

17 – Testare unitara shorturl.at/bgxIR | https://en.wikipedia.org/wiki/Unit_testing

18 – Proprietari de Afacere (Business Owner) shorturl.at/jrDJ5

19 – Utilizatori Comerciali(Business Users) shorturl.at/ackmt

20 – Manager de Proiect (Project Manager ) shorturl.at/fBI23

21 – Three Amigos https://www.agilealliance.org/glossary/three-amigos/

22 – https://en.wikipedia.org/wiki/Cucumber_(software)

23 – https://cucumber.io/docs/gherkin/

24 – https://www.guru99.com/exploratory-testing.html

25 – https://en.wikipedia.org/wiki/Mind_map

26 – https://en.wikipedia.org/wiki/Session-based_testing

27 – https://en.wikipedia.org/wiki/Continuous_integration

28 – https://www.scaledagileframework.com/

29 – https://dzone.com/articles/what-is-scaled-agile-framework-9-principles

30 – https://www.scaledagileframework.com/safe-lean-agile-principles/

31 – https://en.wikipedia.org/wiki/Work_in_process

32 – https://www.scaledagileframework.com/program-increment/

33 – https://www.scaledagileframework.com/lean-agile-mindset/

34 – https://ppt-online.org/106164

35 – https://www.scaledagileframework.com/agile-release-train/

36 – https://en.wikipedia.org/wiki/Acceptance_testing

37 – https://www.scaledagileframework.com/innovation-and-planning-iteration/

38 – https://www.scaledagileframework.com/

39 – https://www.leadingagile.com/2017/02/definition-of-done/

40 – shorturl.at/CGSX3

41 – https://www.scaledagileframework.com/agile-testing/

42 – https://www.atlassian.com/agile/scrum/scrum-of-scrums

43 – https://devqa.io/agile/continuous-testing-agile

44 – https://www.infosys.com/insights/ai-automation/quality-assurance.html

60

Similar Posts