Jak provést regresní testování pomocí Selenium WebDriver?

programování

Při testování webové aplikace je vždy nezbytné vybrat správný nástroj pro testování. To nám pomáhá omezit přepracování a také urychlit provádění testu. Zvolený nástroj spolu s automatizačním rámcem by měl být vždy nápomocný při efektivním provádění regresních testů.

Regresní testování se obvykle provádí na dříve testovaných modulech z důvodu změn nebo úprav ve stávajícím modulu, vylepšení funkcí, změn v konfiguraci nebo jakýchkoli jiných menších nebo významných upgradů souvisejících s funkcemi. Může být také provedeno vždy, když byla poskytnuta jakákoliv oprava pro zjištěné chyby.

Kdy provést retestování a regresní testování?

Provádí se opakované testování, aby se zajistilo, že vývojářova oprava existující závady funguje podle očekávání.

Regresní testování se provádí na dříve testovaných modulech, aby se zajistilo, že se nevyskytnou nové defekty v důsledku jakýchkoli úprav v důsledku vylepšení kódu, opravy defektů pro existující defekty nebo jakýchkoli upgradů v konfiguraci.

Je opravdu nutné dělat regresi?

Podívejme se na příklad pro ospravedlnění výše uvedeného bodu. Vezměme si scénář, kdy oděvní značka spustila webovou stránku pro online nakupování a zavedla kreditní kartu jako způsob platby. Toto bylo úspěšně vyvinuto a nasazeno pro testování. Testeři provádějí na této sestavě funkční a nefunkční testování a v případě jakýchkoliv nesrovnalostí v chování zaznamenali závady. Závady byly opraveny a sestavení je znovu nasazeno a testování bylo úspěšně provedeno a tato funkce byla spuštěna. Po několika týdnech byla navržena další nová funkcionalita, která uživatelům umožňuje platit debetními kartami. Tento nový modul byl vyvinut a nasazen pro testování. Nový modul byl úspěšně otestován. Co se nyní stane, pokud regrese není provedena na předchozím modulu a kód je nasazen v produkci? Existuje šance, že vývojář nasadil nějakou jinou verzi kódu, která nemá opravy defektů, nebo že vývojář opravil jednu nebo mnoho defektů, které narušily některé další funkce, což způsobilo selhání stávající funkční funkce.

To by společnosti způsobilo obrovskou ztrátu. Proto se vždy doporučuje provádět regresní testování, aby bylo zajištěno, že přidání jakékoli nové funkce nebo jakékoli úpravy provedené pro defekty nenaruší předchozí pracovní modul.

Regrese tedy zaujímá v testování klíčovou roli a je prováděna v průběhu celého životního cyklu testování.

Jaké jsou výhody regresního testování?

1.Regresní testování zajišťuje, že nedochází k žádným chybám způsobeným úpravami v kódu

2. Zajišťuje správnost funkčnosti

3. Zajišťuje, že opravené defekty se znovu nevyskytují kvůli jakékoli změně kódu

4.Pomáhá identifikovat chyby v rané fázi vývoje

Co je Selen?

Selen je široce používán pro testování webových aplikací. Jelikož se jedná o open-source automatizační nástroj, byl s oblibou používán mezi testovací komunitou. Selen se skládá ze čtyř hlavních složek, které jsou navrženy pro různé účely a výběr těchto složek závisí na požadavcích testování. Tyto čtyři složky jsou:

  • Selen IDE
  • Selen RC
  • Selenium WebDriver
  • Selénová mřížka

Selenium WebDriver je ovladač specifický pro prohlížeč, který poskytuje rozhraní pro psaní a spouštění skriptů automatizace prohlížeče pro testování různých webových aplikací. Poskytuje vazbu pro všechny populární jazyky jako Java, Python, Ruby atd. Podporuje všechny hlavní prohlížeče jako chróm, Firefox, Opera, TJ, Hrana atd. Může být integrován s různými frameworky, jako je Maven nebo ANT, pro kompilaci zdrojového kódu. Pro testování aplikací a reportování může být také integrován s testovacími frameworky, jako je TestNG, aby se usnadnilo testování automatizace. Může být integrován s Jenkins pro nepřetržitou integraci nebo automatizované sestavení a nasazení Continuous Delivery.

Podívejme se, jak lze Selenium WebDriver efektivně použít k provádění regresního testování.

Jak provést regresní testování pomocí Selenium WebDriver?

