testowanie bazy danych Selenium (przy użyciu WebDriver i JDBC API)

w naszym ostatnim samouczku Selenium nauczyliśmy się rozwiązywać niektóre powtarzające się problemy w skryptach selenium. Omówiliśmy pewne zaawansowane koncepcje, w których mamy do czynienia z zdarzeniami myszy i klawiatury, uzyskując dostęp do wielu linków poprzez implementację list.

kontynuując nasze zaawansowane tematy z serii szkoleń Selenium, przedstawiamy Ci koncepcję testowania baz danych przy użyciu Selenium WebDriver.

omówimy podstawowe procesy, takie jak połączenie z bazą danych, wykonywanie zapytań, pobieranie danych i odłączanie instancji bazy danych itp. Omówimy również różne praktyczne implikacje, w których potrzebujemy testowania baz danych z testowaniem automatyzacji w celu przetestowania kompletnych scenariuszy end-to-end.

testowanie DB przy użyciu Selenium

przed przejściem do przodu z implikacjami technicznymi związanymi z automatycznym testowaniem baz danych. Omówmy kilka scenariuszy, w których wymagamy przeprowadzenia testów baz danych wraz z testowaniem automatyzacji. Ale wcześniej chciałbym tutaj potwierdzić, że testowanie baz danych jest bardzo osobliwym rodzajem testowania, podczas gdy Selenium WebDriver jest narzędziem służącym do symulacji i automatyzacji interakcji użytkownika z interfejsem aplikacji.

tak więc technicznie rzecz biorąc, nie przeprowadzamy dokładnie testów bazy danych, a testujemy naszą aplikację w połączeniu z bazą danych, aby upewnić się, że zmiany są odzwierciedlone na obu końcach, a tym samym wcześnie identyfikujemy wady.

absolutnie wszystkie aplikacje internetowe potrzebują zaplecza do przechowywania danych. Bazy danych, takie jak MySQL, Oracle i SQL Server, są obecnie dość popularne.

teraz wracając do pierwotnego tematu, omówmy kilka scenariuszy, aby zilustrować zapotrzebowanie na testowanie baz danych wraz z testowaniem automatyzacji.

rozważ następujące scenariusze

#1) Czasami musimy upewnić się, że dane wprowadzone z interfejsu użytkownika są konsekwentnie odzwierciedlane w bazie danych. W ten sposób pobieramy informacje z bazy danych i weryfikujemy uzyskane informacje z informacjami dostarczonymi z interfejsu użytkownika. Na przykład formularze rejestracyjne, dane użytkownika, profile użytkownika, aktualizacje i usuwanie danych użytkownika. Tak więc, scenariuszem testowym do automatyzacji może być „sprawdzenie, czy informacje użytkownika zostały pomyślnie zapisane w bazie danych, gdy tylko użytkownik zarejestruje się w aplikacji”.

#2) kolejny przypadek użycia testowania bazy danych za pomocą Selenium WebDriver może wystąpić, gdy użytkownik zostanie skierowany do załadowania danych testowych lub oczekiwanych danych z bazy danych. Tak więc, w takim przypadku, użytkownik nawiązałby połączenie z bazą danych za pomocą zewnętrznego interfejsu API, wykonał zapytania w celu pobrania danych z zestawu danych, a następnie zapewnił dane pobrane z bazy danych z rzeczywistymi danymi, które są wypełniane w interfejsie aplikacji.

#3) innym przypadkiem użycia jest przeprowadzenie asocjacyjnego testowania bazy danych. Załóżmy, że wykonaliśmy operację na interfejsie aplikacji i chcemy przetestować odbicie w bazie danych. Może się zdarzyć, że dotknięte dane znajdują się w różnych tabelach bazy danych ze względu na skojarzenie. Dlatego zawsze zaleca się testowanie odbicia danych we wszystkich obszarach dotkniętych.

Selenium, jak powiedziałem, symuluje interakcje użytkownika z testowaną aplikacją. Może symulować zdarzenia klawiatury, akcje myszy itp. Ale jeśli użytkownik chce zautomatyzować cokolwiek poza zasięgiem interakcji przeglądarka – aplikacja internetowa, selenium nie może być zbyt pomocne. Dlatego potrzebujemy innych narzędzi lub możliwości do przeprowadzania testów end –to –end.

Tak więc we wszystkich powyższych scenariuszach możemy wymagać przeprowadzenia testów bazy danych wraz z automatyzacją interfejsu użytkownika. Możemy sprawdzić logikę biznesową, manipulując danymi i weryfikując ich odzwierciedlenie. Możemy również sprawdzić techniczne aspekty samej bazy danych, takie jak miękkie usuwanie, Walidacja pól itp.

przejdźmy teraz do przodu z rzeczywistą implementacją. Przed opracowaniem skryptów Selenium WebDriver do wyodrębniania danych ze źródła danych, stwórzmy dane testowe w bazie danych. W tym samouczku użyjemy MySQL jako bazy danych.

Tworzenie danych testowych w bazie danych

jeśli nie pobrałeś jeszcze bazy danych, pobierz ją za pomocą linku. Użytkownik powinien wykonać kilka podstawowych kroków, aby pobrać i zainstalować bazę danych.

