testování databáze selenu (pomocí WebDriver a JDBC API)
v našem posledním tutoriálu selenu jsme se naučili, jak řešit některé opakující se problémy v skriptech selenu. Diskutovali jsme o některých předběžných konceptech, kde bychom se zabývali událostmi myši a klávesnice a přistupovali k více odkazům implementací seznamů.
pokračujeme s našimi pokročilými tématy v sérii Selenium training, představíme vám koncept testování databáze pomocí Selenium WebDriver.
diskutovali bychom o základních procesech, jako je připojení k databázi, provádění dotazů, načítání dat a odpojení instancí databáze atd. Také bychom diskutovali o různých praktických důsledcích, kdy potřebujeme testování databáze s automatizačním testováním, abychom mohli otestovat kompletní scénáře typu end-to-end.
před pokračováním v technických důsledcích spojených s automatizovaným testováním databáze. Pojďme diskutovat o několika scénářích, kde požadujeme provedení testování databáze spolu s automatizačním testováním. Ale předtím bych zde chtěl potvrdit, že testování databáze je velmi zvláštním typem testování, zatímco Selenium WebDriver je nástroj používaný k simulaci a automatizaci interakcí uživatelů s uživatelským rozhraním aplikace.
technicky vzato tedy neprovádíme přesně testování databáze, spíše testujeme naši aplikaci ve spojení s databází, abychom zajistili, že se změny projeví na obou koncích, čímž včas identifikujeme vady.
absolutně všechny webové aplikace potřebují backend pro ukládání dat. Databáze jako MySQL, Oracle a SQL Server jsou v dnešní době poměrně populární.
nyní se vracíme k původnímu tématu a diskutujeme o několika scénářích, abychom ilustrovali poptávku po testování databází spolu s automatizačním testováním.
zvažte následující scénáře
#1) občas jsme povinni zajistit, aby data zadaná z uživatelského rozhraní byla důsledně zohledněna v databázi. Získáme tedy informace z databáze a ověříme získané informace proti informacím dodaným z uživatelského rozhraní. Například registrační formuláře, uživatelská data, uživatelské profily, aktualizace a mazání uživatelských dat. Testovací scénář pro automatizaci tedy může být „ověření, že informace o uživateli jsou úspěšně uloženy do databáze, jakmile se uživatel zaregistruje v aplikaci“.
#2) další případ použití testování databáze pomocí Selenium WebDriver může nastat, když je uživatel nasměrován k načtení testovacích dat nebo očekávaných dat z databáze. V takovém případě by tedy uživatel navázal spojení s databází pomocí rozhraní API třetí strany, provedl dotazy k načtení dat z datové sady a poté tvrdil data načtená z databáze skutečnými daty, která jsou vyplněna v uživatelském rozhraní aplikace.
#3) dalším případem použití je provedení asociativního testování databáze. Předpokládejme, že jsme provedli operaci na uživatelském rozhraní aplikace a chceme otestovat odraz v databázi. Může se stát, že ovlivněná data jsou uložena v různých tabulkách databáze kvůli přidružení. Proto je vždy vhodné testovat odraz dat ve všech zasažených oblastech.
selen, jak jsem řekl, simuluje interakce uživatelů s testovanou aplikací. Může simulovat události klávesnice, akce myši atd. Ale pokud si uživatel přeje automatizovat cokoli mimo blízkost interakcí prohlížeče a webové aplikace, pak selen nemůže být moc nápomocný. Proto potřebujeme další nástroje nebo schopnosti provádět end – to-end testování.
ve všech výše uvedených scénářích tedy můžeme požadovat provedení testování databáze spolu s automatizací uživatelského rozhraní. Můžeme kontrolovat obchodní logiku manipulací s údaji a ověřením jejich odrazu. Můžeme také zkontrolovat technické aspekty samotné databáze, jako je soft delete, ověření pole atd.
pojďme nyní vpřed se skutečnou implementací. Před vývojem skriptů Selenium WebDriver pro extrahování dat ze zdroje dat vytvořte testovací data v databázi. Pro tento tutoriál bychom použili MySQL jako databázi.
vytvoření testovacích dat v databázi
pokud jste databázi ještě nestáhli, stáhněte si ji pomocí odkazu. Očekává se, že uživatel provede několik základních kroků ke stažení a instalaci databáze.
=>> Přečtěte si tento návod ke stažení a instalaci databáze MySQL.
po úspěšné instalaci databáze může uživatel spustit příkazový řádek MySQL, který by vypadal jako následující snímek obrazovky. Aplikace může uživatele požádat o zadání hesla. Výchozí heslo je „root“.
Poznámka: uživatel může také najít klienty GUI založené přes internet pro připojení k databázi. Abychom jmenovali alespoň některé, uživatel si může stáhnout a nainstalovat prohlížeč dotazů nebo pracovní stůl.
vytvoření nové databáze
dalším krokem je vytvoření testovací databáze s několika tabulkami a záznamy uloženými v těchto tabulkách za účelem navázání spojení s databází a provádění dotazů.
Krok 1) Zadejte „Zobrazit databáze“ pro zobrazení všech již dostupných databází
Zobrazit databáze;
Krok 2) Zadejte „vytvořit uživatele databáze;“ vytvořit databázi s názvem „uživatel“.
vytvořit uživatele databáze;
Vezměte na vědomí, že název databáze jako uživatel je vytvořen a lze jej vidět v seznamu databází.
Krok 3) Zadejte „use user;“ pro výběr nově vytvořené databáze. Také zadejte „Zobrazit tabulky;“ pro zobrazení všech tabulek dostupných v databázi uživatelů.
use user;
Zobrazit tabulky;
Vezměte na vědomí, že prázdná sada je zobrazena ve výsledku dotazu “ Zobrazit tabulky;“, protože v databázi uživatelů nebyly k dispozici žádné tabulky.
Pojďme nyní několik tabulek a přidejte do nich záznamy.
Krok 4) Zadejte následující příkaz a vytvořte tabulku se 4 poli/sloupci (userId, userName, userAge, userAddress).
vytvořit tabulku userinfo
(
userId int,
userName varchar (255),
userAge int,
userAddress varchar(255)
);
dalším krokem je přidání některých datových záznamů do tabulky „userinfo“.
Krok 5) Zadejte následující příkaz pro vložení dat do tabulky Tabulka pro všechna čtyři pole 4 Pole/sloupce (userId, userName, userAge, userAddress).
vložte do userinfo (userID, userName, userAge, userAddress) hodnoty (‚1‘, ‚shruti‘, ’25‘, ‚Noida‘);
Chcete-li zobrazit přidaná data, zadejte následující příkaz:
vyberte * z userinfo;
podobně můžete do tabulky přidat další data a také vytvořit další tabulky.
nyní, že jsme vytvořili naši databázi. Můžeme pokročit a pochopit implementaci automatizovaných dotazů pro načtení záznamů z databáze.
jak jsme také iterovali dříve, Selenium WebDriver je nástroj pro automatizaci uživatelského rozhraní. Samotný Selenium WebDriver tedy není způsobilý provádět testování databáze, ale to lze provést pomocí Java Database Connectivity API (JDBC). API umožňuje uživateli připojit a komunikovat se zdrojem dat a načíst data pomocí automatizovaných dotazů. Aby bylo možné využívat JDBC API, je nutné mít Java Virtual Machine (JVM) běží na systému.
JDBC Workflow
naše zaměření bychom udržovali v souladu s následujícími procesy:
- vytvoření spojení s databází
- provádění dotazů a aktualizačních příkazů za účelem extrahování / načtení dat (operace CRUD)
- pomocí a manipulací s daty extrahovanými z databáze ve formě sady výsledků. (Sada výsledků je sbírka dat uspořádaných v řádcích a sloupcích)
- odpojení připojení databáze.
jak již bylo řečeno, abychom mohli testovat databázi automaticky z našich testovacích skriptů Selenium WebDriver, spojili bychom se s databází prostřednictvím připojení JDBC v rámci našich testovacích skriptů. Po připojení můžeme v databázi spustit tolik operací CRUD (vytvářet, číst, aktualizovat a mazat).
v tomto tutoriálu bychom diskutovali o „Read operation a jeho variantách“ a o jejich implementaci ve skriptu Selenium WebDriver. Ale předtím zkontrolujeme testovací scénář ručně pomocí „příkazového řádku MySQL“.
scénář:
1) Otevřete databázový server a připojte se k databázi“ uživatel“.
2) seznam dolů všechny záznamy z tabulky“ userinfo“.
syntaxe: vyberte * z userinfo;
3) Zavřete připojení k databázi.
Všimněte si, že dotaz pro čtení vypíše všechna uživatelská data přítomná v tabulce userinfo. Tabulka se skládá z následujících sloupců.
- userId
- username
- userAge
- userAddress
výsledek také ukazuje, že v tabulce je přítomen pouze jeden datový soubor.
nyní provedeme stejný scénář pomocí třídy Java.
aby měl uživatel přístup k databázi, má možnost vybrat si mezi různými možnostmi konektorů, které jsou k dispozici pro připojení k databázi. Většina databázových konektorů je volně distribuována jako soubory“ jar“. Protože používáme MySQL jako zdroj dat, jsme povinni stáhnout soubor jar specifický pro MySQL.
soubor jar lze stáhnout z: zde nebo zde.
Krok 1: prvním a nejdůležitějším krokem je konfigurace cesty sestavení projektu a přidání “ mysql-connector-java-3.1.13-bin.jar “ soubor jako externí knihovna.
Krok 2: Vytvořte třídu java pojmenovanou jako „DatabaseTesingDemo“.
Krok 3: Zkopírujte a vložte níže uvedený kód do třídy vytvořené ve výše uvedeném kroku.
ukázka kódu
import org.junit.After;import org.junit.Before;import org.junit.Test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class DatabaseTesingDemo { // Connection object static Connection con = null; // Statement object private static Statement stmt; // Constant for Database URL public static String DB_URL = "jdbc:mysql://localhost:3306/user"; // Constant for Database Username public static String DB_USER = "root"; // Constant for Database Password public static String DB_PASSWORD = "root"; @Before public void setUp() throws Exception { try{ // Make the database connection String dbClass = "com.mysql.jdbc.Driver"; Class.forName(dbClass).newInstance(); // Get connection to DB Connection con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD); // Statement object to send the SQL statement to the Database stmt = con.createStatement(); } catch (Exception e) { e.printStackTrace(); } } @Test public void test() { try{ String query = "select * from userinfo"; // Get the contents of userinfo table from DB ResultSet res = stmt.executeQuery(query); // Print the result untill all the records are printed // res.next() returns true if there is any next record else returns false while (res.next()) { System.out.print(res.getString(1)); System.out.print("\t" + res.getString(2)); System.out.print("\t" + res.getString(3)); System.out.println("\t" + res.getString(4)); } } catch(Exception e) { e.printStackTrace(); } } @After public void tearDown() throws Exception { // Close DB connection if (con != null) { con.close(); } }}
výstup výše uvedeného kódu je:
1 shruti 25 Noida
2 shrivastava 55 Mumbai
Read Statement variant
Where clause with single condition
String query = “ select * from userinfo where userId='“ + 1 + „‚“;
ResultSet res = stmt.executeQuery (query);
výstup:
1 shruti 25 Noida
kde klauzule s více podmínkami
String Address = „Mumbai“;
String query = „select * from userinfo where userId = ‚“+ 2 + „‚a userAddress= ‚“ +Address+“‚““;
ResultSet res = stmt.executeQuery (dotaz);
výstup:
2 shrivastava 55 Mumbai
Zobrazit userId
String query = „select userId from userinfo“;
ResultSet res = stmt.executeQuery (dotaz);
výstup:
1
2
Zobrazit userId s where clause
String Address = „Noida“;
String query = „select userId, userName from userinfo where userAddress= ‚“ +Address+“‚“;
ResultSet res = stmt.executeQuery (query);
výstup:
2
shrivastava
stejným způsobem může uživatel provádět různé dotazy v databázi.
s tímto, pojďme vrhnout nějaké světlo na výsledky přístupnosti metody také.
Metody Přístupnosti Výsledků:
název metody | popis |
---|---|
metoda String getString () | se používá k načtení dat typu string ze sady výsledků |
metoda int getInt () | se používá k načtení dat celočíselného typu ze sady výsledků |
boolean getBoolean () | metoda se používá k načtení booleovské hodnoty ze sady výsledků |
metoda float getFloat () | se používá k načtení dat typu float ze sady výsledků |
dlouhé getLong () | metoda se používá k načtení dat dlouhého typu ze sady výsledků |
short getShort () | metoda se používá k načtení dat krátkého typu ze sady výsledků |
metoda double getDouble () | se používá k načtení dat dvojitého typu ze sady výsledků |
metoda Date getDate () | se používá k načtení objektu typu Date ze sady výsledků |
metody navigace výsledků:
název metody | popis |
---|---|
boolean next () | metoda se používá k přesunu na další záznam v sadě výsledků |
boolean předchozí () | metoda se používá k přesunu na předchozí záznam v sadě výsledků |
metoda boolean first () | se používá k přesunu na první záznam v sadě výsledků |
boolean last () | metoda se používá k přesunu na poslední záznam v sadě výsledků |
booleovské absolutní (int rowNumber) |
metoda se používá k přesunu na konkrétní záznam v sadě výsledků |
závěr
prostřednictvím tohoto tutoriálu jsme se vás pokusili seznámit s konceptem automatizovaného testování databáze. Jasně jsme kladli důraz na technické důsledky a potřeby testování databází.
vzhledem k tomu, že celá naše série byla zaměřena na selen, čtenář se může uvést v omyl a může vytvořit dojem,že tento tutoriál by učil provádět testování databáze pomocí selenu, ale jak jsem již několikrát zmínil, vše, co leží mimo okraj testování UI, nemůže selen zvládnout. Proto zavádíme Java Database Connectivity (JDBC) API, abychom mohli provádět testování databáze vložením kódu do skriptů Selenium WebDriver.
JDBC umožňuje třídě java připojit se k databázi, načíst data z databáze nebo ve skutečnosti provést některou z operací CRUD, manipulovat s výslednými daty a ukončit připojení.
výukový program tedy představuje základní ukázkovou implementaci výše uvedeného procesu.
další tutoriál #29: budeme pokračovat s pokročilými tématy selenu. V dalším tutoriálu se budeme zabývat mřížkou selenu-která se používá, když musíte provádět testování více prohlížečů a máte velké množství testovacích případů.
Poslední Aktualizace: 29. Listopadu 2021