how automate repetitive qa tasks using excel macros
Ta poglobljeni priročnik o QA-jevem načinu razmišljanja o makrah pojasnjuje, kako avtomatizirati ponavljajoče se naloge QA z uporabo makrov Excel z primeri in posnetki zaslona Excelovih listov:
Potreba po avtomatizaciji v današnjem svetu je ena bistvenih in naraščajočih zahtev. Danes vsakdo išče nekaj, kar mu olajša delo ali težave pri rutinskem delu.
Dandanes nihče ne želi obiskati mobilne trgovine, stati v čakalnih vrstah, da si napolni telefon, priročno je, da nikjer fizično ne obiščete, ampak telefon napolnite v delčku sekunde.
Začetek od plačevanja računov za komunalne storitve prek internetnega bančništva, rezervacije in sledenja vaše kabine po spletu, nakupa stvari na različnih spletnih mestih e-trgovine do uporabe različnih avtomatiziranih aparatov, kot so pralni stroji, mikrovalovna pečica, gejzir in nenehno razvijajoči se pametni telefoni itd., Današnji svet je resnično hrepenenje po pametnih in avtomatiziranih izdelkih v obliki storitev ali pripomočkov.
V tem članku ne bomo razpravljali o uporabi katerega koli orodja za avtomatizacijo ali kar koli o umetni inteligenci ali strojnem učenju, temveč se bomo osredotočili zgolj na uporabo Excela za avtomatizacijo vsakodnevnih rutinskih nalog QA.
Kaj se boste naučili:
QA's Macro Mindset
Ročni preizkuševalci ponavadi razmišljajo o tem, da ker sem ročni preizkuševalec, nimam nič skupnega s karkoli tehničnega ali z drugimi besedami, 'kodiranje znanja ni moja skodelica čaja'. To je verjetno napačna miselnost, ki bi lahko ustavila našo rast kot inženirjev.
Priročnik za zagotavljanje kakovosti ima veliko dnevnih nalog, ki se lahko ponavljajo po istem poteku dela. QA lahko zelo dobro prepozna takšne naloge in jih avtomatizira z uporabo makrov Excel in / ali formule.
To bi lahko pomagalo na dva načina:
- Zmanjša čas, porabljen za ročne napore.
- Tudi QA navdihuje za učenje in prilagajanje logičnemu razmišljanju in izpopolnjevanju na tehničnem področju.
Stvari je mogoče avtomatizirati za vse spodaj navedene faze testiranja:
- Načrtovanje in ocenjevanje preskusov.
- Načrt preskusa ali priprava testnega primera.
- Poskus posodobitve stanja izvajanja.
- Poročilo o preskusu in ustvarjanje meritev.
Hitra nastavitev konteksta
# 1) Excel, shranjen z. Razširitev xlsxm je makro omogočen Excel.
#two) Če želite v Excelu omogočiti makro, izberite Datoteka -> Možnosti -> Center zaupanja -> Nastavitve centra zaupanja -> Nastavitve makra -> Izberite radijski gumb »Omogoči vse makre« in potrdite polje »Zaupajte dostop do objektnega modela projekta VBA«. Kliknite V redu.
# 3) Izberite meni Pogled -> Makri -> Snemanje makrov -> Izvedite nekaj dejavnosti in Ustavi makre . Lahko uredite makro in si ogledate kodo VBA, zabeleženo v Urejevalnik VBA okno. Podobno lahko svoje kode izrecno dodate, da ustvarite makro.
# 4) Ogledali si bomo nekatere primere takšnih ponavljajočih se nalog, ki bi lahko bili dobri kandidati za avtomatizacijo prek Excelovih makrov / formul.
Primer uporabe # 1
Na koncu vsake funkcionalne faze je treba identificirati nekaj testnih primerov za regresijo iz funkcionalne zbirke. To je postopek, ki ga je treba upoštevati v vsakem sprintu ali ponovitvi.
Rešitev
Da bi zmanjšali napor pri prepoznavanju in ročnem ustvarjanju regresijskega paketa, lahko izvedemo spodnji inovativni postopek.
- Lahko ustvarite list s funkcijskimi testnimi primeri z dodatnim stolpcem za označevanje testnih primerov / scenarijev kot Da / Ne za regresijo.
- Nato ustvarite makro za istega, tako da se ob zagonu makra kopirajo vsi testni primeri / scenariji z regresijo, označeni z »Da«, na drug list.
- Tako se boste izognili dodatni vaji, da na koncu sprinta pregledujete vse funkcionalne testne primere in si nato še dodatno prizadevate za pridobivanje vsakega testnega primera v regresijskem paketu.
Predstavitev
- Prvi list „FunctionalTestScenarios“ vsebuje vse funkcionalne testne scenarije / testne primere.
- Obstaja dodaten stolpec „Vključiti v regresijski paket?“ doda na koncu preskusnih stolpcev, da označi 'Da' ali 'Ne', tako da ugotovi, ali mora biti vsak od preskusnih scenarijev vključen v regresijsko zbirko.
- Obstaja drugi list, ustvarjen kot ‘RegressionSuite’ in to bo samodejno pridobilo vse scenarije regresijskega testa skozi makro.
- CTRL + SHIFT + S je nastavljena kot bližnjica do izvajanja makra.
FunctionalTestScenarios
RegresijaSuite
Koda VBA (makro)
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
Pojasnilo kode
- Preglednice (“FunctionalTestScenarios”). Aktiviraj: Kadar je v Excelu več listov, metoda Activate aktivira prvi list, zato je fokus izrecno nastavljen na prvi list.
- Vrstice (»1: 1«). Izberite: Ta stavek izbere prvo vrstico za vse stolpce prvega lista.
- Izbira.AutoFilter: Ta stavek uporablja filter v izbrani prvi vrstici.
- List1.Range ('$ A $ 1: $ D $ 38 ″). Polje samodejnega filtra: = 4, Merila1: =' Da ': Ta izjava uporablja samodejni filter za stolpec številka 4, tj. „Vključiti v regresijski paket?“ in filtrira zapise za vrednost 'Da'.
- Lastrow = Listi ('FunctionalTestScenarios'). Celice (Sheets ('FunctionalTestScenarios'). Vrstice. Število, 'A'). Konec (xlUp). Vrstica: Ta stavek dobi zadnje štetje vrstic prvega lista.
- Obseg (“A2: C2” & Lastrow) .Izberite: Ta stavek izbere vse vrstice in stolpce prvega lista z možnostjo Vključi v paket regresije? = Da.
- Selection.Copy: Ta izjava kopira vse izbrane zapise.
- Sheets (“RegressionSuite”). Izberite: Ta izjava odpira 2ndlist.
- Razpon (“A2”). Izberite: Ta stavek izbere celico A2 od 2ndlist.
- Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False: Ta stavek kopira izvorno vrednost izbrane celice na ciljni list. Obseg ciljne celice vsebuje samo izračunane vrednosti s pomočjo formul. Lahko pa uporabite tudi Paste: = xlValues. Nobena praznina se ne preskoči. Izvorne celice niso prenesene in matematične operacije niso opravljene.
Primer uporabe št. 2
Včasih je treba izdelati testne primere za recimo 100 držav ali 1000 subjektov (na primer 1000 obrazcev za zavarovanje). Preskusni koraki za ta ogromen seznam držav ali entitet bi lahko bili enaki in ponavljajoči se.
Kljub temu bi bila priprava testnega primera lahko ena od najbolj zamudnih dejavnosti, saj je, če je vzpostavljen dokument o testnem primeru, zelo pomembno, da se od stranke odkupijo zahtevane ocene in ekipa QA preizkusi vsak testni primer znotraj pravilno ocenjeni roki.
Rešitev
V takih primerih lahko dolge ure prizadevanj za pripravo testnih primerov z uporabo makra zmanjšamo na delček sekunde.
- Ustvarite lahko list, v katerem vnesete samo vnos kot testni primer in edinstven seznam entitet.
- Ustvarite makro, ki po izvedbi doda ponavljajoče se vrstice preskusnih korakov za vsako od teh entitet in dokument o testnem primeru je pripravljen v nekaj sekundah, ne da bi moral porabiti veliko ročnih naporov, potrebnih za pripravo testnih primerov.
Predstavitev
- Prvi list „GetTestcasesASAP“ je tukaj edini list, ki ga poganja makro, in je na začetku prazen.
- Še en list „Vzorčni vhodni podatki“ ne igra nobene vloge v makro. V predstavitvene namene vsebuje zgolj vzorčne vhodne podatke.
- Kopirajte in prilepite podatke iz vzorčnega vnosa podatkov od A2 do B12 v prvi list.
- Vhodne podatke lahko kopirate in prilepite v obliki - Stolpec A = ……. in stolpec B =.
- Ko so vhodni podatki pripravljeni, pritisnite CTRL + SHIFT + T kot bližnjice za izvajanje makra.
- Preskusni koraki se samodejno dodajo za vsak ID primera, dokument o testnem primeru pa se pripravi v nekaj sekundah.
GetTestcasesASAP
Vzorčni vhodni podatki
Vhodni podatki so prilepljeni v prvi list.
Slika med izvajanjem makrov s pritiskom na CTRL + SHIFT + T.
Koda VBA (makro)
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
Pojasnilo kode
(a) Listi (»GetTestcasesASAP«). Aktivirajte: Ta izjava aktivira prvi list.
vrne niz nizov v javi
(b) lastrow = Sheets (“GetTestcasesASAP”). Celice (Sheets (“GetTestcasesASAP”). Rows.Count, “A”). End (xlUp) .Row: Ta stavek dobi zadnje štetje vrstic. Tokrat bo dobilo skupno število števila vrstic za začetne ID-je testnih primerov, ki so bili pravkar dodani kot del vhodnih podatkov pred izvajanjem makra.
(c) Zatemni AddRows kot celo število: Ta stavek spremenljivko AddRows razglasi kot celoštevilski podatkovni tip.
(d) AddRows = 5: Ta stavek inicializira AddRows s 5. Spremenljivka se uporablja za vstavljanje nekaj vrstic po vsakem ID-ju testnega primera, tako da je mogoče dodati statične korake za vsak testni primer.
(e) Dim i kot celo število: Ta stavek razglasi spremenljivko i kot celo število.
(f) i = lastrow : Ta stavek spremenljivki i dodeli začetno število zadnjih vrstic.
(g) Delaj, medtem ko i 1 : To storite, medtem ko zanka vstavi 6 praznih vrstic po vsakem ID-ju testnega primera. Looping se začne od zadnjega ID testnega primera, ki napreduje, do prvega ID testnega primera.
Vrstice (i & “:” & i + AddRows) .Vstavi
i = i - 1
Loop
(h) Posodabljanje zaslona = True : S to izjavo je vidna vsaka posodobitev zaslona. Zato je lahko delovanje makra nekoliko počasno. Za optimizacijo delovanja makra lahko nastavite tudi ScreenUpdating = False .
Če nastavite ScreenUpdating na False, izboljša zmogljivost makra in pospeši njegovo izvajanje, vendar občasno ne boste mogli videti sprememb, ki se zgodijo med izvajanjem makra. Namesto tega se bodo spremembe prikazale šele, ko se izvrši makro.
(i) lastrow = Sheets ('GetTestcasesASAP'). Celice (Sheets ('GetTestcasesASAP'). Rows.Count, 'A'). End (xlUp) .Row : Ta stavek ponovno izračuna število zadnjih vrstic po dodajanju novih 6 vrstic za vsak testni primerek.
(j) i = 2
(k) Medtem ko i<= lastrow + 6
Listi (»GetTestcasesASAP«). Celice (i, 3) = »Preveri kombinacije stopenj in faktorjev«
Sheets (“GetTestcasesASAP”). Celice (i + 1, 3) = “Urniki in zasedanja paketnih opravil. “
Listi („GetTestcasesASAP'). Celice (i + 2, 3) = 'Poravnave izračunov za zagon'
Listi (“GetTestcasesASAP”). Celice (i + 3, 3) = “Hitra in podrobna ponudba”
Listi ('GetTestcasesASAP'). Celice (i + 4, 3) = 'Ilustracija ugodnosti'
Listi (“GetTestcasesASAP”). Celice (i + 5, 3) = “Potrditev povzetka ugodnosti”
i = i + 7
Prijavite se
Ta delček zanke while doda 6 korakov statičnih preskusnih korakov za vsako testno kopel, tako da te vrstice nato nastavi za vsakim idom testnega kovčka.
Statični testni koraki, dodani za vsak testni primer, so naslednji:
- Korak 1: Potrdite kombinacije stopenj in faktorjev.
- 2. korak: Serijski urniki in zasedanja.
- 3. korak: Obračuni za obračun obratovanja.
- 4. korak: Hitra in podrobna ponudba.
- 5. korak: Ilustracija koristi.
- 6. korak: Povzetek preverjanja ugodnosti.
Poleg tega potisne tudi naslednji testni primer Id v zaporedju na 6 + 2, tj. 8thvrstici.
Npr .: Če je TC1 v prvi vrstici, se koraki dodajo iz druge v sedmo vrstico in TC2 potisne v osmo vrstico. Podobno velja tudi za ostale ID-je testnih primerov.
Primer uporabe št. 3
Obstajajo primeri, ko odjemalec priskrbi ogromno podatkovno datoteko, kjer je blizu 1000 zapisov ali več, pisanje testnih primerov za te ogromne zapise in preslikava posameznih podatkov v vsak testni korak je dolgočasno delo. Makro lahko skrajša dneve napora na nekaj minut in s tem prihrani čas za pripravo testnega primera.
Rešitev
Podatkovno datoteko, ki jo zagotovi odjemalec, je mogoče kopirati na list z omogočeno makro. Ob izvajanju makra se testni primeri samodejno ustvarijo v drugem listu s samodejnim preslikavanjem testnih podatkov v vsak testni korak za vsak testni primer.
Predstavitev
- Prvi list ‘InputFile’ in drugi list ‘ReadyTestCases’ so glavni dejavniki v makro.
- Drugi list 'Sample -InputFile' ne igra nobene vloge v makru. V predstavitvene namene vsebuje le vzorčno vhodno podatkovno datoteko.
- Ko so podatki iz ‘Sample-InputFile’ ali podatkovna datoteka, ki jo zagotovi odjemalec, se kopira v prvi list, tj. „InputFile“,
- Izvedite makro in testni primeri se samodejno ustvarijo za vsak testni primer, kjer so ID-ji naročil nastavljeni kot ID-ji testnih primerov ( Opomba: Ne pozabite postaviti enoličnega identifikatorja, ki je postavljen kot prvi stolpec v datoteko InputFile).
- Od zdaj nimamo nastavljene bližnjične tipke za zagon makra, temveč jo moramo zagnati prek možnosti zagon na Pogled -> Makri -> Izberite Makro -> Uredi -> Okno VBA.
- Koda makra dinamično obravnava dodajanje preskusnih korakov. Na koncu preveri, ali je katera koli vrednost polja prazna, če je odgovor da, izbriše preskusni korak za enako, kot za prazno polje korak ne bi bil potreben. Na primer, če pogledate spodnjo vhodno datoteko, 2ndzapis nima vrednosti za Datum pošiljanja, tretja vrstica pa za regijo. Zato po izvedbi makra preizkusni primeri, ki so samodejno ustvarjeni, ne bodo imeli preskusnih korakov, ki ustrezajo tem praznim vrednostim.
Sample- InputFile
InputFile: Po izvedbi kopiranja podatkov lepljenja iz vzorca InputFile v InputFile
Opomba:
- Ne prilepite glave stolpca z lista »Sample-InputFile«.
- Rumena označena polja so prazna, zato preskusnih korakov, ki ustrezajo tem praznim vrednostim, ne bi smeli ustvarjati prek makra.
Slika lista ReadyTestcases po zagonu makra.
Koda VBA (makro)
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
Pojasnilo kode
# 1) ScreenUpdating = False: Posodobitve zaslona ne bodo vidne, če ScreenUpdating nastavite na False.
# 2) ThisWorkbook.Sheets (“InputFile”). Aktivirajte: Ta izjava aktivira list 'InputFile'.
# 3) nrow = ThisWorkbook.Sheets (“InputFile”). Celice (Rows.Count, 1) .End (xlUp) .Row: Ta stavek dobi število skupnih vrstic.
# 4) ncol = ThisWorkbook.Sheets (“InputFile”). Celice (1, Columns.Count) .End (xlToLeft). Stolpec: Ta izjava dobi število skupnih stolpcev.
# 5) i = 1: Ta stavek inicializira i z 1.
# 6) j = 1: Ta izjava inicializira j z 1.
# 7) Za i = 1 Nrow
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (i, 1) = ThisWorkbook.Sheets (“InputFile”). Celice (i, 1)
Naslednji i: Ta delček kopije zanke For prilepi prvo vrednost stolpca (v tem primeru ID naročila) lista „InputFile“ v vsako vrstico lista „ReadyTestCases“ kot ID testnega primera.
# 8) lastrow = Sheets (“InputFile”). Celice (Sheets (“InputFile”). Rows.Count, “A”). End (xlUp) .Row: Ta stavek preračuna zadnje število vrstic datoteke InputFile.
# 9) AddRows = 21: Ta stavek spremenljivki AddRows dodeli 21. Ta spremenljivka je bila dodeljena 21 z namenom vstaviti 21 dodatnih praznih vrstic za vsak testni primer za dodajanje preskusnih korakov.
# 10) i = lastrow: Ta stavek dodeli zadnje štetje zadnje vrstice i.
# 11) Ali med i 1
Vrstice (i & “:” & i + AddRows - 1)
i = i - 1
Zanka: Ta stavek doda 20 vrstic za vsak testni primerek od spodaj navzgor.
# 12) lastrow = Sheets ('ReadyTestCases'). Celice (listi ('ReadyTestCases'). Vrstice. Število, 'A'). Konec (xlUp). Vrstica: Ta izjava preračuna zadnje skupno število vrstic.
# 13) ThisWorkbook.Sheets (“ReadyTestCases”). Aktiviraj: S pomočjo te izjave se aktivira drugi list.
# 14) Zatemni do: Ta stavek razglasi spremenljivko a.
# 15) a = 1: Ta izjava dodeli 1 a.
# 16) Za a = 1 do lastrow
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 2)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 1, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 3)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 2, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 4)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 3, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 5)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 4, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 6)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 5, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 7)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 6, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 8)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 7, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 9)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 8, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 10)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 9, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 11)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 10, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 12)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 11, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 13)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 12, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 14)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 13, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 15)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 14, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 16)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 15, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 17)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 16, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 18)
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 17, 3) = ThisWorkbook.Sheets (“InputFile”). Celice (a, 19)
a = a + 21
Naslednji a: Delček zanke for preslika vrednosti iz vsakega stolpca lista InputFile v posamezne preskusne korake za vsak ID testnega primera.
# 17) lastrow = Sheets ('ReadyTestCases'). Celice (Sheets ('ReadyTestCases'). Rows.Count, 'C'). End (xlUp) .Row : Ta stavek znova izračuna skupno število vrstic stanja ReadyTestCases po dodajanju 21 vrstic za vsak testni primer.
# 18) a = 1: Ta stavek spremenljivki a dodeli 1.
# 19) ThisWorkbook.Sheets (“ReadyTestCases”). Aktivirajte: Ta izjava aktivira list ReadyTestCases.
# 20) Za a = 1 do lastrow
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a, 2) = “Preveri datum naročila”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 1, 2) = “Preveri datum dobave”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 2, 2) = “Preveri način pošiljanja”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 3, 2) = “Preveri id stranke”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 4, 2) = “Preveri ime stranke”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 5, 2) = “Verify Segment”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 6, 2) = “Preveri mesto”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 7, 2) = “Verify State”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 8, 2) = “Preveri poštno številko”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 9, 2) = “Preveri regijo”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 10, 2) = “Preveri ID izdelka”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 11, 2) = “Preveri kategorijo”
ThisWorkbook.Sheets ('ReadyTestCases'). Celice (a + 12, 2) = 'Preveri podkategorijo'
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 13, 2) = “Preveri ime izdelka”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 14, 2) = “Preverjanje prodaje”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 15, 2) = “Preveri količino”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 16, 2) = “Preveri popust”
ThisWorkbook.Sheets (“ReadyTestCases”). Celice (a + 17, 2) = “Verify Profit”
a = a + 21
Naprej a - Ta delček zanke For doda statične preskusne korake za vsak testni primer.
# 21) Deleteblankrows (“ReadyTestCases”): Pokličite funkcijo Deleteblankrow za obrazec »Ready TestCases«.
# 22) Posodabljanje zaslona = True: To vam omogoča, da prikažete posodobitve zaslona, ki se dogajajo kot del izvajanja makra.
# 23) Sub Deleteblankrows (ByVal Sheet As String): Spodnja koda je za funkcijo Deletblankrows, ki bo dinamično preverjala, ali so v podatkovnih poljih prazne vrednosti. Če je odgovor pritrdilen, bo poskusni korak, ustvarjen za prazne podatke, izbrisan tako, da bodo izbrisani takšni vrstici.
# 24) Dim tedensko kot delovni list: Ta izjava razglasi spremenljivko wks kot delovni list.
# 25) Set wks = ThisWorkbook.Worksheets (Sheet): Ta stavek dodeli list wks, ki je na voljo kot vhodni parameter.
# 26) Dim i as Long: Ta podloga razglaša I kot Long.
# 28) wks.Aktiviraj: Ta izjava aktivira list.
# 29) lastrow = wks.Cells (Sheets (Sheet) .Rows.Count, “C”). End (xlUp) .Row: Ta stavek dobi štetje zadnje vrstice na listu.
# 30) Za i = 1 Do zadnjega: Zanka For se ponavlja od prve vrstice do zadnje vrstice.
# 31) Če je WorksheetFunction.CountBlank (obseg (celice (i, 2), celice (i, 3))) = 1 Potem: Ta pogoj preveri, ali se za vsako vrstico drugi in tretji stolpec štejeta za prazno vrednost kot 1.
# 32) Selection.Rows (i) .EntireRow.Delete: Ta stavek izbriše izbrano vrstico, če je pogoj resničen.
Primer uporabe # 4
Excel-ove formule v predlogi Test Estimates lahko zaženete tudi z uporabo makra. Grafikon se ustvari tudi z uporabo makra.
Predstavitev
- Ohranjen je list „Ocene“, ki bo uporabnikom omogočil dodajanje predvidenih ur za faze testiranja, od razumevanja poslovnih zahtev do ustvarjanja, izvajanja in predelave posodobitev testnih skriptov.
- Zeleno označene celice so omogočene za vnos uporabnika. To so vnosna polja.
- Modro označene so samodejno pridobljene.
- Drugi list vključuje metrike Predelava, tretji list pa metrike zapletenosti.
- Uporabnik vnese velikost zapletenosti v smislu H, L in M v stolpec D, stolpec E pa samodejno pridobi faktor zapletenosti z uporabo vlookupa iz 'Meritve zapletenosti' list.
- Uporabnik vnese velikost predelave v obliki H, L in M v stolpec F, stolpec G pa samodejno pridobi faktor zapletenosti z uporabo vlookup-a iz lista »Ponovne predelave«.
- Faktorji se nato v stolpcu H uporabijo za skupna prizadevanja za oceno.
- Še en makro, ko se izvede, pripravi grafikon in ga doda na četrti list 'Grafikon'.
- Vključene formule se vodijo prek makra s pomočjo bližnjične tipke CTRL + SHIFT + E.
Ocene
Predelajte metriko
Meritve zapletenosti
Grafikon
Koda VBA (makro) za ocenjevalni list
' 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
Pojasnilo kode
(a) ThisWorkbook.Sheets (1) .Activat: Aktivira se prvi list »Ocene«.
(b) Listi ('Ocene'). Celice (4, 8) = Listi ('Ocene'). Celice (4, 2) * Listi ('Ocene'). Celice (4, 3) * Listi ('Ocene' ) .Celice (4, 5) * Listi ('Ocene'). Celice (4, 7): Ta stavek izračuna stolpec B * stolpec C * stolpec E * stolpec G in dodeli stolpcu H za vrstico 4.
(c) Listi ('Ocene'). Celice (5, 8) = Listi ('Ocene'). Celice (5, 2) * Listi ('Ocene'). Celice (5, 3) * Listi ('Ocene' ) .Celice (5, 5) * Listi ('Ocene'). Celice (5, 7): Ta stavek izračuna stolpec B * stolpec C * stolpec E * stolpec G in dodeli stolpcu H za vrstico 5.
(d) Listi ('Ocene'). Celice (6, 8) = Listi ('Ocene'). Celice (6, 2) * Listi ('Ocene'). Celice (6, 3) * Listi ('Ocene' Celice (6, 5) * Listi ('Ocene'). Celice (6, 7): Ta stavek izračuna stolpec B * stolpec C * stolpec E * stolpec G in dodeli stolpcu H za vrstico 6.
(e) Listi ('Ocene'). Celice (7, 8) = Listi ('Ocene'). Celice (7, 2) * Listi ('Ocene'). Celice (7, 3) * Listi ('Ocene' ) .Celice (7, 5) * Listi ('Ocene'). Celice (7, 7): Ta stavek izračuna stolpec B * stolpec C * stolpec E * stolpec G in dodeli stolpcu H za vrstico 7.
(f) Listi ('Ocene'). Celice (8, 8) = Listi ('Ocene'). Celice (8, 2) * Listi ('Ocene'). Celice (8, 3) * Listi ('Ocene' Celice (8, 5) * Listi ('Ocene'). Celice (8, 7): Ta stavek izračuna stolpec B * stolpec C * stolpec E * stolpec G in dodeli stolpcu H za vrstico 8.
(g) Listi ('Ocene'). Celice (9, 8) = Listi ('Ocene'). Celice (9, 2) * Listi ('Ocene'). Celice (9, 3) * Listi ('Ocene' Celice (9, 5) * Listi ('Ocene'). Celice (9, 7): Ta stavek izračuna stolpec B * stolpec C * stolpec E * stolpec G in dodeli stolpcu H za vrstico 9.
(h) Listi ('Ocene'). Celice (10, 8) = Listi ('Ocene'). Celice (10, 2) * Listi ('Ocene'). Celice (10, 3) * Listi ('Ocene' Celice (10, 5) * Listi ('Ocene'). Celice (10, 7): Ta stavek izračuna stolpec B * stolpec C * stolpec E * stolpec G in dodeli stolpcu H za vrstico 10.
(i) Listi ('Ocene'). Celice (11, 8) = Listi ('Ocene'). Celice (4, 8) + Listi ('Ocene'). Celice (5, 8) + Listi ('Ocene' ) .Celice (6, 8) + listi („Ocene'). Celice (7, 8) + listi („Ocene'). Celice (8, 8) + listi („Ocene'). Celice (9, 8) + Listi ('Ocene'). Celice (10, 8): Ta stavek povzema celice H2 do H10 in končno vrednost dodeli H11. Ta vrednost zagotavlja skupni napor (v urah).
(j) Za i = 3 do 10
Sheets (“Chart”). Celice (i - 2, 1) = Sheets (“Estimates”). Celice (i, 1)
Sheets (“Chart”). Celice (i - 2, 2) = Sheets (“Estimates”). Celice (i, 8)
Naslednji I: Ta kopija For Loop prilepi podatke iz stolpca 1 in 8 stolpca Ocene na list Grafikon. To se naredi tako, da lahko podatke iz lista Grafikon uporabimo za pripravo tortnega grafikona. Za list »Chart« je napisan še en makro, ki pripravi grafikon za isto.
Koda VBA (makro) 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
Pojasnilo kode
- Dim rng As Range: Ta izjava označuje rng kot vrednost obsega.
- Dim je kot predmet: Ta izjava razglasi est kot vrednost predmeta.
- Ta delovni zvezek.Listi ('Grafikon'). Aktivirajte: Ta izjava aktivira grafikon.
- Nastavite rng = ActiveSheet.Range (“A2: B8”): Območje od A2 do B8 grafikona stanja je nastavljeno na rng.
- Nastavite est = ThisWorkbook.Sheets (“Chart”). Shapes.AddChart2: Ta izjava se uporablja za začetek ustvarjanja novega grafikona na grafikonu lista.
- est.Chart.SetSourceData Vir: = rng: Ta izjava zagotavlja obseg podatkov za razmišljanje v grafikonu.
- est.Chart.ChartType = xl3DPieExploded: Vrsta grafikona je nastavljena na 3D Pie vrste Exploded. xl3DPieExploded pomaga določiti to vrsto grafikona.
- est.Chart.HasTitle = True: Ta izjava preveri, ali ima grafikon že naslov.
- est.Chart.ChartTitle.Text = 'Preskusne ocene': Ta izjava preglasi naslov grafikona na „Preskusne ocene“.
- est.Chart.SetElement (msoElementDataLabelCenter): Ta izjava določa podatkovne oznake in legende za grafikon.
- est.Chart.SetElement (msoElementLegendBottom): Ta izjava nastavi podatkovne oznake na dno grafikona.
Načini izvedbe makra
Makro je mogoče izvesti na 4 načine:
- Uporaba ikone Zaženi v oknu urejevalnika VBA.
- V Excelovi datoteki izberite možnost menija Pogled -> Makri -> Ogled makra -> Izberite ime makra in izberite Zaženi.
- Med ustvarjanjem makra ustvarite bližnjico in pritisk na bližnjične tipke sproži izvajanje makra.
- Uporabniku najbolj prijazen način je ustvarjanje akcijskega gumba ( Npr. Ukazni gumb), ki mu bo dodeljen makro, ki ob kliku sproži izvajanje makra.
Videli bomo, kako dodati ukazni gumb in gumbu dodeliti makro. Ko kliknete gumb, se izvede izvajanje makra.
Dodajte gumb za nadzor obrazcev v Excelu
- Izberite Meni »Razvijalec« -> Vstavi -> Kontrolniki obrazca -> Ikona gumba za izbiro in dodajte gumb na Excelovem listu.
- Vnesite ime in besedilno vrednost gumba. Ime gumba se uporablja v kodiranju VBA za prepoznavanje tega ukaznega gumba, medtem ko je besedilo prikazano na gumbu.
- Zdaj z desno miškino tipko kliknite ukazni gumb in izberite možnost „Dodeli makro“ , se prikaže seznam makrov, izberite ime makra, ki ga želite dodeliti.
- Ko je makro dodeljen, klik na gumb sproži izvajanje dodeljenega makra.
- V tem primeru je ‘Pridobite ocene preskusov’ gumb je dodeljen „Ocene“ makro.
- Podobno bomo dodali ukazni gumb za list Chart in dodelili makro za Chart, ki bo sprožil generiranje grafikona.
- Klik na ‘Ustvari grafikon’ gumb zažene makro za grafikon. To izboljša uporabnost makra.
Zaključek
To je bilo nekaj primerov v realnem času, ki bi lahko bili del vsakodnevne rutine preizkuševalca na delovnem mestu, ki bi ga lahko pametno prepoznali za generiranje makrov in bi tako lahko prihranili dovolj časa za nepomembna in ponavljajoča se ročna prizadevanja z avtomatizacijo naloge.
Ustrezni posnetki zaslona, koda VBA in podrobno razumevanje vsake vrstice kode so zajeti v tem članku. Upam, da bo to dobro zagotovilo QA, kako se preoblikovati iz miselnosti ročnega testiranja v miselnost makra.
Za ljudi, ki menijo, da je delo ročnih preizkuševalcev zgolj netehnično delo, jim dokažimo, da se motijo s potrebno tehnično znanje za izboljšanje produktivnosti.
Avtor: To poglobljeno koristno objavo je napisal Shobha D. Dela kot vodja projekta in ima 9+ let izkušenj na področju ročnega, avtomatiziranega (IBM RFT in Selenium z uporabo Jave) in testiranja API-jev.
Priporočeno branje
- Delo s predmeti VBScript Excel
- Ustvarjanje okvirja selena in dostop do testnih podatkov iz Excela - Vadnica za selen št. 21
- 5 najpogostejših preizkusnih nalog Preizkuševalci pozabijo preizkusiti (in kako se temu izogniti)
- Top 5 stvari, ki jih mora preizkuševalec imeti v Excelu (in spreminjajoče se perspektive preizkuševalca programske opreme)
- Podopravilo JIRA s primerom (Ustvari podnalogo JIRA)