how develop test scripts using top 5 most popular test automation frameworks
Keď sa začnete učiť o automatizácii testov, musíte naraziť na pojem „rámec automatizácie testov“. Možno sa niektorým z vás tento výraz zneprehľadňuje a začína mať pocit, že je to niečo, čomu sa ťažko rozumie a ešte ťažšie ho implementuje.
Tento tutoriál je napísaný s cieľom pomôcť vám čo najjednoduchšie pochopiť rámce automatizácie testov. Prečítajte si všetky návody v tomto článku „ Séria tutoriálov o automatizačnom testovaní nájdete tu .
Rámec automatizácie testov (vo veľmi jednoduchom jazyku) je „súbor pravidiel“. Pravidlá nám pomáhajú písať skripty takým spôsobom, ktorý vedie k „nižšej údržbe“.
Aby sme úplne porozumeli pojmu framework, musíme sa najskôr naučiť, ako píšeme jednoduché skripty, a potom ako na nich implementovať framework.
V automatizácii testov píšeme skripty. Skriptovanie je v podstate asi tri „A“:
- DOHODA
- AKCIA
- ASERTÍZIA
Nižšie sú uvedené podrobnosti o každom A s príkladmi:
# 1.DOHODAalebo identifikácia objektu
Objekty (tlačidlá, rozbaľovacie ponuky atď.) Identifikujeme buď podľa ich ID, názvu alebo podľa názvu okna atď.
V prípade webovej aplikácie identifikujeme podľa ID užívateľa, alebo XPath alebo CSS alebo podľa názvu triedy atď. Ak nič nefunguje, identifikujeme objekty pomocou súradníc myši (nejde však o spoľahlivú metódu identifikácie objektu)
Vezmime si tento príklad Selenium WebDriver (s C #), v ktorom identifikujeme objekty pomocou id. (Webová aplikácia)
IWebElement txtServer = _webDriver.FindElement(By.Id('tfsServerURL'));
Ďalší príklad z MS Coded UI (desktopová aplikácia)
WinButton btnAdd = new WinButton(calWindow); btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Add';
Po identifikácii tieto objekty usporiadame alebo uložíme do UIMaps alebo Object Repository, aby sme ich mohli znova použiť v našich skriptoch. Preto sa tento krok nazýva UPRAVENIE.
#dva.AKCIAna identifikovanom objekte
Keď sú objekty identifikované, vykonáme na nich nejaké akcie buď pomocou myši alebo pomocou klávesnice.Napríkladbuď klikneme, alebo dvakrát klikneme, alebo na ňu umiestnime kurzor myši alebo niekedy pretiahneme myšou. Niekedy píšeme na textové polia. Takže v tomto druhom kroku sa budeme venovať akejkoľvek akcii, ktorú s týmito objektmi vykonáme.
Príklad 1 : (Selenium WebDriver s C #)
txtServer.Clear(); txtServer.SendKeys(“Some sample text”);
Príklad 2 : (MS kódované UI s C #)
Mouse.Click(buttonAdd);
# 3.ASERTÍZIA
Toto tvrdenie v podstate kontroluje objekt s očakávaným výsledkom. Napríklad, ak na kalkulačke stlačíme 2 + 3, na obrazovke by sa malo zobraziť 5. V takom prípade je náš očakávaný výsledok 5. Tento koncept je už vysvetlený v našom prvom návode.
Uvádzame príklad tvrdenia:
Assert.AreEqual('5', txtResult.DisplayText);
Takmer každý skript napísaný v automatizácii testov obsahuje tieto tri veci: Usporiadanie, Akcia a Assertion.
Teraz sa pozrite na kompletný skript, ktorý obsahuje všetky tieto kroky. Skript otvorí kalkulačku, stlačte 1 + 6 a potom skontrolujte, či obrazovka zobrazuje 7 alebo nie.
Príklad A:
(TestMethod) (TestMethod) public void TestCalculator() { var app = ApplicationUnderTest.Launch('C:\Windows\System32\calc.exe'); //Object identification part (ARRANGEMENT) //----*Calculator Window----*// WinWindow calWindow = new WinWindow(app); calWindow.SearchProperties(WinWindow.PropertyNames.Name) = 'Calculator'; calWindow.SearchProperties(WinWindow.PropertyNames.ClassName) = 'CalcFrame'; //----*Button1 ----*// WinButton btn1 = new WinButton(calWindow); btn1.SearchProperties(WinButton.PropertyNames.Name) = '1'; //----*Button Add ----*// WinButton btnAdd = new WinButton(calWindow); btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Add'; //----*Button 6 ----*// WinButton btn6 = new WinButton(calWindow); btn6.SearchProperties(WinButton.PropertyNames.Name) = '6'; //----*Button Equals ----*// WinButton btnEquals = new WinButton(calWindow); btnEquals.SearchProperties(WinButton.PropertyNames.Name) = 'Equals'; //----*Text Box Results----*// WinText txtResult = new WinText(calWindow); txtResult.SearchProperties(WinText.PropertyNames.Name) = 'Result'; //(ACTIONS Part) // Click '1' button Mouse.Click(btn1); // Click 'Add' button Mouse.Click(btnAdd); // Click '6' button Mouse.Click(btn6); // Click 'Equals' button Mouse.Click(btnEquals); //evaluate the results (ASSERTIONS) Assert.AreEqual('7', txtResult.DisplayText, “Screen is not displaying 7); //close the application app.Close(); }
Čo sa dozviete:
- Čo je s tým scenárom?
- V automatizácii testov existuje päť populárnych rámcov:
- # 1. Lineárny rámec:
- # 2. Modulárny rámec:
- # 3. Rámec riadený údajmi:
- # 4. Rámec na základe kľúčových slov:
- # 5. Rámec automatizácie hybridných testov:
- Záver
- Odporúčané čítanie
Čo je s tým scenárom?
Skript je ľahko pochopiteľný a dúfam, že vo vyššie uvedenom príklade získate koncept troch ‘Áčka. Ale s týmto scenárom nie je všetko v poriadku.
Tento skript neumožňuje ľahkú údržbu. Znova si vezmime príklad kalkulačky, ak budeme musieť písať testovacie prípady každej funkcie kalkulačky, testovacích prípadov bude veľa. Ak existuje 10 testovacích prípadov a v každom teste musíme definovať rovnaký objekt, potom ak dôjde k akejkoľvek zmene v názve alebo ID objektu, musíme zmeniť identifikačnú časť objektu v 10 testovacích prípadoch.
Napríklad, vezmite si príklad tlačidla ADD v skripte.
WinButton btnAdd = new WinButton(calWindow); btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Add';
Povedzme, že tento riadok sa používa v 10 testovacích prípadoch. Teraz v ďalšej verzii kalkulačky vývojár zmenil názov tlačidla z „Pridať“ na „Plus“. Keď teraz spustíme naše testovacie prípady, zlyhajú a v 10 testovacích prípadoch musíme zmeniť vyššie uvedený riadok.
btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Plus';
Tento testovací prípad teda musíme vylepšiť. Pri kódovaní by sme sa mali riadiť slávnym princípom DRY. DRY znamená „Neopakujte sa“. Časť na identifikáciu objektu by sme mali napísať takým spôsobom, že objekt by mal byť identifikovateľný iba na jednom mieste a mal by sa volať všade.
Prezrite si vylepšený skript.
Príklad B:
//defining the objects outside the script and only once. ApplicationUnderTest app = null; public WinWindow calWindow { get { WinWindow _calWindow = new WinWindow(app); _calWindow.SearchProperties(WinWindow.PropertyNames.Name) = 'Calculator'; _calWindow.SearchProperties(WinWindow.PropertyNames.ClassName) = 'CalcFrame'; return _calWindow; } } public WinText txtResult { get { WinText _txtResult = new WinText(calWindow); _txtResult.SearchProperties(WinText.PropertyNames.Name) = 'Result'; return _txtResult; } } //making functions for similar kind of tasks public void ClickButton(string BtnName) { WinButton button = new WinButton(calWindow); button.SearchProperties(WinButton.PropertyNames.Name) = BtnName ; Mouse.Click(button); } public void AddTwoNumbers(string number1, string number2) { ClickButton(number1); ClickButton('Add'); ClickButton(number2); ClickButton('Equals'); } //Test case becomes simple and easy to maintain. (TestMethod) public void TestCalculatorModular() { app = ApplicationUnderTest.Launch('C:\Windows\System32\calc.exe'); //do all the operations AddTwoNumbers('6', '1'); //evaluate the results Assert.AreEqual('7', txtResult.DisplayText, “screen is not displaying 7”); //close the application app.Close(); }
Vo vyššie uvedenom príklade sme oddelili calWindow a txtResult objekty a posuňte ich hore, aby ich bolo možné použiť v rôznych testovacích metódach. Definovali sme ich iba raz a môžeme ich použiť v toľkých testovacích prípadoch, koľko chceme.
Vytvorili sme tiež dve funkcie. ClickButton () ktorý prijme názov tlačidla a klikne na neho a AddTwoNumbers () , ktorá zoberie ľubovoľné dve čísla a pridá ich pomocou kliknite na tlačidlo funkcie v jeho vnútri.
V okamihu, keď začneme „vylepšovať“ náš kód a robiť ho znovu použiteľným a udržiavateľným, znamená to, že využívame akýkoľvek automatizačný rámec. Teraz to začína byť zaujímavé.
ako otvoriť súbor jar
Pozri tiež=> Prečo potrebujeme rámec pre automatizáciu testov?
Existujú päť populárnych rámcov v automatizácii testov :
- Lineárne
- Modularita
- Na základe údajov
- Kľúčové slovo riadené
- Hybrid
Teraz vysvetlíme každý rámec pomocou jeho charakteristík.
# 1. Lineárny rámec:
Charakteristiky
- Všetko, čo súvisí so skriptom, je definované vo vnútri skriptov.
- Nestará sa o abstrakciu a duplikáciu kódu
- Záznam a prehrávanie obvykle generuje lineárny kód
- Ľahko začať
- Nočná mora údržby.
Čítaním vyššie uvedených 5 charakteristík lineárneho rámca môžeme s nimi ľahko spojiť náš príklad A. Tento príklad v zásade využíva lineárny rámec. Veci súvisiace so skriptom sú definované vo vnútri skriptu. The okno hovoru a TxtResult sú definované vo vnútri skriptu. Skript sa nestará o abstrakciu a duplikáciu kódu. Je to tiež nočná mora údržby, ako som už vysvetlil.
Prečo by sme teda mali používať tento rámec?
Tento rámec sa dá použiť v projektoch malého rozsahu, kde nie je veľa obrazoviek používateľského rozhrania. Tiež keď prvýkrát použijeme akýkoľvek automatizačný nástroj, zvyčajne vygeneruje kód v lineárnom tvare. Môžeme sa teda dozvedieť, aký kód generuje automatizačný nástroj pre konkrétne akcie. Okrem týchto dôvodov by ste sa pri skriptovaní mali vyhnúť tomuto rámcu.
=> Tu nájdete príklad lineárneho a kľúčového rámca s príkladom QTP.
# 2. Modulárny rámec:
Charakteristiky
- Objekty sú definované raz a sú opakovane použiteľné vo všetkých testovacích metódach.
- Pre jednotlivé funkcionality sa vytvárajú malé a bodové metódy
- Testovacím prípadom je zbierka týchto malých metód a opakovane použiteľných objektov
- To nám umožňuje písať udržiavateľný kód.
Čítaním vyššie uvedených charakteristík môžeme náš príklad B spojiť s týmito charakteristikami. V tomto príklade sme vytvorili abstrakciu presunutím znaku calWindow na vrchol a definovať ho vo vnútri vlastnosti, ktorú je možné použiť všade. Vytvorili sme dve malé a nezávislé funkcie s názvom ClickButton () a AddTwoNumbers () . Kombináciou týchto dvoch malých funkcií vytvoríme náš finálny skript, ktorý testuje funkčnosť kalkulačky „Pridať“.
To má za následok ľahšiu údržbu. Ak dôjde k zmene v používateľskom rozhraní kalkulačky, musíme to zmeniť iba vo funkciách. Naše skripty zostanú nedotknuté. Tento rámec sa vysoko využíva v automatizácii. Slávny rámec Page Object (ktorý sa používa so selénom) je tiež akýmsi rámcom modularity. Celú webovú aplikáciu distribuujeme na samostatné stránky. Tlačidlá, rozbaľovacie ponuky a začiarkavacie políčka každej stránky sú definované vo vnútri triedy tejto stránky. Ak na webe dôjde k akejkoľvek zmene, musíme to zmeniť iba v tejto triede stránok a ostatné stránky zostanú nedotknuté. To má za následok lepšiu údržbu a ľahšiu čitateľnosť skriptov.
Jedinou nevýhodou tohto rámca je, že vyžaduje dobré objektovo orientované koncepty a silné rozvojové schopnosti. Ak ich máte, tento rámec sa veľmi odporúča.
# 3. Rámec riadený údajmi:
Charakteristika:
- Testovacie dáta (vstupné a výstupné hodnoty) sú oddelené od skriptu a uložené v externých súboroch. Môže to byť súbor CSV, tabuľka programu Excel alebo databáza.
- Keď sa vykoná skript, tieto hodnoty sa vyberú z externých súborov, uložia sa do premenných a nahradia pevne napísané hodnoty, ak existujú.
- Skutočne užitočné na miestach, kde je potrebné spustiť rovnaký testovací prípad s rôznymi vstupmi.
Príklad C:
Chceme spustiť testovací prípad add s tromi rôznymi vstupmi.
Údaje sú
7 + 2 = 9
5 + 2 = 7
3 + 2 = 5
Tieto údaje (vstupné aj výstupné) sme uložili do externého súboru CSV.
(DataSource('Microsoft.VisualStudio.TestTools.DataSource.CSV', '|DataDirectory|\data.csv', 'data#csv', DataAccessMethod. Sequential ), DeploymentItem('TestCalc\data.csv'), TestMethod) public void TestCalculatorDataDrivsen() { app = ApplicationUnderTest.Launch('C:\Windows\System32\calc.exe'); //do all the operations AddTwoNumbers(FromCSV.ADD1, FromCSV.ADD2); //evaluate the results Assert.AreEqual(FromCSV.Sum, txtResult.DisplayText); //close the application app.Close(); }
Vo vyššie uvedenom skripte definujeme náš zdroj údajov v hornej časti skriptu, čo je súbor .csv.
Dali sme cestu k tomuto súboru CSV a povieme skriptu, aby ho analyzoval „Postupne“. To znamená, že skript sa spustí toľkokrát, koľko riadkov je v súbore CSV. V našom prípade sa skript spustí trikrát. V každom behu pridá dve čísla definované v prvých dvoch stĺpcoch a overí, či sa súčet týchto dvoch čísel zhoduje s počtom v treťom stĺpci.
Tento rámec má rôzne výhody. Všetky hodnoty sú uložené mimo skriptu, takže ak dôjde k zmene v ďalšom zostavení, stačí zmeniť údaje v externom súbore a skript zostane nedotknutý.
Druhou výhodou je, že ten istý skript je možné spustiť pre rôzne vstupy. Zoberte si príklad ERP, v ktorom musíte otestovať registráciu 100 zamestnancov. Môžete napísať jeden skript a uložiť mená a ďalšie údaje týkajúce sa zamestnancov do externého súboru. Spustíte jeden skript, ktorý sa spustí 100-krát. Zakaždým s rôznymi údajmi zamestnancov. Ľahko tak zistíte, na akých údajoch skript zamestnanca nezaregistruje. Ďalšou výhodou bude, keď robíte negatívne testy.
=> Tu si pozrite príklad dátového a hybridného rámca s príkladom QTP.
# 4. Rámec na základe kľúčových slov:
Charakteristika:
- Dáta aj akcie sú definované mimo skriptu.
- Vyžadovalo si to vývoj kľúčových slov pre rôzne typy akcií.
- Funkcionalita, ktorú musíme testovať, je napísaná krok za krokom v tabuľkovej podobe pomocou kľúčových slov, ktoré vyvíjame, a testovacích údajov. Túto tabuľku ukladáme do externých súborov rovnako ako rámec riadený údajmi.
- Skript analyzuje túto tabuľku a vykoná príslušné akcie.
- Umožňuje do istej miery byť súčasťou automatizácie manuálnym testerom, ktorí nevedia o kódovaní.
Príklad D:
Dáta (napr. 1 + 3 = 4), ako aj akcie (napr. Kliknutie, vymazanie atď.) Sme definovali v súbore programu Excel v tabuľkovej podobe.
Skript bude mať podobnú podobu (nižšie uvedený kód je napísaný iba na účely porozumenia).
(TestMethod) public void TestCalculator() { app = ApplicationUnderTest.Launch('C:\Windows\System32\calc.exe'); Table tb = ReadFromExcel(); Foreach(WinRow row in tb) { WinCell Window = row.Cells(“Window”); WinCell Control = row.Cells(“Control”); WinCell Action = row.Cells(“Action”); WinCell Arguments = row.Cells(“Arguments”); UITestControl c = GetControl(Control.Text,Window.Text); If(Action.Text == “Click”) Mouse.Click (c); If (Action.Text == “Clear”) c.Clear(); if(Action.Text == “Verify Result”) Assert.AreEqual(c.Text, Arguments.Text) //….and so on } }
Vyššie uvedený skript je iba syntaktický analyzátor súboru programu Excel. Analyzuje súbor programu Excel riadok po riadku a hľadá kľúčové slová na vykonávanie príslušných akcií. Ak nájde kľúčové slovo „Click“, klikne na definovaný objekt. Ak nájde „Overiť výsledok“, vykoná tvrdenie.
Rámec riadený kľúčovými slovami má rôzne výhody.
Prvou výhodou je, že tento rámec je veľmi užitočný v tých scenároch, kde sú veľké šance na zmeny v testovacích prípadoch. Ak sa v testovacom prípade zmení akýkoľvek krok, nemusíme sa dotknúť kódu. Musíme len aktualizovať súbor programu Excel a skript sa aktualizuje.
Môžete definovať všetky svoje skripty v súbore programu Excel a tento súbor programu Excel odovzdať manuálnym testerom, aby pridali nové skripty alebo aktualizovali tie existujúce. Takto sa môžu stať ruční testeri aj súčasťou automatizácie testov, pretože nepotrebujú nič kódovať. Iba aktualizujú tento súbor programu Excel, keď to bude potrebné, a skripty sa automaticky aktualizujú.
Druhou výhodou je, že sa váš skript stáva nezávislým od nástroja. Svoje skripty môžete udržiavať v súbore programu Excel. Ak v určitom okamihu potrebujete zmeniť svoj automatizačný nástroj, môžete ho ľahko zmeniť napísaním syntaktického analyzátora v inom nástroji.
Nevýhodou tohto rámca je, že musíte vymýšľať kľúčové slová pre rôzne typy akcií. Vo veľkých projektoch bude toľko kľúčových slov, ktoré si musíte pamätať a usporiadať svoje skripty a kľúčové slová. To sa samo osebe stáva ťažkopádnou úlohou.
V niektorých zložitých scenároch, keď objekty nemožno ľahko identifikovať a musíme použiť súradnice myši a iné techniky, nie je tento rámec veľmi nápomocný.
Kľúčové slovo riadené je stále obľúbeným rámcom pre mnoho testerov automatizácie. Rámec robota Google je populárny rámec riadený kľúčovými slovami, ktorý podporuje aktívna komunita.
# 5. Rámec automatizácie hybridných testov:
Charakteristika:
- Kombinácia dvoch alebo viacerých vyššie uvedených techník, ktorá čerpá z ich silných stránok a minimalizuje ich slabosti.
- Rámec môže používať modulárny prístup spolu s rámcom založeným na dátach alebo kľúčovým slovom.
- Rámec môže pomocou skriptov vykonávať niektoré úlohy, ktoré by mohli byť príliš ťažké implementovať v prístupe založenom výlučne na kľúčových slovách.
Jednoducho povedané, hybridný rámec, použite kombináciu vyššie spomenutých techník. Môžeme použiť rámec založený na dátach, ktorý má tiež modulárny charakter. Pre niektoré testovacie prípady môžeme použiť prístup založený na kľúčových slovách a pre zostávajúce modulárne. Takže kedykoľvek zmiešame dve alebo viac techník uvedených v tomto článku, skutočne používame hybridný prístup.
Záver
Dúfam, že rámec automatizácie testov už pre vás nie je strašidelný pojem. Snažil som sa čo najjednoduchšie vysvetliť najpopulárnejšie rámce.
Rámce sú tu na to, aby vám uľahčili život. Pomáhajú vám písať udržiavateľné a spoľahlivé skripty. Bez použitia rámcov je pole automatizácie testov nočnou morou. Pri každej malej zmene v aplikácii musíte zmeniť svoj kód na stovkách miest.
Porozumenie týmto rámcom je teda nevyhnutnosťou pre všetkých testerov, ktorí chcú ochutnať automatizáciu testov.
V našom ďalší návod v tejto sérii sa naučíme „Vykonávanie a vykazovanie automatizácie testov“.
Ak mi v tomto článku niečo chýbalo alebo potrebujete položiť otázku, neváhajte sa opýtať v sekcii komentárov.
Výukový program PREV # 4 | ĎALŠÍ Príručka č. 6
Odporúčané čítanie
- Rámečky QTP - Rámečky automatizácie testov - Príklady riadeného kľúčovým slovom a lineárne rámce - Výukový program QTP # 17
- Príkazy automatizácie SeeTest: Podrobné vysvetlenie s príkladmi
- 10 najpopulárnejších nástrojov RPA na automatizáciu robotických procesov v roku 2021
- Ako sa líši plánovanie testov pre ručné a automatizované projekty?
- Najobľúbenejšie rámce automatizácie testov s výhodami a nevýhodami každého z nich - selén, návod č. 20
- Bezskriptový rámec automatizácie testov: nástroje a príklady
- Automatizácia testov - je to špecializovaná kariéra? Môžu normálni testeri robiť aj automatizáciu?
- 25 najlepších rámcov a nástrojov na testovanie Java pre automatizované testovanie (3. časť)