Szelén automatizálási keretrendszer: Adatvezérelt, Kulcsszóalapú & Hibrid

Tartalomjegyzék:

Anonim

Mi az a szelén keretrendszer?

A Selenium Framework olyan kódstruktúra , amely megkönnyíti és hatékony a kódkarbantartást. Keretek nélkül a felhasználók a „kódot” és az „adatot” ugyanazon a helyen helyezhetik el, amely nem használható fel és nem is olvasható. A keretrendszerek előnyös eredményeket hoznak, mint például a megnövelt kód újrafelhasználhatóság, a nagyobb hordozhatóság, a szkriptek karbantartásának alacsonyabb költségei, a jobb kód olvashatóság stb.

A Selenium WebDriver főleg három típusú keretet hoz létre a manuális tesztesetek automatizálására

  • Data Driven Test Framework
  • Kulcsszóvezérelt teszt keretrendszer
  • Hibrid teszt keretrendszer

Adatvezérelt keretrendszer a szelénben

Az adatvezérelt keretrendszer a szelénben egy módszer az adatsorok elválasztására a tesztesettől. Miután az adatsorokat elkülönítettük a tesztesettől, a kód megváltoztatása nélkül könnyen módosíthatók egy adott funkcióhoz. Tesztesetek és csomagok letöltésére szolgál külső fájlokból, például Excel, .csv, .xml vagy néhány adatbázis-táblázatból.

Excel olvasásához vagy megírásához az Apache egy nagyon híres könyvtári POI-t biztosít. Ez a könyvtár eléggé képes az Excel XLS és XLSX fájlformátumainak olvasására és írására .

Az XLS fájlok olvasásához HSSF megvalósítást biztosít a POI könyvtár.

Az XLSX olvasásához a POI könyvtár XSSF megvalósítása lesz a választás. Tanulmányozzuk részletesen ezeket a megvalósításokat.

Az adatközpontú tesztelésről már korábbi oktatóanyagunkban tanultunk

Kulcsszóvezérelt keretrendszer a szelénben

A szelén kulcsszóvezérelt keretrendszere az automatikus tesztelés felgyorsítására szolgáló módszer, a kulcsszavak elkülönítésével a közös funkció- és utasításkészlethez. Az összes végrehajtandó műveletet és utasítást valamilyen külső fájlba írja be, például egy Excel lapba. A felhasználók könnyen ellenőrizhetik és meghatározhatják a tesztelni kívánt funkciókat.

Így néz ki a teljes keretrendszer

Mint látható, ez egy 5 lépéses keret. Tanuljuk részletesen részletesen

1. lépés)

  • Az Execute.java illesztőprogram szkript meghívja a ReadGuru99ExcelFile.java fájlt
  • A ReadGuru99ExcelFile.java POI szkriptet tartalmaz az adatok Excelből történő olvasásához

2. lépés)

  • A ReadGuru99ExcelFile.java be fogja olvasni az adatokat a TestCase.xlsx fájlból
  • Így néz ki a lap-
  • Az Excel fájlba írt kulcsszavak szerint a keretrendszer a felhasználói felületen hajtja végre a műveletet.
  • Például a "Bejelentkezés" gombra kell kattintanunk. Ennek megfelelően az Excel-nek lesz egy "Click" kulcsszó. Most az AUT-nak több száz gombja lehet az oldalon, hogy azonosítsa a Bejelentkezés gombot, az Excel-ben az Object Name-t beírjuk loginButton & Object type névként (lásd a fenti kép kiemelt sorát). Az Object Type lehet Xpath, CSS név vagy bármely más érték

3. lépés: A ReadGuru99ExcelFile.java továbbítja ezeket az adatokat az Execute.java illesztőprogram parancsfájljának

4. lépés)

  • Minden felhasználói felület webes elemünkhöz létre kell hoznunk egy objektumtárat, ahol elhelyezzük az elem lokátorukat (például Xpath, név, CSS elérési út, osztálynév stb.)
  • Az Execute.java (az illesztőprogram szkriptünk) elolvassa a teljes objektumtárat és egy változóban tárolja
  • Ennek az objektumtárnak az elolvasásához szükségünk van egy ReadObject osztályra, amelynek getObjectRepository metódusa van az olvasáshoz.

MEGJEGYZÉS: Gondolhatja, miért kell létrehoznunk egy objektumtárat. A válasz segít a kód karbantartásában. Például 10 különböző tesztesetben használjuk a name = btnlogin nevű gombot. A jövőben a fejlesztő úgy dönt, hogy megváltoztatja a nevet btnlogin-ról benyújtásra. Mind a 10 tesztesetben változtatni kell. Objektumtár esetén a módosítást csak egyszer hajtja végre a tárban.

