how automate repetitive qa tasks using excel macros
Denne grundige veiledningen om QAs Macro Mindset forklarer hvordan du automatiserer repeterende QA-oppgaver ved hjelp av Excel-makroer med eksempler og skjermbilder av Excel-ark:
Behovet for automatisering i dagens verden er en av de viktigste og økende kravene. I dag søker alle noe som letter hans / hennes arbeid eller problemene som er involvert i rutinearbeidet.
I dag er det ingen som ønsker å besøke en mobilbutikk, stå i kø for å lade telefonen, det er praktisk å ikke besøke fysisk hvor som helst, men å lade telefonen online i løpet av en brøkdel av et sekund.
Fra å betale strømregningene dine via nettbank, bestille og spore drosjen din online, kjøpe ting online på forskjellige e-handelsnettsteder til å bruke forskjellige automatiserte apparater som vaskemaskiner, mikrobølgeovn, geysir og de stadig utviklende smarttelefonene etc., er verden i dag virkelig trang til smarte og automatiserte produkter i form av tjenester eller dingser.
I denne artikkelen skal vi ikke diskutere bruken av noe automatiseringsverktøy eller noe om kunstig intelligens eller maskinlæring, men fokuset skal være på bruk av Excel for å automatisere de daglige rutineoppgavene til en kvalitetssikring.
Hva du vil lære:
QA’s Macro Mindset
Manuelle testere har vanligvis et tankesett om at jeg som manuell tester har ingenting å gjøre med noe teknisk eller med andre ord, ‘kodingskunnskap er ikke min kopp te’. Dette er sannsynligvis feil tankesett som kan stoppe vår vekst som ingeniører.
En manuell kvalitetssikring har mange daglige oppgaver som kan gjenta seg etter samme arbeidsflyt. En kvalitetssikring kan veldig godt identifisere slike oppgaver og få dem automatisert ved hjelp av Excel-makroer og / eller formler.
Dette kan hjelpe på to måter:
- Reduserer tiden som brukes i manuell innsats.
- Inspirerer også kvalitetssikringsselskapet til å lære og tilpasse seg logisk tenkning og kompetanse på den tekniske fronten.
Ting kan automatiseres for alle testfasene som er oppført nedenfor:
- Test planlegging og estimering.
- Test design eller test case forberedelse.
- Test utførelsesstatusoppdatering.
- Testrapport og beregning.
Rask innstilling for kontekst
#1) Et excel lagret med. xlsxm-utvidelsen er et makroaktivert Excel.
#to) For å aktivere makro på en Excel, velg File -> Options -> Trust Center -> Trust Center Settings -> Macro Settings -> Select Radio Button “Enable all macroros” og merk av i avmerkingsboksen “Tillit til tilgang til VBA-prosjektobjektmodellen”. Klikk OK.
# 3) Velg menyen Vis -> Makroer -> Ta opp makroer -> Utfør litt aktivitet og stopp makroer . Du kan redigere makroen og vise VBA-koden som er registrert i VBA redaktør vindu. På samme måte kan du legge til kodene dine eksplisitt for å lage en makro.
# 4) Vi vil se på eksempler på slike repeterende oppgaver som kan være gode kandidater for automatisering via Excel-makroer / -formler.
Eksempel på bruk # 1
På slutten av hver funksjonelle fase må det være noen testtilfeller identifisert for regresjon fra den funksjonelle suiten. Dette er en prosess som skal følges i hver sprint eller iterasjon.
Løsning
For å redusere innsatsen for å identifisere og manuelt lage en regresjonspakke, kan den innovative prosessen nedenfor implementeres.
- Du kan lage et ark med funksjonstesttilfeller med en ekstra kolonne for å merke testtilfellene / scenariene som Ja / Nei for regresjon.
- Lag deretter en makro for det samme, slik at når makroen kjører, blir alle testtilfeller / scenarier med regresjon merket som ‘Ja’ kopiert til et annet ark.
- Dermed vil dette unngå en ekstra øvelse med å gå gjennom alle funksjonelle testtilfeller på slutten av sprinten og deretter legge ekstra anstrengelser for å få hver testkasse ekstrahert i regresjonspakken.
Demo
- Det første arket ‘FunctionalTestScenarios’ inneholder alle Funksjonelle testscenarier / testtilfeller.
- Det er en ekstra kolonne ‘Inkluder i Regression suite?’ lagt til på slutten av testkolonnene for å markere 'Ja' eller 'Nei' ved å identifisere om hvert av testscenariene må inkluderes i regresjonspakken.
- Det er et annet ark opprettet som ‘RegressionSuite’ og dette vil automatisk hente alle regresjonstest-scenariene gjennom makroen.
- CTRL + SKIFT + S er angitt som snarvei for makroen som skal utfø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 av kode
- Ark (“FunctionalTestScenarios”). Aktiver: Når det er flere ark i Excel, aktiverer metoden Aktivere det første arket, og derfor blir fokus eksplisitt satt til det første arket.
- Rader (“1: 1”). Velg: Denne setningen velger den første raden for alle kolonnene i det første arket.
- Selection.AutoFilter: Denne setningen gjelder filteret på den valgte første raden.
- Ark1.Range (“$ A $ 1: $ D $ 38 ″). Autofilterfelt: = 4, Kriterier1: =” Ja ”: Denne påstanden gjelder automatisk filter på kolonne nummer 4, dvs. ‘Inkluder i Regression suite?’ og filtrerer ut postene for verdien “Ja”.
- Lastrow = Sheets ('FunctionalTestScenarios'). Cells (Sheets ('FunctionalTestScenarios') .Rows.Count, 'A'). End (xlUp) .Row: Denne uttalelsen får den siste radtellingen på det første arket.
- Område (“A2: C2” og Lastrow) .Velg: Denne uttalelsen velger alle rader og kolonner på det første arket med Inkluder i regresjonspakke? = Ja.
- Valg. Kopi: Denne erklæringen kopierer alle de valgte postene.
- Ark (“RegressionSuite”). Velg: Denne uttalelsen åpner 2ndark.
- Område (“A2”). Velg: Denne påstanden velger celle A2 av 2ndark.
- Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False: Denne erklæringen kopierer den valgte kildeverdien til destinasjonsarket. Destinasjonscelleområdet inneholder bare de beregnede verdiene ved hjelp av formlene. Alternativt kan Paste: = xlValues også brukes. Ingen emner hoppes over. Kildecellene er ikke transponert og ingen matematiske operasjoner er utført.
Eksempel på bruk # 2
Det er tider når du trenger å lage testtilfeller for si 100 stater eller 1000 enheter (som 1000 forsikringsskjemaer). Teststrinnene for denne enorme listen over stater eller enheter kan være de samme og repeterende.
Til tross for det kan forberedelse av testsaker være en av de mest tidkrevende aktivitetene. Det å ha testdokumentet på plass er veldig viktig for å kjøpe inn de nødvendige estimatene fra klienten og få QA-teamet til å teste hver av testsakene innen riktig estimerte tidslinjer.
Løsning
I slike tilfeller kan lange timer med forsøk på å forberede testsaker reduseres til en brøkdel av sekunder ved hjelp av makroen.
- Du kan lage et ark der du bare oppgir inndata som en test case ID og den unike listen over enheter.
- Lag en makro som når den kjøres, legger til repeterende linjer med teststrinn for hver av disse enhetene, og testdokumentet er klart på få sekunder uten å måtte bruke den betydelige mengden manuell innsats som kreves for å forberede testsakene.
Demo
- Det første arket ‘GetTestcasesASAP’ er det eneste makrodrevne arket her som først er tomt.
- Nok et ark 'Eksempel på inndata' spiller ingen rolle i makroen. Den inneholder bare eksemplet på inngangsdata for demo-formål.
- Kopier og lim inn data fra prøveinndatadataområdet A2 til B12 til det første arket.
- Du kan kopiere og lime inn inndataene i formatet - Kolonne A = ……. og kolonne B =.
- Når inngangsdataene er klare, trykker du CTRL + SKIFT + T som hurtigtaster for makroen som skal utføres.
- Teststrinn legges automatisk til for hver test-saks-ID, og test-saksdokumentet utarbeides på bare noen få sekunder.
GetTestcasesASAP
Eksempel på inngangsdata
Inngangsdata limes inn i første ark.
Bilde under makroutførelse ved å trykke 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 av kode
(a) Ark (“GetTestcasesASAP”). Aktiver: Denne uttalelsen aktiverer det første arket.
hvordan man skriver brukerhistorier og akseptkriterier
(b) lastrow = Sheets ('GetTestcasesASAP'). Cells (Sheets ('GetTestcasesASAP'). Rader.Count, 'A'). End (xlUp) .Row: Denne uttalelsen får den siste radtellingen. Denne gangen vil det få totalt antall radtall for de første test-saks-ID-ene som nettopp er lagt til som en del av inndata før utførelsen av makroen.
(c) Dim AddRows Som Integer: Denne erklæringen erklærer AddRows-variabelen som en heltalsdatatype.
(d) AddRows = 5: Denne uttalelsen initialiserer AddRows med 5. Variabelen brukes til å sette inn noen få linjer etter hver test case ID, slik at statiske test trinn kan legges til for hver test case.
(e) Dim i As Integer: Denne uttalelsen erklærer variabel i som heltallet.
(f) i = lastrow : Denne utsagnet tilordner den første telleren til siste rad til variabelen i.
(g) Gjør mens jeg 1 : Dette gjør mens sløyfe setter inn 6 blanke rader etter hvert test case ID. Loopingen starter fra den siste test-saks-IDen frem til den første test-saks-ID-en.
Rader (i & “:” & i + AddRows). Sett inn
i = i - 1
Løkke
(h) ScreenUpdating = True : Denne uttalelsen gjør hver skjermoppdatering synlig. Derfor kan ytelsen til makroen være litt treg. For å optimalisere ytelsen til makroen, kan du også angi ScreenUpdating = Usann .
Innstilling av ScreenUpdating til False forbedrer makroytelsen og fester utførelsen, men du vil ikke kunne se de periodiske endringene som skjer under utførelsen av makroen. I stedet vises endringene bare når kjøringen av makroen er fullført.
(i) lastrow = Sheets ('GetTestcasesASAP'). Cells (Sheets ('GetTestcasesASAP'). Rader.Count, 'A'). End (xlUp) .Row : Denne påstanden beregner den siste radtellingen igjen etter tilsetning av nye 6 rader for hver testcase.
(j) i = 2
(k) Mens jeg<= lastrow + 6
Ark ('GetTestcasesASAP'). Celler (i, 3) = 'Validerer priser-faktor-kombinasjoner'
Ark (“GetTestcasesASAP”). Celler (i + 1, 3) = “Batchjobplaner og -kjøringer. “
Ark ('GetTestcasesASAP'). Celler (i + 2, 3) = 'Idriftsettelse beregningsoppgjør'
Ark ('GetTestcasesASAP'). Celler (i + 3, 3) = 'Rask og detaljert sitat'
Ark ('GetTestcasesASAP'). Celler (i + 4, 3) = 'Fordelillustrasjon'
Ark (“GetTestcasesASAP”). Celler (i + 5, 3) = “Validering av fordelesammendrag”
i = i + 7
Søke om
Denne utdraget av while-sløyfen legger til 6 trinn med statiske teststrinn for hver testcase ved å angi disse linjene etter hver testcase-ID.
De statiske teststrinnene som er lagt til for hver testtilfelle er som følger:
- Trinn 1: Valider sats-faktor kombinasjoner.
- Steg 2: Batch jobbplaner og løp.
- Trinn 3: Idriftsettelse beregningsoppgjør.
- Trinn 4: Rask og detaljert sitat.
- Trinn 5: Fordel Illustrasjon.
- Trinn 6: Validering av fordelesammendrag.
Dessuten skyver den også neste testtilfelle Id i sekvensen til 6 + 2 dvs. 8thrad.
F.eks .: Hvis TC1 er på første rad, legges trinnene fra andre til syvende rad, og TC2 skyves til åttende rad. En lignende måte følges for resten av testsaken.
Eksempel på bruk # 3
Det er tilfeller når en enorm datafil et sted nær 1000 poster eller mer blir levert av klienten, og å skrive testsaker for disse enorme postene, og å kartlegge hver data mot hvert testtrinn er en kjedelig jobb. Makro kan redusere innsatsdagene til noen minutter, og sparer dermed forberedelsestiden for testsaken.
Løsning
Datafilen som klienten har gitt, kan kopieres til det makroaktiverte arket. Når makroen kjøres, opprettes testtilfellene automatisk i det andre arket ved automatisk å tilordne testdata mot hvert testtrinn for hver testtilfelle.
Demo
- Det første arket ‘InputFile’ og det andre arket ‘ReadyTestCases’ er de viktigste bidragsyterne i makroen.
- Et annet ark 'Sample -InputFile' spiller ingen rolle i makroen. Den inneholder bare eksemplet på datafilen for demoformål.
- Når dataene fra 'Sample-InputFile' eller klientleverte datafiler kopieres til det første arket, dvs. 'InputFile',
- Utfør makroen, og testtilfellene opprettes automatisk for hver testtilfelle der ordre-ID-ene er angitt som test-saks-ID ( Merk: Husk å plassere den unike identifikatoren plassert som den første kolonnen i InputFile).
- Fra nå av har vi ikke satt noen hurtigtaster for makrokjøringen, i stedet må vi kjøre den gjennom kjøringsalternativet på Vis -> Makroer -> Velg makro -> Rediger -> VBA-vindu.
- Makrokoden håndterer testtrinnstillegget dynamisk. Det sjekker til slutt for å se om noe av feltverdien er tom, hvis ja, det sletter testtrinnet for det samme som trinnet ikke ville være nødvendig for et blankt felt. For eksempel, hvis du ser på inndatafilen nedenfor, 2ndposten har ingen verdi for leveringsdato og den tredje raden har ingen verdi for regionen. Derfor, etter makroutførelsen, vil ikke testtilfellene som er automatisk opprettet, ha teststrinn som tilsvarer disse blanke verdiene.
Eksempel - InputFile
InputFile: Etter å ha utført kopier lim inn data fra eksempel InputFile til InputFile
Merk:
- Ikke lim inn kolonneoverskriften fra 'Sample-InputFile' -arket.
- De gule uthevede feltene er tomme, og teststrinnene som tilsvarer disse tomme verdiene skal ikke opprettes via makroen.
Bilde av ReadyTestcases Sheet After Macro Run.
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 av kode
# 1) ScreenUpdating = Usann: Skjermoppdateringer vil ikke være synlige ved å sette ScreenUpdating til False.
# 2) ThisWorkbook.Sheets (“InputFile”). Aktiver: Denne uttalelsen aktiverer arket ‘InputFile’.
# 3) nrow = ThisWorkbook.Sheets ('InputFile'). Celler (Rader.Count, 1) .End (xlUp) .Row: Denne utsagnet teller antallet totalt antall rader.
# 4) ncol = ThisWorkbook.Sheets ('InputFile'). Celler (1, Columns.Count) .End (xlToLeft) .Column: Denne uttalelsen teller antall kolonner.
# 5) jeg = 1: Denne uttalelsen initialiserer jeg med 1.
# 6) j = 1: Denne påstanden initialiseres j med 1.
# 7) For i = 1 For å nå
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (i, 1) = ThisWorkbook.Sheets ('InputFile'). Cells (i, 1)
Neste jeg: Dette utdraget av For loop-kopi limer inn den første kolonneverdien (Bestillings-ID i dette tilfellet) av 'InputFile' -arket i hver rad på arket 'ReadyTestCases' som testcase-ID.
# 8) lastrow = Sheets ('InputFile'). Celler (Sheets ('InputFile'). Rader.Count, 'A'). End (xlUp) .Row: Denne setningen beregner den siste raden i InputFile.
# 9) AddRows = 21: Denne uttalelsen tildeler 21 variabelen AddRows. Denne variabelen er tildelt 21 med den hensikt å sette inn 21 ekstra tomme rader for hver testtilfelle for tillegg av testtrinn.
# 10) i = lastrow: Denne erklæringen tildeler den siste siste radtellingen til i.
# 11) Gjør mens jeg 1
Rader (i & “:” & i + AddRows - 1). Sett inn
i = i - 1
Løkke : Denne erklæringen legger til 20 rader for hver testcase som starter fra bunnen til toppen.
# 12) lastrow = Sheets (“ReadyTestCases”). Celler (Sheets ('ReadyTestCases'). Rader.Count, 'A'). End (xlUp) .Row: Denne uttalelsen beregner det siste totale antall rader på nytt.
# 13) ThisWorkbook.Sheets (“ReadyTestCases”). Aktiver: Det andre arket aktiveres gjennom denne uttalelsen.
# 14) Dim til: Denne uttalelsen erklærer variabel a.
# 15) a = 1: Denne uttalelsen tildeler 1 til a.
# 16) For a = 1 For å laste
ThisWorkbook.Sheets ('ReadyTestCases'). Cells (a, 3) = ThisWorkbook.Sheets ('InputFile'). Cells (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'). Cells (a + 17, 3) = ThisWorkbook.Sheets ('InputFile'). Cells (a, 19)
a = a + 21
Neste a: Utdraget for for loop tilordner verdiene fra hver kolonne i InputFile-arket mot hvert teststrinn for hvert test-case-ID.
# 17) lastrow = Sheets ('ReadyTestCases'). Celler (Sheets ('ReadyTestCases'). Rader.Count, 'C'). End (xlUp) .Row : Denne erklæringen beregner det totale radetallet ReadyTestCases-arket etter å ha lagt til 21 rader for hver test case ID.
# 18) a = 1: Denne uttalelsen tildeler 1 variabel a.
# 19) ThisWorkbook.Sheets ('ReadyTestCases'). Aktiver: Denne uttalelsen aktiverer ReadyTestCases-ark.
# 20) For a = 1 For å laste
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a, 2) = 'Bekreft bestillingsdato'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 1, 2) = 'Bekreft leveringsdato'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 2, 2) = 'Verify Ship Mode'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 3, 2) = 'Bekreft kunde-ID'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 4, 2) = 'Bekreft kundenavn'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 5, 2) = 'Bekreft segment'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 6, 2) = 'Bekreft by'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 7, 2) = 'Bekreft tilstand'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 8, 2) = 'Bekreft postnummer'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 9, 2) = 'Bekreft region'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 10, 2) = 'Bekreft produkt-ID'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 11, 2) = 'Bekreft kategori'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 12, 2) = 'Bekreft underkategori'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 13, 2) = 'Bekreft produktnavn'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 14, 2) = 'Bekreft salg'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 15, 2) = 'Bekreft antall'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 16, 2) = 'Bekreft rabatt'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 17, 2) = 'Bekreft fortjeneste'
a = a + 21
Neste a - Dette utdraget av For loop legger til statiske teststrinn for hver testtilfelle.
# 21) Slett blanke rader (“ReadyTestCases”): Ring funksjonen Slett blankrow-funksjonen for 'Ready TestCases'sheet.
# 22) ScreenUpdating = True: Dette lar deg visualisere skjermoppdateringene som skjer som en del av makroutførelsen.
# 23) Del sletteblankrows (ByVal Sheet As String): Koden nedenfor er for funksjonen Deletblankrows som vil dynamisk sjekke om det er noen tomme verdier i datafeltene. Hvis ja, vil teststrinnet som er opprettet for de tomme dataene slettes på sin side ved å slette slike rader.
# 24) Dim wks Som regneark: Denne erklæringen erklærer wks-variabel som regneark.
# 25) Sett wks = ThisWorkbook.Worksheets (Sheet): Denne erklæringen tildeler wks-arket som er gitt som inndataparameter.
# 26) Dim i så lenge: Denne linjeren erklærer jeg som lang.
# 28) wks.Activate: Denne uttalelsen aktiverer arket.
# 29) lastrow = wks.Cells (Sheets (Sheet) .Rows.Count, “C”). End (xlUp) .Row: Denne uttalelsen får tellingen av den siste raden på arket.
# 30) For i = 1 For å laste: For-sløyfen går fra første rad til siste rad.
# 31) Hvis WorksheetFunction.CountBlank (Range (Cells (i, 2), Cells (i, 3))) = 1 Så: Denne tilstanden sjekker om den andre og tredje kolonnen for hver rad teller til den tomme verdien som 1.
# 32) Selection.Rows (i) .EntireRow.Delete: Denne setningen sletter den valgte raden hvis betingelsen er oppfylt.
Eksempel på bruk # 4
Excel-formlene i Test Estimates-malen kan også kjøres ved hjelp av en makro. Et diagram opprettes også ved hjelp av makroen.
Demo
- Et ark ‘Estimates’ som gjør det mulig for brukere å legge til estimerte timer for testfaser, fra å forstå forretningskrav til å opprette, utføre og omarbeide på oppdatering av testskript, opprettholdes.
- De grønne markerte cellene er aktivert for brukeroppføring. Dette er inntastingsfeltene.
- De blå uthevede er automatisk avledet.
- Det andre arket inkluderer omarbeidingsberegninger og det tredje arket inneholder beregninger for kompleksitet.
- Brukeren angir kompleksitetsstørrelsen når det gjelder H, L og M i kolonne D, og kolonnen E henter automatisk faktoren for kompleksitet ved å bruke oppkoblingen fra ‘Kompleksitetsberegninger’ ark.
- Brukeren angir omarbeidsstørrelsen i form av H, L og M i kolonne F, og kolonne G henter automatisk faktoren for kompleksitet ved å bruke oppsøkingen fra 'Rework metrics' -arket.
- Faktorene blir deretter brukt i kolonne H for å hente den totale innsatsen for estimering.
- En annen makro når den utføres forbereder diagrammet og legger den til på det fjerde arket ‘Chart’.
- Formlene som er inkludert styres via makroen ved hjelp av hurtigtasten CTRL + SKIFT + E.
Anslag
Rework Metrics
Kompleksitetsmålinger
Diagram
VBA (makro) kode for 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 av kode
(a) ThisWorkbook.Sheets (1) .Activat: Det første arket ‘Estimates’ aktiveres.
(b) Ark (“Estimates”). Cells (4, 8) = Sheets (“Estimates”). Cells (4, 2) * Sheets (“Estimates”). Cells (4, 3) * Sheets (“Estimates”) Celler (4, 5) * Ark ('Anslag'). Celler (4, 7): Denne uttalelsen beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for rad 4.
(c) Ark (“Estimates”). Cells (5, 8) = Sheets (“Estimates”). Cells (5, 2) * Sheets (“Estimates”). Cells (5, 3) * Sheets (“Estimates”) Celler (5, 5) * Ark ('Anslag'). Celler (5, 7): Denne uttalelsen beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for rad 5.
(d) Ark (“Estimates”). Cells (6, 8) = Sheets (“Estimates”). Cells (6, 2) * Sheets (“Estimates”). Cells (6, 3) * Sheets (“Estimates”) Celler (6, 5) * Ark ('Anslag'). Celler (6, 7): Denne uttalelsen beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for rad 6.
(e) Ark (“Estimates”). Cells (7, 8) = Sheets (“Estimates”). Cells (7, 2) * Sheets (“Estimates”). Cells (7, 3) * Sheets (“Estimates”) Celler (7, 5) * Ark (“Anslag”). Celler (7, 7): Denne uttalelsen beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for rad 7.
(f) Ark (“Estimates”). Cells (8, 8) = Sheets (“Estimates”). Cells (8, 2) * Sheets (“Estimates”). Cells (8, 3) * Sheets (“Estimates”) Celler (8, 5) * Ark ('Anslag'). Celler (8, 7): Denne uttalelsen beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for rad 8.
(g) Ark (“Estimates”). Cells (9, 8) = Sheets (“Estimates”). Cells (9, 2) * Sheets (“Estimates”). Cells (9, 3) * Sheets (“Estimates”) Celler (9, 5) * Ark ('Anslag'). Celler (9, 7): Denne uttalelsen beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for rad 9.
(h) Ark (“Estimates”). Cells (10, 8) = Sheets (“Estimates”). Cells (10, 2) * Sheets (“Estimates”). Cells (10, 3) * Sheets (“Estimates”) Celler (10, 5) * Ark ('Anslag') Celler (10, 7): Denne uttalelsen beregner kolonne B * kolonne C * kolonne E * kolonne G og tildeles kolonne H for rad 10.
(i) Ark (“Estimates”). Cells (11, 8) = Sheets (“Estimates”). Cells (4, 8) + Sheets (“Estimates”). Cells (5, 8) + Sheets (“Estimates”) Celler (6, 8) + Ark (“Estimates”). Cells (7, 8) + Sheets (“Estimates”). Cells (8, 8) + Sheets (“Estimates”). Cells (9, 8) + Ark (“Estimates”). Celler (10, 8): Denne uttalelsen oppsummerer celle H2 til H10 og tildeler H11 den endelige verdien. Denne verdien gir total innsats (i timer).
(j) For i = 3 til 10
Ark ('Diagram'). Celler (i - 2, 1) = Ark ('Anslag'). Celler (i, 1)
Ark ('Diagram'). Celler (i - 2, 2) = Ark ('Anslag') Celler (i, 8)
Neste jeg: Denne For Loop-kopien limer inn data fra kolonne 1 og kolonne 8 i beregningsarket til diagramarket. Dette gjøres slik at dataene fra kartarket kan brukes til å lage et kakediagram. Det er en annen makro skrevet for ark 'Chart' som utarbeider et diagram for det samme.
VBA (makro) kode for diagrammer
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 av kode
- Dim rng som rekkevidde: Denne erklæringen erklærer rng som en Range-verdi.
- Dim er som objekt: Denne erklæringen erklærer est som objektverdi.
- Denne arbeidsboken Ark (“Diagram”). Aktiver: Denne uttalelsen aktiverer kartarket.
- Sett rng = ActiveSheet.Range (“A2: B8”): Området A2 til B8 i ark-diagrammet er satt til rng.
- Set est = ThisWorkbook.Sheets (“Chart”). Shapes.AddChart2: Denne uttalelsen brukes til å starte opprettelsen av et nytt diagram på ark-diagrammet.
- est.Chart.SetSourceData Source: = rng: Denne uttalelsen gir et dataområde for kontemplasjon i diagrammet.
- est.Chart.ChartType = xl3DPieExploded: Karttypen er satt til 3D Pie av eksplodert type. xl3DPieExploded hjelper deg med å bestemme denne diagramtypen.
- est.Chart.HasTitle = Sant: Denne uttalelsen bekrefter om diagrammet allerede har en tittel.
- est.Chart.ChartTitle.Text = “Testestimater”: Denne påstanden tilsidesetter karttittelen til 'Testestimater'.
- est.Chart.SetElement (msoElementDataLabelCenter): Denne uttalelsen angir dataetiketter og forklaringer for diagrammet.
- est.Chart.SetElement (msoElementLegendBottom): Denne setningen setter dataetikettene nederst i diagrammet.
Måter å utføre en makro på
En makro kan utføres på fire måter:
- Bruk Run-ikonet i VBA-redigeringsvinduet.
- Velg menyalternativet i Excel-filen Vis -> Makroer -> Vis makro -> Velg makronavnet og velg Kjør.
- Opprett en snarvei mens du oppretter makroen, og ved å trykke på snarveistastene vil utførelsen av makroen utløses.
- Den mest brukervennlige måten er å lage en handlingsknapp ( F.eks. Kommando-knapp) som en makro vil bli tildelt som når du klikker på den, vil utløse kjøringen av makroen.
Vi får se hvordan du legger til en kommandoknapp og tilordner en makro til knappen. Når du klikker på knappen, utføres makroen.
Legg til en skjemakontrollknapp i Excel
- Å velge Meny ‘Developer’ -> Insert -> Form Controls -> Select Button icon og legg til knappen på Excel-arket.
- Skriv inn navnet og tekstverdien for knappen. Navnet på knappen brukes i VBA-kodingen for å gjenkjenne denne kommandoknappen, mens teksten er det som vises på knappen.
- Høyreklikk nå på kommandoknappen og velg alternativet ‘Tildel makro’ , vises listen over makroer, velg navnet på makroen du vil tilordne.
- Når makroen er tildelt, klikker du på knappen for å utføre kjøringen av den tildelte makroen.
- I dette eksemplet er ‘Få testestimater’ knappen er tilordnet 'Anslag' makro.
- På samme måte legger vi til en kommandoknapp for kartarket og tilordner makroen for kart for å utløse generering av kartet.
- Ved å klikke på ‘Lag diagram’ -knappen kjører makroen for Chart. Dette forbedrer brukbarheten til makroen.
Konklusjon
Dette var få eksempler i sanntid som kunne være en del av testerenes daglige rutine på jobben, som kunne identifiseres smart for makrogenerering og derfor kunne spare mye tid på irrelevant og repeterende manuell innsats ved å automatisere oppgaven.
De aktuelle skjermbildene, VBA-koden og detaljert forståelse av hver kodelinje er dekket i denne artikkelen. Jeg håper dette vil gi en god start for kvalitetssikringsmennene på hvordan man kan transformere seg fra en manuell testingstankegang til en makrotankegang.
For de som tror at manuelle testers jobb utelukkende er en ikke-teknisk jobb, la oss bevise dem feil gjennom den nødvendige anvendelsen av teknisk kunnskap for å forbedre produktiviteten.
Forfatter: Dette grundige nyttige innlegget er skrevet av Shobha D. Hun jobber som prosjektleder og har 9+ års erfaring innen manuell, automatisering (IBM RFT og selen ved bruk av Java) og API-testing.
Anbefalt lesing
- Arbeide med VBScript Excel Objects
- Selen Framework Creation and Accessing Test Data from Excel - Selenium Tutorial # 21
- De 5 vanligste testoppgavene Testere glemmer å teste (og hvordan man kan unngå det)
- Topp 5 ting en tester må ha for å Excel (og programvaretesters skiftende perspektiver)
- JIRA underoppgave med eksempel (JIRA Opprett underoppgave)