how automate repetitive qa tasks using excel macros
Ovaj detaljni vodič o QA-ovom makronaravnom načinu objašnjava kako automatizirati ponavljajuće QA zadatke pomoću Excel makronaredbi s primjerima i snimkama zaslona Excel listova:
Potreba za automatizacijom u današnjem svijetu jedan je od bitnih i rastućih zahtjeva. Danas svi traže nešto što mu olakšava posao ili gnjavažu koja je uključena u rutinski posao.
U današnje vrijeme nitko ne želi posjetiti mobilnu trgovinu, stajati u redovima kako bi napunio svoj telefon, prikladno je nigdje fizički ne posjetiti, već napuniti telefon na mreži u djeliću sekunde.
Počevši od plaćanja računa za komunalne usluge putem mrežnog bankarstva, rezerviranja i praćenja vašeg taksija putem interneta, kupnje stvari na mreži na raznim web lokacijama e-trgovine do upotrebe različitih automatiziranih uređaja poput perilica rublja, mikrovalne pećnice, gejzira i pametnih telefona koji se neprestano razvijaju itd., Svijet je danas zaista žudnja za pametnim i automatiziranim proizvodima u obliku usluga ili naprava.
U ovom članku nećemo raspravljati o korištenju bilo kojeg alata za automatizaciju ili bilo čega što se tiče umjetne inteligencije ili strojnog učenja, već će fokus biti puka upotreba Excela za automatizaciju svakodnevnih rutinskih zadataka QA-a.
Što ćete naučiti:
QA-ov Macro Mindset
Ručni testeri obično razmišljaju kako ja kao ručni tester nemam nikakve veze ni s čim tehničkim ili drugim riječima, 'know-how za kodiranje nije moja šalica čaja'. To je vjerojatno pogrešno razmišljanje koje bi moglo zaustaviti naš razvoj kao inženjera.
Ručni QA ima mnogo svakodnevnih zadataka koji se mogu ponavljati nakon istog tijeka rada. QA može vrlo dobro prepoznati takve zadatke i automatizirati ih pomoću Excel makronaredbi i / ili formule.
To bi moglo pomoći na dva načina:
- Smanjuje vrijeme utrošeno na ručne napore.
- Također, nadahnjuje QA za učenje i prilagođavanje logičnom razmišljanju i usavršavanju na tehničkom planu.
Stvari se mogu automatizirati za sve dolje navedene faze testiranja:
- Planiranje i procjena ispitivanja.
- Dizajn testa ili priprema test slučaja.
- Ažuriranje statusa izvršenja testa.
- Izvještaj o ispitivanju i stvaranje mjernih podataka.
Brzo postavljanje konteksta
# 1) Excel spreman sa. Proširenje xlsxm je Excel s omogućenom makronaredbom.
#dva) Da biste omogućili makronaredbu u Excelu, odaberite Datoteka -> Opcije -> Centar za povjerenje -> Postavke centra za povjerenje -> Postavke makronaredbi -> Odaberite radio gumb 'Omogući sve makronaredbe' i označite potvrdni okvir 'Vjerujte pristupu objektnom modelu projekta VBA'. Kliknite U redu.
# 3) Odaberite izbornik Pogled -> Makronaredbe -> Snimanje makronaredbi -> Izvršite neke aktivnosti i Zaustavite makronaredbe . Možete urediti makronaredbu i pregledati VBA kod zabilježen u VBA urednik prozor. Slično tome, svoje kodove možete izričito dodati da biste stvorili makronaredbu.
# 4) Pogledat ćemo određene primjere takvih ponavljajućih zadataka koji bi mogli biti dobri kandidati za automatizaciju putem Excel makronaredbi / formula.
Primjer upotrebe # 1
Na kraju svake funkcionalne faze moraju se identificirati neki test slučajevi za regresiju iz funkcionalnog paketa. To je postupak koji treba slijediti u svakom sprintu ili ponavljanju.
Riješenje
Da bi se smanjio napor oko identificiranja i ručnog stvaranja regresijskog paketa, može se implementirati donji inovativni postupak.
- Možete stvoriti list s funkcijskim testnim slučajevima s dodatnim stupcem za označavanje testnih slučajeva / scenarija kao Da / Ne za regresiju.
- Zatim stvorite makronaredbu za istu, takvu da se prilikom pokretanja makronaredbe svi testni slučajevi / scenariji s regresijom označeni kao „Da“ kopiraju na drugi list.
- Tako će se izbjeći dodatna vježba pregledavanja svih funkcionalnih testnih slučajeva na kraju sprinta, a zatim ulaganje dodatnih napora u izdvajanje svakog testnog slučaja u regresijski paket.
Demo
- Prvi list ‘FunctionalTestScenarios’ sadrži sve scenarije funkcionalnih testova / test slučajeva.
- Postoji dodatni stupac ‘Uključiti u paket za regresiju?’ dodano na kraju testnih stupaca za označavanje 'Da' ili 'Ne' utvrđivanjem mora li svaki od testnih scenarija biti uključen u regresijski paket.
- Postoji drugi list stvoren kao ‘RegressionSuite’ i ovo će automatski dohvatiti sve scenarije regresijskog testa kroz makronaredbu.
- CTRL + SHIFT + S postavljen je kao prečac za izvršavanje makronaredbe.
FunctionalTestScenarios
RegresijaSuite
VBA (makro) kod
Sub RegressionSuite() ' Keyboard Shortcut: Ctrl+Shift+S Sheets('FunctionalTestScenarios').Activate Rows('1:1').Select Selection.AutoFilter Sheet1.Range('$A:$D').AutoFilter Field:=4, Criteria1:='Yes' Lastrow=Sheets('FunctionalTestScenarios') .Cells(Sheets('FunctionalTestScenarios').Rows.Count, 'A').End(xlUp).Row Range('A2:C2' & Lastrow).Select Selection.Copy Sheets('RegressionSuite').Select Range('A2').Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False End Sub
Objašnjenje koda
- Tablice („FunctionalTestScenarios“). Aktivirati: Kada je u Excelu više listova, metoda Aktiviraj aktivira prvi list i stoga je fokus izričito postavljen na prvi list.
- Redovi ('1: 1'). Odaberite: Ova izjava odabire prvi redak za sve stupce prvog lista.
- Odabir.AutoFilter: Ova izjava primjenjuje filtar na odabrani prvi redak.
- List1.Range ('$ A $ 1: $ D $ 38 ″). Polje automatskog filtra: = 4, Kriteriji1: =' Da ': Ova izjava primjenjuje automatski filtar na stupac broj 4, tj. ‘Uključiti u paket za regresiju?’ i filtrira zapise za vrijednost 'Da'.
- Lastrow = listovi („FunctionalTestScenarios'). Ćelije (listovi („FunctionalTestScenarios'). Redovi. Broj, „A'). Kraj (xlUp). Red: Ova izjava dobiva posljednji broj redova prvog lista.
- Raspon ('A2: C2' & Lastrow). Odaberite: Ova izjava odabire sve retke i stupce prvog lista s Uključi u paket regresije? = Da.
- Selection.Copy: Ova izjava kopira sve odabrane zapise.
- Tablice ('RegressionSuite'). Odaberite: Ova izjava otvara 2ndlist.
- Raspon ('A2'). Odaberite: Ova izjava odabire ćeliju A2 od 2ndlist.
- Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False: Ova izjava kopira vrijednost odabrane ćelije izvora na odredišni list. Odredišni raspon ćelija sadrži samo izračunate vrijednosti pomoću formula. Alternativno se može koristiti i Paste: = xlValues. Ne preskaču se praznine. Izvorne stanice se ne transponiraju i ne rade se matematičke operacije.
Primjer upotrebe # 2
Postoje slučajevi kada trebate napraviti test slučajeve za recimo 100 država ili 1000 entiteta (poput 1000 obrazaca osiguranja). Probni koraci za ovaj ogromni popis država ili entiteta mogu biti isti i ponavljati se.
Unatoč tome, priprema testnog slučaja mogla bi biti jedna od aktivnosti koja oduzima najviše vremena, jer je posjedovanje dokumenta o testnom slučaju vrlo važno da se od klijenta otkupe potrebne procjene i da QA tim testira svaki od testnih slučajeva unutar ispravno procijenjeni rokovi.
Riješenje
U takvim se slučajevima dugotrajni napori na pripremi testnog slučaja mogu smanjiti na djelić sekundi pomoću makronaredbe.
- Možete stvoriti list u kojem samo dajete ulaz kao testni primjer i jedinstveni popis entiteta.
- Stvorite makronaredbu koja kad se izvrši dodaje ponavljane redove testnih koraka za svaki od ovih entiteta i dokument o testnom slučaju je spreman za nekoliko sekundi, a da ne mora potrošiti znatnu količinu ručnih napora potrebnih za pripremu testnih slučajeva.
Demo
- Prvi list 'GetTestcasesASAP' jedini je ovdje makro-list koji je u početku prazan.
- Još jedan list ‘Uzorak ulaznih podataka’ ne igra nikakvu ulogu u makronaredbi. Sadrži samo uzorke ulaznih podataka u demo svrhe.
- Kopirajte i zalijepite podatke iz uzorka ulaznih podataka u rasponu od A2 do B12 na prvi list.
- Ulazne podatke možete kopirati i zalijepiti u formatu - Stupac A = ……. i stupac B =.
- Nakon što su ulazni podaci spremni, pritisnite CTRL + SHIFT + T kao tipke prečaca za izvršavanje makronaredbe.
- Koraci testa automatski se dodaju za svaki ID slučaja, a dokument testa priprema se u samo nekoliko sekundi.
GetTestcasesASAP
Uzorak ulaznih podataka
Ulazni podaci zalijepljeni su u prvi list.
Slika tijekom izvršavanja makronaredbi pritiskom na CTRL + SHIFT + T.
VBA (makro) kod
Sub GetTestcasesQuick() ' GetTestcasesQuick Macro ' Keyboard Shortcut: Ctrl+Shift+T Sheets('GetTestcasesASAP').Activate lastrow =Sheets('GetTestcasesASAP').Cells(Sheets('GetTestcasesASAP').Rows.Count, 'A').End(xlUp).Row Dim AddRows As Integer AddRows = 5 Dim i As Integer i = lastrow Do While i <> 1 Rows(i & ':' & i + AddRows).Insert i = i - 1 Loop ScreenUpdating = True lastrow = Sheets('GetTestcasesASAP').Cells(Sheets('GetTestcasesASAP').Rows.Count, 'A').End(xlUp).Row i = 2 While i <= lastrow + 6 Sheets('GetTestcasesASAP').Cells(i, 3) = 'Validate rates-factor combinations' Sheets('GetTestcasesASAP').Cells(i + 1, 3) = 'Batch job schedules and runs. ' Sheets('GetTestcasesASAP').Cells(i + 2, 3) = 'Commissioning calculations settlements' Sheets('GetTestcasesASAP').Cells(i + 3, 3) = 'Quick and detailed quote' Sheets('GetTestcasesASAP').Cells(i + 4, 3) = 'Benefit illustration ' Sheets('GetTestcasesASAP').Cells(i + 5, 3) = 'Benefit summary validation' i = i + 7 Wend End Sub
Objašnjenje koda
(a) Tablice (“GetTestcasesASAP”). Aktivirajte: Ova izjava aktivira prvi list.
pitanja i odgovori za softverski inženjering pdf
(b) lastrow = Listovi (“GetTestcasesASAP”). Ćelije (Listovi (“GetTestcasesASAP”). Redovi.broj, “A”). Kraj (xlUp). Red: Ova izjava dobiva zadnji broj redova. Ovaj put dobit će ukupan broj brojeva redaka za početne ID-je testnih slučajeva koji su upravo dodani kao dio ulaznih podataka prije izvođenja makronaredbe.
(c) Zatamni AddRows kao cjelovite: Ova izjava deklarira varijablu AddRows kao cjelobrojni tip podataka.
(d) AddRows = 5: Ova izjava inicijalizira AddRows s 5. Varijabla se koristi za umetanje nekoliko redaka nakon svakog id testnog slučaja, tako da se statički koraci mogu dodati za svaki testni slučaj.
(e) Dim i kao cjelovito: Ova izjava deklarira varijablu i kao cijeli broj.
(f) i = lastrow : Ova izjava varijabli i dodjeljuje početni zadnji red.
(g) Učini dok i 1 : Ovo čini while petlja ubacuje 6 praznih redaka nakon svakog id testnog slučaja. Ponavljanje započinje od zadnjeg id testnog slučaja koji napreduje do prvog id testnog slučaja.
Redovi (i & “:” & i + AddRows) .Umetnite
i = i - 1
Petlja
(h) Ažuriranje zaslona = Tačno : Ova izjava čini vidljivim svako ažuriranje zaslona. Stoga bi izvedba makronaredbe mogla biti malo spora. Da biste optimizirali izvedbu makronaredbe, možete je i postaviti ScreenUpdating = False .
Postavljanje ScreenUpdating na False poboljšava izvedbu makronaredbe i ubrzava njezino izvršavanje, međutim, nećete moći vidjeti isprekidane promjene koje se događaju tijekom izvršavanja makronaredbe. Umjesto toga, promjene će se prikazati tek kada se izvrši izvršavanje makronaredbe.
(i) lastrow = Listovi („GetTestcasesASAP'). Ćelije (Listovi („GetTestcasesASAP'). Redovi. Broj, „A'). Kraj (xlUp). Red : Ova izjava izračunava posljednji broj redova ponovno nakon dodavanja novih 6 redaka za svaki testcase.
(j) i = 2
(k) Dok sam i<= lastrow + 6
Tablice („GetTestcasesASAP'). Ćelije (i, 3) = 'Provjeri kombinacije stopa i faktora“
Tablice („GetTestcasesASAP'). Ćelije (i + 1, 3) = 'Grupni rasporedi poslova i pokretanja. “
Tablice ('GetTestcasesASAP'). Stanice (i + 2, 3) = 'Obračun obračuna puštanja u rad'
Tablice ('GetTestcasesASAP'). Ćelije (i + 3, 3) = 'Brza i detaljna ponuda'
Tablice ('GetTestcasesASAP'). Stanice (i + 4, 3) = 'Ilustracija pogodnosti'
Tablice ('GetTestcasesASAP'). Ćelije (i + 5, 3) = 'Provjera sažetka pogodnosti'
i = i + 7
Prijavite se
Ovaj isječak loop petlje dodaje 6 koraka koraka statičkog testiranja za svaki testcase postavljanjem ovih redaka naknadno nakon svakog id testcasea.
Statički ispitni koraci dodani za svaki testni slučaj su sljedeći:
- Korak 1: Potvrdite kombinacije stopa i faktora.
- Korak 2: Skupni rasporedi poslova i pokreti.
- Korak 3: Obračuni puštanja u rad.
- Korak 4: Brza i detaljna ponuda.
- Korak 5: Ilustracija pogodnosti.
- Korak 6: Sažetak provjere pogodnosti.
Osim toga, on također gura sljedeći testni slučaj Id u nizu na 6 + 2 tj. 8thred.
Npr .: Ako je TC1 na prvom redu, koraci se dodaju iz drugog u sedmi redak i TC2 se gura u osmi red. Sličan se način slijedi i za ostatak ID-ova testnog slučaja.
Primjer upotrebe # 3
Postoje slučajevi kada klijent osigurava ogromnu podatkovnu datoteku negdje blizu 1000 zapisa ili više, a pisanje testnih slučajeva za te ogromne zapise i mapiranje svih podataka u svaki testni korak dosadan je posao. Makro može smanjiti dane napora na nekoliko minuta i tako uštedjeti vrijeme za pripremu testnog slučaja.
Riješenje
Klijentska datoteka podataka može se kopirati na list s omogućenom makronaredbom. Pri izvršavanju makronaredbe, test slučajevi se automatski kreiraju u drugom listu automatskim mapiranjem test podataka u svaki testni korak za svaki testni slučaj.
Demo
- Prvi list 'Ulazna datoteka' a drugi list ‘ReadyTestCases’ su glavni doprinositelji u makronaredbi.
- Drugi list 'Sample -InputFile' ne igra nikakvu ulogu u makronaredbi. Sadrži samo oglednu datoteku ulaznih podataka u demo svrhe.
- Jednom kada podaci iz ‘Sample-InputFile’ ili datoteka podataka koju pruža klijent kopira se u prvi list, tj. 'InputFile',
- Izvršite makronaredbu i test slučajevi se automatski kreiraju za svaki testni slučaj gdje su ID-ovi naloga postavljeni kao ID-ovi testnih slučajeva ( Bilješka: Ne zaboravite postaviti jedinstveni identifikator postavljen kao prvi stupac u InputFile).
- Od sada nismo postavili prečicu za pokretanje makronaredbe, već je moramo pokrenuti kroz opciju pokretanja na Pogled -> Makronaredbe -> Odaberite Makronaredbu -> Uredi -> VBA prozor.
- Kôd makronaredbe dinamički obrađuje dodavanje testnih koraka. Na kraju provjerava je li bilo koja vrijednost polja prazna, ako je odgovor da, briše testni korak za isti korak koji ne bi bio potreban za prazno polje. Na primjer, ako pogledate donju ulaznu datoteku, 2ndzapis nema vrijednost za Datum isporuke, a treći red nema vrijednost za Regija. Stoga, nakon izvršavanja makronaredbe, test slučajevi koji se automatski kreiraju neće imati korake ispitivanja koji odgovaraju tim praznim vrijednostima.
Uzorak- InputFile
InputFile: Nakon izvođenja podataka za kopiranje lijepljenja iz uzorka InputFile u InputFile
Bilješka:
- Nemojte zalijepiti zaglavlje stupca s lista 'Sample-InputFile'.
- Žuta istaknuta polja su prazna, stoga se testni koraci koji odgovaraju tim praznim vrijednostima ne bi trebali stvarati putem makronaredbe.
Slika lista ReadyTestcases nakon pokretanja makronaredbi.
VBA (makro) kod
Sub Macro1() ScreenUpdating = False '-------- Assign the first column value of Inputfile sheet to first column of ReadyTestCases sheet' This is the TC Id -- ThisWorkbook.Sheets('InputFile').Activate nrow = ThisWorkbook.Sheets('InputFile').Cells(Rows.Count, 1).End(xlUp).Row ncol = ThisWorkbook.Sheets('InputFile').Cells(1, Columns.Count).End(xlToLeft).Column i = 1 j = 1 For i = 1 To nrow ThisWorkbook.Sheets('ReadyTestCases').Cells(i, 1) = ThisWorkbook.Sheets('InputFile').Cells(i, 1) Next i ' ---------------------Inserting 20 buffer blank rows for each row in InputFile sheet--------- lastrow = Sheets('InputFile').Cells(Sheets('InputFile').Rows.Count, 'A').End(xlUp).Row ThisWorkbook.Sheets('InputFile').Activate AddRows = 21 i = lastrow Do While i <> 1 Rows(i &; ':' & i + AddRows - 1).Insert i = i - 1 Loop ' Inserting 21 buffer blank rows for each row in ReadyTestCases sheet----------- lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'A').End(xlUp).Row ThisWorkbook.Sheets('ReadyTestCases').Activate AddRowsTC = 21 j = lastrow Do While j <> 1 ' 1 because we dont need extra blank lines after last row Rows(j & ':' & j + AddRowsTC - 1).Insert j = j - 1 Loop '------- Input values into ReadyTestCases sheet from each row of inputfile sheet lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'A').End(xlUp).Row Dim a a = 1 ThisWorkbook.Sheets('ReadyTestCases').Activate For a = 1 To lastrow ThisWorkbook.Sheets('ReadyTestCases').Cells(a,3) = ThisWorkbook.Sheets('InputFile').Cells(a, 2) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 1, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 3) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 2, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 4) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 3, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 5) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 4, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 6) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 5, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 7) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 6, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 8) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 7, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 9) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 8, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 10) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 9, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 11) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 10, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 12) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 11, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 13) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 12, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 14) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 13, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 15) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 14, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 16) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 15, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 17) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 16, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 18) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 17, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 19) a = a + 21 Next a '------- Add verbiages reserved for each row lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'C').End(xlUp).Row a = 1 ThisWorkbook.Sheets('ReadyTestCases').Activate For a = 1 To lastrow ThisWorkbook.Sheets('ReadyTestCases').Cells(a, 2) = 'Verify Order Date' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 1, 2) = 'Verify Ship Date' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 2, 2) = 'Verify Ship Mode' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 3, 2) = 'Verify Customer Id' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 4, 2) = 'Verify Customer Name' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 5, 2) = 'Verify Segment' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 6, 2) = 'Verify City' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 7, 2) = 'Verify State' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 8, 2) = 'Verify Postal Code' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 9, 2) = 'Verify Region' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 10, 2) = 'Verify Product Id' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 11, 2) = 'Verify Category' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 12, 2) = 'Verify Sub-Category' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 13, 2) = 'Verify Product Name' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 14, 2) = 'Verify Sales' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 15, 2) = 'Verify Quantity' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 16, 2) = 'Verify Discount' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 17, 2) = 'Verify Profit' a = a + 21 Next a '------Second last step- remove blank rows from ReadyTestCases and InputFile----- Deleteblankrows ('ReadyTestCases') 'call Delete blank row function for TC sheet ScreenUpdating = True End Sub ‘-------------------------------------------------------------------------------- Sub Deleteblankrows(ByVal Sheet As String) Dim wks As Worksheet Set wks = ThisWorkbook.Worksheets(Sheet) Dim i As Long wks.Activate lastrow = wks.Cells(Sheets(Sheet).Rows.Count, 'C').End(xlUp).Row With ActiveSheet For i = 1 To lastrow 'check each row of column B , if any row is empty then countA=0, delete that entire row If WorksheetFunction.CountBlank(Range(Cells(i, 2), Cells(i, 3))) = 1 Then Selection.Rows(i).EntireRow.Delete End If Next i End With End Sub
Objašnjenje koda
# 1) ScreenUpdating = False: Ažuriranja zaslona neće biti vidljiva postavljanjem ScreenUpdating na False.
# 2) ThisWorkbook.Sheets (“InputFile”). Aktivirajte: Ova izjava aktivira list 'InputFile'.
# 3) nrow = ThisWorkbook.Sheets (“InputFile”). Ćelije (Rows.Count, 1) .End (xlUp) .Red: Ova izjava dobiva broj ukupnih redaka.
# 4) ncol = ThisWorkbook.Sheets (“InputFile”). Ćelije (1, stupci.broj) .End (xlToLeft) .Column: Ova izjava dobiva broj ukupnih stupaca.
# 5) i = 1: Ova izjava inicijalizira i s 1.
# 6) j = 1: Ova izjava inicijalizira j s 1.
# 7) Za i = 1 za bacanje
ThisWorkbook.Sheets (“ReadyTestCases”). Cells (i, 1) = ThisWorkbook.Sheets (“InputFile”). Cells (i, 1)
Sljedeći i: Ovaj isječak kopije petlje For zalijepi vrijednost prvog stupca (ID narudžbe u ovom slučaju) lista ‘InputFile’ u svaki redak lista ‘ReadyTestCases’ kao ID testnog slučaja.
# 8) lastrow = Sheets ('InputFile'). Ćelije (Sheets ('InputFile'). Rows.Count, 'A'). End (xlUp) .Red: Ova izjava preračunava posljednji broj reda InputFile.
# 9) AddRows = 21: Ova izjava dodjeljuje varijabli AddRows 21. Ova je varijabla dodijeljena 21 s namjerom da se doda 21 prazan redak za svaki testni slučaj za dodavanje testnih koraka.
# 10) i = lastrow: Ova izjava i. Dodjeljuje posljednji broj posljednjih redova.
# 11) Učini dok i 1
Redovi (i & “:” & i + AddRows - 1) .Umetnite
i = i - 1
Petlja : Ova izjava dodaje 20 redaka za svaki test test počevši od dna do vrha.
# 12) lastrow = Tablice ('ReadyTestCases'). Ćelije (listovi ('ReadyTestCases'). Redovi. Broj, 'A'). Kraj (xlUp). Red: Ova izjava izračunava najnoviji ukupan broj redaka.
# 13) ThisWorkbook.Sheets ('ReadyTestCases'). Aktivirati: Kroz ovu izjavu aktivira se drugi list.
# 14) Zatamni na: Ova izjava deklarira varijablu a.
# 15) a = 1: Ova izjava dodjeljuje 1 a.
# 16) Za a = 1 do lastrow
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 2)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 1, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 3)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 2, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 4)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 3, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 5)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 4, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 6)
ThisWorkbook.Sheets („ReadyTestCases'). Ćelije (a + 5, 3) = ThisWorkbook.Sheets („InputFile'). Ćelije (a, 7)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 6, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 8)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 7, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 9)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 8, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 10)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 9, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 11)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 10, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 12)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 11, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 13)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 12, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 14)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 13, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 15)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 14, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 16)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 15, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 17)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 16, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 18)
ThisWorkbook.Sheets (“ReadyTestCases”). Ćelije (a + 17, 3) = ThisWorkbook.Sheets (“InputFile”). Ćelije (a, 19)
a = a + 21
Sljedeće a: Isječak petlje for preslikava vrijednosti iz svakog stupca lista InputFile u svaki testni korak za svaki id testnog slučaja.
# 17) lastrow = Sheets ('ReadyTestCases'). Ćelije (Sheets ('ReadyTestCases'). Rows.Count, 'C'). End (xlUp) .Row : Ova izjava ponovno izračunava ukupan broj redova lista ReadyTestCases nakon dodavanja 21 retka za svaki test slučaja.
# 18) a = 1: Ova izjava varijabli a dodjeljuje 1.
# 19) ThisWorkbook.Sheets (“ReadyTestCases”). Aktivirajte: Ova izjava aktivira list ReadyTestCases.
# 20) Za a = 1 do posljednjeg odlaska
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a, 2) = 'Potvrdi datum narudžbe'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 1, 2) = 'Potvrdi datum otpreme'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 2, 2) = 'Potvrdi način isporuke'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 3, 2) = 'Potvrdi identitet kupca'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 4, 2) = 'Potvrdi ime kupca'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 5, 2) = 'Potvrdi segment'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 6, 2) = 'Potvrdi grad'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 7, 2) = 'Verify State'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 8, 2) = 'Potvrdi poštanski broj'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 9, 2) = 'Potvrdi regiju'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 10, 2) = 'Potvrdi ID proizvoda'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 11, 2) = 'Potvrdi kategoriju'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 12, 2) = 'Potvrdi potkategoriju'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 13, 2) = 'Potvrdi naziv proizvoda'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 14, 2) = 'Potvrdi prodaju'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 15, 2) = 'Provjeri količinu'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 16, 2) = 'Potvrdi popust'
ThisWorkbook.Sheets ('ReadyTestCases'). Ćelije (a + 17, 2) = 'Potvrdi dobit'
a = a + 21
Dalje a - Ovaj isječak petlje For dodaje statičke korake ispitivanja za svaki testni slučaj.
# 21) Deleteblankrows ('ReadyTestCases'): Pozovite funkciju Deleteblankrow za 'Ready TestCases's list'.
# 22) Ažuriranje zaslona = Tačno: To vam omogućuje vizualizaciju ažuriranja zaslona koja se događaju kao dio izvršavanja makronaredbi.
# 23) Podbriši blankrows (ByVal list kao niz): Sljedeći kod je za funkciju Deletblankrows koja će dinamički provjeravati ima li praznih vrijednosti u poljima podataka. Ako je odgovor da, testni korak stvoren za prazne podatke izbrisat će se redom brisanjem takvih redaka.
# 24) Zatamni rad kao radni list: Ova izjava proglašava wks varijablu radnim listom.
# 25) Postavi wks = ThisWorkbook.Worksheets (Sheet): Ova izjava dodjeljuje wks list koji se pruža kao ulazni parametar.
# 26) Dim i as long: Ovaj liner proglašava I Long.
# 28) wks.Aktiviraj: Ova izjava aktivira list.
# 29) lastrow = wks.Cells (Sheets (Sheet) .Rows.Count, “C”). End (xlUp) .Red: Ova izjava dobiva broj posljednjeg retka na listu.
# 30) Za i = 1 do zadnjeg odlaska: Petlja For ponavlja se od prvog reda do zadnjeg reda.
# 31) Ako je WorksheetFunction.CountBlank (Raspon (ćelije (i, 2), ćelije (i, 3))) = 1 Tada: Ovaj uvjet provjerava da li se za svaki redak drugi i treći stupac u praznu vrijednost računaju kao 1.
# 32) Selection.Rows (i) .EntireRow.Delete: Ova izjava briše odabrani redak ako je uvjet istinit.
Primjer upotrebe # 4
Excel formule u predlošku Test procjene mogu se pokrenuti i pomoću makronaredbe. Grafikon se također kreira pomoću makronaredbe.
Demo
- Održava se list „Procjene“ koji će korisnicima omogućiti dodavanje procijenjenih sati za faze testiranja, počevši od razumijevanja poslovnih zahtjeva do stvaranja, izvršavanja i prerade na ažuriranju testnih skripti.
- Zeleno označene ćelije omogućene su za unos korisnika. To su polja za unos.
- Označene plavom bojom automatski su izvedene.
- Drugi list uključuje metrike Prerada, a treći list mjerila složenosti.
- Korisnik unosi veličinu složenosti u terminima H, L i M u stupac D, a stupac E automatski preuzima faktor složenosti pomoću vlookupa iz 'Mjerni podaci složenosti' list.
- Korisnik unosi veličinu prerade u smislu H, L i M u stupac F, a stupac G automatski preuzima faktor složenosti pomoću vlookupa s lista 'Ponovna obrada mjernih podataka'.
- Faktori se zatim koriste u stupcu H za prikupljanje ukupnih napora za procjenu.
- Druga makronaredba kada se izvrši priprema grafikon i dodaje ga na četvrti list 'Chart'.
- Uključene formule pokreću se putem makronaredbe pomoću tipke prečaca CTRL + SHIFT + E.
Procjene
Preradite metriku
Metrika složenosti
Grafikon
VBA (makro) kod za procjenu
' Keyboard Shortcut: Ctrl+Shift+E ThisWorkbook.Sheets(1).Activate Sheets('Estimates').Cells(4, 8) = Sheets('Estimates').Cells(4, 2) * Sheets('Estimates').Cells(4, 3) * Sheets('Estimates').Cells(4, 5) * Sheets('Estimates').Cells(4, 7) Sheets('Estimates').Cells(5, 8) = Sheets('Estimates').Cells(5, 2) * Sheets('Estimates').Cells(5, 3) * Sheets('Estimates').Cells(5, 5) * Sheets('Estimates').Cells(5, 7) Sheets('Estimates').Cells(6, 8) = Sheets('Estimates').Cells(6, 2) * Sheets('Estimates').Cells(6, 3) * Sheets('Estimates').Cells(6, 5) * Sheets('Estimates').Cells(6, 7) Sheets('Estimates').Cells(7, 8) = Sheets('Estimates').Cells(7, 2) * Sheets('Estimates').Cells(7, 3) * Sheets('Estimates').Cells(7, 5) * Sheets('Estimates').Cells(7, 7) Sheets('Estimates').Cells(8, 8) = Sheets('Estimates').Cells(8, 2) * Sheets('Estimates').Cells(8, 3) * Sheets('Estimates').Cells(8, 5) * Sheets('Estimates').Cells(8, 7) Sheets('Estimates').Cells(9, 8) = Sheets('Estimates').Cells(9, 2) * Sheets('Estimates').Cells(9, 3) * Sheets('Estimates').Cells(9, 5) * Sheets('Estimates').Cells(9, 7) Sheets('Estimates').Cells(10, 8) = Sheets('Estimates').Cells(10, 2) * Sheets('Estimates').Cells(10, 3) * Sheets('Estimates').Cells(10, 5) * Sheets('Estimates').Cells(10, 7) Sheets('Estimates').Cells(11, 8) = Sheets('Estimates').Cells(4, 8) + Sheets('Estimates').Cells(5, 8) + Sheets('Estimates').Cells(6, 8) + Sheets('Estimates').Cells(7, 8) + Sheets('Estimates').Cells(8, 8) + Sheets('Estimates').Cells(9, 8) + Sheets('Estimates').Cells(10, 8) ‘--------------------------------------------------- For i = 3 To 10 Sheets('Chart').Cells(i - 2, 1) = Sheets('Estimates').Cells(i, 1) Sheets('Chart').Cells(i - 2, 2) = Sheets('Estimates').Cells(i, 8) Next i End Sub
Objašnjenje koda
(a) ThisWorkbook.Sheets (1) .Activat: Aktivira se prvi list ‘Procjene’.
(b) Listovi ('Procjene'). Stanice (4, 8) = Listovi ('Procjene'). Stanice (4, 2) * Listovi ('Procjene'). Stanice (4, 3) * Listovi ('Procjene' ). Ćelije (4, 5) * Listovi („Procjene“). Stanice (4, 7): Ova izjava izračunava stupac B * stupac C * stupac E * stupac G i dodjeljuje stupcu H za redak 4.
(c) Listovi ('Procjene'). Stanice (5, 8) = Listovi ('Procjene'). Stanice (5, 2) * Listovi ('Procjene'). Stanice (5, 3) * Listovi ('Procjene' ). Ćelije (5, 5) * Listovi („Procjene“). Ćelije (5, 7): Ova izjava izračunava stupac B * stupac C * stupac E * stupac G i dodjeljuje stupcu H za redak 5.
(d) Listovi ('Procjene'). Stanice (6, 8) = Listovi ('Procjene'). Stanice (6, 2) * Listovi ('Procjene'). Stanice (6, 3) * Listovi ('Procjene' ). Ćelije (6, 5) * Listovi ('Procjene'). Stanice (6, 7): Ova izjava izračunava stupac B * stupac C * stupac E * stupac G i dodjeljuje stupac H za redak 6.
(e) Listovi ('Procjene'). Stanice (7, 8) = Listovi ('Procjene'). Stanice (7, 2) * Listovi ('Procjene'). Stanice (7, 3) * Listovi ('Procjene' ). Ćelije (7, 5) * Listovi („Procjene“). Ćelije (7, 7): Ova izjava izračunava stupac B * stupac C * stupac E * stupac G i dodjeljuje stupac H za redak 7.
(f) Listovi („Procjene'). Ćelije (8, 8) = Listovi („Procjene'). Ćelije (8, 2) * Listovi („Procjene'). Ćelije (8, 3) * Listovi („Procjene' ). Ćelije (8, 5) * Listovi („Procjene“). Ćelije (8, 7): Ova izjava izračunava stupac B * stupac C * stupac E * stupac G i dodjeljuje stupcu H za redak 8.
(g) Listovi ('Procjene'). Stanice (9, 8) = Listovi ('Procjene'). Stanice (9, 2) * Listovi ('Procjene'). Stanice (9, 3) * Listovi ('Procjene' ). Ćelije (9, 5) * Listovi („Procjene“). Ćelije (9, 7): Ova izjava izračunava stupac B * stupac C * stupac E * stupac G i dodjeljuje stupcu H za redak 9.
(h) Listovi ('Procjene'). Stanice (10, 8) = Listovi ('Procjene'). Stanice (10, 2) * Listovi ('Procjene'). Stanice (10, 3) * Listovi ('Procjene' ). Ćelije (10, 5) * Listovi ('Procjene'). Ćelije (10, 7): Ova izjava izračunava stupac B * stupac C * stupac E * stupac G i dodjeljuje stupac H za redak 10.
(i) Listovi ('Procjene'). Stanice (11, 8) = Listovi ('Procjene'). Stanice (4, 8) + Listovi ('Procjene'). Stanice (5, 8) + Listovi ('Procjene' ) .Čelije (6, 8) + listovi („Procjene'). Ćelije (7, 8) + listovi („Procjene'). Ćelije (8, 8) + listovi („Procjene“). Ćelije (9, 8) + Listovi („Procjene“). Ćelije (10, 8): Ova izjava sažima ćeliju H2 do H10 i dodjeljuje konačnu vrijednost H11. Ova vrijednost pruža ukupan napor (u satima).
(j) Za i = 3 do 10
Tablice ('Grafikon'). Stanice (i - 2, 1) = Listovi ('Procjene'). Stanice (i, 1)
Tablice ('Grafikon'). Stanice (i - 2, 2) = Listovi ('Procjene'). Stanice (i, 8)
Sljedeća ja: Ova kopija For Loop lijepi podatke iz stupca 1 i stupca 8 lista procjena u list grafikona. To je učinjeno kako bi se podaci s lista grafikona mogli koristiti za pripremu tortnog grafikona. Postoji još jedan makronaredba napisana za list 'Chart' koja priprema grafikon za isti.
VBA (makro) kod za grafikon
Sub CreateChart() Dim rng As Range Dim cht As Object ThisWorkbook.Sheets('Chart').Activate Set rng = ActiveSheet.Range('A2:B8') Set est = ThisWorkbook.Sheets('Chart').Shapes.AddChart2 est.Chart.SetSourceData Source:=rng est.Chart.ChartType = xl3DPieExploded est.Chart.HasTitle = True est.Chart.ChartTitle.Text = 'Test Estimates' est.Chart.SetElement (msoElementDataLabelCenter) est.Chart.SetElement (msoElementLegendBottom) End Sub
Objašnjenje koda
- Dim rng As Range: Ova izjava deklarira rng kao vrijednost raspona.
- Dim je kao objekt: Ova izjava deklarira est kao vrijednost objekta.
- Ova radna knjiga. Listovi ('Grafikon'). Aktivirajte: Ova izjava aktivira list s grafikonima.
- Postavi rng = ActiveSheet.Range (“A2: B8”): Raspon od A2 do B8 tablice tablica postavljen je na rng.
- Postavi est = ThisWorkbook.Sheets (“Chart”). Shapes.AddChart2: Ova se izjava koristi za pokretanje stvaranja nove karte na list-grafikonu.
- est.Chart.SetSourceData Izvor: = rng: Ova izjava pruža raspon podataka za promišljanje na grafikonu.
- est.Chart.ChartType = xl3DPieExploded: Vrsta grafikona postavljena je na 3D Pie of Exploded type. xl3DPieExploded pomaže odrediti ovu vrstu grafikona.
- est.Chart.HasTitle = Tačno: Ova izjava provjerava ima li grafikon naslov.
- est.Chart.ChartTitle.Text = 'Procjene testa': Ova izjava poništava naslov grafikona na 'Procjene procjena'.
- est.Chart.SetElement (msoElementDataLabelCenter): Ova izjava postavlja oznake podataka i legende za grafikon.
- est.Chart.SetElement (msoElementLegendBottom): Ova izjava postavlja oznake podataka na dno grafikona.
Načini izvršavanja makronaredbe
Makronaredba se može izvršiti na 4 načina:
- Korištenje ikone Pokreni na prozoru VBA uređivača.
- U datoteci Excel odaberite opciju izbornika Prikaz -> Makronaredbe -> Prikaz makronaredbe -> Odaberite naziv makronaredbe i odaberite Pokreni.
- Stvorite prečac tijekom stvaranja makronaredbe, a pritiskom na tipke prečaca pokrenut će se izvršavanje makronaredbe.
- Korisniku je najprikladniji način stvaranje gumba za akciju ( Npr. Naredbeni gumb) kojem bi se dodijelila makronaredba koja bi klikanjem pokrenula izvršavanje makronaredbe.
Vidjet ćemo kako dodati naredbeni gumb i gumbu dodijeliti makronaredbu. Kad se klikne na gumb, izvršit će se izvršavanje makronaredbe.
Dodajte gumb za kontrolu obrazaca u Excel
- Izaberi Izbornik ‘Razvojni programer’ -> Umetni -> Kontrole obrasca -> Ikona gumba za odabir i dodajte gumb na Excel listu.
- Unesite naziv i vrijednost teksta za gumb. Ime gumba koristi se u VBA kodiranju za prepoznavanje ovog naredbenog gumba, dok je tekst ono što se prikazuje na gumbu.
- Sada desnom tipkom miša kliknite naredbeni gumb i odaberite opciju ‘Dodijeli makronaredbu’ , prikazat će se popis makronaredbi, odaberite naziv makronaredbe koju želite dodijeliti.
- Jednom kada je makronaredba dodijeljena, klik na gumb pokreće izvršavanje dodijeljene makronaredbe.
- U ovom primjeru, ‘Dohvati procjene testa’ gumb je dodijeljen 'Procjene' makro.
- Slično tome, dodat ćemo naredbeni gumb za list Chart i dodijeliti makronaredbu Chart da pokrene generiranje grafikona.
- Klikom na ‘Stvori grafikon’ gumb pokreće makronaredbu za Grafikon. To poboljšava iskoristivost makronaredbe.
Zaključak
Bilo je to nekoliko primjera u stvarnom vremenu koji bi mogli biti dio svakodnevne prakse testera na poslu koji bi se mogao pametno identificirati za generiranje makronaredbi i, dakle, automatizacijom zadatka uštedjeti dovoljno vremena na irelevantnim i ponavljajućim ručnim naporima.
Relevantne snimke zaslona, VBA kôd i detaljno razumijevanje svakog retka koda obrađeni su u ovom članku. Nadam se da će ovo pružiti dobru prednost za provjeru kvaliteta kako se transformirati iz ručnog testiranja u makro razmišljanje.
Za ljude koji vjeruju da je posao ručnih testera isključivo netehnički posao, dokažimo im da su u krivu potrebnom primjenom tehničkog znanja za poboljšanje produktivnosti.
Autor: Ovaj dubinski koristan post napisao je Shobha D. Radi kao voditeljica projekta i ima više od 9 godina iskustva u ručnom, automatizacijskom (IBM RFT i Selenium korištenjem Jave) i API testiranju.
Preporučena literatura
- Rad s VBScript Excel objektima
- Stvaranje okvira za selenij i pristupanje testnim podacima iz programa Excel - Tutorial br. 21
- 5 najčešćih zadataka testiranja Testeri koje zaborave testirati (i kako to izbjeći)
- Top 5 stvari koje tester mora imati u programu Excel (i perspektive promjenjivog softverskog testera)
- Podzadatak JIRA s primjerom (JIRA Stvori podzadatak)