selenium database testing using webdriver
I vår senaste Selen-handledning lärde vi oss hur man gör det felsöka några återkommande problem i selen-skript . Vi diskuterade några förvägskoncept där vi skulle hantera mus- och tangentbordshändelser, få tillgång till flera länkar genom att implementera listor.
Gå vidare med vår avancerade ämnen i Selenium-träningsserien , vi skulle introducera dig med begreppet Databastestning med Selenium WebDriver.
Vi skulle diskutera de grundläggande processerna som databasanslutning, körning av frågor, hämtning av data och bortkoppling av databasinstanser etc. Vi skulle också diskutera olika praktiska konsekvenser där vi behöver databastestning med automatiseringstest för att testa kompletta slut-till-slut-scenarier.
Innan du går vidare med de tekniska konsekvenserna som är kopplade till Automated Database-testning. Låt oss diskutera några scenarier där vi behöver utföra databastestning tillsammans med Automation Testing. Men innan det vill jag här bekräfta att databastestning är en mycket speciell typ av testning medan Selenium WebDriver är ett verktyg som används för att simulera och automatisera användarinteraktioner med applikationsgränssnittet.
Så tekniskt sett utför vi inte exakt databastestning utan vi testar vår applikation i kombination med databas för att säkerställa att förändringarna återspeglas i båda ändarna och därigenom identifiera fel tidigt.
bästa gratis registret renare windows 7
Absolut alla webbapplikationer behöver en backend för att lagra Data. Databaser som MySQL, Oracle och SQL Server är ganska populära idag.
Nu går vi tillbaka till det ursprungliga ämnet, låt oss diskutera några scenarier för att exemplifiera efterfrågan på databastestning tillsammans med automatiseringstestning.
Vad du kommer att lära dig:
- Tänk på följande scenarier
- Skapande av testdata i databasen
- Skapande av ny databas
- Slutsats
- Rekommenderad läsning
Tänk på följande scenarier
# 1) Ibland måste vi se till att de uppgifter som matas in från användargränssnittet återspeglas konsekvent i databasen. Således hämtar vi informationen från databasen och verifierar den hämtade informationen mot informationen från UI. Till exempel registreringsformulär, användardata, användarprofiler, uppdateringar och raderingar av användardata. Således kan testscenariot att automatisera vara 'För att verifiera att användarens information framgångsrikt sparas i databasen så snart användaren registrerar sig i applikationen'.
#två) Ett annat användningsfall för att utföra databastester med Selenium WebDriver kan uppstå när användaren uppmanas att ladda testdata eller förväntade data från databasen. Således skulle användaren i ett sådant fall ansluta till databasen med hjälp av ett tredjeparts-API, utföra frågor för att hämta data från datasetet och sedan hävda de data som hämtats från databasen med de faktiska data som fylls i applikationsgränssnittet .
# 3) Ett annat användningsfall är att utföra associerande databastestning. Antag att vi utförde en operation på programmets användargränssnitt, och vi vill testa reflektionen i databasen. Det kan vara ett fall att de påverkade uppgifterna finns i olika tabeller i databasen på grund av kopplingen. Därför är det alltid tillrådligt att testa reflektion av data på alla områden som påverkas.
Selen simulerar som sagt användarinteraktioner med applikationen som testas. Det kan simulera tangentbordshändelser, musåtgärder etc. Men om användaren vill automatisera något utanför närheten av webbläsaren - interaktioner med webbapplikationer, kan selen inte vara till stor hjälp. Därför kräver vi andra verktyg eller funktioner för att utföra slut-till-slut-testning.
I alla ovanstående scenarier kan vi därför behöva utföra databastestning tillsammans med UI Automation. Vi kan kontrollera affärslogiken genom att manipulera uppgifterna och verifiera dess reflektion. Vi kan också kontrollera de tekniska aspekterna av själva databasen som mjuk borttagning, fältvalidering etc.
Låt oss nu gå vidare med det faktiska genomförandet. Innan vi utvecklar Selenium WebDriver-skript för att extrahera data från datakällan, låt oss skapa testdata i databasen. För denna handledning skulle vi använda MySQL som en databas.
Skapande av testdata i databasen
Om du inte har hämtat databasen ännu, ladda ner den med länk . Användaren förväntas följa några grundläggande steg för att ladda ner och installera databasen.
= >> Läs den här guiden till ladda ner och installera MySQL-databas .
När databasen väl har installerats kan användaren starta MySQL Command Line Prompt som ser ut som följande skärmdump. Applikationen kan be användaren att ange lösenordet. Standardlösenordet är 'root'.
Notera : Användaren kan också hitta GUI-baserade klienter över internet för att ansluta till databasen. För att nämna några kan användaren ladda ner och installera Query Browser eller Work Bench.
Skapande av ny databas
Nästa steg är att skapa testdatabasen med några tabeller och poster lagrade i dessa tabeller för att skapa en anslutning till databasen och utföra frågor.
Steg 1) Skriv 'visa databaser' för att se alla redan tillgängliga databaser
visa databaser;
Steg 2) Skriv 'skapa databasanvändare;' för att skapa en databas med namnet 'användare'.
skapa databasanvändare;
Observera att databasnamnet när användaren skapas och kan ses i databaslistan.
Steg 3) Skriv 'använd användare;' för att välja den nyskapade databasen. Skriv också 'visa tabeller;' för att visa alla tabeller som är tillgängliga i användardatabasen.
använd användare;
visa bord;
Notera att Tom uppsättning visas i resultatet av 'showtabellerna'. fråga eftersom det inte fanns några tabeller tillgängliga i användardatabasen.
Låt oss nu några tabeller och lägga till poster i dem.
Steg 4) Skriv följande kommando för att skapa en tabell med fyra fält / kolumner (userId, userName, userAge, userAddress).
skapa tabell användarinfo
(
userId int,
användarnamn varchar (255),
userAge int,
userAddress varchar (255)
);
Nästa steg är att lägga till några dataposter i 'userinfo' -tabellen.
Steg 5) Skriv följande kommando för att infoga data i tabellen en tabell för alla de fyra fälten 4 fält / kolumner (userId, userName, userAge, userAddress).
infoga i userinfo (userID, userName, userAge, userAddress) värden ('1', 'shruti', '25', 'Noida');
För att se tillagda data, skriv följande kommando:
välj * från användarinfo;
På samma sätt kan du lägga till mer data i din tabell och även skapa andra tabeller.
Nu när vi har skapat vår databas. Vi kan gå vidare och förstå implementering av automatiserade frågor för att hämta poster från databasen.
Som vi också upprepade tidigare är Selenium WebDriver ett verktyg för UI Automation. Selenium WebDriver är alltså inte kvalificerad att utföra databastestning men detta kan göras med Java Database Connectivity API (JDBC). API: et låter användaren ansluta och interagera med datakällan och hämta data med hjälp av automatiserade frågor. För att kunna utnyttja JDBC API krävs att Java Virtual Machine (JVM) körs på systemet.
JDBC-arbetsflöde
Vi skulle hålla vårt fokus anpassat till följande processer:
- Skapa en anslutning till databasen
- Utföra frågor och uppdatera uttalanden för att extrahera / hämta data (CRUD-operationer)
- Använda och manipulera data som extraherats från databasen i form av resultatuppsättningen. (Resultatuppsättning är en samling data organiserade i rader och kolumner)
- Kopplar bort databasanslutningen.
Som sagt tidigare, för att kunna testa databasen automatiskt från våra Selenium WebDriver-testskript, skulle vi ansluta till databasen via JDBC-anslutning inom våra testskript. Skicka till anslutningen, vi kan utlösa så många CRUD (Skapa, läsa, uppdatera och ta bort) operationer på databasen.
I den här handledningen skulle vi diskutera 'Läsoperation och dess varianter' och om deras implementering i Selenium WebDriver-skript. Men innan det, låt oss kontrollera testscenariot manuellt med hjälp av 'MySQL-kommandoraden'.
Scenario:
1) Öppna databasservern och anslut till databasen ”användare”.
två) Lista alla poster från 'userinfo' -tabellen.
Syntax: välj * från användarinfo;
3) Stäng databasanslutningen.
Observera att läsfrågan kommer att lista alla användardata som finns i tabellen userinfo. Tabellen består av följande kolumner.
- användar ID
- Användarnamn
- userAge
- userAddress
Resultatet visar också att det bara finns en enda datamängd i tabellen.
Låt oss nu utföra samma scenario med Java Class.
För att få åtkomst till databas utnyttjas användaren för att välja bland de olika anslutningsalternativen som är tillgängliga för att ansluta till databasen. De flesta databaskontakterna distribueras fritt som 'jar' -filer. Eftersom vi använder MySQL som en datakälla måste vi ladda ner jar-filen som är specifik för MySQL.
Jar-filen kan laddas ner från: här eller här.
Steg 1 : Det första och främsta steget är att konfigurera projektets byggväg och lägga till filen “mysql-connector-java-3.1.13-bin.jar” som ett externt bibliotek.
Steg 2 : Skapa en java-klass med namnet “DatabaseTesingDemo”.
Steg 3 : Kopiera och klistra in koden nedan i klassen som skapats i steget ovan.
Kodprov
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(' ' + res.getString(2)); System.out.print(' ' + res.getString(3)); System.out.println(' ' + res.getString(4)); } } catch(Exception e) { e.printStackTrace(); } } @After public void tearDown() throws Exception { // Close DB connection if (con != null) { con.close(); } } }
Utgången från ovanstående kod är:
1 buskar 25 Noida
2 shrivastava 55 Mumbai
Läs uttalande varianter
Där klausul med enstaka villkor
Strängfråga = “välj * från användarinfo där userId = '” + 1 + “‘ ”;
ResultSet res = stmt.executeQuery (fråga);
Produktion:
1 buskar 25 Noida
Där klausul med flera villkor
Strängadress = ”Mumbai”;
Strängfråga = “välj * från användarinfo där userId = '” + 2 + “‘ och userAddress =' ”+ Adress +” ‘”;
ResultSet res = stmt.executeQuery (fråga);
Produktion:
2 shrivastava 55 Mumbai
Visa användar-ID
Strängfråga = “select userId from userinfo”;
ResultSet res = stmt.executeQuery (fråga);
Produktion:
1
två
Visa userId med var klausul
Strängadress = ”Noida”;
Strängfråga = “välj userId, userName från userinfo där userAddress = '” + Address + ”‘ ”;
ResultSet res = stmt.executeQuery (fråga);
Produktion:
två
shrivastava
Således kan användaren på samma sätt utföra olika frågor i databasen.
Med detta, låt oss också kasta lite ljus på tillgänglighetsmetoder för resultat.
Resultat tillgänglighetsmetoder:
Metodens namn | Beskrivning |
---|---|
dubbel getDouble () | Metoden används för att hämta data av dubbel typ från resultatuppsättningen |
Sträng getString () | Metoden används för att hämta strängtypsdata från resultatuppsättningen |
int getInt () | Metoden används för att hämta heltalsdata från resultatuppsättningen |
boolean getBoolean () | Metoden används för att hämta det booleska värdet från resultatuppsättningen |
float getFloat () | Metoden används för att hämta flyttypsdata från resultatuppsättningen |
lång getLong () | Metoden används för att hämta långa typdata från resultatuppsättningen |
kort getShort () | Metoden används för att hämta korta typdata från resultatuppsättningen |
Datum getDate () | Metoden används för att hämta objekt av datumtyp från resultatuppsättningen |
Resultatnavigeringsmetoder:
Metodens namn | Beskrivning |
---|---|
boolean nästa () | Metoden används för att gå till nästa post i resultatuppsättningen |
boolean föregående () | Metoden används för att flytta till föregående post i resultatuppsättningen |
booleska först () | Metoden används för att gå till den första posten i resultatuppsättningen |
boolean sista () | Metoden används för att flytta till den sista posten i resultatuppsättningen |
booleska absolut (int rowNumber) | Metoden används för att flytta till den specifika posten i resultatuppsättningen |
Slutsats
Genom denna handledning försökte vi göra dig bekant med begreppet Automatiserad databastestning . Vi lade tydligt tonvikten på de tekniska konsekvenserna och behoven av databastestning.
Eftersom hela vår serie var fokuserad på Selen kan läsaren bli vilseledd och kan skapa ett intryck av att denna handledning skulle lära sig att utföra databastestning med Selen, men som jag nämnde ett antal gånger tidigare, allt som ligger utanför periferin av UI-testning , kan inte hanteras av Selen. Därför introducerar vi Java Database Connectivity (JDBC) API för att utföra databastestning genom att bädda in koden i Selenium WebDriver-skript.
JDBC gör det möjligt för java-klassen att ansluta till databasen, hämta data från databasen eller faktiskt utföra någon av CRUD-operationerna, manipulera resulterande data och stänga anslutningen.
Således utgör självstudien det grundläggande exempelimplementeringen av ovannämnda process.
Nästa handledning # 29 : Vi kommer att gå vidare med avancerade Selen-ämnen. I nästa handledning kommer vi att täcka Selen GRID - som används när du måste utföra flera webbläsartester och du har ett stort antal testfall.
Rekommenderad läsning
- Databastestning med JMeter
- Integration av selen med JMeter
- Gurkselen-handledning: Gurka Java Selen WebDriver-integration
- Introduktion till Selen WebDriver - Selen Tutorial # 8
- Bästa verktyg för testning av programvara 2021 (QA Test Automation Tools)
- Implementation of Our First WebDriver Script - Selenium WebDriver Tutorial # 10
- Den bästa online-kursen för Selen WebDriver + JAVA
- Spock för integration och funktionstestning med selen