how automate repetitive qa tasks using excel macros
V tomto podrobném průvodci o myšlení makra QA je vysvětleno, jak automatizovat opakované úkoly QA pomocí maker aplikace Excel s příklady a snímky tabulek aplikace Excel:
Potřeba automatizace v dnešním světě je jednou ze základních a rostoucích požadavků. Dnes každý hledá něco, co mu ulehčí práci nebo potíže spojené s rutinní prací.
V dnešní době nikdo nechce navštívit mobilní obchod, stát ve frontách, aby si dobil telefon, je vhodné fyzicky nenavštívit kdekoli, ale nabít telefon online během zlomku sekundy.
Počínaje placením účtů za služby přes internetové bankovnictví, rezervací a sledováním taxíku online, nákupem věcí online na různých webech elektronického obchodu až po používání různých automatizovaných zařízení, jako jsou pračky, mikrovlnné trouby, gejzíry a stále se vyvíjející smartphony atd., Je dnešní svět opravdu touha po inteligentních a automatizovaných produktech ve formě služeb nebo gadgetů.
V tomto článku nebudeme diskutovat o použití žádného automatizačního nástroje nebo čehokoli o umělé inteligenci nebo strojovém učení, ale důraz bude kladen na pouhé použití aplikace Excel pro automatizaci každodenních rutinních úkolů QA.
Co se naučíte:
Makro myšlení společnosti QA
Manuální testeři mají obvykle způsob myšlení, že když jsem manuální tester, nemají nic společného s ničím technickým nebo jinými slovy, „know-how v kódování není můj šálek čaje“. Toto je pravděpodobně nesprávné myšlení, které by mohlo zastavit náš růst jako inženýrů.
Ruční kontrola kvality má mnoho každodenních úkolů, které lze opakovat podle stejného pracovního postupu. QA může velmi dobře identifikovat takové úkoly a nechat je automatizovat pomocí maker aplikace Excel a / nebo vzorce.
To by mohlo pomoci dvěma způsoby:
- Snižuje čas strávený manuálním úsilím.
- Inspiruje také QA, aby se učila a přizpůsobovala logickému myšlení a zvyšování dovedností na technické frontě.
Věci lze automatizovat pro všechny fáze testování uvedené níže:
- Plánování a odhad testů.
- Návrh testu nebo příprava testovacího případu.
- Aktualizace stavu spuštění testu.
- Vytvoření testovací zprávy a metriky.
Rychlé nastavení kontextu
# 1) Excel uložen s. Rozšíření xlsxm je Excel podporující makra.
#dva) Chcete-li povolit makro v aplikaci Excel, vyberte Soubor -> Možnosti -> Centrum zabezpečení -> Nastavení centra zabezpečení -> Nastavení maker -> Vyberte přepínač „Povolit všechna makra“ a zaškrtněte políčko „Důvěřovat přístupu k objektovému modelu projektu VBA“. Klikněte na OK.
# 3) Vyberte nabídku Zobrazit -> Makra -> Zaznamenat makra -> Provést nějakou aktivitu a Zastavit makra . Můžete upravit makro a zobrazit kód VBA zaznamenaný v souboru Editor VBA okno. Podobně můžete k vytvoření makra přidat své kódy.
# 4) Podíváme se na některé příklady takových opakujících se úkolů, které by mohly být dobrými kandidáty na automatizaci pomocí maker / vzorců aplikace Excel.
Příklad použití č. 1
Na konci každé funkční fáze je třeba identifikovat některé testovací případy pro regresi z funkční sady. Toto je proces, který je třeba dodržovat při každém sprintu nebo iteraci.
Řešení
Aby se snížilo úsilí při identifikaci a manuálním vytváření regresní sady, lze implementovat níže uvedený inovativní proces.
- Můžete vytvořit list s funkčními testovacími případy s dalším sloupcem pro označení testovacích případů / scénářů jako ano / ne pro regresi.
- Poté vytvořte makro pro stejné, aby se při spuštění makra všechny testovací případy / scénáře s regresí označené jako „Ano“ zkopírovaly na jiný list.
- Tím se vyhnete dalšímu cvičení procházení všech funkčních testovacích případů na konci sprintu a následnému vynaložení dalšího úsilí na to, aby byl každý testovací případ extrahován do regresní sady.
Ukázka
- První list „FunctionalTestScenarios“ obsahuje všechny scénáře / testovací případy funkčních testů.
- K dispozici je další sloupec „Zahrnout do regresní sady?“ přidáno na konec testovacích sloupců k označení „Ano“ nebo „Ne“ určením, zda musí být každý z testovacích scénářů zahrnut do regresní sady.
- Existuje druhý list vytvořený jako „RegressionSuite“ a toto automaticky načte všechny scénáře regresního testu prostřednictvím makra.
- CTRL + SHIFT + S je nastaven jako zástupce pro spuštění makra.
FunctionalTestScenarios
RegressionSuite
Kód VBA (makro)
Sub RegressionSuite() ' Keyboard Shortcut: Ctrl+Shift+S Sheets('FunctionalTestScenarios').Activate Rows('1:1').Select Selection.AutoFilter Sheet1.Range('$A:$D').AutoFilter Field:=4, Criteria1:='Yes' Lastrow=Sheets('FunctionalTestScenarios') .Cells(Sheets('FunctionalTestScenarios').Rows.Count, 'A').End(xlUp).Row Range('A2:C2' & Lastrow).Select Selection.Copy Sheets('RegressionSuite').Select Range('A2').Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False End Sub
Vysvětlení kódu
- Tabulky („FunctionalTestScenarios“). Aktivovat: Pokud je v aplikaci Excel více listů, aktivuje metoda Activate první list, a proto je fokus explicitně nastaven na první list.
- Řádky („1: 1“). Vyberte: Tento příkaz vybere první řádek pro všechny sloupce prvního listu.
- Selection.AutoFilter: Toto prohlášení použije filtr na vybraný první řádek.
- Sheet1.Range („$ A $ 1: $ D $ 38 ″). Pole automatického filtru: = 4, kritérium1: =„ ano “: Toto prohlášení použije automatický filtr na sloupec číslo 4, tj. „Zahrnout do regresní sady?“ a filtruje záznamy na hodnotu „Ano“.
- Lastrow = Sheets („FunctionalTestScenarios“). Buňky (Sheets („FunctionalTestScenarios“) .Rows.Count, „A“). End (xlUp) .Row: Tento příkaz získá počet posledních řádků prvního listu.
- Rozsah („A2: C2“ a Lastrow). Vyberte: Toto prohlášení vybere všechny řádky a sloupce prvního listu pomocí Zahrnout do regresní sady? = Ano.
- Výběr. Kopie: Toto prohlášení zkopíruje všechny vybrané záznamy.
- Tabulky („RegressionSuite“). Vyberte: Toto prohlášení otevírá 2ndprostěradlo.
- Rozsah („A2“). Vyberte: Toto prohlášení vybere buňku A2 z 2ndprostěradlo.
- Selection.PasteSpecial Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = False, Transpose: = False: Toto prohlášení zkopíruje hodnotu buňky vybrané ze zdroje do cílového listu. Rozsah cílové buňky obsahuje pouze vypočítané hodnoty pomocí vzorců. Alternativně lze také použít Paste: = xlValues. Žádné mezery nejsou přeskočeny. Zdrojové buňky nejsou transponovány a neprovádějí se žádné matematické operace.
Příklad použití č. 2
Jsou chvíle, kdy potřebujete nechat vytvořit testovací případy pro řekněme 100 států nebo 1000 entit (například 1000 pojistných formulářů). Kroky testu pro tento obrovský seznam států nebo entit mohou být stejné a opakované.
Přesto může být příprava testovacího případu jednou z časově nejnáročnějších činností, protože mít připravený dokument o testovacím případu je velmi důležité pro nákup požadovaných odhadů od klienta a nechat tým QA otestovat každý z testovacích případů v rámci správně odhadnuté časové osy.
Řešení
V takových případech lze dlouhé hodiny přípravy testovacích případů pomocí makra zkrátit na zlomek sekund.
- Můžete vytvořit list, ve kterém zadáte pouze vstup jako ID testovacího případu a jedinečný seznam entit.
- Vytvořte makro, které při spuštění přidá opakující se řádky testovacích kroků pro každou z těchto entit a dokument testovacího případu je připraven za několik sekund, aniž byste museli vynaložit značné množství manuálního úsilí potřebného k přípravě testovacích případů.
Ukázka
- První list „GetTestcasesASAP“ je zde jediný list poháněný makro, který je zpočátku prázdný.
- Další list „Ukázková vstupní data“ nehraje v makru žádnou roli. Pouze uchovává ukázková vstupní data pro demo účely.
- Zkopírujte a vložte data z rozsahu vstupních dat vzorku A2 do B12 do prvního listu.
- Vstupní data můžete zkopírovat a vložit ve formátu - sloupec A = ……. a sloupec B =.
- Jakmile jsou vstupní data připravena, stiskněte klávesy CTRL + SHIFT + T jako klávesové zkratky pro spuštění makra.
- Kroky testu jsou automaticky přidány pro každé ID testovacího případu a dokument testovacího případu je připraven během několika sekund.
GetTestcasesASAP
Ukázková vstupní data
Vstupní data jsou vložena do prvního listu.
Obrázek při provádění makra stisknutím kombinace kláves CTRL + SHIFT + T.
Kód VBA (makro)
Sub GetTestcasesQuick() ' GetTestcasesQuick Macro ' Keyboard Shortcut: Ctrl+Shift+T Sheets('GetTestcasesASAP').Activate lastrow =Sheets('GetTestcasesASAP').Cells(Sheets('GetTestcasesASAP').Rows.Count, 'A').End(xlUp).Row Dim AddRows As Integer AddRows = 5 Dim i As Integer i = lastrow Do While i <> 1 Rows(i & ':' & i + AddRows).Insert i = i - 1 Loop ScreenUpdating = True lastrow = Sheets('GetTestcasesASAP').Cells(Sheets('GetTestcasesASAP').Rows.Count, 'A').End(xlUp).Row i = 2 While i <= lastrow + 6 Sheets('GetTestcasesASAP').Cells(i, 3) = 'Validate rates-factor combinations' Sheets('GetTestcasesASAP').Cells(i + 1, 3) = 'Batch job schedules and runs. ' Sheets('GetTestcasesASAP').Cells(i + 2, 3) = 'Commissioning calculations settlements' Sheets('GetTestcasesASAP').Cells(i + 3, 3) = 'Quick and detailed quote' Sheets('GetTestcasesASAP').Cells(i + 4, 3) = 'Benefit illustration ' Sheets('GetTestcasesASAP').Cells(i + 5, 3) = 'Benefit summary validation' i = i + 7 Wend End Sub
Vysvětlení kódu
(a) Tabulky („GetTestcasesASAP“). Aktivovat: Toto prohlášení aktivuje první list.
bezplatná ochrana firewallem pro Windows 7
(b) lastrow = Sheets („GetTestcasesASAP“). Buňky (Sheets („GetTestcasesASAP“). Rows.Count, „A“). End (xlUp) .Row: Tento příkaz získá poslední počet řádků. Tentokrát získá celkový počet řádků pro počáteční ID testovacích případů, která byla právě přidána jako součást vstupních dat před provedením makra.
(c) Dim AddRows As Integer: Toto prohlášení deklaruje proměnnou AddRows jako celočíselný datový typ.
(d) AddRows = 5: Tento příkaz inicializuje AddRows s 5. Proměnná se používá k vložení několika řádků za každé ID testovacího případu, aby bylo možné pro každý testovací případ přidat kroky statického testu.
(e) Dim i As Integer: Toto prohlášení deklaruje proměnnou i jako celé číslo.
(f) i = poslední : Tento příkaz přiřadí počáteční počet posledních řádků proměnné i.
(g) Dělat, zatímco já 1 : To do while loop vloží 6 prázdných řádků po každém ID testovacího případu. Smyčka začíná od posledního ID testovacího případu postupujícího do prvního ID testovacího případu.
Řádky (i & „:“ & i + AddRows). Vložte
i = i - 1
Smyčka
(h) ScreenUpdating = True : Toto prohlášení zviditelní každou aktualizaci obrazovky. Proto může být výkon makra mírně pomalý. Pro optimalizaci výkonu makra můžete také nastavit ScreenUpdating = False .
Nastavením ScreenUpdating na False se zlepší výkon makra a zrychlí se jeho provádění. Nebudete však moci vidět občasné změny, ke kterým dochází během provádění makra. Místo toho se změny projeví až po dokončení provádění makra.
(i) lastrow = Listy („GetTestcasesASAP“). Buňky (Listy („GetTestcasesASAP“). Rows.Count, „A“). End (xlUp) .Row : Tento příkaz znovu vypočítá počet posledních řádků po přidání nových 6 řádků pro každý testovací případ.
(j) i = 2
(k) Zatímco i<= lastrow + 6
Sheets („GetTestcasesASAP“). Cells (i, 3) = „Validate rates-factor combination“
Tabulky („GetTestcasesASAP“). Buňky (i + 1, 3) = „Dávkové úlohy a plány. '
Tabulky („GetTestcasesASAP“). Buňky (i + 2, 3) = „Vyrovnání výpočtů uvedení do provozu“
Tabulky („GetTestcasesASAP“). Buňky (i + 3, 3) = „Rychlá a podrobná nabídka“
Tabulky („GetTestcasesASAP“). Buňky (i + 4, 3) = „Benefit illustration“
Tabulky („GetTestcasesASAP“). Buňky (i + 5, 3) = „Ověření souhrnu výhod“
i = i + 7
Aplikovat
Tento úryvek smyčky while přidává 6 kroků statických testovacích kroků pro každý testcase nastavením těchto řádků následně po každém ID testcase.
Kroky statického testu přidané pro každý testovací případ jsou následující:
- Krok 1: Ověřte kombinace sazeb a faktorů.
- Krok 2: Dávkové plánování a spouštění úloh.
- Krok 3: Uvedení výpočtů do provozu vypořádání.
- Krok 4: Rychlá a podrobná nabídka.
- Krok 5: Výhody ilustrace.
- Krok 6: Souhrnné ověření výhod.
Kromě toho také posune další testovací případ Id v pořadí na 6 + 2, tj. 8thřádek.
Např: Pokud je TC1 v první řadě, kroky se přidají z druhé do sedmé řady a TC2 se posune do osmé řady. Podobným způsobem se řídí i ostatní ID testovacích případů.
Příklad použití č. 3
Existují případy, kdy klient poskytuje obrovský datový soubor téměř 1000 záznamů nebo více, a psaní testovacích případů pro tyto humongous záznamy a mapování jednotlivých dat proti každému kroku testu je zdlouhavá práce. Makro může zkrátit dny úsilí na několik minut, čímž ušetří čas na přípravu testovacího případu.
Řešení
Klientem poskytnutý datový soubor lze zkopírovat na list s povolenými makry. Při provádění makra se testovací případy automaticky vytvoří na druhém listu automatickým mapováním testovacích dat proti každému kroku testu pro každý testovací případ.
Ukázka
- První list 'Vložte soubor' a druhý list „ReadyTestCases“ jsou hlavními přispěvateli do makra.
- Jiný list „Sample -InputFile“ nehraje v makru žádnou roli. Pouze uchovává ukázkový vstupní datový soubor pro demo účely.
- Jakmile jsou data z „Sample-InputFile“ nebo datový soubor poskytnutý klientem se zkopíruje do prvního listu, tj. „InputFile“,
- Proveďte makro a testovací případy se automaticky vytvoří pro každý testovací případ, kde jsou ID objednávky nastaveny jako ID testovacích případů ( Poznámka: Nezapomeňte umístit jedinečný identifikátor umístěný jako první sloupec do vstupního souboru).
- Od této chvíle nemáme žádnou klávesovou zkratku nastavenou pro spuštění makra, místo toho ji musíme spustit pomocí volby běhu na Zobrazit -> Makra -> Vyberte makro -> Upravit -> Okno VBA.
- Makro kód zpracovává přidání testovacích kroků dynamicky. Nakonec zkontroluje, zda je některá z hodnot pole prázdná, pokud ano, odstraní testovací krok stejně, jako by krok nebyl vyžadován pro prázdné pole. Například, pokud se podíváte na vstupní soubor níže, 2ndzáznam nemá žádnou hodnotu pro Datum odeslání a třetí řádek nemá žádnou hodnotu pro Region. Po provedení makra tedy testovací případy, které jsou vytvořeny automaticky, nebudou mít testovací kroky odpovídající těmto prázdným hodnotám.
Sample- InputFile
InputFile: Po provedení kopírování Vložit data ze vzorového InputFile do InputFile
Poznámka:
- Nevkládejte záhlaví sloupce z listu „Sample-InputFile“.
- Žlutě zvýrazněná pole jsou prázdná, proto by se testovací kroky odpovídající těmto prázdným hodnotám neměly vytvářet prostřednictvím makra.
Obrázek listu ReadyTestcases po spuštění makra.
Kód VBA (makro)
Sub Macro1() ScreenUpdating = False '-------- Assign the first column value of Inputfile sheet to first column of ReadyTestCases sheet' This is the TC Id -- ThisWorkbook.Sheets('InputFile').Activate nrow = ThisWorkbook.Sheets('InputFile').Cells(Rows.Count, 1).End(xlUp).Row ncol = ThisWorkbook.Sheets('InputFile').Cells(1, Columns.Count).End(xlToLeft).Column i = 1 j = 1 For i = 1 To nrow ThisWorkbook.Sheets('ReadyTestCases').Cells(i, 1) = ThisWorkbook.Sheets('InputFile').Cells(i, 1) Next i ' ---------------------Inserting 20 buffer blank rows for each row in InputFile sheet--------- lastrow = Sheets('InputFile').Cells(Sheets('InputFile').Rows.Count, 'A').End(xlUp).Row ThisWorkbook.Sheets('InputFile').Activate AddRows = 21 i = lastrow Do While i <> 1 Rows(i &; ':' & i + AddRows - 1).Insert i = i - 1 Loop ' Inserting 21 buffer blank rows for each row in ReadyTestCases sheet----------- lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'A').End(xlUp).Row ThisWorkbook.Sheets('ReadyTestCases').Activate AddRowsTC = 21 j = lastrow Do While j <> 1 ' 1 because we dont need extra blank lines after last row Rows(j & ':' & j + AddRowsTC - 1).Insert j = j - 1 Loop '------- Input values into ReadyTestCases sheet from each row of inputfile sheet lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'A').End(xlUp).Row Dim a a = 1 ThisWorkbook.Sheets('ReadyTestCases').Activate For a = 1 To lastrow ThisWorkbook.Sheets('ReadyTestCases').Cells(a,3) = ThisWorkbook.Sheets('InputFile').Cells(a, 2) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 1, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 3) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 2, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 4) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 3, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 5) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 4, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 6) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 5, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 7) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 6, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 8) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 7, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 9) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 8, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 10) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 9, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 11) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 10, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 12) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 11, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 13) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 12, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 14) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 13, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 15) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 14, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 16) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 15, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 17) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 16, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 18) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 17, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 19) a = a + 21 Next a '------- Add verbiages reserved for each row lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'C').End(xlUp).Row a = 1 ThisWorkbook.Sheets('ReadyTestCases').Activate For a = 1 To lastrow ThisWorkbook.Sheets('ReadyTestCases').Cells(a, 2) = 'Verify Order Date' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 1, 2) = 'Verify Ship Date' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 2, 2) = 'Verify Ship Mode' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 3, 2) = 'Verify Customer Id' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 4, 2) = 'Verify Customer Name' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 5, 2) = 'Verify Segment' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 6, 2) = 'Verify City' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 7, 2) = 'Verify State' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 8, 2) = 'Verify Postal Code' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 9, 2) = 'Verify Region' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 10, 2) = 'Verify Product Id' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 11, 2) = 'Verify Category' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 12, 2) = 'Verify Sub-Category' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 13, 2) = 'Verify Product Name' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 14, 2) = 'Verify Sales' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 15, 2) = 'Verify Quantity' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 16, 2) = 'Verify Discount' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 17, 2) = 'Verify Profit' a = a + 21 Next a '------Second last step- remove blank rows from ReadyTestCases and InputFile----- Deleteblankrows ('ReadyTestCases') 'call Delete blank row function for TC sheet ScreenUpdating = True End Sub ‘-------------------------------------------------------------------------------- Sub Deleteblankrows(ByVal Sheet As String) Dim wks As Worksheet Set wks = ThisWorkbook.Worksheets(Sheet) Dim i As Long wks.Activate lastrow = wks.Cells(Sheets(Sheet).Rows.Count, 'C').End(xlUp).Row With ActiveSheet For i = 1 To lastrow 'check each row of column B , if any row is empty then countA=0, delete that entire row If WorksheetFunction.CountBlank(Range(Cells(i, 2), Cells(i, 3))) = 1 Then Selection.Rows(i).EntireRow.Delete End If Next i End With End Sub
Vysvětlení kódu
# 1) ScreenUpdating = False: Aktualizace obrazovky nebudou viditelné nastavením ScreenUpdating na False.
# 2) ThisWorkbook.Sheets („InputFile“). Activate: Toto prohlášení aktivuje list „InputFile“.
# 3) nrow = ThisWorkbook.Sheets („InputFile“). Cells (Rows.Count, 1) .End (xlUp) .Row: Tento příkaz získá počet celkových řádků.
# 4) ncol = ThisWorkbook.Sheets („InputFile“). Cells (1, Columns.Count) .End (xlToLeft) .Column: Tento příkaz získá počet celkových sloupců.
# 5) i = 1: Toto prohlášení inicializuje i s 1.
# 6) j = 1: Toto prohlášení inicializuje j s 1.
# 7) Pro i = 1 Přistoupit
ThisWorkbook.Sheets (“ReadyTestCases”). Cells (i, 1) = ThisWorkbook.Sheets (“InputFile”). Cells (i, 1)
Příště já : Tento fragment kopie smyčky For vloží první hodnotu sloupce (v tomto případě ID objednávky) listu „InputFile“ do každého řádku listu „ReadyTestCases“ jako ID testovacího případu.
# 8) lastrow = Sheets (“InputFile”). Buňky (Sheets (“InputFile”). Rows.Count, “A”). End (xlUp) .Row: Tento příkaz přepočítá poslední počet řádků InputFile.
# 9) AddRows = 21: Tento příkaz přiřadí 21 proměnné AddRows. Tato proměnná byla přiřazena 21 se záměrem vložit 21 dalších prázdných řádků pro každý testovací případ pro přidání testovacích kroků.
# 10) i = lastrow: Tento příkaz přiřadí poslední poslední počet řádků i.
# 11) Udělejte to, i když 1
Řádky (i & „:“ & i + AddRows - 1). Vložte
i = i - 1
Smyčka: Tento příkaz přidá 20 řádků pro každý testovací kufřík počínaje zdola nahoru.
# 12) lastrow = Tabulky („ReadyTestCases“). Buňky (listy („ReadyTestCases“). Rows.Count, „A“). End (xlUp). Řádek: Toto prohlášení přepočítá nejnovější celkový počet řádků.
# 13) ThisWorkbook.Sheets („ReadyTestCases“). Aktivovat: Druhý list se aktivuje prostřednictvím tohoto výpisu.
# 14) Dim to: Toto prohlášení deklaruje proměnnou a.
# 15) a = 1: Tento příkaz přiřadí 1 a.
# 16) Pro a = 1 Na poslední
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
Další a: Fragment smyčky for mapuje hodnoty z každého sloupce listu InputFile proti každému kroku testu pro každé ID případu.
# 17) lastrow = Sheets (“ReadyTestCases”). Buňky (Sheets (“ReadyTestCases”). Rows.Count, “C”). End (xlUp) .Row : Toto prohlášení přepočítá celkový počet řádků ReadyTestCases po přidání 21 řádků pro každé ID testovacího případu.
# 18) a = 1: Tento příkaz přiřadí 1 proměnné a.
# 19) ThisWorkbook.Sheets („ReadyTestCases“). Aktivovat: Toto prohlášení aktivuje list ReadyTestCases.
# 20) Pro a = 1 Na poslední
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
Další a - Tento fragment smyčky For přidává kroky statického testu pro každý testovací případ.
# 21) Deleteblankrows („ReadyTestCases“): Voláním funkce Deleteblankrow pro list „Ready TestCases“.
# 22) ScreenUpdating = True: To vám umožní vizualizovat aktualizace obrazovky probíhající jako součást provádění makra.
# 23) Sub Deleteblankrows (list ByVal jako řetězec): Níže uvedený kód je pro funkci Deletblankrows, která bude dynamicky kontrolovat, zda jsou v datových polích nějaké prázdné hodnoty. Pokud ano, testovací krok vytvořený pro prázdná data bude odstraněn postupně odstraněním těchto řádků.
# 24) Dim wks jako pracovní list: Toto prohlášení deklaruje proměnnou wks jako list.
# 25) Set wks = ThisWorkbook.Worksheets (Sheet): Tento příkaz přiřadí list wks poskytnutý jako vstupní parametr.
# 26) Dim i As Long: Tento parník prohlašuje, že jsem Long.
# 28) wks. Aktivovat: Toto prohlášení aktivuje list.
# 29) lastrow = wks.Cells (Sheets (Sheet) .Rows.Count, „C“). End (xlUp) .Row: Tento příkaz získá počet posledního řádku na listu.
# 30) Pro i = 1 Na poslední: Smyčka For iteruje od prvního řádku do posledního řádku.
# 31) If WorksheetFunction.CountBlank (Range (Cells (i, 2), Cells (i, 3))) = 1 Then: Tato podmínka zkontroluje, zda se pro každý řádek počítá druhý a třetí sloupec s prázdnou hodnotou jako 1.
# 32) Selection.Rows (i) .EntireRow.Delete: Tento příkaz odstraní vybraný řádek, pokud je podmínka pravdivá.
Příklad použití č. 4
Vzorce aplikace Excel v šabloně Test Estimates lze spustit také pomocí makra. Pomocí makra se také vytvoří graf.
Ukázka
- Je udržován list „Odhady“, který uživatelům umožní přidávat odhadované hodiny testovacích fází počínaje pochopením obchodních požadavků až po vytváření, provádění a přepracování aktualizačních testovacích skriptů.
- Zeleně zvýrazněné buňky jsou povoleny pro vstup uživatele. Toto jsou vstupní pole.
- Modře zvýrazněné jsou odvozeny automaticky.
- Druhý list obsahuje metriky Přepracovat a třetí list obsahuje metriky Složitost.
- Uživatel zadá velikost složitosti ve smyslu H, L a M ve sloupci D a sloupec E automaticky načte faktor složitosti pomocí vlookup z „Metriky složitosti“ prostěradlo.
- Uživatel zadá ve sloupci F velikost přepracování ve smyslu H, L a M a sloupec G automaticky načte faktor složitosti pomocí vlookup z listu „Přepracovat metriky“.
- Faktory se poté použijí ve sloupci H k načtení celkového úsilí o odhad.
- Po provedení dalšího makra se graf připraví a přidá na čtvrtý list „Graf“.
- Zahrnuté vzorce jsou řízeny pomocí makra pomocí klávesové zkratky CTRL + SHIFT + E.
Odhady
Přepracovat metriky
Metriky složitosti
Schéma
Kód VBA (makro) pro tabulku odhadů
' 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
Vysvětlení kódu
(a) ThisWorkbook.Sheets (1). Activat: Aktivuje se první list „Odhady“.
(b) Listy („Odhady“). Buňky (4, 8) = Listy („Odhady“). Buňky (4, 2) * Tabulky („Odhady“) Buňky (4, 3) * Listy („Odhady“ ). Buňky (4, 5) * Tabulky („Odhady“). Buňky (4, 7): Tento příkaz vypočítá sloupec B * sloupec C * sloupec E * sloupec G a přiřadí sloupci H pro řádek 4.
(c) Tabulky („Odhady“). Buňky (5, 8) = Tabulky („Odhady“). Buňky (5, 2) * Tabulky („Odhady“). Buňky (5, 3) * Tabulky („Odhady“) ). Buňky (5, 5) * Tabulky („Odhady“). Buňky (5, 7): Tento příkaz vypočítá sloupec B * sloupec C * sloupec E * sloupec G a přiřadí sloupci H pro řádek 5.
(d) Tabulky („Odhady“). Buňky (6, 8) = Tabulky („Odhady“). Buňky (6, 2) * Tabulky („Odhady“). Buňky (6, 3) * Tabulky („Odhady“) ). Buňky (6, 5) * Tabulky („Odhady“). Buňky (6, 7): Tento příkaz vypočítá sloupec B * sloupec C * sloupec E * sloupec G a přiřadí sloupci H pro řádek 6.
(e) Tabulky („Odhady“). Buňky (7, 8) = Tabulky („Odhady“). Buňky (7, 2) * Tabulky („Odhady“). Buňky (7, 3) * Tabulky („Odhady“) ). Buňky (7, 5) * Tabulky („Odhady“). Buňky (7, 7): Tento příkaz vypočítá sloupec B * sloupec C * sloupec E * sloupec G a přiřadí sloupci H pro řádek 7.
(f) Tabulky („Odhady“). Buňky (8, 8) = Tabulky („Odhady“). Buňky (8, 2) * Tabulky („Odhady“). Buňky (8, 3) * Tabulky („Odhady“) ). Buňky (8, 5) * Tabulky („Odhady“). Buňky (8, 7): Tento příkaz vypočítá sloupec B * sloupec C * sloupec E * sloupec G a přiřadí sloupci H pro řádek 8.
(g) Tabulky („Odhady“). Buňky (9, 8) = Tabulky („Odhady“). Buňky (9, 2) * Tabulky („Odhady“). Buňky (9, 3) * Tabulky („Odhady“) ). Buňky (9, 5) * Tabulky („Odhady“). Buňky (9, 7): Tento příkaz vypočítá sloupec B * sloupec C * sloupec E * sloupec G a přiřadí sloupci H pro řádek 9.
(h) Tabulky („Odhady“). Buňky (10, 8) = Tabulky („Odhady“). Buňky (10, 2) * Tabulky („Odhady“). Buňky (10, 3) * Tabulky („Odhady“) ). Buňky (10, 5) * Tabulky („Odhady“). Buňky (10, 7): Tento příkaz vypočítá sloupec B * sloupec C * sloupec E * sloupec G a přiřadí sloupci H pro řádek 10.
(i) Tabulky („Odhady“). Buňky (11, 8) = Tabulky („Odhady“). Buňky (4, 8) + Tabulky („Odhady“). Buňky (5, 8) + Tabulky („Odhady“) ). Buňky (6, 8) + Tabulky („Odhady“). Buňky (7, 8) + Tabulky („Odhady“). Buňky (8, 8) + Tabulky („Odhady“). Buňky (9, 8) + Tabulky („Odhady“). Buňky (10, 8): Toto prohlášení shrnuje buňku H2 až H10 a přiřadí konečnou hodnotu H11. Tato hodnota poskytuje celkové úsilí (v hodinách).
(j) Pro i = 3 až 10
Tabulky („Graf“). Buňky (i - 2, 1) = Tabulky („Odhady“). Buňky (i, 1)
Tabulky („Graf“). Buňky (i - 2, 2) = Tabulky („Odhady“). Buňky (i, 8)
Příště já : Tato kopie pro smyčku vloží data ze sloupce 1 a sloupce 8 listu Odhady do listu Graf. To se děje tak, že data z listu Chart lze použít k přípravě výsečového grafu. Pro list „Graf“ je napsáno další makro, které připravuje stejný graf.
VBA (makro) kód pro grafy
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
Vysvětlení kódu
- Dim rng As Range: Toto prohlášení deklaruje rng jako hodnotu rozsahu.
- Dim je jako objekt: Toto prohlášení deklaruje est jako hodnotu objektu.
- Tento sešit. Listy („Graf“). Aktivovat: Toto prohlášení aktivuje list grafu.
- Nastavit rng = ActiveSheet.Range („A2: B8“): Rozsah A2 až B8 listového grafu je nastaven na rng.
- Nastavit est = ThisWorkbook.Sheets („Chart“). Shapes.AddChart2: Toto prohlášení se používá k zahájení vytvoření nového grafu na listovém grafu.
- est.Chart.SetSourceData Zdroj: = rng: Toto prohlášení poskytuje rozsah dat pro rozjímání v grafu.
- est.Chart.ChartType = xl3DPieExploded: Typ grafu je nastaven na 3D Pie typu Exploded. xl3DPieExploded pomáhá určit tento typ grafu.
- est.Chart.HasTitle = True: Toto prohlášení ověří, zda graf již má název.
- est.Chart.ChartTitle.Text = “Odhady testu”: Toto prohlášení přepíše název grafu na „Odhady testu“.
- est.Chart.SetElement (msoElementDataLabelCenter): Toto prohlášení nastavuje datové štítky a legendy pro graf.
- est.Chart.SetElement (msoElementLegendBottom): Tento příkaz nastaví datové štítky do dolní části grafu.
Způsoby provedení makra
Makro lze spustit pomocí 4 způsobů:
- Pomocí ikony Spustit v okně editoru VBA.
- V souboru Excel vyberte možnost nabídky Zobrazit -> Makra -> Zobrazit makro -> Vyberte název makra a vyberte Spustit.
- Při vytváření makra vytvořte zástupce a stisknutím klávesových zkratek spustíte spuštění makra.
- Nejpříjemnějším způsobem je vytvoření akčního tlačítka ( Např. Příkazové tlačítko), ke kterému by bylo přiřazeno makro, které by po kliknutí spustilo spuštění makra.
Uvidíme, jak přidat příkazové tlačítko a přiřadit tlačítku makro. Tlačítko po kliknutí provede provedení makra.
Přidejte tlačítko pro ovládání formulářů v aplikaci Excel
- Vybrat Nabídka „Vývojář“ -> Vložit -> Ovládací prvky formuláře -> ikona Vybrat tlačítko a přidejte tlačítko na listu aplikace Excel.
- Zadejte název a textovou hodnotu tlačítka. Název tlačítka se v kódování VBA používá k rozpoznání tohoto příkazového tlačítka, zatímco text se zobrazuje na tlačítku.
- Nyní klikněte pravým tlačítkem na příkazové tlačítko a vyberte možnost „Přiřadit makro“ , zobrazí se seznam maker, vyberte název makra, které chcete přiřadit.
- Jakmile je makro přiřazeno, kliknutím na tlačítko se spustí provádění přiřazeného makra.
- V tomto příkladu „Získat odhady testů“ tlačítko je přiřazeno „Odhady“ makro.
- Podobně přidáme příkazové tlačítko pro list Chart a přiřadíme makro, aby Chart spustilo generování grafu.
- Kliknutím na ikonu „Vytvořit graf“ tlačítko spustí makro pro graf. To zlepšuje použitelnost makra.
Závěr
To bylo několik příkladů v reálném čase, které by mohly být součástí každodenní rutiny testovacího pracovníka, kterou lze inteligentně identifikovat pro generování maker, a díky automatizaci úkolu by tedy mohly ušetřit dostatek času na irelevantní a opakující se manuální úsilí.
V tomto článku jsou popsány příslušné snímky obrazovky, kód VBA a podrobné porozumění každému řádku kódu. Doufám, že to QA zajistí dobrý start do toho, jak se transformovat z myšlení s manuálním testováním na myšlení v makru.
Pro lidi, kteří se domnívají, že práce manuálních testerů je čistě netechnická práce, dokážeme jim, že se mýlí, prostřednictvím požadované aplikace technických znalostí ke zvýšení produktivity.
Autor: Tento podrobný užitečný příspěvek napsal Shobha D. Pracuje jako vedoucí projektu a má více než 9 let zkušeností v oblasti manuálního, automatizačního (IBM RFT a Selenium pomocí Java) a testování API.
Doporučené čtení
- Práce s objekty VBScript Excel
- Vytváření rámce selenu a přístup k testovacím datům z aplikace Excel - Selenium Tutorial # 21
- 5 nejčastějších testovacích úkolů Testeři zapomněli testovat (a jak tomu zabránit)
- Top 5 věcí, které musí tester zvládnout, aby zvládl aplikaci Excel (a perspektiva posunu softwarového testeru)
- JIRA dílčí úkol s příkladem (JIRA vytvořit dílčí úkol)