selenium database testing using webdriver
В последния ни урок за Селен научихме как да го правим отстраняване на някои повтарящи се проблеми в скриптове на селен . Обсъдихме някои авансови концепции, при които бихме се справили със събития на мишката и клавиатурата, като имаме достъп до множество връзки чрез прилагане на списъци.
Продължаваме напред с нашите напреднали теми в сериала за обучение на Selenium , бихме ви запознали с концепцията за Тестване на база данни с помощта на Selenium WebDriver.
Бихме обсъдили основните процеси като свързване на база данни, изпълнение на заявки, извличане на данни и прекъсване на екземпляри на база данни и т.н. Също така бихме обсъдили различни практически последици, когато се нуждаем от тестване на база данни с тестване за автоматизация, за да тестваме пълни сценарии от край до край.
Преди да продължите напред с техническите последици, свързани с тестването на автоматизирана база данни. Нека обсъдим няколко сценария, при които се изисква тестване на база данни заедно с тестване за автоматизация. Но преди това бих искал да потвърдя тук, че тестването на база данни е много особен вид тестване, докато Selenium WebDriver е инструмент, използван за симулиране и автоматизиране на потребителските взаимодействия с потребителския интерфейс на приложението.
Така че технически погледнато, ние не извършваме точно тестване на базата данни, а тестваме нашето приложение заедно с базата данни, за да гарантираме, че промените са отразени в двата края, като по този начин идентифицираме дефектите рано.
Абсолютно всички уеб приложения се нуждаят от бекенд за съхранение на данните. Базите данни като MySQL, Oracle и SQL Server са сравнително популярни в наши дни.
Сега се връщаме към първоначалната тема, нека обсъдим няколко сценария, за да илюстрираме търсенето на тестване на база данни заедно с тестване за автоматизация.
Какво ще научите:
- Обмислете следните сценарии
- Създаване на тестови данни в базата данни
- Създаване на нова база данни
- Заключение
- Препоръчително четене
Обмислете следните сценарии
# 1) Понякога се изисква да гарантираме, че данните, въведени от потребителския интерфейс, се отразяват последователно в базата данни. По този начин извличаме информацията от базата данни и проверяваме извлечената информация спрямо информацията, предоставена от потребителския интерфейс. Например регистрационни формуляри, потребителски данни, потребителски профили, актуализации и изтривания на потребителски данни. По този начин тестовият сценарий за автоматизиране може да бъде „За да се провери дали информацията на потребителя е успешно записана в базата данни веднага щом потребителят се регистрира в приложението“.
# две) Друг случай на използване на извършване на тестване на база данни с Selenium WebDriver може да възникне, когато потребителят е насочен да зареди тестовите данни или очакваните данни от базата данни. По този начин, в такъв случай потребителят ще осъществи връзката с базата данни с помощта на API на трета страна, ще изпълни заявки за извличане на данни от набора от данни и след това ще утвърди данните, извлечени от базата данни, с действителните данни, които се попълват в потребителския интерфейс на приложението .
# 3) Друг случай на употреба е извършването на асоциативно тестване на база данни. Да предположим, че извършихме операция върху потребителския интерфейс на приложението и искаме да тестваме отражението в базата данни. Възможно е засегнатите данни да се намират в различни таблици на базата данни поради асоциацията. Ето защо винаги е препоръчително да се тества отражението на данните във всички засегнати области.
Както казах, селенът симулира потребителското взаимодействие с тестваното приложение. Той може да симулира събития на клавиатурата, действия на мишката и т.н. Но ако потребителят желае да автоматизира нещо извън обсега на взаимодействията на браузъра - уеб приложения, тогава селенът не може да бъде от голяма помощ. По този начин ние се нуждаем от други инструменти или възможности за извършване на тестване от край до край.
По този начин във всички горепосочени сценарии може да се наложи да извършим тестване на база данни заедно с UI Automation. Можем да проверяваме бизнес логиката, като манипулираме данните и проверяваме тяхното отражение. Можем също така да проверим техническите аспекти на самата база данни, като меко изтриване, валидиране на полета и т.н.
Нека продължим напред с реалното изпълнение. Преди да разработим скриптове на Selenium WebDriver за извличане на данни от източника на данни, нека създадем тестови данни в базата данни. За този урок бихме използвали MySQL като база данни.
Създаване на тестови данни в базата данни
Ако все още не сте изтеглили базата данни, изтеглете я с помощта на връзка . Очаква се потребителят да следва някои основни стъпки за изтегляне и инсталиране на базата данни.
= >> Прочетете този урок на изтеглете и инсталирайте MySQL база данни .
След като базата данни е инсталирана успешно, потребителят може да стартира подканата на командния ред MySQL, която ще изглежда като следната екранна снимка. Приложението може да поиска от потребителя да въведе паролата. Паролата по подразбиране е 'root'.
Забележка : Потребителят може също така да намира базирани на GUI клиенти през интернет, за да се свърже с базата данни. За да назовем само няколко, потребителят може да изтегли и инсталира Query Browser или Work Bench.
Създаване на нова база данни
Следващата стъпка е да създадете тестова база данни с няколко таблици и записи, съхранени в тези таблици, за да осъществите връзка с базата данни и да изпълните заявки.
Етап 1) Въведете „показване на бази данни“, за да видите всички вече налични бази данни
показват бази данни;
Стъпка 2) Въведете „създаване на потребител на база данни;“ за създаване на база данни с име „потребител“.
създаване на потребител на база данни;
Обърнете внимание, че името на базата данни при създаването на потребителя може да се види в списъка с бази данни.
Стъпка 3) Въведете „use user;“ за да изберете новосъздадената база данни. Също така напишете „показване на таблици;“ за да видите всички таблици, налични в потребителската база данни.
използвайте потребител;
шоу таблици;
Обърнете внимание, че празният набор е показан в резултата от „показване на таблици;“ заявка, тъй като в потребителската база данни няма налични таблици.
Нека сега да добавим няколко таблици и да добавим записи в тях.
Стъпка 4) Въведете следната команда, за да създадете таблица с 4 полета / колони (userId, userName, userAge, userAddress).
създаване на потребителска информация за таблица
(
userId int,
потребителско име varchar (255),
userAge int,
userAddress varchar (255)
);
Следващата стъпка е да добавите някои записи с данни в таблицата „userinfo”.
Стъпка 5) Въведете следната команда, за да вмъкнете данни в таблицата таблица за всичките четири полета 4 полета / колони (userId, userName, userAge, userAddress).
вмъкнете в userinfo (userID, userName, userAge, userAddress) стойности (‘1’, ‘shruti’, ’25’, ‘Noida’);
За да видите добавените данни, въведете следната команда:
изберете * от userinfo;
По същия начин можете да добавите повече данни към вашата таблица и да създадете и други таблици.
Сега, след като създадохме нашата база данни. Можем да продължим напред и да разберем внедряване на автоматизирани заявки за извличане на записите от базата данни.
Както също повторихме по-рано, Selenium WebDriver е инструмент за автоматизация на потребителския интерфейс. По този начин Selenium WebDriver сам не отговаря на условията за извършване на тестване на база данни, но това може да се направи с помощта на Java Database Connectivity API (JDBC). API позволява на потребителя да се свързва и да взаимодейства с източника на данни и да извлича данните с помощта на автоматизирани заявки. За да можете да използвате JDBC API, се изисква в системата да работи Java Virtual Machine (JVM).
Работен поток на JDBC
Ще запазим фокуса си в съответствие със следните процеси:
- Създаване на връзка с базата данни
- Изпълнение на заявки и извлечения за актуализиране с цел извличане / извличане на данни (CRUD операции)
- Използване и манипулиране на данните, извлечени от базата данни под формата на набор от резултати. (Резултатният набор е колекция от данни, организирани в редовете и колоните)
- Прекъсване на връзката с базата данни.
Както беше казано по-рано, за да можем да тестваме база данни автоматично от нашите тестови скриптове Selenium WebDriver, ние бихме се свързали с базата данни чрез JDBC свързаност в нашите тестови скриптове. Публикувайте във връзката, можем да задействаме колкото се може повече CRUD (Създаване, четене, актуализиране и изтриване) операции в базата данни.
В този урок ще обсъдим „Операция за четене и нейните варианти“ и за тяхното изпълнение в скрипта на Selenium WebDriver. Но преди това нека проверим тестовия сценарий ръчно, като използваме „MySQL командния ред“.
Сценарий:
въпроси за интервю за уеб услуги в Java
1) Отворете сървъра на базата данни и се свържете с базата данни „потребител“.
2) Избройте всички записи от таблицата „userinfo”.
Синтаксис: изберете * от userinfo;
3) Затворете връзката с базата данни.
Забележете, че заявката за четене ще изброи всички потребителски данни, присъстващи в таблицата userinfo. Таблицата се състои от следните колони.
- userId
- потребителско име
- userAge
- userAddress
Резултатът също така показва, че в таблицата има само един набор от данни.
Сега нека изпълним същия сценарий, използвайки Java Class.
За да има достъп до базата данни, потребителят може да избира между различните опции на съединителя, налични за свързване с базата данни. Повечето съединители на базата данни се разпространяват свободно като “jar” файлове. Тъй като използваме MySQL като източник на данни, следователно се изисква да изтеглим jar файла, специфичен за MySQL.
Файлът на jar може да бъде изтеглен от: тук или тук.
Етап 1 : Първата и основна стъпка е да конфигурирате пътя на изграждане на проекта и да добавите файла „mysql-connector-java-3.1.13-bin.jar“ като външна библиотека.
Стъпка 2 : Създайте Java клас, наречен „DatabaseTesingDemo”.
Стъпка 3 : Копирайте и поставете кода по-долу в класа, създаден в горната стъпка.
Примерен код
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(); } } }
Резултатът от горния код е:
1 шрути 25 Ноида
2 shrivastava 55 Мумбай
Прочетете Варианти на изявление
Клауза къде с едно условие
String query = “select * from userinfo where userId = '” + 1 + “‘ ”;
ResultSet res = stmt.executeQuery (заявка);
Изход:
1 шрути 25 Ноида
Клауза къде с множество условия
Адрес на низа = ”Мумбай”;
String query = “select * from userinfo where userId = '” + 2 + “‘ and userAddress =' ”+ Address +” ‘”;
ResultSet res = stmt.executeQuery (заявка);
Изход:
2 shrivastava 55 Мумбай
Показване на потребителски идентификатор
String query = “изберете userId от userinfo”;
ResultSet res = stmt.executeQuery (заявка);
Изход:
един
две
Показване на userId с клауза where
Адрес на низа = ”Noida”;
String query = “select userId, userName from userinfo where userAddress = '” + Address + ”‘ ”;
ResultSet res = stmt.executeQuery (заявка);
Изход:
две
шривастава
По този начин, по същия начин потребителят може да изпълнява различни заявки в базата данни.
С това, нека хвърлим малко светлина и върху методите за достъпност на резултатите.
Методи за достъпност на резултатите:
Име на метода | Описание |
---|---|
двойно getDouble () | Методът се използва за извличане на данни от двоен тип от набора от резултати |
String getString () | Методът се използва за извличане на данните от типа низ от резултата |
int getInt () | Методът се използва за извличане на данните от цяло число от резултата |
boolean getBoolean () | Методът се използва за извличане на булева стойност от набора от резултати |
float getFloat () | Методът се използва за извличане на данните от типа float от набора от резултати |
long getLong () | Методът се използва за извличане на данните от дълъг тип от набора от резултати |
кратко getShort () | Методът се използва за извличане на кратките данни от набора от резултати |
Дата getDate () | Методът се използва за извличане на обекта тип Дата от резултата |
Методи за навигация с резултат:
Име на метода | Описание |
---|---|
boolean next () | Методът се използва за придвижване към следващия запис в набора от резултати |
булева предишна () | Методът се използва за придвижване към предишния запис в набора от резултати |
първоначално булево () | Методът се използва за придвижване до първия запис в набора от резултати |
boolean last () | Методът се използва за придвижване до последния запис в набора от резултати |
булев абсолютно (int rowNumber) | Методът се използва за придвижване до конкретния запис в набора от резултати |
Заключение
Чрез този урок се опитахме да ви запознаем с концепцията за Автоматизирано тестване на база данни . Ясно поставихме акцент върху техническите последици и нуждите на тестването на база данни.
Тъй като цялата ни поредица беше фокусирана върху Selenium, читателят може да се подведе и да създаде впечатление, че този урок ще научи да извършва тестване на база данни с помощта на Selenium, но както споменах няколко пъти по-рано, всичко, което се намира извън периферията на тестването на потребителския интерфейс , не може да се обработва от Селен. Затова ние въвеждаме API за свързване на база данни Java (JDBC), за да извършим тестване на база данни чрез вграждане на кода в скриптове на Selenium WebDriver.
JDBC дава възможност на Java класа да се свърже с базата данни, да извлече данни от базата данни или всъщност да изпълни някоя от CRUD операциите, да манипулира получените данни и да затвори връзката.
По този начин урокът представлява основната примерна реализация на гореспоменатия процес.
Следващ урок # 29 : Ще продължим напред с разширени теми за Селен. В следващия урок ще разгледаме Selenium GRID - който се използва, когато трябва да извършите тестване с множество браузъри и имате голям брой тестови случаи.
Препоръчително четене
- Тестване на база данни с JMeter
- Интеграция на селен с JMeter
- Урок за краставици селен: Интеграция на краставица Java Selenium WebDriver
- Въведение в Selenium WebDriver - Урок № 8 за селен
- Най-добри инструменти за тестване на софтуер 2021 г. [Инструменти за автоматизация на QA теста]
- Внедряване на нашия първи скрипт за WebDriver - Урок № 10 за Selenium WebDriver
- Най-добрият онлайн курс за обучение на Selenium WebDriver + JAVA
- Spock за интеграция и функционални тестове със селен