Adatközpontú, kulcsszóval vezérelt és hibrid szelén keretrendszer felépítése



Ez a blog elmagyarázza, hogy mi a szelén keretrendszer, annak előnyeivel, valamint az adatközpontú, kulcsszóval vezérelt és hibrid keretrendszerek szelénben való megvalósításával.

Az előző ebben a sorozatban a szelén tesztelés alapfogalmaival tették lehetővé.Ebben a blogban azonban elárulom, hogyan használhatja a Selenium keretrendszert a kódstruktúra optimalizálására, és ez közelebb kerül ahhoz, hogy egy .

Mi az a szelén keretrendszer?

A szelén keretrendszer egy kódstruktúra, amely egyszerűbbé teszi a kód karbantartását és a kód olvashatóságát. A keretrendszer magában foglalja a teljes kód kisebb darabokra bontását, amelyek egy adott funkcionalitást tesztelnek.





A kód úgy van felépítve, hogy az „adatkészlet” elválik a tényleges „tesztesettől”, amely teszteli a webalkalmazás működését. Strukturálható úgy is, hogy a végrehajtandó teszteseteket külső alkalmazásból (például .csv-ből) hívják (hívják meg).

Számos keretrendszer létezik, de 3 gyakran használt szelén keretrendszer:



Ezeket a kereteket egy bemutatóval tárgyaljuk ebben a blogban. Mielőtt azonban tovább mennék, hadd mondjam el, miért kell a szelén keretrendszernek a helyén lennie, és milyen előnyökkel jár majd azok használata.

Miért van szükség szelén keretrendszerre?

Ha nincs keret, akkor lesz egy teszteset, amely a teljes tesztfunkciót magában foglalja. A félelmetes rész az, hogy ez az egyetlen teszteset képes millió kódsorra emelkedni. Tehát elég nyilvánvaló, hogy egy ilyen hatalmas tesztesetet nehéz lesz elolvasni. Még akkor is, ha később bármilyen funkciót módosítani szeretne, akkor nehéz dolga lesz módosítani a kódot.

Mivel egy keretrendszer megvalósítása kisebb, de több kódrészletet eredményez, számos előnye van.



A szelén keret előnyei

  • Fokozott kód újrafelhasználás
  • Javult a kód olvashatósága
  • Magasabb hordozhatóság
  • Csökkentett szkriptkarbantartás

Most, hogy ismeri a keretrendszer alapjait, hadd magyarázzam el mindegyiket részletesen.

Data Driven Framework

A szelén adatvezérelt keretrendszere az „adatkészlet” és a tényleges „teszteset” (kód) elválasztásának technikája. Ez a keretrendszer teljesen függ a bemeneti teszt adataitól. A tesztadatok külső forrásokból származnak, például egy Excel fájlból, .CSV fájlból vagy bármely adatbázisból.

adat vezérelt keretrendszer - szelén keretrendszer - edureka

Mivel a teszteset elkülönül az adatkészlettől, könnyedén módosíthatjuk egy adott funkció tesztesetét anélkül, hogy nagykereskedelmi változtatásokat végeznénk a kódban. Például, ha módosítani szeretné a kódot a bejelentkezési funkciókhoz, akkor csak ezt módosíthatja, ahelyett, hogy ugyanabban a kódban bármilyen más függő részt is módosítania kellene.

Emellett könnyedén szabályozhatja, hogy mennyi adatot kell tesztelni. Könnyedén növelheti a tesztparaméterek számát, ha további felhasználónév és jelszó mezőket ad hozzá az excel fájlhoz (vagy más forrásokhoz).

hogyan generálhat véletlenszerű karakterláncot a java-ban

Például, ha ellenőriznem kell egy weblapra való bejelentkezést, akkor a felhasználónév és jelszó hitelesítő adatok készletét egy Excel fájlban tarthatom, és átadhatom a hitelesítő adatokat a kódnak, hogy külön Java osztályfájlban végezhessem az automatizálást a böngészőben.

Az Apache POI használata a Selenium WebDriver programmal

A WebDriver nem támogatja közvetlenül az Excel fájlok olvasását. Ezért használjuk Apache POI bármely Microsoft Office dokumentum elolvasására / írására. Letöltheti az Apache POI-t (JAR fájlok halmaza) itt . Töltse le a zip fájlt vagy a tar fájlt az Ön követelményeinek megfelelően, és helyezze el azokat a szelén JAR készletével együtt.