=>> przeczytaj ten samouczek, aby pobrać i zainstalować bazę danych MySQL.

po pomyślnym zainstalowaniu bazy danych użytkownik może uruchomić wiersz poleceń MySQL, który wyglądałby jak Poniższy zrzut ekranu. Aplikacja może poprosić Użytkownika o wprowadzenie hasła. Domyślne hasło to „root”.

testowanie DB przy użyciu selenu 1

Uwaga: użytkownik może również znaleźć klientów opartych na GUI przez internet, aby połączyć się z bazą danych. Aby wymienić tylko kilka, użytkownik może pobrać i zainstalować przeglądarkę zapytań lub Work Bench.

utworzenie nowej bazy danych

następnym krokiem jest utworzenie testowej bazy danych z kilkoma tabelami i rekordami zapisanymi w tych tabelach w celu nawiązania połączenia z bazą danych i wykonania zapytań.

Krok 1) Wpisz „Pokaż bazy danych” aby zobaczyć wszystkie już dostępne bazy danych

Pokaż bazy danych;

testowanie DB przy użyciu selenu 2

Krok 2) wpisz ” Utwórz użytkownika bazy danych;”, aby utworzyć bazę danych o nazwie „użytkownik”.

Utwórz użytkownika bazy danych;

testowanie DB przy użyciu selenu 3

zwróć uwagę, że nazwa bazy danych w postaci użytkownika jest tworzona i może być widoczna na liście baz danych.

Krok 3) wpisz ” use user;”, aby wybrać nowo utworzoną bazę danych. Ponadto wpisz ” show tables;”, aby wyświetlić wszystkie tabele dostępne w bazie danych użytkownika.

użyj użytkownika;
Pokaż tabele;

testowanie DB przy użyciu selenu 4

zwróć uwagę, że pusty zestaw jest wyświetlany w wyniku zapytania ” Pokaż tabele;”, ponieważ w bazie danych użytkownika nie było żadnych tabel.

zróbmy teraz kilka tabel i dodajmy w nich rekordy.

Krok 4) Wpisz następujące polecenie, aby utworzyć tabelę z 4 polami / kolumnami (userId, userName, userAge, userAddress).

Utwórz tabelę userinfo
(
userId int,
userName varchar(255),
userAge int,
userAddress varchar(255)
);

testowanie DB przy użyciu selenu 5

kolejnym krokiem jest dodanie niektórych rekordów danych do tabeli „userinfo”.

Krok 5) Wpisz następujące polecenie, aby wstawić dane do tabeli Tabela dla wszystkich czterech pól 4 pola / kolumny (userId, userName, userAge, useradress).

wstaw do userinfo (userID, userName, userAge, userAddress) wartości (’1′, 'shruti’,’ 25′,’Noida’);

aby wyświetlić dodane dane, wpisz następujące polecenie:

select * from userinfo;

testowanie DB przy użyciu selenu 6

Podobnie, można dodać więcej danych do tabeli i można tworzyć inne tabele, jak również.

teraz stworzyliśmy naszą bazę danych. Możemy iść do przodu i zrozumieć implementację zautomatyzowanych zapytań w celu pobrania rekordów z bazy danych.

jak już wspominaliśmy wcześniej, Selenium WebDriver jest narzędziem do automatyzacji interfejsu użytkownika. Tak więc sam Selenium WebDriver nie jest uprawniony do testowania baz danych, ale można to zrobić za pomocą Java Database Connectivity API (JDBC). Interfejs API umożliwia użytkownikowi łączenie się i interakcję ze źródłem danych oraz pobieranie danych za pomocą zautomatyzowanych zapytań. Aby móc korzystać z interfejsu API JDBC, w systemie musi być uruchomiona Java Virtual Machine (JVM).

JDBC Workflow

testowanie DB przy użyciu selenu 7

skupiamy się na następujących procesach:

  1. Tworzenie połączenia z bazą danych
  2. wykonywanie zapytań i instrukcji aktualizacji w celu wyodrębnienia / pobrania danych (operacje CRUD)
  3. wykorzystanie i manipulowanie danymi pozyskanymi z bazy danych w postaci zbioru wyników. (Result set to zbiór danych uporządkowanych w wierszach i kolumnach)
  4. odłączanie połączenia z bazą danych.

jak wspomniano wcześniej, aby móc automatycznie testować bazę danych z naszych skryptów testowych Selenium WebDriver, łączymy się z bazą danych poprzez łączność JDBC w ramach naszych skryptów testowych. Post do połączenia, możemy wywołać tyle operacji CRUD (Create, Read, Update, and Delete) na bazie danych.

w tym samouczku omówimy „operację odczytu i jej warianty” oraz ich implementację w skrypcie Selenium WebDriver. Ale wcześniej sprawdźmy scenariusz testowy ręcznie za pomocą „linii poleceń MySQL”.

:

1) Otwórz serwer bazy danych i połącz się z bazą danych „użytkownik”.

2) wypisuje wszystkie rekordy z tabeli „userinfo”.

składnia: select * from userinfo;

testowanie DB przy użyciu selenu 8

