how automate repetitive qa tasks using excel macros
Den här djupgående guiden om QAs makrotänkande förklarar hur man automatiserar repetitiva QA-uppgifter med hjälp av Excel-makron med exempel och skärmdumpar av Excel-ark:
Behovet av automatisering i dagens värld är ett av de väsentliga och växande kraven. Idag söker alla något som underlättar hans / hennes arbete eller besväret med rutinarbetet.
Numera vill ingen besöka en mobilbutik, stå i kö för att ladda sin telefon, det är bekvämt att inte fysiskt besöka någonstans utan att ladda telefonen online inom en bråkdel av en sekund.
Från att betala dina elräkningar via nätbank, boka och spåra din hytt online, köpa saker online på olika e-handelswebbplatser till att använda olika automatiska apparater som tvättmaskiner, mikrovågsugn, geyser och de ständigt utvecklande smartphones etc., är världen idag verkligen begär efter smarta och automatiserade produkter i form av tjänster eller prylar.
I den här artikeln ska vi inte diskutera användningen av något automatiseringsverktyg eller något om artificiell intelligens eller maskininlärning, men fokus kommer att vara på enbart användning av Excel för att automatisera en QAs dagliga rutinuppgifter.
Vad du kommer att lära dig:
QA's Macro Mindset
Manuella testare har vanligtvis en inställning att jag som manuell testare inte har något att göra med något tekniskt eller med andra ord, ”kodningskunskap är inte min kopp te”. Detta är förmodligen fel tänkesätt som kan stoppa vår tillväxt som ingenjörer.
En manuell QA har många dagliga uppgifter som kan upprepas efter samma arbetsflöde. En kvalitetssäkring kan mycket väl identifiera sådana uppgifter och få dem automatiserade med hjälp av Excel-makron och / eller formler.
Detta kan hjälpa på två sätt:
- Minskar den tid som krävs för manuella ansträngningar.
- Inspirerar också QA att lära sig och anpassa sig till logiskt tänkande och kompetens på den tekniska fronten.
Saker kan automatiseras för alla testfaser som anges nedan:
- Testplanering och uppskattning.
- Testdesign eller förberedelse av testfall.
- Testkörning statusuppdatering.
- Testrapport och mått skapas.
Snabb sammanhangsinställning
# 1) Ett excel sparat med. xlsxm-tillägget är ett makroaktiverat Excel.
#två) Välj för att aktivera makro i en Excel Arkiv -> Alternativ -> Trust Center -> Trust Center Settings -> Makroinställningar -> Välj alternativknapp 'Aktivera alla makron' och markera kryssrutan 'Tillit till tillgång till VBA-projektobjektmodellen'. Klicka på OK.
# 3) Välj menyn Visa -> Makron -> Spela in makron -> Utför lite aktivitet och stoppa makron . Du kan redigera makrot och visa VBA-koden inspelad i VBA-redaktör fönster. På samma sätt kan du lägga till dina koder uttryckligen för att skapa ett makro.
# 4) Vi tar en titt på vissa exempel på sådana repetitiva uppgifter som kan vara bra kandidater för automatisering via Excel-makron / formler.
Exempel på användning # 1
I slutet av varje funktionell fas måste det finnas några testfall identifierade för regression från den funktionella sviten. Detta är en process som ska följas i varje sprint eller iteration.
Lösning
För att minska ansträngningen att identifiera och manuellt skapa en regressionssvit kan nedanstående innovativa process implementeras.
- Du kan skapa ett ark med funktionstestfall med en ytterligare kolumn för att markera testfall / scenarier som Ja / Nej för regression.
- Skapa sedan ett makro för detsamma, så att när makrot körs, kopieras alla testfall / scenarier med regression markerade som ”Ja” till ett annat ark.
- Således kommer detta att undvika en ytterligare övning för att gå igenom alla funktionella testfall i slutet av sprinten och sedan lägga extra ansträngningar för att få varje testfall extraherat till regressionssviten.
Demo
- Det första arket ”FunctionalTestScenarios” innehåller alla funktionella testscenarier / testfall.
- Det finns en ytterligare kolumn 'Inkludera i Regression Suite?' läggs till i slutet av testkolumnerna för att markera 'Ja' eller 'Nej' genom att identifiera om vart och ett av testscenarierna måste ingå i regressionssviten.
- Det finns ett andra ark skapat som 'RegressionSuite' och detta hämtar automatiskt alla scenarier för regressionstest genom makrot.
- CTRL + SKIFT + S ställs in som genväg för makrot att köra.
FunctionalTestScenarios
RegressionSuite
VBA-kod (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
Förklaring av kod
- Ark (“FunctionalTestScenarios”). Aktivera: När det finns flera ark i Excel aktiverar metoden Aktivera det första arket och följaktligen är fokuset uttryckligen inställt på det första arket.
- Rader (“1: 1”). Välj: Detta uttalande väljer den första raden för alla kolumner i det första arket.
- Selection.AutoFilter: Detta uttalande gäller filtret på den valda första raden.
- Ark1.Range (“$ A $ 1: $ D $ 38 ″). Autofilterfält: = 4, Kriterier1: =” Ja ”: Detta uttalande gäller autofiltret på kolumn nummer 4, dvs. 'Inkludera i Regression Suite?' och filtrerar bort posterna för värdet ”Ja”.
- Lastrow = Sheets ('FunctionalTestScenarios'). Celler (Sheets ('FunctionalTestScenarios') .Rows.Count, 'A'). End (xlUp) .Row: Detta uttalande får den sista räkningen av det första arket.
- Område (“A2: C2” & Lastrow). Välj: Detta uttalande markerar alla rader och kolumner i det första arket med Inkludera i regressionssvit? = Ja.
- Urval. Kopiera: Detta uttalande kopierar alla valda poster.
- Ark (“RegressionSuite”). Välj: Detta uttalande öppnar 2ndark.
- Område (“A2”). Välj: Detta uttalande väljer cell A2 i 2ndark.
- Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False: Detta uttalande kopierar det källvalda cellvärdet till destinationsbladet. Målcellområdet innehåller endast de beräknade värdena med hjälp av formlerna. Alternativt kan Paste: = xlValues också användas. Inga ämnen hoppas över. Källcellerna transponeras inte och inga matematiska operationer görs.
Exempel på användning # 2
Det finns tillfällen när du behöver skapa testfall för exempelvis 100 stater eller 1000 enheter (som 1000 försäkringsblanketter). Teststegen för denna enorma lista över stater eller enheter kan vara desamma och upprepa.
Trots detta kan förberedelse av testfall vara en av de mest tidskrävande aktiviteterna, att det är mycket viktigt att ha testfallsdokumentet på plats för att köpa upp de uppskattningar som krävs av klienten och låta QA-teamet testa vart och ett av testfallet inom korrekt uppskattade tidslinjer.
Lösning
I sådana fall kan långa timmar av försök att förbereda testfall minskas till en bråkdel av sekunder med hjälp av makrot.
- Du kan skapa ett ark där du bara anger inmatningen som ett testfall-id och den unika listan över enheter.
- Skapa ett makro som när det körs lägger till repetitiva rader med teststeg för var och en av dessa enheter och testfallsdokumentet är klart på några sekunder utan att behöva spendera den stora mängd manuella ansträngningar som krävs för att förbereda testfallet.
Demo
- Det första arket 'GetTestcasesASAP' är det enda makrodrivna arket här som ursprungligen är tomt.
- Ytterligare ett ark 'Exempel på inmatningsdata' spelar ingen roll i makrot. Den innehåller bara ingångsdata för exempel för demoändamål.
- Kopiera och klistra in data från Sample Input data range A2 to B12 into the first sheet.
- Du kan kopiera och klistra in inmatningsdata i formatet - Kolumn A = ……. och kolumn B =.
- När inmatningsdata är klara trycker du på CTRL + SKIFT + T som snabbtangenter för att makrot ska kunna köras.
- Teststeg läggs automatiskt till för varje testfall ID och testfallsdokumentet förbereds på bara några sekunder.
GetTestcasesASAP
Exempel på inmatningsdata
Ingångsdata klistras in i det första arket.
Bild medan du utför makro genom att trycka på CTRL + SKIFT + T.
VBA-kod (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
Förklaring av kod
(a) Ark ('GetTestcasesASAP'). Aktivera: Detta uttalande aktiverar det första arket.
intervjufrågor och svar för skrivbordsstödtekniker
(b) lastrow = Sheets ('GetTestcasesASAP'). Celler (Sheets ('GetTestcasesASAP'). Rader.Count, 'A'). End (xlUp) .Row: Detta uttalande får den sista raden. Den här gången får det totala antalet rader för de ursprungliga testfall-id: erna som just har lagts till som en del av indata innan makrot körs.
(c) Dim tilläggsrader som heltal: Detta uttalande förklarar AddRows-variabel som en heltal datatyp.
(d) AddRows = 5: Detta uttalande initialiserar AddRows med 5. Variabeln används för att infoga några rader efter varje testfall-ID så att statiska teststeg kan läggas till för varje testfall.
(e) Dim i som heltal: Detta uttalande förklarar variabel i som heltal.
(f) i = lastrow : Detta uttalande tilldelar den ursprungliga sista raden till variabeln i.
(g) Gör medan jag 1 : Detta gör medan loop infogar 6 tomma rader efter varje testfall-id. Loopingen börjar från det sista testfallet id fram till det första testfallet id.
Rader (i & “:” & i + AddRows). Infoga
i = i - 1
Slinga
(h) ScreenUpdating = True : Detta uttalande gör varje skärmuppdatering synlig. Därför kan makroprestandan vara något långsam. För att optimera makroprestanda kan du också ställa in ScreenUpdating = Falskt .
Om du ställer in skärmuppdatering till falsk förbättras makroprestandan och fäst dess körning, men du kommer inte att kunna se de intermittenta förändringarna som sker under körningen av makrot. Istället visas ändringarna bara när körningen av makrot slutförts.
(i) lastrow = Sheets ('GetTestcasesASAP'). Celler (Sheets ('GetTestcasesASAP'). Rader.Count, 'A'). End (xlUp) .Row : Detta uttalande beräknar den sista raden igen efter att ha lagt till 6 nya rader för varje testcase.
(j) i = 2
(k) Medan jag<= lastrow + 6
Blad ('GetTestcasesASAP'). Celler (i, 3) = 'Validera priser-faktor-kombinationer'
Ark (“GetTestcasesASAP”) Celler (i + 1, 3) = “Batchjobbscheman och körningar. “
Blad ('GetTestcasesASAP'). Celler (i + 2, 3) = 'Idrifttagning av beräkningsavgifter'
Ark ('GetTestcasesASAP'). Celler (i + 3, 3) = 'Snabb och detaljerad offert'
Ark (“GetTestcasesASAP”). Celler (i + 4, 3) = “Fördelillustration“
Ark (“GetTestcasesASAP”). Celler (i + 5, 3) = “Validering av fördelarsammanfattning”
i = i + 7
Tillämpa
Detta utdrag av while-slingan lägger till 6 steg med statiska teststeg för varje testkorg genom att ställa in dessa rader efter varje testkassa-ID.
De statiska teststegen som läggs till för varje testfall är som följer:
- Steg 1: Validera kombinationer av prisfaktorer.
- Steg 2: Batchjobb scheman och körningar.
- Steg 3: Idrifttagning av beräkningar.
- Steg 4: Snabbt och detaljerat offert.
- Steg 5: Fördel Illustration.
- Steg 6: Validering av fördelarsammanfattning.
Dessutom skjuter det också nästa testfall Id i sekvensen till 6 + 2 dvs 8thrad.
T.ex: Om TC1 är på första raden läggs stegen till från andra till sjunde raden och TC2 trycks till åttonde raden. Ett liknande sätt följs även för resten av testfallets ID.
Exempel på användning # 3
Det finns fall där en enorm datafil någonstans nära 1000 poster eller mer tillhandahålls av klienten och att skriva testfall för dessa enorma poster och att mappa varje data mot varje teststeg är ett tråkigt jobb. Makro kan minska antalet ansträngningar till några minuter, vilket sparar tid för förberedelse av testfallet.
Lösning
Datafilen från klienten tillhandahålls kan kopieras till det makroaktiverade arket. När makrot körs skapas testfallet automatiskt i det andra arket genom att automatiskt mappa testdata mot varje teststeg för varje testfall.
Demo
- Det första arket 'Indatafil' och det andra arket 'ReadyTestCases' är de viktigaste bidragsgivarna i makrot.
- Ett annat ark ”Sample -InputFile” spelar ingen roll i makrot. Den innehåller bara exempeldatafilen för demoändamål.
- När data från 'Sample-InputFile' eller klient tillhandahållen datafil kopieras till det första arket, dvs. 'InputFile',
- Utför makrot och testfallet skapas automatiskt för varje testfall där order-id: n ställs in som testfall-ID ( Notera: Kom ihåg att placera den unika identifieraren som placeras som den första kolumnen i InputFile).
- Från och med nu har vi ingen genväg för makrokörningen istället måste vi köra den genom köralternativet på Visa -> Makron -> Välj makro -> Redigera -> VBA-fönster.
- Makrokoden hanterar teststegstillägget dynamiskt. Det kontrolleras i slutändan för att se om något av fältvärdet är tomt, om ja, raderas teststeget för samma sak som steget inte krävs för ett tomt fält. Till exempel, om du tittar på inmatningsfilen nedan, 2ndpost har inget värde för leveransdatum och den tredje raden har inget värde för region. Följaktligen, efter makroexekveringen, kommer testfall som skapas automatiskt inte att ha teststeg som motsvarar dessa tomma värden.
Exempel - InputFile
InputFile: Efter att ha utfört kopiera klistra in data från exempel InputFile till InputFile
Notera:
- Klistra inte in kolumnrubriken från arket 'Sample-InputFile'.
- De gula markerade fälten är tomma, därför ska teststegen som motsvarar dessa tomma värden inte skapas via makrot.
Bild av ReadyTestcases-ark efter makrokörning.
VBA-kod (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
Förklaring av kod
# 1) ScreenUpdating = Falsk: Skärmuppdateringar visas inte genom att ställa in ScreenUpdating till False.
# 2) ThisWorkbook.Sheets (“InputFile”). Aktivera: Detta uttalande aktiverar arket 'InputFile'.
# 3) nrow = ThisWorkbook.Sheets ('InputFile'). Celler (Rader.Count, 1) .End (xlUp) .Row: Detta uttalande får antalet rader.
# 4) ncol = ThisWorkbook.Sheets ('InputFile'). Celler (1, Columns.Count) .End (xlToLeft) .Column: Detta uttalande räknar antalet kolumner.
# 5) i = 1: Detta uttalande initialiserar jag med 1.
# 6) j = 1: Detta uttalande initialiseras j med 1.
# 7) För i = 1 Till nu
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (i, 1) = ThisWorkbook.Sheets ('InputFile'). Celler (i, 1)
Nästa jag: Detta utdrag av For loop-kopia klistrar in det första kolumnvärdet (Order-id i det här fallet) av 'InputFile' -arket i varje rad på arket 'ReadyTestCases' som testcase-id.
# 8) lastrow = Sheets ('InputFile'). Celler (Sheets ('InputFile'). Rader.Count, 'A'). End (xlUp) .Row: Detta uttalande räknar om det sista raden av InputFile.
# 9) AddRows = 21: Detta uttalande tilldelar 21 variabel AddRows. Denna variabel har tilldelats 21 med avsikt att infoga 21 ytterligare tomma rader för varje testfall för tillägg av teststeg.
# 10) i = lastrow: Detta uttalande tilldelar den senaste sista raden till i.
# 11) Gör medan jag 1
Rader (i & “:” & i + AddRows - 1). Infoga
i = i - 1
Loop: Detta uttalande lägger till 20 rader för varje testcase från botten till toppen.
# 12) lastrow = Sheets (“ReadyTestCases”). Celler (Sheets ('ReadyTestCases'). Rader.Count, 'A'). End (xlUp) .Row: Detta uttalande beräknar om det senaste totala antalet rader.
# 13) ThisWorkbook.Sheets (“ReadyTestCases”). Aktivera: Det andra arket aktiveras genom detta uttalande.
# 14) Dim till: Detta uttalande förklarar variabel a.
# 15) a = 1: Detta uttalande tilldelar 1 till a.
# 16) För a = 1 Till lastrow
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ästa a: Utdraget för for loop kartlägger värdena från varje kolumn i InputFile-ark mot varje teststeg för varje testfall-id.
# 17) lastrow = Sheets ('ReadyTestCases'). Celler (Sheets ('ReadyTestCases'). Rader.Count, 'C'). End (xlUp) .Row : Detta uttalande räknar om det totala antalet rader för ReadyTestCases efter att ha lagt till 21 rader för varje testfall-id.
# 18) a = 1: Detta uttalande tilldelar 1 variabel a.
# 19) ThisWorkbook.Sheets (“ReadyTestCases”). Aktivera: Detta uttalande aktiverar ReadyTestCases-ark.
# 20) För a = 1 Till lastrow
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a, 2) = 'Verifiera orderdatum'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 1, 2) = 'Verifiera leveransdatum'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 2, 2) = 'Verifiera fartygsläge'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 3, 2) = 'Verifiera kund-id'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 4, 2) = 'Verifiera kundnamn'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 5, 2) = 'Verifiera segment'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 6, 2) = 'Verifiera stad'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 7, 2) = 'Verifiera tillstånd'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 8, 2) = 'Verifiera postnummer'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 9, 2) = 'Verifiera region'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 10, 2) = 'Verifiera produkt-id'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 11, 2) = 'Verifiera kategori'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 12, 2) = 'Verifiera underkategori'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 13, 2) = 'Verifiera produktnamn'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 14, 2) = 'Verifiera försäljning'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 15, 2) = 'Verifiera kvantitet'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 16, 2) = 'Verifiera rabatt'
ThisWorkbook.Sheets ('ReadyTestCases'). Celler (a + 17, 2) = 'Verifiera vinst'
a = a + 21
Nästa a - Detta utdrag av For loop lägger till statiska teststeg för varje testfall.
# 21) Radera blankrader (“ReadyTestCases”): Ring funktionen Radera blankrow-funktionen för ”Ready TestCases-ark.
# 22) ScreenUpdating = True: Detta gör att du kan visualisera skärmuppdateringar som sker som en del av makroexekvering.
# 23) Sub Radera blankrows (ByVal Sheet As String): Koden nedan är för funktionen Deletblankrows som dynamiskt kontrollerar om det finns några tomma värden i datafälten. Om ja, kommer teststeget som skapats för tomma data att raderas i tur och ordning genom att radera sådana rader.
# 24) Dim wks Som arbetsblad: Detta uttalande förklarar wks-variabel som arbetsblad.
# 25) Ställ in wks = ThisWorkbook.Worksheets (Sheet): Detta uttalande tilldelar wks-bladet som ingångsparameter.
# 26) Dim i så länge: Denna liner förklarar jag som lång.
# 28) wks.Activate: Detta uttalande aktiverar arket.
# 29) lastrow = wks.Cells (Sheets (Sheet) .Rows.Count, “C”). End (xlUp) .Row: Detta uttalande får räkningen av den sista raden på arket.
# 30) För i = 1 För att sänka: For-slingan itererar från första raden till sista raden.
# 31) Om WorksheetFunction.CountBlank (Range (Cells (i, 2), Cells (i, 3))) = 1 Då: Detta villkor kontrollerar om den andra och tredje kolumnen för varje rad räknas till det tomma värdet som 1.
# 32) Selection.Rows (i) .EntireRow.Delete: Detta uttalande raderar den valda raden om villkoret är sant.
Exempel på användning # 4
Excel-formlerna i mallen Testberäkningar kan också köras med ett makro. Ett diagram skapas också med hjälp av makrot.
Demo
- Ett ark 'Uppskattningar' som gör det möjligt för användare att lägga till beräknade timmar för testfaser från att förstå affärsbehov till att skapa, exekvera och omarbeta med uppdatering av testskript bibehålls.
- De gröna markerade cellerna är aktiverade för användarinmatning. Dessa är inmatningsfälten.
- De blå markerade är automatiskt härledda.
- Det andra arket innehåller omarbetningsvärden och det tredje arket innehåller mått på komplexitet.
- Användaren anger komplexitetsstorleken i termer av H, L och M i kolumn D, och kolumnen E hämtar automatiskt faktorn för komplexitet med hjälp av vlookup från 'Komplexitetsmått' ark.
- Användaren anger omarbetningsstorleken i termer av H, L och M i kolumn F, och kolumn G hämtar automatiskt faktorn för komplexitet med hjälp av vlookup från bladet 'Omarbetningsstatistik'.
- Faktorerna används sedan i kolumn H för att hämta de totala insatserna för uppskattning.
- Ett annat makro när det körs förbereder diagrammet och lägger till det på det fjärde arket ”Diagram”.
- Formlerna som ingår styrs via makrot med hjälp av snabbtangenten CTRL + SKIFT + E.
Uppskattningar
Omarbeta mätvärden
Komplexitetsmätvärden
Diagram
VBA (makro) kod för uppskattningsblad
' 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
Förklaring av kod
(a) ThisWorkbook.Sheets (1) .Activat: Det första arket 'Uppskattningar' aktiveras.
(b) Ark ('Uppskattningar'). Celler (4, 8) = Ark ('Uppskattningar'). Celler (4, 2) * Ark ('Uppskattningar'). Celler (4, 3) * Ark ('Uppskattningar') Celler (4, 5) * Ark ('uppskattningar'). Celler (4, 7): Detta uttalande beräknar kolumn B * kolumn C * kolumn E * kolumn G och tilldelas kolumn H för rad 4.
(c) Ark ('Uppskattningar'). Celler (5, 8) = Ark ('Uppskattningar'). Celler (5, 2) * Ark ('Uppskattningar'). Celler (5, 3) * Ark ('Uppskattningar') Celler (5, 5) * Ark ('Uppskattningar'). Celler (5, 7): Detta uttalande beräknar kolumn B * kolumn C * kolumn E * kolumn G och tilldelas kolumn H för rad 5.
(d) Ark ('Uppskattningar'). Celler (6, 8) = Ark ('Uppskattningar'). Celler (6, 2) * Ark ('Uppskattningar'). Celler (6, 3) * Ark ('Uppskattningar') Celler (6, 5) * Ark ('Uppskattningar'). Celler (6, 7): Detta uttalande beräknar kolumn B * kolumn C * kolumn E * kolumn G och tilldelas kolumn H för rad 6.
(e) Ark ('Uppskattningar'). Celler (7, 8) = Ark ('Uppskattningar'). Celler (7, 2) * Ark ('Uppskattningar'). Celler (7, 3) * Ark ('Uppskattningar') Celler (7, 5) * Ark ('uppskattningar'). Celler (7, 7): Detta uttalande beräknar kolumn B * kolumn C * kolumn E * kolumn G och tilldelas kolumn H för rad 7.
(f) Ark ('Uppskattningar'). Celler (8, 8) = Ark ('Uppskattningar'). Celler (8, 2) * Ark ('Uppskattningar'). Celler (8, 3) * Ark ('Uppskattningar') Celler (8, 5) * Ark ('Uppskattningar'). Celler (8, 7): Detta uttalande beräknar kolumn B * kolumn C * kolumn E * kolumn G och tilldelas kolumn H för rad 8.
(g) Ark ('Uppskattningar'). Celler (9, 8) = Ark ('Uppskattningar'). Celler (9, 2) * Ark ('Uppskattningar'). Celler (9, 3) * Ark ('Uppskattningar') Celler (9, 5) * Ark ('Uppskattningar'). Celler (9, 7): Detta uttalande beräknar kolumn B * kolumn C * kolumn E * kolumn G och tilldelas kolumn H för rad 9.
(h) Ark ('Uppskattningar'). Celler (10, 8) = Ark ('Uppskattningar'). Celler (10, 2) * Ark ('Uppskattningar'). Celler (10, 3) * Ark ('Uppskattningar') Celler (10, 5) * Ark ('Uppskattningar'). Celler (10, 7): Detta uttalande beräknar kolumn B * kolumn C * kolumn E * kolumn G och tilldelas kolumn H för rad 10.
(i) Ark ('Uppskattningar'). Celler (11, 8) = Ark ('Uppskattningar'). Celler (4, 8) + Ark ('Uppskattningar'). Celler (5, 8) + Ark ('Uppskattningar') Celler (6, 8) + Ark ('Uppskattningar'). Celler (7, 8) + Ark ('Uppskattningar'). Celler (8, 8) + Ark ('Uppskattningar'). Celler (9, 8) + Ark ('Uppskattningar'). Celler (10, 8): Detta uttalande summerar cell H2 till H10 och tilldelar H11 det slutliga värdet. Detta värde ger total ansträngning (i timmar).
(j) För i = 3 till 10
Ark ('Diagram'). Celler (i - 2, 1) = Ark ('Uppskattningar'). Celler (i, 1)
Ark ('Diagram'). Celler (i - 2, 2) = Ark ('Uppskattningar'). Celler (i, 8)
Nästa jag: Detta för Loop-kopia klistrar in data från kolumn 1 och kolumn 8 i beräkningsarket till diagrambladet. Detta görs så att uppgifterna från sjökortet kan användas för att förbereda ett cirkeldiagram. Det finns ett annat makro skrivet för 'Diagram' för ark som förbereder ett diagram för detsamma.
VBA (makro) kod för diagramblad
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
Förklaring av kod
- Dim rng som intervall: Detta uttalande förklarar rng som ett intervallvärde.
- Dim är som objekt: Detta uttalande förklarar est som objektvärde.
- Denna arbetsbok.Sheet ('Diagram'). Aktivera: Detta uttalande aktiverar diagramblad.
- Ställ in rng = ActiveSheet.Range (“A2: B8”): Området A2 till B8 i arkdiagrammet är inställt på rng.
- Ställ est = ThisWorkbook.Sheets ('Diagram'). Shapes.AddChart2: Detta uttalande används för att initiera skapandet av ett nytt diagram på bladet.
- est.Chart.SetSourceData Source: = rng: Detta uttalande ger ett dataintervall för kontemplation i diagrammet.
- est.Chart.ChartType = xl3DPieExploded: Diagramtypen är inställd på 3D Pie av Exploded type. xl3DPieExploded hjälper till att bestämma denna diagramtyp.
- est.Chart.HasTitle = True: Detta uttalande verifierar om diagrammet redan har en titel.
- est.Chart.ChartTitle.Text = “Test uppskattningar”: Detta uttalande åsidosätter diagramtiteln till 'Testuppskattningar'.
- est.Chart.SetElement (msoElementDataLabelCenter): Detta uttalande anger datatiketter och förklaringar för diagrammet.
- est.Chart.SetElement (msoElementLegendBottom): Detta uttalande sätter dataetiketterna längst ner i diagrammet.
Sätt att utföra en makro
En makro kan utföras på fyra sätt:
- Använd Run-ikonen i VBA-redigeringsfönstret.
- Välj menyalternativet i Excel-filen Visa -> Makron -> Visa makro -> Välj makronamnet och välj Kör.
- Skapa en genväg när du skapar makrot och genom att trycka på genvägarna kommer makron att köras.
- Det mest användarvänliga sättet är att skapa en åtgärdsknapp ( T.ex. Kommandoknapp) som ett makro skulle tilldelas som när man klickar på det skulle utlösa körningen av makrot.
Vi kommer att se hur man lägger till en kommandoknapp och tilldelar ett makro till knappen. När du klickar på knappen utförs makrot.
Lägg till en formulärkontrollknapp i Excel
- Välj Meny ‘Utvecklare’ -> Infoga -> Formulärkontroller -> Välj knappikon och lägg till knappen på Excel-arket.
- Ange namn och textvärde för knappen. Knappens namn används i VBA-kodningen för att känna igen denna kommandoknapp medan texten är det som visas på knappen.
- Högerklicka nu på kommandoknappen och välj alternativet 'Tilldela makro' , listan över makron visas, välj namnet på det makro som du vill tilldela.
- När makrot har tilldelats, utlöser du det tilldelade makrot genom att klicka på knappen.
- I detta exempel är 'Få testuppskattningar' knappen tilldelas 'Uppskattningar' makro.
- På samma sätt kommer vi att lägga till en kommandoknapp för diagrambladet och tilldela makrot för diagram för att utlösa genereringen av diagrammet.
- Klicka på 'Skapa diagram' -knappen kör makrot för diagram. Detta förbättrar makroets användbarhet.
Slutsats
Dessa var få realtidsexempel som kunde vara en del av testarens dagliga rutin på jobbet som kunde identifieras på ett smart sätt för makrogenerering och därför kunde spara mycket tid på irrelevanta och upprepade manuella ansträngningar genom att automatisera uppgiften.
De relevanta skärmdumparna, VBA-koden och detaljerad förståelse för varje kodrad har beskrivits i den här artikeln. Jag hoppas att detta kommer att ge ett bra försprång för kvalitetsbedömningarna av hur man kan förvandla sig från en manuell testning till ett makrotänkande.
För människor som tror att manuella testares jobb är rent ett icke-tekniskt jobb, låt oss bevisa dem fel genom den nödvändiga tillämpningen av teknisk kunskap för att förbättra produktiviteten.
Författare: Detta fördjupade användbara inlägg är skrivet av Shobha D. Hon arbetar som projektledare och har 9+ års erfarenhet av manuell, automatisering (IBM RFT och Selen med Java) och API-testning.
Rekommenderad läsning
- Arbeta med VBScript Excel-objekt
- Selen Framework Creation and Accessing Test Data from Excel - Selenium Tutorial # 21
- De 5 vanligaste testuppgifterna som testare glömmer att testa (och hur man undviker det)
- Topp 5 saker som en testare måste ha för att Excel (och programvarutestarens skiftande perspektiv)
- JIRA deluppgift med exempel (JIRA skapa deluppgift)