Testowanie baz danych - Database testing

Testowanie bazy danych zwykle składa się z procesu warstwowego, obejmującego warstwę interfejsu użytkownika (UI), warstwę biznesową, warstwę dostępu do danych i samą bazę danych. Warstwa UI zajmuje się projektowaniem interfejsu bazy danych, natomiast warstwa biznesowa obejmuje bazy danych wspierające strategie biznesowe .

Cele

Bazy danych , gromadzenie wzajemnie połączonych plików na serwerze, przechowywanie informacji, mogą nie obsługiwać tego samego typu danych, tj. Bazy danych mogą być niejednorodne . W rezultacie w dużych systemach bazodanowych może wystąpić wiele rodzajów błędów wdrożeniowych i integracyjnych , co negatywnie wpływa na wydajność, niezawodność, spójność i bezpieczeństwo systemu. Dlatego ważne jest, aby przeprowadzić testy w celu uzyskania systemu bazy danych, który spełnia właściwości ACID (atomowość, spójność, izolacja i trwałość) systemu zarządzania bazą danych .

Jedną z najbardziej krytycznych warstw jest warstwa dostępu do danych, która obsługuje bazy danych bezpośrednio w procesie komunikacji. Testowanie baz danych odbywa się głównie w tej warstwie i obejmuje strategie testowania, takie jak kontrola jakości i zapewnienie jakości baz danych produktów. Testowanie na tych różnych warstwach jest często używane w celu zachowania spójności systemów baz danych, co najczęściej widać w następujących przykładach:

  • Dane są krytyczne z biznesowego punktu widzenia. Firmy takie jak Google czy Symantec , które są związane z przechowywaniem danych , potrzebują trwałego i spójnego systemu bazodanowego. Jeśli operacje na bazie danych, takie jak wstawianie, usuwanie i aktualizowanie, są wykonywane bez uprzedniego przetestowania bazy danych pod kątem spójności, firma ryzykuje awarię całego systemu.
  • Niektóre firmy mają różne typy baz danych, a także różne cele i misje. Aby osiągnąć poziom funkcjonalności umożliwiający osiągnięcie tych celów, muszą przetestować swój system baz danych.
  • Obecne podejście do testowania może być niewystarczające, w którym programiści formalnie testują bazy danych. Jednak to podejście nie jest wystarczająco skuteczne, ponieważ programiści baz danych mogą spowolnić proces testowania z powodu luk komunikacyjnych. Zalecany wydaje się oddzielny zespół testujący bazy danych.
  • Testowanie baz danych zajmuje się głównie wyszukiwaniem błędów w bazach danych w celu ich wyeliminowania. Poprawi to jakość bazy danych lub systemu internetowego.
  • Testowanie bazy danych należy odróżnić od strategii radzenia sobie z innymi problemami, takimi jak awarie bazy danych, nieprawidłowe wstawienia, usunięcia lub aktualizacje. Tutaj refaktoryzacja bazy danych jest ewolucyjną techniką, która może mieć zastosowanie.

Rodzaje testów i procesów

Testowanie czarnoskrzynkowe i białoskrzynkowe w teście bazy danych

Rysunek wskazuje obszary testowania związane z różnymi metodami testowania baz danych, takimi jak testowanie czarnoskrzynkowe i testowanie białoskrzynkowe .

Czarna skrzynka

Testowanie czarnoskrzynkowe polega na testowaniu interfejsów i integracji bazy danych, co obejmuje:

  1. Mapowanie danych (w tym metadane )
  2. Weryfikacja danych przychodzących
  3. Weryfikacja danych wychodzących z funkcji zapytań
  4. Różne techniki, takie jak technika tworzenia grafów przyczynowych, podział równoważności i analiza wartości brzegowych .

Za pomocą tych technik można dokładnie przetestować funkcjonalność bazy danych.

Zalety i wady testowania czarnoskrzynkowego obejmują: Generowanie przypadków testowych w testach czarnoskrzynkowych jest dość proste. Ich generowanie jest całkowicie niezależne od tworzenia oprogramowania i można je wykonać na wczesnym etapie rozwoju. W konsekwencji programista ma lepszą wiedzę na temat projektowania aplikacji bazodanowej i poświęca mniej czasu na debugowanie. Koszt opracowania przypadków testowych z czarną skrzynką jest niższy niż tworzenia przypadków testowych typu white box. Główną wadą testowania czarnoskrzynkowego jest to, że nie wiadomo, jaka część programu jest testowana. Ponadto nie można wykryć niektórych błędów.

Białe pudło

