how automate repetitive qa tasks using excel macros
Denne dybdegående vejledning om QA's Macro Mindset forklarer, hvordan man automatiserer gentagne QA-opgaver ved hjælp af Excel-makroer med eksempler og skærmbilleder af Excel-ark:
Behovet for automatisering i nutidens verden er et af de væsentlige og voksende krav. I dag søger alle noget, der letter hans / hendes arbejde eller besværet med det rutinearbejde.
I dag ønsker ingen at besøge en mobilbutik, stå i kø for at genoplade deres telefon, det er praktisk at ikke fysisk besøge andre steder end at genoplade telefonen online inden for en brøkdel af et sekund.
Fra at betale dine regninger via netbank, booke og spore din taxa online, købe ting online på forskellige e-handelswebsteder til at bruge forskellige automatiserede apparater som vaskemaskiner, mikrobølgeovn, gejsere og de stadigt udviklende smartphones osv., Er verden i dag virkelig trang til smarte og automatiserede produkter i form af tjenester eller gadgets.
I denne artikel vil vi ikke diskutere brugen af noget automatiseringsværktøj eller noget om kunstig intelligens eller maskinindlæring, men fokus vil være på ren brug af Excel til automatisering af en QAs daglige rutineopgaver.
Hvad du lærer:
QA's Macro Mindset
Manuelle testere har normalt en tankegang om, at jeg som manuel tester ikke har noget at gøre med noget teknisk eller med andre ord, 'kodning af know-how er ikke min kop te'. Dette er sandsynligvis den forkerte tankegang, der kunne stoppe vores vækst som ingeniører.
En manuel kvalitetssikring har mange daglige opgaver, der kan gentages efter den samme arbejdsgang. En kvalitetssikring kan meget vel identificere sådanne opgaver og få dem automatiseret ved hjælp af Excel-makroer og / eller formler.
Dette kan hjælpe på to måder:
- Reducerer den tid, der bruges i manuel indsats.
- Inspirerer også QA til at lære og tilpasse sig logisk tænkning og kvalifikationer på det tekniske front.
Ting kan automatiseres til alle nedenstående testfaser:
- Testplanlægning og estimering.
- Test design eller test case forberedelse.
- Testopdatering til testudførelse.
- Testrapport og metrics oprettelse.
Hurtig kontekstindstilling
# 1) En excel gemt med. xlsxm-udvidelse er en makroaktiveret Excel.
#to) For at aktivere makro i en Excel skal du vælge File -> Options -> Trust Center -> Trust Center Settings -> Macro Settings -> Select Radio Button “Enable all macro’s” (Aktiver alle makroer) og afkryds afkrydsningsfeltet 'Tillid til adgang til VBA-projektobjektmodellen'. Klik på OK.
# 3) Vælg menuen Vis -> Makroer -> Optag makroer -> Udfør nogle aktiviteter og stop makroer . Du kan redigere makroen og se VBA-koden, der er optaget i VBA redaktør vindue. På samme måde kan du tilføje dine koder eksplicit for at oprette en makro.
# 4) Vi vil se på visse eksempler på sådanne gentagne opgaver, der kan være gode kandidater til automatisering via Excel-makroer / -formler.
Eksempel på brug # 1
Ved afslutningen af hver funktionel fase skal der identificeres nogle testtilfælde til regression fra den funktionelle suite. Dette er en proces, der skal følges i hver sprint eller iteration.
Opløsning
For at reducere indsatsen for at identificere og manuelt oprette en regressionssuite kan nedenstående innovative proces implementeres.
- Du kan oprette et ark med funktionstesttilfælde med en ekstra kolonne til markering af testtilfælde / scenarier som Ja / Nej til regression.
- Opret derefter en makro for det samme, således at når makroen kører, kopieres alle testcases / scenarier med regression markeret som 'Ja' til et andet ark.
- Dette undgår således en yderligere øvelse med at gennemgå alle funktionelle testtilfælde i slutningen af sprinten og derefter lægge ekstra kræfter på at få hver testtilfælde ekstraheret i regressionssuiten.
Demo
- Det første ark 'FunctionalTestScenarios' indeholder alle de funktionelle testscenarier / testcases.
- Der er en ekstra kolonne 'Inkluder i Regression-suite?' tilføjet i slutningen af testkolonnerne for at markere 'Ja' eller 'Nej' ved at identificere, om hver af testscenarierne skal inkluderes i regressionssuiten.
- Der er et andet ark oprettet som 'RegressionSuite' og dette henter automatisk alle regressionstest-scenarier gennem makroen.
- CTRL + SHIFT + S er indstillet som genvej til makroen, der skal udføres.
FunctionalTestScenarios
RegressionSuite
VBA (makro) kode
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
Forklaring af kode
- Ark (“FunctionalTestScenarios”). Aktivér: Når der er flere ark i Excel, aktiverer metoden Aktivér det første ark, og derfor er fokus eksplicit sat til det første ark.
- Rækker (“1: 1”). Vælg: Denne erklæring vælger den første række for alle kolonner på det første ark.
- Selection.AutoFilter: Denne erklæring anvender filteret på den valgte første række.
- Ark1.Range (“$ A $ 1: $ D $ 38 ″). Autofilterfelt: = 4, Kriterier1: =” Ja ”: Denne erklæring anvender automatisk filter på kolonne nummer 4 dvs. 'Inkluder i Regression-suite?' og filtrerer posterne ud for værdien 'Ja'.
- Lastrow = Sheets ('FunctionalTestScenarios'). Celler (Sheets ('FunctionalTestScenarios') .Rows.Count, 'A'). End (xlUp) .Row: Denne erklæring får den sidste rækkeoptælling af det første ark.
- Område ('A2: C2' og Lastrow) .Vælg: Denne erklæring vælger alle rækkerne og kolonnerne i det første ark med Inkluder i regressionssuite? = Ja.
- Valg. Kopi: Denne erklæring kopierer alle de valgte poster.
- Ark (“RegressionSuite”). Vælg: Denne erklæring åbner 2ndark.
- Område (“A2”) Vælg: Denne erklæring vælger celle A2 i 2ndark.
- Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False: Denne erklæring kopierer den kildevalgte celleværdi til destinationsarket. Destinationscelleområdet indeholder kun de beregnede værdier ved hjælp af formlerne. Alternativt kan Paste: = xlValues også bruges. Ingen emner springes over. Kildecellerne transponeres ikke, og der foretages ingen matematiske operationer.
Eksempel på brug # 2
Der er tidspunkter, hvor du skal have testsager oprettet for f.eks. 100 stater eller 1000 enheder (som 1000 forsikringsformularer). Teststrinnene for denne enorme liste over stater eller enheder kan være de samme og gentagne.
På trods af dette kan forberedelse af testsager være en af de mest tidskrævende aktiviteter, at det at have testdokumentet på plads er meget vigtigt at opkøbe de krævede estimater fra klienten og få QA-teamet til at teste hver af testsagerne inden for de korrekt anslåede tidslinjer.
Opløsning
I sådanne tilfælde kan lange timers forberedelse af testsager reduceres til en brøkdel af sekunder ved hjælp af makroen.
- Du kan oprette et ark, hvor du bare angiver input som et test case id og den unikke liste over enheder.
- Opret en makro, der, når den udføres, tilføjer gentagne linjer af testtrin for hver af disse enheder, og testdokumentet er klar på få sekunder uden at skulle bruge den betydelige mængde manuel indsats, der kræves for at forberede testsagerne.
Demo
- Det første ark 'GetTestcasesASAP' er det eneste makrodrevne ark her, der oprindeligt er tomt.
- Et andet ark 'Eksempel på inputdata' spiller ingen rolle i makroen. Den indeholder kun eksemplet på inputdata til demo-formål.
- Kopier-indsæt data fra prøveindgangsdataområde A2 til B12 i det første ark.
- Du kan kopiere og indsætte inputdataene i formatet - Kolonne A = ……. og kolonne B =.
- Når inputdataene er klar, skal du trykke på CTRL + SHIFT + T som genvejstaster for makroen, der skal udføres.
- Testtrin tilføjes automatisk for hver testsag-id, og testcase-dokumentet udarbejdes på få sekunder.
GetTestcasesASAP
Eksempel på inputdata
Inputdata indsættes i det første ark.
Billede under udførelse af makro ved at trykke på CTRL + SKIFT + T.
VBA (makro) kode
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
Forklaring af kode
(a) Ark (“GetTestcasesASAP”). Aktivér: Denne erklæring aktiverer det første ark.
c ++ arvetyper
(b) lastrow = Sheets ('GetTestcasesASAP'). Celler (Sheets ('GetTestcasesASAP'). Rækker.Count, 'A'). End (xlUp) .Row: Denne erklæring får den sidste rækkeoptælling. Denne gang får det det samlede antal rækkeantal for de oprindelige test-id'er, der netop er tilføjet som en del af inputdata inden udførelsen af makroen.
(c) Dæmp tilføjelsesrader som heltal: Denne erklæring erklærer AddRows-variablen som en heltal datatype.
(d) AddRows = 5: Denne erklæring initialiserer AddRows med 5. Variablen bruges til at indsætte et par linjer efter hver test case id, så statiske test trin kan tilføjes for hver test case.
(e) Dim i som heltal: Denne erklæring erklærer variabel i som heltal.
(f) i = sidste række : Denne erklæring tildeler den oprindelige optælling af sidste række til variablen i.
(g) Gør mens jeg 1 : Dette gør mens løkke indsætter 6 tomme rækker efter hvert test-id. Loopingen starter fra den sidste test case id frem til den første test case id.
Rækker (i & “:” & i + AddRows). Indsæt
i = i - 1
Sløjfe
(h) ScreenUpdating = Sandt : Denne erklæring gør hver skærmopdatering synlig. Derfor kan makroens ydeevne være lidt langsom. For at optimere ydeevnen for makroen kan du også indstille ScreenUpdating = Falsk .
Indstilling af skærmopdatering til falsk forbedrer makroydelsen og fastgør dens udførelse, men du kan ikke se de intermitterende ændringer, der finder sted under udførelsen af makroen. I stedet vises ændringerne kun, når udførelsen af makroen er afsluttet.
(i) lastrow = Sheets ('GetTestcasesASAP'). Celler (Sheets ('GetTestcasesASAP'). Rækker.Count, 'A'). End (xlUp) .Row : Denne erklæring beregner den sidste rækkeoptælling igen efter tilføjelse af nye 6 rækker for hver testcase.
(j) i = 2
(k) Mens jeg<= lastrow + 6
Ark (“GetTestcasesASAP”) Celler (i, 3) = “Valider satser-faktor kombinationer“
Ark (“GetTestcasesASAP”). Celler (i + 1, 3) = “Batch jobplaner og kørsler. “
Ark ('GetTestcasesASAP'). Celler (i + 2, 3) = 'Idriftsættelse beregningsafregninger'
Ark ('GetTestcasesASAP'). Celler (i + 3, 3) = 'Hurtigt og detaljeret tilbud'
Ark ('GetTestcasesASAP') Celler (i + 4, 3) = 'Fordel illustration'
Ark ('GetTestcasesASAP'). Celler (i + 5, 3) = 'Validering af fordelingsoversigt'
i = i + 7
ansøge
Dette uddrag af while-løkken tilføjer 6 trin med statiske testtrin for hver testcase ved at indstille disse linjer efterfølgende efter hver testcase-id.
De statiske testtrin, der tilføjes for hver testtilfælde, er som følger:
- Trin 1: Valider satser-faktor kombinationer.
- Trin 2: Batch jobplaner og kørsler.
- Trin 3: Idriftsættelse beregninger afregninger.
- Trin 4: Hurtigt og detaljeret tilbud.
- Trin 5: Fordel illustration.
- Trin 6: Validering af fordelingsoversigt.
Desuden skubber det også den næste test case Id i sekvensen til 6 + 2 dvs. 8thrække.
For eksempel: Hvis TC1 er på første række, tilføjes trinnene fra anden til syvende række, og TC2 skubbes til den ottende række. En lignende måde følges i resten af test-id'erne.
Eksempel på brug # 3
Der er tilfælde, hvor en enorm datafil et sted tæt på 1000 poster eller mere leveres af klienten, og det er en kedelig opgave at skrive testsager til disse enorme poster, og at kortlægge hver data mod hvert testtrin. Makro kan reducere indsatsens dage til et par minutter og derved spare tid til forberedelse af testsagen.
Opløsning
Den af klienten leverede datafil kan kopieres til det makroaktiverede ark. Ved udførelse af makroen oprettes testcases automatisk i det andet ark ved automatisk at kortlægge testdata mod hvert testtrin for hver testcase.
Demo
- Det første ark 'InputFile' og det andet ark 'ReadyTestCases' er de vigtigste bidragydere i makroen.
- Et andet ark 'Sample -InputFile' spiller ingen rolle i makroen. Den indeholder kun eksemplet på input-datafilen til demo-formål.
- Når dataene fra 'Sample-InputFile' eller klientleveret datafil kopieres til det første ark, dvs. 'InputFile',
- Udfør makroen, og testcases oprettes automatisk for hver testcase, hvor ordre-id'erne er indstillet som testcase-id'er ( Bemærk: Husk at placere den unikke identifikator placeret som den første kolonne i InputFile).
- Fra nu af har vi ikke angivet nogen genvejstaster til makrokørslen, i stedet for at vi skal køre den gennem kørselsindstillingen på Vis -> Makroer -> Vælg makro -> Rediger -> VBA-vindue.
- Makrokoden håndterer tilføjelsen af testtrin dynamisk. Det kontrollerer i sidste ende for at se, om noget af feltværdien er tom, hvis ja, det sletter testtrinet for det samme, da trinnet ikke er nødvendigt for et tomt felt. For eksempel, hvis du ser på inputfilen nedenfor, 2ndpost har ingen værdi for afsendelsesdato, og den tredje række har ingen værdi for region. Derfor, efter makroudførelsen, vil testsagerne, der oprettes automatisk, ikke have testtrin, der svarer til disse tomme værdier.
Prøve - InputFile
InputFile: Efter udførelse af kopi-indsæt data fra prøve InputFile til InputFile
Bemærk:
- Indsæt ikke kolonneoverskriften fra 'Sample-InputFile' -arket.
- De gule fremhævede felter er tomme, hvorfor testtrin, der svarer til disse tomme værdier, ikke skal oprettes via makroen.
Billede af ReadyTestcases-ark efter makrokørsel.
VBA (makro) kode
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
Forklaring af kode
# 1) ScreenUpdating = Falsk: Skærmopdateringer vil ikke være synlige ved at indstille ScreenUpdating til False.
# 2) ThisWorkbook.Sheets (“InputFile”). Aktivér: Denne erklæring aktiverer arket 'InputFile'.
# 3) nrow = ThisWorkbook.Sheets ('InputFile'). Celler (Rækker.Tælling, 1) .End (xlUp) .Række: Denne erklæring får optællingen af de samlede rækker.
# 4) ncol = ThisWorkbook.Sheets ('InputFile'). Celler (1, Columns.Count) .End (xlToLeft) .Column: Denne erklæring får optællingen af de samlede kolonner.
# 5) i = 1: Denne erklæring initialiseres i med 1.
# 6) j = 1: Denne erklæring initialiseres j med 1.
# 7) For i = 1 For nuow
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (i, 1) = ThisWorkbook.Sheets ('InputFile'). Celler (i, 1)
Næste jeg: Dette uddrag af For-loop-kopi indsætter den første kolonneværdi (ordre-id i dette tilfælde) af 'InputFile' -arket i hver række af arket 'ReadyTestCases' som testcase-id.
# 8) lastrow = Sheets ('InputFile'). Celler (Sheets ('InputFile'). Rækker.Count, 'A'). End (xlUp) .Row: Denne erklæring genberegner den sidste rækkeoptælling af InputFile.
# 9) AddRows = 21: Denne erklæring tildeler 21 til AddRows-variablen. Denne variabel er tildelt 21 med den hensigt at indsætte 21 ekstra tomme rækker for hver testtilfælde til tilføjelse af testtrin.
# 10) i = lastrute: Denne erklæring tildeler den sidste sidste rækkeoptælling til i.
# 11) Gør mens jeg 1
Rækker (i & “:” & i + AddRows - 1). Indsæt
i = i - 1
Sløjfe: Denne erklæring tilføjer 20 rækker for hver testcase startende fra bunden til toppen.
# 12) lastrow = Ark (“ReadyTestCases”). Celler (ark ('ReadyTestCases'). Rækker.Tælling, 'A'). Afslut (xlUp) .Række: Denne erklæring genberegner den seneste samlede rækkeoptælling.
# 13) ThisWorkbook.Sheets (“ReadyTestCases”). Aktivér: Det andet ark aktiveres gennem denne erklæring.
# 14) Dim til: Denne erklæring erklærer variabel a.
# 15) a = 1: Denne erklæring tildeler 1 til a.
# 16) For a = 1 For at holde plads
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 2)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 1, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 3)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 2, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 4)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 3, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 5)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 4, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 6)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 5, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 7)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 6, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 8)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 7, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 9)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 8, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 10)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 9, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 11)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 10, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 12)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 11, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 13)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 12, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 14)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 13, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 15)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 14, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 16)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 15, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 17)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 16, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 18)
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 17, 3) = ThisWorkbook.Sheets ('InputFile'). Celler (a, 19)
a = a + 21
Næste a: Stykket af for loop kortlægger værdierne fra hver kolonne i InputFile-ark mod hvert testtrin for hvert test-id.
# 17) lastrow = Sheets ('ReadyTestCases'). Celler (Sheets ('ReadyTestCases'). Rækker.Count, 'C'). End (xlUp) .Row : Denne erklæring genberegner det samlede rækkeantal ReadyTestCases-ark efter tilføjelse af 21 rækker for hvert test-id.
# 18) a = 1: Denne erklæring tildeler 1 til variabel a.
# 19) ThisWorkbook.Sheets ('ReadyTestCases'). Aktivér: Denne erklæring aktiverer ReadyTestCases-arket.
# 20) For a = 1 For at holde plads
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a, 2) = 'Bekræft ordredato'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 1, 2) = 'Bekræft leveringsdato'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 2, 2) = 'Bekræft skibstilstand'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 3, 2) = 'Bekræft kunde-id'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 4, 2) = 'Bekræft kundenavn'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 5, 2) = 'Bekræft segment'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 6, 2) = 'Bekræft by'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 7, 2) = 'Bekræft tilstand'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 8, 2) = 'Bekræft postnummer'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 9, 2) = 'Bekræft region'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 10, 2) = 'Bekræft produkt-id'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 11, 2) = 'Bekræft kategori'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 12, 2) = 'Bekræft underkategori'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 13, 2) = 'Bekræft produktnavn'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 14, 2) = 'Bekræft salg'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 15, 2) = 'Bekræft mængde'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 16, 2) = 'Bekræft rabat'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 17, 2) = 'Bekræft fortjeneste'
a = a + 21
Næste a - Dette uddrag af For-løkke tilføjer statiske testtrin for hver testtilfælde.
# 21) Slet blanke rækker (“ReadyTestCases”): Ring til funktionen Slet blankrofunktion for 'Klar testcases ark.
# 22) ScreenUpdating = Sandt: Dette giver dig mulighed for at visualisere skærmopdateringer, der sker som en del af makroudførelse.
# 23) Del sletblankrows (ByVal Sheet As String): Koden nedenfor er for funktionen Deletblankrows, som dynamisk kontrollerer, om der er tomme værdier i datafelterne. Hvis ja, slettes testtrinet oprettet for de tomme data igen ved at slette sådanne rækker.
# 24) Dim wks Som regneark: Denne erklæring erklærer wks-variabel som regneark.
# 25) Indstil wks = ThisWorkbook.Worksheets (Sheet): Denne erklæring tildeler wks-arket, der leveres som inputparameter.
# 26) Dim i så længe: Denne liner erklærer jeg som lang.
# 28) wks.Activate: Denne erklæring aktiverer arket.
# 29) lastrow = wks.Cells (Sheets (Sheet) .Rows.Count, “C”). End (xlUp). Row: Denne erklæring får optællingen af den sidste række på arket.
# 30) For i = 1 For at holde plads: For-sløjfen gentager fra første række til sidste række.
# 31) Hvis WorksheetFunction.CountBlank (Range (Cells (i, 2), Cells (i, 3))) = 1 Så: Denne betingelse kontrollerer, om den anden og tredje kolonne for hver række tæller til den tomme værdi som 1.
# 32) Selection.Rows (i) .EntireRow.Delete: Denne erklæring sletter den valgte række, hvis betingelsen er sand.
Eksempel på brug # 4
Excel-formlerne i skemaet Testestimater kan også køres ved hjælp af en makro. Et diagram oprettes også ved hjælp af makroen.
Demo
- Et ark 'Estimates', der gør det muligt for brugerne at tilføje estimerede timer til testfaser, der starter fra at forstå forretningskrav til oprettelse, udførelse og omarbejdning af opdatering af testscripts, opretholdes.
- De grønne fremhævede celler er aktiveret til brugerindtastning. Dette er inputfelterne.
- De blå fremhævede stammer automatisk.
- Det andet ark inkluderer omarbejdningsdata og det tredje ark indeholder kompleksitetsmålinger.
- Brugeren indtaster kompleksitetsstørrelsen med hensyn til H, L og M i kolonne D, og kolonnen E henter automatisk faktoren for kompleksitet ved hjælp af vlookup fra 'Kompleksitetsmålinger' ark.
- Brugeren indtaster omarbejdningsstørrelsen med hensyn til H, L og M i kolonne F, og kolonne G henter automatisk faktoren for kompleksitet ved hjælp af vlookup fra 'Rework metrics' -arket.
- Faktorerne bruges derefter i kolonne H til at hente den samlede indsats til estimering.
- En anden makro, når den udføres, forbereder diagrammet og tilføjer det på det fjerde ark 'Diagram'.
- De inkluderede formler styres via makroen ved hjælp af genvejstasten CTRL + SKIFT + E.
Skøn
Omarbejdningsmålinger
Kompleksitetsmålinger
Diagram
VBA (makro) kode til estimatark
' 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
Forklaring af kode
(a) ThisWorkbook.Sheets (1) .Aktiver: Det første ark 'Estimates' aktiveres.
(b) Ark (“Estimates”). Celler (4, 8) = Sheets (“Estimates”). Cells (4, 2) * Sheets (“Estimates”). Cells (4, 3) * Sheets (“Estimates”) Celler (4, 5) * Ark ('estimater'). Celler (4, 7): Denne erklæring beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for række 4.
(c) Ark (“Estimates”). Celler (5, 8) = Sheets (“Estimates”). Cells (5, 2) * Sheets (“Estimates”). Cells (5, 3) * Sheets (“Estimates”) Celler (5, 5) * Ark ('estimater'). Celler (5, 7): Denne erklæring beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for række 5.
(d) Ark (“Estimates”). Celler (6, 8) = Sheets (“Estimates”). Cells (6, 2) * Sheets (“Estimates”). Cells (6, 3) * Sheets (“Estimates”) Celler (6, 5) * Ark ('estimater'). Celler (6, 7): Denne erklæring beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for række 6.
(e) Ark ('skøn'). Celler (7, 8) = Ark ('skøn') Celler (7, 2) * Ark ('skøn') Celler (7, 3) * Ark ('skøn' Celler (7, 5) * Ark ('estimater'). Celler (7, 7): Denne erklæring beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for række 7.
(f) Ark (“Estimates”). Celler (8, 8) = Sheets (“Estimates”). Cells (8, 2) * Sheets (“Estimates”). Cells (8, 3) * Sheets (“Estimates”) Celler (8, 5) * Ark ('estimater'). Celler (8, 7): Denne erklæring beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for række 8.
(g) Ark (“Estimates”). Celler (9, 8) = Sheets (“Estimates”). Cells (9, 2) * Sheets (“Estimates”). Cells (9, 3) * Sheets (“Estimates”) Celler (9, 5) * Ark ('estimater'). Celler (9, 7): Denne erklæring beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for række 9.
(h) Ark (“Estimates”). Celler (10, 8) = Sheets (“Estimates”). Cells (10, 2) * Sheets (“Estimates”). Cells (10, 3) * Sheets (“Estimates”) Celler (10, 5) * Ark (“Estimates”). Celler (10, 7): Denne erklæring beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for række 10.
(i) Ark (“Estimates”). Celler (11, 8) = Sheets (“Estimates”). Cells (4, 8) + Sheets (“Estimates”). Cells (5, 8) + Sheets (“Estimates”) Celler (6, 8) + Ark (“Estimates”). Celler (7, 8) + Sheets (“Estimates”). Celler (8, 8) + Sheets (“Estimates”). Celler (9, 8) + Ark ('skøn'). Celler (10, 8): Denne erklæring opsummerer celle H2 til H10 og tildeler den endelige værdi til H11. Denne værdi giver total indsats (i timer).
(j) For i = 3 til 10
Ark ('Diagram'). Celler (i - 2, 1) = Ark ('Estimater'). Celler (i, 1)
Ark ('Diagram'). Celler (i - 2, 2) = Ark ('estimater'). Celler (i, 8)
Næste jeg: Denne For Loop-kopi indsætter data fra kolonne 1 og kolonne 8 i beregningsarket til diagramarket. Dette gøres, så dataene fra diagramarket kan bruges til at udarbejde et cirkeldiagram. Der er en anden makro skrevet til ark 'Chart', der forbereder et diagram til det samme.
VBA (makro) kode til diagramark
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
Forklaring af kode
- Dim rng som rækkevidde: Denne erklæring erklærer rng som en Range-værdi.
- Dim er som objekt: Denne erklæring erklærer est som objektværdi.
- Denne arbejdsbog.Sheets (“Diagram”). Aktivér: Denne erklæring aktiverer diagramark.
- Indstil rng = ActiveSheet.Range (“A2: B8”): Området A2 til B8 i ark-diagram er indstillet til rng.
- Set est = ThisWorkbook.Sheets (“Chart”). Shapes.AddChart2: Denne erklæring bruges til at starte oprettelsen af et nyt diagram på ark-diagrammet.
- est.Chart.SetSourceData Kilde: = rng: Denne erklæring giver et datainterval til kontemplation i diagrammet.
- est.Chart.ChartType = xl3DPieExploded: Diagrammetypen er indstillet til 3D Pie af eksploderet type. xl3DPieExploded hjælper med at bestemme denne diagramtype.
- est.Chart.HasTitle = Sandt: Denne erklæring bekræfter, om diagrammet allerede har en titel.
- est.Chart.ChartTitle.Text = “Testestimater”: Denne erklæring tilsidesætter diagramtitlen til 'Testestimater'.
- est.Chart.SetElement (msoElementDataLabelCenter): Denne erklæring angiver dataetiketter og forklaringer til diagrammet.
- est.Chart.SetElement (msoElementLegendBottom): Denne erklæring sætter dataetiketterne i bunden af diagrammet.
Måder at udføre en makro på
En makro kunne udføres på 4 måder:
- Brug af ikonet Kør i VBA-editorens vindue.
- På menuen Excel skal du vælge menupunktet Vis -> Makroer -> Vis makro -> Vælg makronavnet, og vælg Kør.
- Opret en genvej, mens du opretter makroen, og ved at trykke på genvejstasterne udløses makroen.
- Den mest brugervenlige måde er at oprette en handlingsknap ( For eksempel. Kommando-knap), som en makro tildeles, som når der klikkes på den, vil udløse udførelsen af makroen.
Vi vil se, hvordan du tilføjer en kommandoknap og tildeler en makro til knappen. Når der klikkes på knappen, udføres makroen.
Tilføj en formularkontrolknap i Excel
- Vælg Menu 'Udvikler' -> Indsæt -> Formuleringskontrol -> Vælg knapikon og tilføj knappen på Excel-arket.
- Indtast navnet og tekstværdien for knappen. Navnet på knappen bruges i VBA-kodningen til at genkende denne kommandoknap, mens teksten er det, der vises på knappen.
- Højreklik nu på kommandoknappen, og vælg indstillingen 'Tildel makro' , vises listen over makroer, vælg navnet på den makro, du vil tildele.
- Når makroen er tildelt, udløser udførelsen af den tildelte makro ved at klikke på knappen.
- I dette eksempel er 'Få testestimater' knappen er tildelt 'Skøn' makro.
- På samme måde tilføjer vi en kommandoknap til diagramarket og tildeler makroen til diagram for at udløse genereringen af diagrammet.
- Ved at klikke på 'Opret diagram' -knappen kører makroen til diagram. Dette forbedrer anvendeligheden af makroen.
Konklusion
Dette var få eksempler i realtid, der kunne være en del af testernes daglige rutine på arbejdspladsen, som kunne identificeres smart til makrogenerering og derfor kunne spare rigelig tid på irrelevant og gentagen manuel indsats ved at automatisere opgaven.
De relevante skærmbilleder, VBA-koden og detaljeret forståelse af hver kodelinje er blevet beskrevet i denne artikel. Jeg håber, dette vil give et godt forspring for kvalitetssikringsselskaberne om, hvordan man omdanner sig fra en manuel test-tankegang til en makro-tankegang.
For de mennesker, der mener, at manuelle testers job udelukkende er et ikke-teknisk job, lad os bevise dem forkert gennem den krævede anvendelse af teknisk viden for at forbedre produktiviteten.
Forfatter: Dette dybtgående nyttige indlæg er skrevet af Shobha D. Hun arbejder som projektleder og har mere end 9 års erfaring inden for manuel, automatisering (IBM RFT og selen ved hjælp af Java) og API-test.
Anbefalet læsning
- Arbejde med VBScript Excel-objekter
- Selen Framework Oprettelse og adgang til testdata fra Excel - Selenium Tutorial # 21
- 5 mest almindelige testopgaver Testere glemmer at teste (og hvordan man undgår det)
- Top 5 ting, som en tester skal have for at Excel (og softwaretesters skiftende perspektiver)
- JIRA-underopgave med eksempel (JIRA Opret underopgave)