how develop test scripts using top 5 most popular test automation frameworks
Ko se začnete učiti o avtomatizaciji preskusov, morate naleteti na izraz „okvir za avtomatizacijo preskusov“. Mogoče se vam nekateri nerada ob tem izrazu in začnejo čutiti, da je to nekaj težko razumljivega in še težje izvedljivega.
Ta vadnica je napisana z namenom, da vam pomaga čim bolj preprosto razumeti okvire za avtomatizacijo preskusov. Preberite vse vadnice v tem ' Tukaj boste našli serijo vadnic za avtomatizacijo .
Okvir za avtomatizacijo preskusov (v zelo preprostem jeziku) je 'niz pravil.' Pravila nam pomagajo, da scenarije pišemo tako, da imamo za posledico 'nižje vzdrževanje'.
Da bi popolnoma razumeli koncept ogrodja, se moramo najprej naučiti, kako pišemo preproste skripte in nato kako na njih implementirati ogrodje.
Pri avtomatizaciji testov pišemo skripte. Skriptiranje je v bistvu približno tri 'A':
- UREDITEV
- AKCIJA
- UGOTOVITEV
Spodaj so podrobnosti o vsakem A s primeri:
# 1.UREDITEVali identifikacija predmeta
Predmete (gumbi, spustni meniji itd.) Prepoznamo bodisi po njihovih ID-jih, imenih bodisi po naslovih oken itd.
V primeru spletne aplikacije identificiramo po ID-ju uporabnika ali po XPathu ali CSS-ju ali po imenu razreda itd. Če nič ne deluje, predmete identificiramo z uporabo koordinat miške (vendar to ni zanesljiv način identifikacije predmeta)
Vzemimo ta primer Selenium WebDriver (s C #), v katerem identificiramo predmete z uporabo id. (Spletna aplikacija)
IWebElement txtServer = _webDriver.FindElement(By.Id('tfsServerURL'));
Še en primer iz MS Coded UI (namizna aplikacija)
WinButton btnAdd = new WinButton(calWindow); btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Add';
Po identifikaciji te predmete uredimo ali shranimo v UIMaps ali Object Repository, da jih ponovno uporabimo v naših skriptih. Zato se ta korak imenuje UREDITEV.
# dve.AKCIJAna identificiranem predmetu
Ko so predmeti identificirani, nad njimi izvedemo nekakšna dejanja z miško ali s tipkovnico.Na primer, ali kliknemo, ali dvokliknemo, ali miškin kazalec premaknemo nadnjo ali včasih povlečemo in spustimo. Včasih pišemo na besedilna polja. V tem drugem koraku so zajete kakršne koli akcije, ki jih izvajamo na teh predmetih.
Primer 1 : (Selenium WebDriver s C #)
txtServer.Clear(); txtServer.SendKeys(“Some sample text”);
2. primer : (MS kodiran uporabniški vmesnik s C #)
Mouse.Click(buttonAdd);
# 3.UGOTOVITEV
Trditev v bistvu preverja predmet s pričakovanim rezultatom. Če na primer pritisnemo 2 + 3 na kalkulatorju, se na zaslonu prikaže 5. V tem primeru je naš pričakovani rezultat 5. Ta koncept je že razložen v naši prvi vadnici.
Tu je primer trditve:
Assert.AreEqual('5', txtResult.DisplayText);
Skoraj vsak skript, napisan v testni avtomatizaciji, vsebuje te tri stvari: aranžma, akcija in trditev.
Zdaj pa si oglejte celoten skript, ki vsebuje vse te korake. Skript bo odprl kalkulator, pritisnite 1 + 6 in nato preverite, ali zaslon prikazuje 7 ali ne.
Primer 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(); }
Kaj se boste naučili:
- Kaj je narobe s tem scenarijem?
- V avtomatizaciji preskusov je pet priljubljenih okvirov:
- # 1. Linearni okvir:
- # 2. Okvir modularnosti:
- # 3. Podatkovni okvir:
- # 4. Okvir na podlagi ključnih besed:
- # 5. Okvir hibridne testne avtomatizacije:
- Zaključek
- Priporočeno branje
Kaj je narobe s tem scenarijem?
Scenarij je enostavno razumeti in upam, da boste v zgornjem primeru dobili koncept treh 'A'. Toda s tem scenarijem ni vse v redu.
Ta skript ne omogoča enostavnega vzdrževanja. Ponovno vzemimo primer kalkulatorja, če bomo morali napisati testne primere vsake funkcije kalkulatorja, bo testnih primerov veliko. Če je 10 testnih primerov in moramo pri vsakem testu definirati isti predmet, nato pa, če pride do spremembe imena ali id predmeta, moramo v 10 testnih primerih spremeniti identifikacijski del predmeta.
Na primer, vzemimo primer gumba ADD v skriptu.
WinButton btnAdd = new WinButton(calWindow); btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Add';
Recimo, da se ta vrstica uporablja v 10 testnih primerih. Zdaj je v naslednji različici kalkulatorja razvijalec spremenil ime gumba iz 'Dodaj' v 'Plus'. Zdaj, ko zaženemo testne primere, bodo neuspešni, zato moramo zgornjo vrstico spremeniti v to v 10 testnih primerih.
btnAdd.SearchProperties(WinButton.PropertyNames.Name) = 'Plus';
Torej moramo izboljšati ta testni primer. Pri kodiranju bi morali slediti slavnemu načelu SUHO. DRY pomeni „Ne ponavljaj se“. Del identifikacije predmeta bi morali napisati tako, da predmet je treba prepoznati samo na enem mestu in ga je treba poklicati povsod.
Oglejte si izboljšani skript.
Primer 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(); }
V zgornjem primeru smo ločili calWindow in txtResult predmete in jih premaknite na vrh, tako da jih je mogoče uporabiti v različnih preskusnih metodah. Določili smo jih le enkrat in jih lahko uporabimo v poljubnih testnih primerih.
Ustvarili smo tudi dve funkciji. ClickButton () ki sprejme ime gumba in klikne nanj in AddTwoNumbers () ki zavzame kateri koli dve številki in ju dodate s pomočjo kliknite gumb znotraj njega.
V trenutku, ko začnemo »izboljševati« svojo kodo in jo narediti za ponovno uporabo in vzdrževanje, to pomeni, da uporabljamo kateri koli sistem avtomatizacije. Zdaj postaja zanimivo.
Poglej tudi=> Zakaj potrebujemo ogrodje za avtomatizacijo preskusov?
Obstajajo pet priljubljenih okvirov za avtomatizacijo preskusov :
- Linearno
- Modularnost
- Na podlagi podatkov
- Ključne besede usmerjene
- Hibridna
Zdaj bomo razložili vsak okvir s pomočjo njegovih značilnosti.
# 1. Linearni okvir:
Značilnosti
- Vse, kar je povezano s skriptom, je definirano znotraj skriptov.
- Ne skrbi za abstrakcijo in podvajanje kod
- Snemanje in predvajanje običajno ustvarjata linearno kodo
- Enostavno začeti
- Vzdrževalna nočna mora.
Z branjem zgornjih 5 značilnosti Linear Framework lahko naš primer A enostavno povežemo z njimi. Ta primer v bistvu uporablja Linearni okvir. V skriptu je definirana stvar, ki je povezana s skriptom. The okno za klic in TxtResult so definirane znotraj skripta. Skriptu ni mar za abstrakcijo in podvajanje kod. To je tudi vzdrževalna nočna mora, kot sem že razložil.
Zakaj bi torej uporabljali ta okvir?
Ta okvir se lahko uporablja v manjših projektih, kjer ni veliko zaslonov uporabniškega vmesnika. Tudi ko katero koli orodje za avtomatizacijo uporabimo prvič, običajno generira kodo v linearni obliki. Tako se lahko naučimo o tem, katero kodo ustvarja orodje za avtomatizacijo za določena dejanja. Razen teh razlogov se je pri scenarijih treba izogibati temu okviru.
=> Tukaj si oglejte primer Linearnega okvira in okvira ključnih besed s primerom QTP.
# 2. Okvir modularnosti:
Značilnosti
- Objekti so definirani enkrat in jih je mogoče ponovno uporabiti v vseh preskusnih metodah.
- Za posamezne funkcionalnosti so ustvarjene majhne in natančne metode
- Testni primer je zbiranje teh majhnih metod in predmetov za večkratno uporabo
- To nam omogoča pisanje vzdrževalne kode.
Z branjem zgornjih značilnosti lahko naš primer B povežemo s temi značilnostmi. V tem primeru smo ustvarili abstrakcijo s premikanjem calWindow na vrh in ga definirajte znotraj lastnosti, ki jo lahko uporabljate povsod. Ustvarili smo dve majhni in neodvisni funkciji, imenovani ClickButton () in AddTwoNumbers () . Ti dve majhni funkciji združimo, da ustvarimo končni skript, ki preizkuša funkcijo 'Dodaj' kalkulatorja.
To ima za posledico lažje vzdrževanje. Če pride do kakršne koli spremembe v uporabniškem vmesniku kalkulatorja, moramo spremeniti samo funkcije. Naši skripti bodo ostali nedotaknjeni. Ta okvir se zelo uporablja pri avtomatizaciji. Znameniti Page Object Framework (ki se uporablja s selenom) je tudi nekakšen modularni okvir. Celotno spletno aplikacijo porazdelimo na ločene strani. Gumbi, spustni polji in potrditvena polja vsake strani so določeni znotraj razreda te strani. Če pride do kakršne koli spremembe na spletnem mestu, se moramo spremeniti samo v tem razredu strani, druge strani pa ostanejo nedotaknjene. To ima za posledico boljše vzdrževanje in lažjo berljivost skript.
Edina slabost tega okvira je, da zahteva dobre predmetno usmerjene koncepte in močne razvojne sposobnosti. Če jih imate, je ta okvir zelo priporočljiv.
# 3. Podatkovni okvir:
Značilnosti:
- Testni podatki (vhodne in izhodne vrednosti) so ločeni od skripta in shranjeni v zunanjih datotekah. To je lahko datoteka CSV, preglednica Excel ali zbirka podatkov.
- Ko se skript izvede, se te vrednosti izberejo iz zunanjih datotek, shranijo v spremenljivke in nadomestijo trdo kodirane vrednosti, če so na voljo.
- Resnično uporabno tam, kjer je treba isti testni primer zagnati z različnimi vhodi.
Primer C:
povezan seznam v c ++
Testni primer add želimo zagnati s tremi različnimi vhodi.
Podatki so
7 + 2 = 9
5 + 2 = 7
3 + 2 = 5
Te podatke (vhodne in izhodne) smo shranili v zunanjo datoteko 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(); }
V zgornjem skriptu določimo vir podatkov na vrhu skripta, ki je datoteka .csv.
Podali smo pot datoteke.CSV in skriptu rekli, naj jo razčleni 'Zaporedno'. To pomeni, da se bo skript zagnal tolikokrat, kolikor je datotek v datoteki CSV. V našem primeru se bo skript zagnal 3-krat. V vsakem zagonu bo dodal dve številki, opredeljeni v prvih dveh stolpcih, in preveril, ali se vsota teh dveh številk ujema s številko v tretjem stolpcu.
Ta okvir ima različne prednosti. Vse vrednosti so shranjene zunaj skripta, tako da, če pride do kakršne koli spremembe v naslednji gradnji, moramo samo spremeniti podatke v zunanji datoteki in skript bo ostal nedotaknjen.
Druga prednost je ta, da lahko isti skript zaženete za različne vhode. Vzemimo primer ERP, v katerem morate preizkusiti registracijo 100 zaposlenih. Lahko napišete en skript in imena in druge podatke, povezane z zaposlenimi, shranite v zunanjo datoteko. Izvedli boste en skript, ki se bo zagnal 100-krat. Vsakič z različnimi podatki o zaposlenem. Z lahkoto lahko zaznate, na katerih podatkih skript ne uspe registrirati zaposlenega. Dodatna prednost bo pri negativnem testiranju.
=> Tu si oglejte primer podatkovnega in hibridnega okvira s primerom QTP.
# 4. Okvir na podlagi ključnih besed:
Značilnosti:
- Tako podatki kot dejanja so definirani zunaj skripta.
- Zahteval je razvoj ključnih besed za različne vrste dejanj.
- Funkcionalnost, ki jo moramo preizkusiti, je zapisana postopoma v tabelarni obliki z uporabo ključnih besed, ki jih razvijemo, in testnih podatkov. To tabelo shranimo v zunanje datoteke, tako kot ogrodje, ki temelji na podatkih.
- Skript bo razčlenil to tabelo in izvedel ustrezna dejanja.
- Ročni preizkuševalec, ki ne pozna kodiranja, do neke mere omogoča, da je del avtomatizacije.
Primer D:
Podatke (npr. 1 + 3 = 4) in dejanja (npr. Klik, Počisti itd.) Smo opredelili v datoteki excel v obliki tabele.
Skript bo postal nekaj takega (spodnja koda je napisana samo za razumevanje)
(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 } }
Zgornji skript je le razčlenjevalnik datoteke excel. Datoteko excel razčleni po vrsticah in poišče ključne besede za izvedbo ustreznih dejanj. Če najde ključno besedo »Click«, bo kliknil na definirani objekt. Če najde »Preveri rezultat«, bo izvedel trditev.
Uporaba ogrodja, ki temelji na ključnih besedah, ima različne prednosti.
Prva prednost je, da je ta okvir v veliko pomoč v tistih scenarijih, kjer obstaja velika verjetnost sprememb v testnih primerih. Če se kateri koli korak spremeni v testnem primeru, se nam ni treba dotakniti kode. Samo posodobiti moramo datoteko excel in skript bo posodobljen.
Vse svoje skripte lahko definirate v datoteki excel in jo predate ročnim preizkuševalcem, da dodajo nove skripte ali posodobijo obstoječe. Na ta način lahko ročni preizkuševalci postanejo tudi del avtomatizacije preskusov, ker jim ni treba ničesar kodirati. To datoteko excel bodo samo posodobili, ko bo treba, in skripti se bodo samodejno posodobili.
Druga prednost je, da vaš skript postane neodvisen od orodja. Svoje skripte lahko vzdržujete v datoteki excel in če morate v nekem trenutku spremeniti orodje za avtomatizacijo, ga lahko preprosto spremenite tako, da v drugo orodje napišete razčlenjevalnik excel.
Slaba stran tega okvira je, da si morate izmisliti ključne besede za različne vrste dejanj. V obsežnih projektih bo toliko ključnih besed, da si boste morali zapomniti in organizirati svoje skripte in ključne besede. To samo po sebi postane okorno opravilo.
V nekaterih zapletenih scenarijih, kjer predmetov ni mogoče zlahka prepoznati in moramo uporabiti koordinate miške in druge tehnike, ta okvir ni v veliko pomoč.
Ključne besede usmerjene še vedno priljubljen okvir za mnoge preizkuševalce avtomatizacije. Robotski okvir by Google je priljubljen okvir, ki temelji na ključnih besedah in ga podpira aktivna skupnost.
# 5. Okvir hibridne testne avtomatizacije:
Značilnosti:
- Kombinacija dveh ali več zgoraj omenjenih tehnik, pri čemer se upoštevajo njihove prednosti in zmanjšajo njihove slabosti.
- Okvir lahko uporablja modularni pristop skupaj z ogrodjem, ki temelji na podatkih ali na podlagi ključnih besed.
- Okvir lahko s pomočjo skriptov izvaja nekatere naloge, ki bi jih bilo morda težko izvajati s pristopom, ki temelji na čistih ključnih besedah.
Z enostavnimi besedami, hibridni okvir, uporabite kombinacijo zgoraj omenjenih tehnik. Uporabimo lahko podatkovno usmerjen okvir, ki je tudi modularne narave. Za nekatere testne primere lahko uporabimo pristop na podlagi ključnih besed, za preostale pa modularno. Torej, kadar kombiniramo dve ali več tehnik, omenjenih v tem članku, dejansko uporabljamo hibridni pristop.
Zaključek
Upam, da okvir za avtomatizacijo preizkusov zdaj za vas ni več strašljiv izraz. Najbolj priljubljene okvire sem poskušal razložiti čim bolj preprosto.
Tu so okviri, ki vam olajšajo življenje. Pomagajo vam pri pisanju vzdrževalnih in zanesljivih scenarijev. Brez uporabe ogrodja je polje avtomatizacije preskusov nočna mora. Za vsako manjšo spremembo v aplikaciji morate kodo spremeniti na stotine krajev.
Razumevanje teh okvirov je torej nujno za vsakega preizkuševalca, ki želi okus avtomatizacije preskusov.
V našem naslednja vadnica v tej seriji se bomo naučili 'Izvajanje in poročanje o testni avtomatizaciji'.
Če sem v tem članku kaj zamudil ali morate vprašati, vas prosimo, da vprašate v oddelku za komentarje.
PREV Vadnica # 4 | NASLEDNJA Vadnica # 6
Priporočeno branje
- QTP Frameworks - Test Automation Frameworks - Primeri, ki temeljijo na ključnih besedah in Linear Framework, - Vadnica QTP # 17
- SeeTest Automation Commands: Podrobna razlaga s primeri
- 10 najbolj priljubljenih orodij za avtomatizacijo robotskih procesov v letu 2021
- Kako se razlikuje načrtovanje preskusov za ročne in avtomatizacijske projekte?
- Najbolj priljubljeni okviri za avtomatizacijo preskusov z vsemi prednostmi in slabostmi - Vadnica za selen št. 20
- Okvir za avtomatizacijo preizkusov brez skript: orodja in primeri
- Avtomatizacija preizkusov - gre za specializirano kariero? Ali lahko običajni preizkuševalci opravljajo tudi avtomatizacijo?
- 25 najboljših okvirov in orodij za testiranje Java (3. del)