Testowanie białoskrzynkowe dotyczy głównie wewnętrznej struktury bazy danych. Szczegóły specyfikacji są ukryte przed użytkownikiem.

  1. Obejmuje testowanie wyzwalaczy bazy danych i widoków logicznych, które będą wspierać refaktoryzację bazy danych .
  2. Wykonuje modułowe testy funkcji bazy danych, wyzwalaczy, widoków, zapytań SQL itp.
  3. Weryfikuje tabele bazy danych, modele danych, schematy bazy danych itp.
  4. Sprawdza zasady integralności referencyjnej .
  5. Wybiera domyślne wartości tabeli w celu sprawdzenia spójności bazy danych.
  6. Techniki stosowane w testach białoskrzynkowych to pokrycie warunków, pokrycie decyzji, pokrycie instrukcji, cykliczna złożoność .

Główną zaletą testowania białoskrzynkowego w testowaniu bazy danych jest to, że wykrywane są błędy kodowania, dzięki czemu można wyeliminować wewnętrzne błędy w bazie danych. Ograniczeniem testowania białoskrzynkowego jest to, że nie obejmuje instrukcji SQL.

Podejście WHODATE

WHODATE podejście do transformacji instrukcji SQL

Podczas generowania przypadków testowych do testowania baz danych semantyka instrukcji SQL musi być odzwierciedlona w przypadkach testowych. W tym celu wykorzystywana jest technika zwana WHite bOx Database Application Technique „(WHODATE)”. Jak pokazano na rysunku, instrukcje SQL są niezależnie konwertowane na instrukcje GPL, a następnie przeprowadzane są tradycyjne testy białoskrzynkowe w celu wygenerowania przypadków testowych, które obejmują semantykę SQL.

Cztery etapy

  • zestaw Spotkań
  • Testowe uruchomienie
  • Weryfikacja wyników
  • Zburzyć

Zestaw urządzeń opisuje początkowy stan bazy danych przed wejściem do testów. Po ustawieniu urządzeń testowane jest zachowanie bazy danych pod kątem zdefiniowanych przypadków testowych. W zależności od wyniku przypadki testowe są modyfikowane lub zachowywane bez zmian. Etap „niszczenia” kończy się albo zakończeniem testowania, albo kontynuacją innych przypadków testowych.

Aby pomyślnie przetestować bazę danych, zwykle wykonywany jest następujący przepływ pracy wykonywany przez każdy pojedynczy test:

  1. Oczyść bazę danych: jeśli testowalne dane są już obecne w bazie danych, należy ją opróżnić.
  2. Skonfiguruj urządzenie: narzędzie takie jak PHPUnit będzie następnie iterować urządzenia i wstawiać je do bazy danych.
  3. Uruchom test, zweryfikuj wynik, a następnie usuń: Po zresetowaniu bazy danych do opróżnienia i wyświetleniu urządzeń, test jest uruchamiany, a wyjście jest weryfikowane. Jeśli wynik jest zgodny z oczekiwaniami, następuje proces usuwania, w przeciwnym razie test jest powtarzany.

Podstawowe techniki

  • Analizator zapytań SQL jest pomocnym narzędziem podczas korzystania z Microsoft SQL Server .
  • Jedna z często używanych funkcji create_input_dialog["label"] ,, służy do sprawdzania poprawności danych wyjściowych za pomocą danych wejściowych użytkownika.
  • Projektowanie formularzy do automatycznego testowania baz danych, formularzy front-end i back-end, jest pomocne dla pracowników zajmujących się konserwacją baz danych.
  • Testowanie obciążenia danych :
    • Do testowania obciążenia danymi wymagana jest znajomość źródłowej i docelowej bazy danych.
    • Pracownicy sprawdzają zgodność między źródłową bazą danych a docelową bazą danych przy użyciu pakietu DTS .
    • Podczas aktualizowania źródłowej bazy danych pracownicy porównują ją z docelową bazą danych.
    • Testowanie obciążenia bazy danych mierzy zdolność serwera bazy danych do obsługi zapytań, a także czas odpowiedzi serwera bazy danych i klienta.
  • Podczas testowania bazy danych często bierze się pod uwagę takie kwestie, jak atomowość, spójność, izolacja, trwałość, integralność, wykonywanie wyzwalaczy i odzyskiwanie.
  1. Konfiguracja do testowania bazy danych jest kosztowna i złożona w utrzymaniu, ponieważ systemy baz danych stale się zmieniają wraz z oczekiwanymi operacjami wstawiania, usuwania i aktualizacji.
  2. Określenie stanu transakcji w bazie danych wymaga dodatkowego obciążenia.
  3. Po wyczyszczeniu bazy danych należy zaprojektować nowe przypadki testowe.
  4. Generator SQL jest potrzebny do przekształcania instrukcji SQL w celu włączenia semantyki SQL do przypadków testowych bazy danych.


Zobacz też

Bibliografia

Linki zewnętrzne