Dobrý automatizační rámec by měl být navržen a vyvinut tak, aby obsahoval spoustu opakovaně použitelného kódu nebo modulů pokrývajících hlavní vlastnosti nebo funkce aplikace. Neexistuje žádný takový automatizační nástroj určený výhradně pro regresní testování. Automatizační rámec by měl být implementován takovým způsobem, aby účinně podporoval regresní testování. Selenium je automatizační nástroj, který lze použít pro testování webových aplikací v různých prohlížečích. Při navrhování frameworku se Selenium musí obsahovat více metod, které lze znovu použít, a také přidání jakéhokoli nového kódu do jakékoli části frameworku by mělo být snadné.

Jak navrhnout rámec Selenium pro provádění regresních testů?

Přišel jsem s několika přístupy, které by byly opravdu užitečné při spouštění regresních testů pomocí Selenium WebDriver.

 

 

1.Parametrizace

Zvažte scénář, kdy společnost spustí web se základními funkcemi, které jsou podporovány pouze v prohlížeči Chrome. Jakmile je vytvořen, nasazen a otestován, web se spustí. Po několika dnech společnost plánuje rozšířit podporu prohlížeče ve Firefoxu. Po rozšíření podpory prohlížeče je nové sestavení nasazeno k testování. Pokud stávající rámec nebyl navržen pro provádění změn na podporu regresního testování, pak by to byl časově náročný úkol. Abychom to zvládli, můžeme použít parametrizaci k přidání různých hodnot a provádění regresních testů s minimálním úsilím a minimální změnou kódu v rámci Selenium. Tuto parametrizaci lze provést dvěma snadnými způsoby.

1. Použití anotace parametrů v TestNG

2. Definování parametru a jeho načtení ze souboru Vlastnosti

Pojďme implementovat kód pomocí výše uvedených dvou metod, které by byly velmi užitečné pro provádění regrese

Jak používat anotaci parametrů pro provádění regresního testování?

Tato anotace se používá k předání hodnot uvnitř metod definováním jejich hodnot a názvu parametru v souboru testing.xml.

Zajímá vás, jak to bude užitečné při provádění regrese pomocí Selenium Webdriver?

Podívejme se na implementaci níže.

Jak bylo řečeno v úvodní části, když chce společnost rozšířit podporu prohlížeče na další prohlížeč, bylo by snadné definovat hodnoty v poli parametru v souboru testing.xml.

balíček com.LoginPage;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.opera.OperaDriver;

import org.testng.annotations.AfterClass;

import org.testng.annotations.AfterTest;

import org.testng.annotations.BeforeTest;

import org.testng.annotations.Parameters;

import org.testng.annotations.Test;