3) Zamknij połączenie z bazą danych.

zauważ, że zapytanie read wyświetli wszystkie dane Użytkownika znajdujące się w tabeli userinfo. Tabela składa się z następujących kolumn.

  • userId
  • user
  • userAge
  • useradress

wynik pokazuje również, że w tabeli znajduje się tylko jeden zestaw danych.

teraz wykonajmy ten sam scenariusz używając klasy Java.

aby uzyskać dostęp do bazy danych, użytkownik może wybrać spośród różnych dostępnych opcji łączników do łączenia się z bazą danych. Większość złączy bazy danych jest swobodnie dystrybuowana jako pliki „jar”. Ponieważ używamy MySQL jako źródła danych, dlatego jesteśmy zobowiązani do pobrania pliku JAR specyficznego dla MySQL.

plik jar można pobrać z: tutaj lub tutaj.

Krok 1: Pierwszym i najważniejszym krokiem jest skonfigurowanie ścieżki kompilacji projektu i dodanie ” mysql-connector-java-3.1.13-bin.jar ” plik jako biblioteka zewnętrzna.

Krok 2: Utwórz klasę java o nazwie „DatabaseTesingDemo”.

Krok 3: Skopiuj i wklej poniższy kod w klasie utworzonej w powyższym kroku.

próbka kodu

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(); } }}

wynikiem powyższego kodu jest:

1 shruti 25 Noida
2 shrivastava 55 Mumbai

przeczytaj warianty instrukcji

gdzie klauzula z pojedynczym warunkiem

String query = „select * from userinfo where userId='” + 1 + „'”;
ResultSet res = stmt.executeQuery(zapytanie);

wyjście:
1 shruti 25 Noida

gdzie klauzula z wieloma warunkami

String Address =”Mumbai”;
String query = „select * from userinfo where userId='” + 2 + „’ and userAddress='”+Address+”’;
ResultSet res = stmt.executeQuery (zapytanie);

wyjście:
2011>

Display userId

String query = „select userId from userinfo”;
ResultSet res = stmt.executeQuery (zapytanie);

wyjście:
1
2

wyświetla identyfikator użytkownika z klauzulą where

String Address = „Noida”;
String query=”select userId,userName from userinfo where userAddress = '”+Address+”'”;
ResultSet res = stmt.executeQuery (query);

wyjście:
2
shrivastava

w ten sam sposób użytkownik może wykonywać różne zapytania do bazy danych.

dzięki temu rzućmy trochę światła na metody dostępności wyników.

Metody Dostępności Wyników:

nazwa metody opis
metoda String getString() służy do pobrania danych typu string z zestawu wyników
metoda int getInt () służy do pobrania danych typu integer z zestawu wyników
metoda getboolean() służy do pobrania wartości logicznej ze zbioru wyników
metoda float getFloat () służy do pobrania danych typu float z zestawu wyników
długie metoda getLong () służy do pobrania danych typu long z zestawu wyników
metoda short getShort () służy do pobrania danych typu short z zestawu wyników
metoda double getDouble () służy do pobrania danych typu double z zestawu wyników
metoda date getDate () służy do pobrania obiektu typu Date z zestawu wyników

metody nawigacji wyników:

nazwa metody opis
metoda boolean next () służy do przejścia do następnego rekordu w zestawie wyników
metoda Boolean previous () służy do przeniesienia do poprzedniego rekordu w zestawie wyników
metoda boolean first() służy do przejścia do pierwszego rekordu w zestawie wyników
metoda boolean last () służy do przejścia do ostatniego rekordu w zestawie wyników
boolean
absolute (int number wierszy)
metoda służy do przeniesienia do określonego rekordu w zestawie wyników

wniosek

w tym samouczku staraliśmy się zapoznać z koncepcją automatycznego testowania baz danych. Wyraźnie położyliśmy nacisk na TECHNICZNE implikacje i potrzeby testowania baz danych.

ponieważ cała nasza seria koncentrowała się na Selenium, czytelnik może zostać wprowadzony w błąd i może stworzyć wrażenie, że ten samouczek nauczy testowania baz danych za pomocą Selenium, ale jak wspomniałem wiele razy wcześniej, wszystko, co leży poza obrzeża testowania interfejsu użytkownika, nie może być obsługiwane przez Selenium. Dlatego wprowadzamy interfejs API Java Database Connectivity (JDBC) do testowania baz danych poprzez osadzenie kodu w skryptach Selenium WebDriver.

JDBC umożliwia klasie java łączenie się z Bazą Danych, pobieranie danych z bazy danych lub wykonywanie dowolnej operacji CRUD, manipulowanie wynikowymi danymi i zamykanie połączenia.

tutorial stanowi więc przykładową implementację powyższego procesu.

następny samouczek #29: przejdziemy do przodu z zaawansowanymi tematami Selenium. W następnym tutorialu omówimy siatkę Selenium-która jest używana, gdy musisz wykonać testowanie wielu przeglądarek i masz dużą liczbę przypadków testowych.

Ostatnia Aktualizacja: 29 Listopada 2021

Leave a Reply

Twój adres e-mail nie zostanie opublikowany.