A főkód és az adatkészlet összehangolását gondozni fogja TestNG adatszolgáltatók, amely egy könyvtár, amely az Apache POI JAR fájlok részeként érkezik. Bemutató céllal létrehoztam egy „LoginCredentials” nevű excel fájlt, amelyben a felhasználóneveket és jelszavakat különböző oszlopokban tároltuk.

Vessen egy pillantást az alábbi kódra, hogy megértse a tesztesetet. Ez egy egyszerű kód a repülőjegy-foglalási alkalmazás bejelentkezési funkcionalitásának tesztelésére.

DataDriven import org.openqa.selenium.Az importálásával org.openqa.selenium.chrome.ChromeDriver import org.testng.Assert import org.testng.annotations.AfterMethod import org.testng.annotations.DataProvider import org.testng.annotations.Test public class DDTExcel {ChromeDriver driver @Test (dataProvider = 'testdata') public void DemoProject (String felhasználónév, String jelszó) dobja az InterruptedException {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') illesztőprogramot = új ChromeDriver () driver.get ('http://newtours.demoaut.com/') driver.findElement (By.name ('felhasználónév')). sendKeys (felhasználónév) driver.findElement (By.name ('jelszó') )). sendKeys (jelszó) driver.findElement (By.name ('login')). ​​Kattintson a () Thread.sleep (5000) Assert.assertTrue (driver.getTitle (). találatokra ('Keressen egy járatot: Mercury Tours: '),' Érvénytelen hitelesítő adatok ') System.out.println (' Sikeres bejelentkezés ')} @AfterMethod void ProgramTermination () {driver.quit ()} @DataProvider (név =' testdata ') nyilvános objektum [] [] TestDa taFeed () {ReadExcelFile config = new ReadExcelFile ('C: UsersVardhanworkspaceSeleniumLoginCredentials.xlsx') int sorok = config.getRowCount (0) objektum [] [] hitelesítő adatok = új objektum [sorok] [2] a (int i = 0i

Ha fentről észrevette, van egy „TestDataFeed ()” nevű módszerünk. Ezzel a módszerrel létrehoztam egy másik osztály objektumpéldányát, a „ReadExcelFile” nevet. Az objektum példányosítása közben betöltöttem az adatokat tartalmazó excel fájlom útvonalát. Továbbá meghatároztam egy for ciklust a szöveg lekéréséhez az excel munkafüzetből.

De egy adott lapszám, oszlopszám és sorszám adatainak kiolvasásához a hívásokat a „ReadExcelFile” osztályba kell hívni. A „ReadExcelFile” kódom alább található.

csomag DataDriven import java.io.File importálás java.io.FileInputStream import org.apache.poi.xssf.usermodel.XSSFSheet import org.apache.poi.xssf.usermodel.XSSFWorkbook public class ReadExcelFile {XSSFWorkbook wb XSSFsFileheet public excelPath) {try {File src = new File (excelPath) FileInputStream fis = new FileInputStream (src) wb = new XSSFWorkbook (fis)} catch (e kivétel) {System.out.println (e.getMessage ())}} public Karakterlánc getData (int lapszám, int sor, int oszlop) {sheet = wb.getSheetAt (sheetnumber) Karakterlánc adatok = sheet.getRow (sor) .getCell (oszlop) .getStringCellValue () return adatok} public int getRowCount (int sheetIndex) { int sor = wb.getSheetAt (sheetIndex) .getLastRowNum () sor = sor + 1 visszatérõ sor}}

Először vegye figyelembe az általam importált könyvtárakat. Importáltam Apache POI XSSF könyvtárak, amelyeket adatok olvasására / írására használnak a fájlok kiemeléséhez. Itt létrehoztam egy konstruktort (ugyanazon módszer objektuma) az értékek átadásához: lapszám, sorszám és oszlopszám. A keret jobb megértése érdekében kérem, hogy nézze át az alábbi videót, ahol ezt strukturáltan elmagyaráztam.

Adatközpontú keretrendszer a szelén WebDriver programban Szelén bemutató

Most térjünk át a keretrendszerre, vagyis a Kulcsszó-vezérelt keretrendszerre.

Kulcsszóvezérelt keretrendszer

A Kulcsszóvezérelt keretrendszer olyan technika, amelyben az összes elvégzendő műveletet és utasítást a tényleges tesztesettől külön írják. A Data Driven keretrendszerrel való hasonlóság az, hogy az elvégzendő műveleteket ismét egy külső fájlban tároljuk, például az Excel munkalapon.

összekapcsolt lista megvalósítása c

A műveletek, amelyekről beszélek, nem más, mint a teszteset részeként végrehajtandó módszerek. A Kulcsszóvezérelt keretrendszer előnye, hogy könnyedén vezérelheti a tesztelni kívánt funkciókat. Az Excel fájlban megadhatja azokat a módszereket, amelyek tesztelik az alkalmazás funkcionalitását. Így csak azokat a módszerneveket teszteljük, amelyeket az excel tartalmaz.

Például a webalkalmazásba történő bejelentkezéshez a fő tesztesetben többféle módszert írhatunk, amelyekben minden teszteset bizonyos funkcionalitást tesztel. A böngésző meghajtójának példányosítására lehet egy módszer, a felhasználónév és jelszó mezők megtalálásához, lehetnek módszerek, egy weboldalra való navigáláshoz más módszer stb.

Vessen egy pillantást az alábbi kódra, hogy megismerje a keretrendszer megjelenését. Az alábbi kódban kommentált sorok magyarázatul szolgálnak, ha nem érted.

csomag KeywordDriven import org.openqa.selenium.chrome.ChromeDriver import org.testng.Assert import org.testng.annotations.Test import java.util.concurrent.TimeUnit import org.openqa.selenium.Be importálásával org.openqa.selenium.WebDriver public class Actions {public static WebDriver illesztőprogram public static void openBrowser () {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') driver = new ChromeDriver ()} public static void navigate () {driver .manage (). timeouts (). implicitlyWait (10, TimeUnit.SECONDS) driver.get ('http://newtours.demoaut.com')} public static void input_Username () {driver.findElement (By.name (' userName ')). sendKeys (' higany ')} public static void input_Password () {driver.findElement (By.name (' jelszó ')). sendKeys (' higany ')} public static void click_Login () {driver.findElement (By.name ('bejelentkezés')). Kattintson. : ')} public static void closeBrowser () {driver.quit ()}}

Amint láthatja, a tesztelni kívánt különböző funkciók különálló, meghívásra váró módszerekben vannak jelen. Ezeket a módszereket egy másik osztályból hívják meg, a módszer nevének az Excel fájlban való jelenléte alapján. És hasonlóan, hogy elolvassam az excel fájlt és visszaküldjem az eredményeket, írtam egy másik osztályt. Mindkettő az alábbiakban látható.

A metódusokra hivatkozó osztályfájl ez.

különbség a hash térkép és a hash táblázat között
package KeywordDriven public class DriverScript {public static void main (String [] args) dobja a Kivételt {// Az Excel fájl elérési útjának deklarálása az Excel fájl nevével String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Itt argumentumként adjuk át az Excel elérési utat és a SheetName-et, hogy kapcsolatba léphessünk a ReadExcelData.setExcelFile (sPath, 'Sheet1') Excel fájllal egyelőre oszlopok // A későbbi fejezetekben ezeket a keményen kódolt értékeket varibálákkal cseréljük le // Ez a hurok a 3. oszlop (Action Key) értékeinek soronkénti elolvasására (int iRow = 1iRow<=7iRow++) { String sActions = ReadExcelData.getCellData(iRow, 1) //Comparing the value of Excel cell with all the keywords in the 'Actions' class if(sActions.equals('openBrowser')) { //This will execute if the excel cell value is 'openBrowser' //Action Keyword is called here to perform action Actions.openBrowser() } else if(sActions.equals('navigate')) { Actions.navigate() } else if(sActions.equals('input_Username')) { Actions.input_Username() } else if(sActions.equals('input_Password')) { Actions.input_Password() } else if(sActions.equals('click_Login')) { Actions.click_Login() } else if(sActions.equals('verify_Login')) { Actions.verify_login() } else if(sActions.equals('closeBrowser')) { Actions.closeBrowser() } } } } 

És az osztályfájl, amely leolvassa az Excel értékeket, ez.

package KeywordDriven import java.io.FileInputStream import org.apache.poi.xssf.usermodel.XSSFSheet import org.apache.poi.xssf.usermodel.XSSFWorkbook import org.apache.poi.xssf.usermodel.XSSFCell public class ReadEiccelData {private static XSSFSheet ExcelWSheet private static XSSFWorkbook ExcelWBook private static XSSFCell Cell // Ez a módszer a Fájl elérési útjának beállítása és az Excel fájl megnyitása // Az Excel elérési út és a SheetName átadása argumentumként ehhez a módszerhez public static void setExcelFile (String Path, String SheetName) dob Kivétel {FileInputStream ExcelFile = new FileInputStream (Path) ExcelWBook = new XSSFWorkbook (ExcelFile) ExcelWSheet = ExcelWBook.getSheet (SheetName)} // Ez a módszer a tesztadatok kiolvasása az Excel cellából // Ebben adunk meg paramétereket / argumentumokat amint a nyilvános statikus karakterlánc és a reagálási szám a getCellData (int RowNum, int ColNum) dobja a {Cell = ExcelWSheet.getRow (RowNum) .getCell (ColNum) karakterlánc CellData = Cell.getStringCellValue () return CellData}} kivételt

Most térjünk át a Selenium keretrendszer blogjának utolsó részére, ahol megmutatom, hogyan kell felépíteni egy hibrid keretrendszert.

Hibrid keret

A hibrid keretrendszer olyan technika, amelyben mind a Data Driven, mind a Key Driven Selenium keretrendszereket a legjobban kihasználhatjuk. A blogban fent bemutatott példák felhasználásával felépíthetünk egy hibrid keretrendszert azáltal, hogy a végrehajtandó módszereket egy Excel fájlban tároljuk (kulcsszó-alapú megközelítés), és ezeket a metódusneveket továbbítjuk a Java Reflection osztály (adatvezérelt megközelítés) helyett Ha más hurok a „DriverScript” osztályban.

Vessen egy pillantást a módosított „DriverScript” osztályra az alábbi kódrészletben.Itt ahelyett, hogy több If / Else ciklust használna, adatvezérelt megközelítést használnak a metódusnevek kiolvasására az excel fájlból.

HybridFramework csomag import java.lang.reflect.Method public class DriverScriptJava {// Ez egy osztály objektum, amelyet 'public static' néven deklarálnak // Annak érdekében, hogy a main [] metódusán kívül használható legyen public public static Actions actionKeywords public static String sActions // Ez egy 'public static' néven deklarált reflexiós osztályú objektum // Annak érdekében, hogy a main [] metódusán kívül is használható legyen. Public static Method method [] public static void main (String [] args) kivételt dob {// Az Excel fájl elérési útjának deklarálása az Excel fájl nevével String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Itt adjuk át az Excel elérési útját és a SheetName elemet, hogy csatlakozzunk az Excel fájlhoz // Ez a módszer korábban létrejött ReadExcelData.setExcelFile (sPath, 'Sheet1') // Egyelőre kemény kódolású értékeket használunk az Excel sorokhoz és oszlopokhoz // Később ezeket a keményen kódolt értékeket sokkal hatékonyabban fogjuk használni // Ez az olvasási ciklus az oszlop (Action Key) sor értékei soronként // Ez azt jelenti, hogy ez a hurok végrehajtja az összes lépést, amelyet a (Int iRow = 1iRow<=7iRow++) { sActions = ReadExcelData.getCellData(iRow, 1) //A new separate method is created with the name 'execute_Actions' //You will find this method below of the this test //So this statement is doing nothing but calling that piece of code to execute execute_Actions() } } //This method contains the code to perform some action //As it is completely different set of logic, which revolves around the action only, it makes sense to keep it separate from the main driver script //This is to execute test step (Action) private static void execute_Actions() throws Exception { //Here we are instantiating a new object of class 'Actions' actionKeywords = new Actions() //This will load all the methods of the class 'Actions' in it. //It will be like array of method, use the break point here and do the watch method = actionKeywords.getClass().getMethods() //This is a loop which will run for the number of actions in the Action Keyword class //method variable contain all the method and method.length returns the total number of methods for(int i = 0i

Az adatközpontú, kulcsszóval hajtott és hibrid alapú keretek ezen koncepciójának jobb megértése érdekében kérem, hogy nézze meg az alábbi videót.

Selenium Framework Java | használatával Szelén oktatóanyag Szelén edzés online

Remélem, hogy ez a blog hasznos volt az Ön számára, és világosan megértette, mi is az a szelén keretrendszer, mennyire előnyös és hogyan építheti fel a kódstruktúráját ezen 3 szelén keretrendszer használatával. Figyelje a sorozat további blogjait.

Ha meg akarja tanulni a szelént és karriert szeretne kialakítani a tesztelési területen, akkor nézze meg interaktív, élő online oldalunkat itt 24 * 7 támogatás jár, amely végigvezeti Önt a tanulási időszak alatt. A „Selenium Framework” -hez kapcsolódó fogalmak mélyrehatóan lefedik az Edureka tanfolyamát.

Van egy kérdésünk? Kérjük, említse meg a megjegyzések részben, és kapcsolatba lépünk Önnel.