public class LoginTest {

veřejný ovladač WebDriver;

@Před testem

@Parametry(“prohlížeč”)

public void setUp(String browser) {

if(browser.equalsIgnoreCase(“Firefox”)) {

System.setProperty(“WebDriver.gecko.driver”, “C:\\Users\\shalini\\Stahování\\geckodriver-v0.26.0-win64\\geckodriver.exe”);

driver = new FirefoxDriver();

}

else if (browser.equalsIgnoreCase(“GoogleChrome”)) {

System.setProperty(“WebDriver.chrome.driver”, “C:\\Users\\shalini\\Stažené soubory\\chromedriver\\chromedriver.exe”);

driver = new ChromeDriver();

}

}

@Test

public void Login() {

driver.get(“https://opensource-demo.orangehrmlive.com/”);

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

Řetězec pageTitle = driver.getTitle();

System.out.println(“Název této stránky je ===> ” +pageTitle);

driver.findElement(By.id(“txtUsername”)).clear();

driver.findElement(By.id(“txtUsername”)).sendKeys(“Admin”);

driver.findElement(By.id(“txtPassword”)).clear();

driver.findElement(By.id(“txtPassword”)).sendKeys(“admin123”);

driver.findElement(By.id(“btnLogin”)).click();

}

@Po testu

public void tearDown() {

driver.quit();

}

}

Soubor TestNG.xml

Ve výše uvedeném kódu, kdy aplikace podporuje pouze prohlížeče Firefox a Chrome, jsme parametrizovali testy s těmito dvěma prohlížeči pomocí názvu a hodnoty parametru v souboru testNG.xml . Nyní byla aplikace úspěšně otestována a kód je nasazen do produkce.

Co když v příštím vydání společnost plánuje rozšířit podporu prohlížeče v Opeře?

Odpověď je docela jednoduchá. Stačí přidat další hodnotu prohlížeče do značky parametru v souboru TestNG.xml, jak je uvedeno níže.

Po úpravě souboru Testng.xml rozšiřte funkci v hlavním kódu, jak je uvedeno níže

if(browser.equalsIgnoreCase(“Opera”)) { System.setProperty(“WebDriver.opera.driver”,”C:\\Users\\shalini\\Downloads\\operadriver\\operadriver_win64\\operadriver.exe”);

driver = new OperaDriver();

}

Tímto způsobem lze testovat nové sestavení s menšími změnami v implementaci, která již existuje, a také můžete provádět regresní testy pro předchozí vydání. Použil jsem pouze funkci přihlášení v aplikaci pro účely demo. Když máme k testování více modulů, bude tento přístup velmi snadné provádět regresní testování. Nejen typy prohlížečů, ale také můžete definovat další parametry v sekci parametrů pro provedení regrese podle vašich požadavků.

Jak definovat parametry v souboru vlastností pro provádění regresního testování?

Soubor Vlastnosti je jednou z hlavních funkcí v rámci automatizace, která pomáhá efektivně provádět regresní testování.

V souboru vlastností můžeme definovat různé klíče a hodnoty, které pak lze použít v hlavním automatizačním skriptu. Všechny moduly webové aplikace mohou být integrovány dohromady a mohou být definovány klíče a hodnoty pro různé moduly. Když je ve verzi uvedena jakákoli změna, soubor vlastností lze upravit tak, aby vyhovoval změnám. Tento přístup je velmi přímočarý, snadno implementovatelný a organizovaný.

Níže je uveden jednoduchý kód pro definování vlastností v souboru vlastností a čtení požadované vlastnosti v hlavním kódu.

balíček Stránky;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.util.Properties;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.annotations.AfterTest;

import org.testng.annotations.BeforeTest;

import org.testng.annotations.Test;

na veřejnosti třída Demo {

ovladač WebDriver;

@Před testem

na veřejnosti zrušit založit() {

System.setProperty(„webdriver.chrome.driver“, „C:\\Users\\Shalini\\Stažené soubory\\chrom86_driver\\chromedriver.exe“);

řidič = nový ChromeDriver();

}

@Test

na veřejnosti zrušit přihlásit se() hodí IOException {

Vlastnosti prop = nový Vlastnosti();

Vstup FileInputStream = nový FileInputStream(“D:\\eclipse-workspace\\SeleniumRegression\\src\\Properties\\webpage.properties”);

prop.load(vstup);

//přečtení hodnoty přihlašovací URL ze souboru vlastností

String login_url =prop.getProperty(“loginURL”);

driver.get(login_url);

//přečtení hodnoty uživatelského jména ze souboru vlastností

String username = prop.getProperty(“username”);

//přečtení hodnoty hesla ze souboru vlastností

Řetězcové heslo = prop.getProperty(“heslo”);

driver.findElement(Podle.id(“txtUsername”)).sendKeys(username);

driver.findElement(Podle.id(“txtPassword”)).sendKeys(heslo);

System.out.println(driver.getTitle());

}

@Po testu

na veřejnosti zrušit roztrhat() {

driver.quit();

}

}

Webpage.properties

########Tato vlastnost obsahuje adresu URL webové aplikace##############

loginURL = https://opensource-demo.orangehrmlive.com/

username = administrátor

heslo = admin123

TestNG.xml

<?xml verze="1.0" kódování ="UTF-8"?>

<název suite="TestSuite">

<název testu="Přihlašovací test">

<název třídy="Stránky. Demo">

2.Provádění regresních testů pomocí skupin

Použití skupin k provádění regresních testů je jedním z nejpoužívanějších přístupů. TestNG poskytuje funkci nazvanou „skupiny“, která testerům umožňuje seskupit testy do určitých skupin s jedinečným názvem a poté provádět pouze určitou skupinu nebo skupiny dohromady. Pomocí této funkce lze vytvořit skupinu pro regresní testy a v případě potřeby je spustit.

Níže je jednoduchý kód obsahující různé testy pro testování webové aplikace, který obsahuje testy, které jsou seskupeny do skupiny „RegressionTest“, aby bylo možné konkrétně spouštět testy pro regresní testování.

balíček Stránky;

import statický org.testng.Assert.tvrdit Rovná se;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.annotations.AfterTest;

import org.testng.annotations.BeforeTest;

import org.testng.annotations.Test;

na veřejnosti třída Přihlašovací stránka {

ovladač WebDriver;

@Před testem

na veřejnosti zrušit založit() {

System.setProperty(„webdriver.chrome.driver“, „C:\\Users\\Shalini\\Stažené soubory\\chrom86_driver\\chromedriver.exe“);

řidič = nový ChromeDriver();

}

@Test(skupiny =”RegresníTest”)

na veřejnosti zrušit přihlásit se() {

String login_url = “https://opensource-demo.orangehrmlive.com/”;

driver.get(login_url);

driver.manage().window().maximize();

driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SEKUNDY);

driver.findElement(Podle.id(“txtUsername”)).sendKeys(“Admin”);

driver.findElement(Podle.id(“txtPassword”)).sendKeys(“admin123”);

System.out.println(driver.getTitle());

}

@Test

na veřejnosti zrušit přístrojová deska() {

driver.findElement(Podle.id(“index_menu_dashboard”)).click();

Řetězec textPresent = driver.findElement(By.xpath(“//*[@id=\”obsah\”]/div/div[1]/h1″)).getText();

String textToBePresent = “Dashboard”;

tvrdit Rovná se(textPresent, textToBePresent);

}

@Test

na veřejnosti zrušit test3() {

System.out.println(“Toto je test 3”);

}

@Test(skupiny = “Regresní test”)

na veřejnosti zrušit test4() {

System.out.println(“Toto je test 4”);

}

@Test

na veřejnosti zrušit test5() {

System.out.println(“Toto je test 5”);

}

@Test(skupiny = “Regresní test”)

na veřejnosti zrušit test6() {

System.out.println(“Toto je test 6”);

}

@Test

na veřejnosti zrušit test7() {

System.out.println(“Toto je test 7”);

}

@Po testu

na veřejnosti zrušit roztrhat() {

driver.quit();

}

}

<?xml verze="1.0" kódování ="UTF-8"?>

<název suite="TestSuite">

<název testu="Přihlašovací test">

<include name="Regresní test"/>

<název třídy="Pages.LoginPage">

Implementací tohoto přístupu v našem frameworku můžeme také seskupit testy různými způsoby, jako je skupina pro provádění testů kouře, skupina pro provádění testů zdravého rozumu atd. V souboru TestNG.xml musíme uvést název skupiny (v našem případě RegressionTest ) k provedení testů specifických pro danou skupinu.

3.Použití značek pro provádění regresních testů

Rámec Cucumber poskytuje speciální funkci pro seskupování testů na základě určitých kritérií a jejich provádění kdykoli je potřeba. Tato jedinečná funkce nazývaná „tagy“ je definována v souboru TestRunner rámce Cucumber. Všechny testy, které jsou definovány pomocí konkrétní značky, lze provést v čase, který se stává nejjednodušším a nejpřímějším přístupem k provádění regresního testování pro testovací případy ve webové aplikaci pomocí Selenium Webdriver.

Soubor funkcí

funkce: Pro otestování přihlašovací funkčnosti webové aplikace

@Regresní test

Scénář: Ověřte, zda se uživatel může úspěšně přihlásit ke svému účtu

Vzhledem k Uživatel přejde na webovou stránku

Kdy Uživatel zadá „administrátor“ a „admin123“

Pak Uživatel by měl být úspěšně přihlášen

Scénář: Ověřte, zda uživatel může přidávat produkty do košíku

Vzhledem k Uživatel je přesměrován na domovskou stránku

Kdy Uživatel vybere a přidá produkt

Pak Vybraný produkt musí být nalezen v košíku

@Regresní test

Scénář: Ověřte, zda je uživatel schopen aktualizovat své údaje v části Můj účet

Vzhledem k Uživatel klikne na tlačítko Můj účet

Kdy Uživatel aktualizuje údaje o své adrese

Pak Nové podrobnosti je třeba uložit a aktualizovat na stránce s informacemi o uživateli

Soubor TestRunner

balíček test;

import org.junit.runner.RunWith;

import cucumber.api.CucumberOptions;

import okurka.api.junit.Okurka;

@RunWith(Okurka.třída)

@CucumberOptions(features = “D:\\eclipse-workspace\\CucumberDemo\\src\\main\\resources\\Features\\Login.Feature”,

lepidlo = "Kroky",

plugin = {“hezká”, “html:cíl/okurka”},

jednobarevný = pravdivý,

tags = {“RegressionTest”}

)

na veřejnosti třída TestRunner {

}

Podle výše uvedeného kódu by byly provedeny testovací případy, které jsou seskupeny pod „RegressionTest“. Použití značek k provádění regresního testování je tedy jedním z účinných přístupů, které lze implementovat v automatizačním rámci Selenium.

Zabaluji…!

Rámec automatizace by měl být vždy navržen tak, aby v něm bylo možné snadno provést jakoukoli změnu. Když budete mít při navrhování rámce na paměti regresní testování, odstraníte většinu souvisejících přepracování. Zatím jsem vám ukázal několik přístupů k provádění regresního testování při testování webové aplikace Selenium WebDriver. Dejte nám vědět další efektivní přístupy, které jste zvládli při provádění regresního testování pomocí Selenium Webdriver v sekci komentářů níže. Sdílejte prosím tento článek se svými kolegy a přáteli a podělte se o své znalosti. Šťastné testování…!