5. lépés)

  • Az illesztőprogram továbbítja az adatokat az Excel és az Objektumtárból az UIOperation osztályba
  • Az UIOperation osztály olyan funkciókkal rendelkezik, amelyek végrehajtják az excelben említett kulcsszavaknak megfelelő kattintásokat, például CLICK, SETTEXT stb
  • Az UIOperation class egy Java osztály, amely a kód tényleges megvalósításával rendelkezik a webes elemeken végzett műveletek végrehajtásához

A teljes projekt

Nézzünk meg egy példát:

Teszt forgatókönyv

  • 2 tesztesetet hajtunk végre
  • 1. teszteset:
  • Ugrás http://demo.guru99.com/V4/
  • Adja meg a felhasználói azonosítót
  • Írd be a jelszót
  • Kattintson a Visszaállítás gombra
  • 2. teszteset:
  • Ugrás http://demo.guru99.com/V4/
  • Adja meg a felhasználói azonosítót
  • Írd be a jelszót
  • Kattintson a Bejelentkezés gombra

objektum.tulajdonságok

URL = http: //demo.guru99.com/V4/

felhasználónév = uid

jelszó = jelszó

cím = báró

loginButton = btnLogin

resetButton = btnReset

ReadGuru99ExcelFile.java

csomag excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ReadGuru99ExcelFile {public SheetExcel (String filePath, String fileName, String sheetName) dobja az IOException {// Hozzon létre egy objektumot a File osztályból az xlsx fájl megnyitásáhozFile file = új File (filePath + "\\" + fileName);// Hozzon létre egy objektumot a FileInputStream osztályból az Excel fájl olvasásáhozFileInputStream inputStream = új FileInputStream (fájl);Munkafüzet guru99Workbook = null;// Keresse meg a fájlkiterjesztést úgy, hogy felosztja a fájl nevét az alállomáson, és csak a kiterjesztés nevét kapja megString fileExtensionName = fájlnév.substring (fájlNév.indexOf ("."));// Ellenőrizze a feltételt, ha a fájl xlsx fájlif (fileExtensionName.equals (". xlsx")) {// Ha xlsx fájl, akkor hozza létre az XSSFWorkbook osztály objektumátguru99Workbook = új XSSFWorkbook (inputStream);}// Ellenőrizze a feltételt, ha a fájl xls fájlelse if (fileExtensionName.equals (". xls")) {// Ha ez xls fájl, akkor hozza létre az XSSFWorkbook osztály objektumátguru99Workbook = új HSSFWorkbook (inputStream);}// A munkafüzet belsejében olvassa el a lapot annak nevévelLap guru99Sheet = guru99Workbook.getSheet (sheetName);return guru99Sheet;}}

ReadObject.java

csomagkezelés;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Tulajdonságok;nyilvános osztály ReadObject {Tulajdonságok p = új Tulajdonságok ();public Properties getObjectRepository () dobja az IOException {// Objektumtár fájl olvasásaInputStream stream = new FileInputStream (új File (System.getProperty ("user.dir") + "\\ src \\ object \\ object.properties"));// az összes objektum betöltésep.load (stream);visszatérő p;}}

UIOperation.java

csomagkezelés;import java.util.Tulajdonságok;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;nyilvános osztály UIOperation {WebDriver illesztőprogram;public UIOperation (WebDriver illesztőprogram) {this.driver = meghajtó;}public void perform (Tulajdonságok p, String művelet, String objectName, String objectType, String érték) dobja a Exception {System.out.println ("");kapcsoló (operation.toUpperCase ()) {"KLIKK" eset:// Végezze el a kattintástdriver.findElement (this.getObject (p, objectName, objectType)). kattintson ();szünet;"SETTEXT" eset:// Szöveg beállítása a vezérlésendriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (érték);szünet;"GOTOURL" eset:// Az alkalmazás URL-jének letöltésedriver.get (p.getProperty (érték));szünet;"GETTEXT" eset:// Elem szövegének beolvasásadriver.findElement (this.getObject (p, objectName, objectType)). getText ();szünet;alapértelmezett:szünet;}}/ *** Keresse meg a BY elemet az objektumtípus és az érték használatával* @param o* @param objectName* @param objectType* @Visszatérés* @ dob kivétel* /privát A getObject (p tulajdonságok, String objectName, String objectType) dobja a Kivételt {// Megtalálás xpath szerintif (objectType.equalsIgnoreCase ("XPATH")) {return By.xpath (p.getProperty (objectName));}// talál osztályonkéntelse if (objectType.equalsIgnoreCase ("OSZTÁLYNÉV")) {return By.className (p.getProperty (objectName));}// név szerint keresnielse if (objectType.equalsIgnoreCase ("NAME")) {return By.name (p.getProperty (objectName));}// keresés css általelse if (objectType.equalsIgnoreCase ("CSS")) {return By.cssSelector (p.getProperty (objectName));}// linken keresztül kereselse if (objectType.equalsIgnoreCase ("LINK")) {return By.linkText (p.getProperty (objectName));}// keresés részleges hivatkozássalelse if (objectType.equalsIgnoreCase ("PARTIALLINK")) {{return By.partialLinkText (p.getProperty (objectName));}más{dobja az új Kivételt ("Rossz objektumtípus");}}}

ExecuteTest.java

csomag testCases;import java.util.Tulajdonságok;import művelet.ReadObject;import művelet.UIOperation;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;import excelExportAndFileIO.ReadGuru99ExcelFile;nyilvános osztály ExecuteTest {@Tesztpublic void testLogin () dobja a Kivételt {// TODO Automatikusan létrehozott módszercsonkWebDriver webdriver = új FirefoxDriver ();ReadGuru99ExcelFile fájl = új ReadGuru99ExcelFile ();ReadObject objektum = új ReadObject ();Tulajdonságok allObjects = object.getObjectRepository ();UIOperation operation = új UIOperation (webdriver);// Kulcsszólap elolvasásaLap guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Sorok száma az excel fájlbanint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Hozzon létre egy hurkot az excel fájl minden során az olvasáshozfor (int i = 1; i " + row.getCell (0) .toString () + "Started");}}}}

A végrehajtás után a kimenet a következőképpen fog kinézni:

Töltse le a bemutatóhoz tartozó Selenium Project fájlokat ebben az oktatóanyagban

Hibrid keretrendszer

A szelén hibrid keretrendszere olyan fogalom, amelyben mind a Kulcsszó-vezérelt keretrendszer, mind az Adat-alapú keretrendszer előnyeit kihasználjuk. Ez egy könnyen használható keretrendszer, amely lehetővé teszi a manuális tesztelők számára, hogy teszteseteket hozzanak létre a kulcsszavak, a tesztadatok és az objektumtár tárgymutatásával, a kódolás nélkül.

Itt a kulcsszavakhoz Excel-fájlokat fogunk használni a tesztesetek karbantartásához, a tesztadatokhoz pedig az adatokat, a Testng keretrendszer szolgáltatóját.

Itt a hibrid keretrendszerben nem kell semmit változtatnunk a Kulcsszó által vezérelt keretrendszerben, itt csak le kell cserélnünk az ExecuteTest.java fájlt HybridExecuteTest.java fájlra.

Ez a HybridExecuteTest fájl tartalmazza az összes kódot a kulcsszó vezérléséhez az adatszolgáltató koncepciójával.

A hibrid keret teljes képi ábrázolása így fog kinézni

HybridExecuteTest.java

csomag testCases;import java.io.IOException;import java.util.Tulajdonságok;import művelet.ReadObject;import művelet.UIOperation;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.DataProvider;import org.testng.annotations.Test;import excelExportAndFileIO.ReadGuru99ExcelFile;public class HybridExecuteTest {WebDriver webdriver = null;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String kulcsszó, String objectName, String objectType, String érték) dobja a Kivételt {// TODO Automatikusan létrehozott módszercsonkif (testcaseName! = null && testcaseName.length ()! = 0) {webdriver = új FirefoxDriver ();}ReadObject objektum = új ReadObject ();Tulajdonságok allObjects = object.getObjectRepository ();UIOperation operation = új UIOperation (webdriver);// Call perform függvény a felhasználói felületen végzett műveletek végrehajtásáhozoperation.perform (allObjects, kulcsszó, objectName,objectType, érték);}@DataProvider (név = "hybridData")public Object [] [] getDataFromDataprovider () dobja az IOException {Object [] [] object = null;ReadGuru99ExcelFile fájl = új ReadGuru99ExcelFile ();// Kulcsszólap elolvasásaLap guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Sorok száma az excel fájlbanint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();object = new Object [rowCount] [5];for (int i = 0; i 

Összegzés:

  • Háromféle tesztkeretet hozhatunk létre a Selenium WebDriver segítségével.
  • Ezek Data Driven, Key Driven és Hybrid tesztkeretek.
  • A DataN alapú keretrendszert a TestNG adatszolgáltatójával érhetjük el.
  • A Kulcsszó által vezérelt keretrendszerben a kulcsszavakat néhány külső fájlba írják, például az Excel fájlba, és a Java kód ezt a fájlt hívja meg, és teszteseteket hajt végre.
  • A hibrid keretrendszer a kulcsszó- és adatközpontú keretrendszer keveréke.

Töltse le a bemutatóhoz tartozó Selenium Project fájlokat ebben az oktatóanyagban