selenium database testing using webdriver
W naszym ostatnim samouczku dotyczącym Selenium nauczyliśmy się, jak to robić rozwiąż niektóre powtarzające się problemy w skryptach selenu . Omówiliśmy kilka zaawansowanych koncepcji, w których zajmowalibyśmy się zdarzeniami myszy i klawiatury, uzyskując dostęp do wielu łączy poprzez implementację list.
Idąc naprzód z naszymi zaawansowane tematy w serii szkoleń Selenium , przedstawimy Ci koncepcję Testowanie baz danych przy użyciu Selenium WebDriver.
Omówilibyśmy podstawowe procesy, takie jak połączenie z bazą danych, wykonywanie zapytań, pobieranie danych i odłączanie instancji bazy danych itp. Omówilibyśmy również różne praktyczne implikacje, w których potrzebujemy testowania bazy danych z testowaniem automatyzacji w celu przetestowania kompletne scenariusze od końca do końca.
Przed przejściem do przodu z implikacjami technicznymi związanymi z testowaniem zautomatyzowanych baz danych. Omówmy kilka scenariuszy, w których wymagamy wykonywania testów bazy danych wraz z testowaniem automatyzacji. Ale przedtem chciałbym tutaj potwierdzić, że testowanie baz danych jest bardzo specyficznym 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 wykonujemy precyzyjnych testów bazy danych, a raczej testujemy naszą aplikację w połączeniu z bazą danych, aby upewnić się, że zmiany są odzwierciedlone na obu końcach, tym samym wcześnie identyfikując usterki.
Absolutnie wszystkie aplikacje internetowe wymagają zaplecza do przechowywania danych. Bazy danych takie jak MySQL, Oracle i SQL Server są obecnie dość popularne.
Wracając do pierwotnego tematu, omówmy kilka scenariuszy, aby zilustrować zapotrzebowanie na testowanie baz danych wraz z testowaniem automatyzacji.
Czego się nauczysz:
- Rozważ następujące scenariusze
- Tworzenie danych testowych w Bazie Danych
- Stworzenie nowej bazy danych
- Wniosek
- rekomendowane lektury
Rozważ następujące scenariusze
# 1) Czasami jesteśmy zobowiązani do upewnienia się, że dane wprowadzane z interfejsu użytkownika są konsekwentnie odzwierciedlane w bazie danych. W ten sposób pobieramy informacje z bazy danych i weryfikujemy pobrane informacje z informacjami dostarczonymi z interfejsu użytkownika. Na przykład formularze rejestracyjne, dane użytkownika, profile użytkowników, aktualizacje i usuwanie danych użytkownika. Tak więc scenariusz testowy dotyczący automatyzacji może polegać na „weryfikacji, czy informacje o użytkowniku zostały pomyślnie zapisane w bazie danych, gdy tylko użytkownik zarejestruje się w aplikacji”.
#dwa) Inny przypadek użycia testowania bazy danych za pomocą Selenium WebDriver może wystąpić, gdy użytkownikowi zostanie skierowane polecenie załadowania danych testowych lub oczekiwanych danych z Bazy Danych. Dlatego w takim przypadku użytkownik nawiązywałby połączenie z Bazą danych za pomocą zewnętrznego interfejsu API, wykonywał zapytania w celu pobrania danych z zestawu danych, a następnie potwierdzałby dane pobrane z Bazy danych rzeczywistymi danymi, które są wypełniane w interfejsie aplikacji. .
# 3) Innym przypadkiem użycia jest wykonanie asocjacyjnego testowania bazy danych. Załóżmy, że wykonaliśmy operację w interfejsie aplikacji i chcemy przetestować odbicie w bazie danych. Może się zdarzyć, że dane, których to dotyczy, znajdują się w różnych tabelach bazy danych ze względu na powiązanie. Dlatego zawsze zaleca się przetestowanie odbicia danych we wszystkich obszarach, których to dotyczy.
Selen, jak powiedziałem, symuluje interakcje użytkownika z testowaną aplikacją. Może symulować zdarzenia klawiatury, działania myszy itp. Ale jeśli użytkownik chce zautomatyzować cokolwiek poza otoczeniem przeglądarki - interakcje z aplikacjami internetowymi, selen nie może być zbyt pomocny. Dlatego potrzebujemy innych narzędzi lub możliwości, aby przeprowadzić testy od końca do końca.
Dlatego 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 odbicie. Możemy również sprawdzić techniczne aspekty samej bazy danych, takie jak usuwanie nietrwałe, walidacja pól itp.
Przejdźmy teraz do rzeczywistej implementacji. 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 jako bazy danych użylibyśmy MySQL.
Tworzenie danych testowych w Bazie Danych
Jeśli jeszcze nie pobrałeś bazy danych, pobierz ją przy użyciu rozszerzenia połączyć . Oczekuje się, że użytkownik wykona kilka podstawowych kroków, aby pobrać i zainstalować bazę danych.
= >> Przeczytaj ten samouczek, aby pobierz i zainstaluj bazę danych MySQL .
Po pomyślnym zainstalowaniu bazy danych użytkownik może uruchomić wiersz poleceń MySQL, który wyglądałby jak na poniższym zrzucie ekranu. Aplikacja może poprosić użytkownika o wprowadzenie hasła. Domyślne hasło to „root”.
Uwaga : Użytkownik może również znaleźć klientów opartych na graficznym interfejsie użytkownika przez Internet, aby połączyć się z bazą danych. Aby wymienić tylko kilka, użytkownik może pobrać i zainstalować przeglądarkę zapytań lub stanowisko robocze.
Stworzenie nowej bazy danych
Następnym krokiem jest utworzenie testowej bazy danych z kilkoma tabelami i rekordami przechowywanymi w tych tabelach w celu nawiązania połączenia z bazą danych i wykonania zapytań.
Krok 1) Wpisz „show databases”, aby wyświetlić wszystkie już dostępne bazy danych
pokaż bazy danych;
Krok 2) Wpisz „utwórz użytkownika bazy danych”; aby utworzyć bazę danych o nazwie „użytkownik”.
stworzyć użytkownika bazy danych;
Zwróć uwagę, że nazwa bazy danych jako użytkownika jest tworzona i można ją zobaczyć na liście baz danych.
Krok 3) Wpisz „użyj użytkownika”; aby wybrać nowo utworzoną bazę danych. Wpisz też „pokaż tabele”; aby wyświetlić wszystkie tabele dostępne w bazie danych użytkownika.
użyj użytkownika;
pokaż stoły;
Zwróć uwagę, że pusty zestaw jest wyświetlany w wyniku „pokaż tabele”; zapytanie, ponieważ w bazie danych użytkowników nie było dostępnych tabel.
Przejdźmy teraz do kilku tabel i dodajmy do nich rekordy.
Krok 4) Wpisz następujące polecenie, aby utworzyć tabelę z 4 polami / kolumnami (identyfikator użytkownika, nazwa użytkownika, wiek użytkownika, adres_użytkownika).
utwórz informacje o użytkowniku tabeli
(
userId int,
nazwa użytkownika varchar (255),
userAge int,
userAddress varchar (255)
);
Następnym krokiem jest dodanie rekordów danych w tabeli „informacje o użytkowniku”.
Krok 5) Wpisz następujące polecenie, aby wstawić dane do tabeli w tabeli dla wszystkich czterech pól 4 pola / kolumny (identyfikator użytkownika, nazwa użytkownika, wiek użytkownika, adres_użytkownika).
wstaw do informacji o użytkowniku (identyfikator użytkownika, nazwa użytkownika, wiek użytkownika, adres_użytkownika) wartości („1”, „shruti”, „25”, „Noida”);
jak odtwarzać pliki .mkv
Aby wyświetlić dodane dane, wpisz następujące polecenie:
wybierz * z informacji o użytkowniku;
Podobnie możesz dodać więcej danych do swojej tabeli, a także tworzyć inne tabele.
Teraz, gdy stworzyliśmy naszą bazę danych. Możemy iść naprzód i zrozumieć implementacja zautomatyzowanych zapytań w celu pobrania rekordów z bazy danych.
Jak również iterowaliśmy wcześniej, Selenium WebDriver jest narzędziem do automatyzacji interfejsu użytkownika. W związku z tym sam Selenium WebDriver nie kwalifikuje się do testowania bazy 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 wykorzystać interfejs JDBC API, w systemie musi być uruchomiona wirtualna maszyna języka Java (JVM).
JDBC Workflow
Będziemy skupiać się na następujących procesach:
- Tworzenie połączenia z bazą danych
- Wykonywanie zapytań i aktualizowanie instrukcji w celu wyodrębnienia / pobrania danych (operacje CRUD)
- Używanie i manipulowanie danymi wyodrębnionymi z bazy danych w postaci zestawu wyników. (Zestaw wyników to zbiór danych zorganizowanych w wierszach i kolumnach)
- Rozłączanie połączenia z bazą danych.
Jak wspomniano wcześniej, aby móc automatycznie testować bazę danych z naszych skryptów testowych Selenium WebDriver, łączylibyśmy się z bazą danych poprzez łączność JDBC w naszych skryptach testowych. Wyślij do połączenia, możemy wywołać tyle operacji CRUD (tworzenie, odczytywanie, aktualizowanie i usuwanie) w bazie danych.
W tym tutorialu omówimy „Operację odczytu i jej warianty” oraz ich implementację w skrypcie Selenium WebDriver. Ale wcześniej sprawdźmy ręcznie scenariusz testowy za pomocą „wiersza poleceń MySQL”.
Scenariusz:
1) Otwórz serwer bazy danych i połącz się z bazą danych „użytkowników”.
dwa) Wypisz wszystkie rekordy z tabeli „informacje o użytkowniku”.
Składnia: wybierz * z informacji o użytkowniku;
pl sql wywiad z programistami pytania i odpowiedzi dla doświadczonych
3) Zamknij połączenie z bazą danych.
Zwróć uwagę, że zapytanie odczytu wyświetli listę wszystkich danych użytkownika obecnych w tabeli informacji o użytkowniku. Tabela składa się z następujących kolumn.
- identyfikator użytkownika
- Nazwa Użytkownika
- wiek użytkownika
- userAddress
Wynik pokazuje również, że w tabeli występuje tylko jeden zestaw danych.
Teraz wykonajmy ten sam scenariusz przy użyciu klasy Java.
Aby mieć dostęp do bazy danych, użytkownik może wybierać spośród różnych dostępnych opcji łącznika do łączenia się z bazą danych. Większość konektorów bazy danych jest swobodnie rozpowszechniana jako pliki „jar”. Ponieważ używamy MySQL jako źródła danych, musimy pobrać plik jar specyficzny dla MySQL.
Plik jar można pobrać z: tutaj lub tutaj.
Krok 1 : Pierwszym i najważniejszym krokiem jest skonfigurowanie ścieżki budowania projektu i dodanie pliku „mysql-connector-java-3.1.13-bin.jar” jako biblioteki zewnętrznej.
Krok 2 : Utwórz klasę Java o nazwie „DatabaseTesingDemo”.
Krok 3 : Skopiuj i wklej poniższy kod w klasie utworzonej w powyższym kroku.
Przykład 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(' ' + 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(); } } }
Wynik powyższego kodu to:
1 shruti 25 Noida
2 shrivastava 55 Bombaj
Przeczytaj warianty instrukcji
Gdzie klauzula z pojedynczym warunkiem
Zapytanie tekstowe = „wybierz * z informacji o użytkowniku, gdzie userId = '” + 1 + „‘ ”;
ResultSet res = stmt.executeQuery (zapytanie);
Wynik:
1 shruti 25 Noida
Where klauzula z wieloma warunkami
Adres ciągu = „Bombaj”;
Zapytanie tekstowe = „wybierz * z informacji o użytkowniku, gdzie identyfikator_użytkownika = '” + 2 + „‘ i adres_użytkownika =' ”+ adres +” ‘”;
ResultSet res = stmt.executeQuery (zapytanie);
Wynik:
2 shrivastava 55 Bombaj
Wyświetl identyfikator użytkownika
Zapytanie tekstowe = „wybierz identyfikator użytkownika z informacji o użytkowniku”;
ResultSet res = stmt.executeQuery (zapytanie);
Wynik:
1
dwa
Wyświetl identyfikator użytkownika z klauzulą WHERE
Adres ciągu = „Noida”;
Zapytanie tekstowe = „wybierz identyfikator użytkownika, nazwa_użytkownika z informacji o użytkowniku, gdzie adres_użytkownika = '” + adres + ”‘ ”;
ResultSet res = stmt.executeQuery (zapytanie);
Wynik:
dwa
shrivastava
W ten sposób w ten sam sposób użytkownik może wykonywać różne zapytania w bazie danych.
W ten sposób rzućmy trochę światła na metody dostępności wyników.
Metody dostępności wyników:
Nazwa metody | Opis |
---|---|
double getDouble () | Metoda służy do pobierania danych typu podwójnego z zestawu wyników |
Ciąg getString () | Metoda służy do pobierania danych typu łańcuchowego z zestawu wyników |
int getInt () | Metoda służy do pobierania danych typu całkowitego z zestawu wyników |
boolean getBoolean () | Metoda służy do pobierania wartości logicznej z zestawu wyników |
float getFloat () | Metoda służy do pobierania danych typu float z zestawu wyników |
long getLong () | Metoda służy do pobierania danych typu long z zestawu wyników |
short getShort () | Metoda służy do pobierania danych typu krótkiego z zestawu wyników |
Data getDate () | Metoda służy do pobierania obiektu typu Date z zestawu wyników |
Metody nawigacji po wynikach:
Nazwa metody | Opis |
---|---|
boolean next () | Metoda służy do przejścia do następnego rekordu w zestawie wyników |
boolean poprzedni () | Metoda służy do przejścia do poprzedniego rekordu w zestawie wyników |
boolean pierwszy () | Metoda służy do przejścia do pierwszego rekordu w zestawie wyników |
boolean last () | Metoda służy do przejścia do ostatniego rekordu w zestawie wyników |
boolean bezwzględne (int rowNumber) | Metoda służy do przejścia do określonego rekordu w zestawie wyników |
Wniosek
W tym samouczku staraliśmy się zapoznać Cię z koncepcją Automatyczne testowanie baz danych . Wyraźnie położyliśmy nacisk na implikacje techniczne i potrzeby testowania baz danych.
Ponieważ cała nasza seria skupiała się na Selenie, czytelnik może zostać wprowadzony w błąd i może stworzyć wrażenie, że ten samouczek nauczyłby przeprowadzać testy bazy danych przy użyciu Selenium, ale jak wspomniałem wiele razy wcześniej, wszystko, co leży poza obrzeżami testowania interfejsu użytkownika , nie może być obsługiwany przez Selenium. Dlatego wprowadzamy API Java Database Connectivity (JDBC) w celu przeprowadzenia testów baz danych poprzez osadzenie kodu w skryptach Selenium WebDriver.
JDBC umożliwia klasie java łączenie się z Bazą Danych, pobieranie danych z bazy lub w istocie wykonywanie dowolnej operacji CRUD, manipulowanie wynikowymi danymi i zamykanie połączenia.
Samouczek stanowi zatem podstawową przykładową implementację powyższego procesu.
Następny samouczek # 29 : Będziemy kontynuować zaawansowane tematy dotyczące selenu. W następnym tutorialu zajmiemy się Selenium GRID - używanym, gdy musisz przeprowadzić testy w wielu przeglądarkach i masz dużą liczbę przypadków testowych.
rekomendowane lektury
- Testowanie bazy danych za pomocą narzędzia JMeter
- Integracja Selenium z JMeter
- Cucumber Selenium Tutorial: Cucumber Java Selenium Integracja WebDriver
- Wprowadzenie do Selenium WebDriver - samouczek Selenium # 8
- Najlepsze narzędzia do testowania oprogramowania 2021 (Narzędzia do automatyzacji testów QA)
- Wdrożenie naszego pierwszego skryptu WebDriver - Selenium WebDriver Tutorial # 10
- Najlepszy internetowy kurs Selenium WebDriver + JAVA
- Spock do integracji i testów funkcjonalnych z selenem