database testing complete guide why
Kompletny przewodnik po testowaniu baz danych z praktycznymi wskazówkami i przykładami:
Aplikacje komputerowe są obecnie bardziej złożone dzięki technologiom takim jak Android, a także wielu aplikacjom na smartfony. Im bardziej złożone końce przednie, tym bardziej skomplikowane stają się końce tylne.
Dlatego tym ważniejsze jest poznanie testowania baz danych i umiejętność skutecznego sprawdzania poprawności baz danych w celu zapewnienia bezpieczeństwa i jakości baz danych.
W tym samouczku dowiesz się wszystkiego o testowaniu danych - dlaczego, jak i co testować?
Baza danych jest jedną z nieuniknionych części aplikacji.
Nie ma znaczenia, czy jest to firma internetowa, stacjonarna czy mobilna, klient-serwer, peer-to-peer, przedsiębiorstwo czy firma indywidualna; Baza danych jest wymagana wszędzie na zapleczu.
Podobnie, czy jest to opieka zdrowotna, finanse, leasing, handel detaliczny, aplikacja pocztowa, czy kontrolowanie statku kosmicznego; Baza danych jest zawsze w akcji za kulisami.
Wraz ze wzrostem złożoności aplikacji pojawia się potrzeba silniejszej i bezpieczniejszej bazy danych. W analogiczny sposób dla aplikacji o dużej częstotliwości transakcji ( Na przykład, Bankowość lub Finanse), konieczność posiadania w pełni funkcjonalnego narzędzia DB Tool jest połączona.
Obecnie dysponujemy dużymi zbiorami danych, które są duże i złożone, których tradycyjne bazy danych nie są w stanie obsłużyć.
Istnieje kilka Narzędzia bazy danych są dostępne na rynku Na przykład, MS-Access, MS SQL Server, SQL Server, Oracle, Oracle Financial, MySQL, PostgreSQL, DB2, Toad, Admirer itp. Te narzędzia różnią się kosztami, solidnością, funkcjami i bezpieczeństwem. Każdy z tych ma swoje zalety i wady.
Czego się nauczysz:
- Dlaczego warto testować bazę danych?
- Co przetestować (lista kontrolna testowania bazy danych)
- Jak przetestować bazę danych (proces krok po kroku)
Dlaczego warto testować bazę danych?
Poniżej zobaczymy, dlaczego należy zweryfikować następujące aspekty bazy danych:
# 1) Mapowanie danych
W systemach oprogramowania dane często przemieszczają się tam iz powrotem z interfejsu użytkownika (interfejsu użytkownika) do wewnętrznej bazy danych i odwrotnie. Oto kilka aspektów, na które należy zwrócić uwagę:
- Sprawdź, czy pola w formularzach UI / frontendu są mapowane spójnie z odpowiednimi polami w tabeli DB. Zazwyczaj te informacje o mapowaniu są zdefiniowane w dokumentach wymagań.
- Za każdym razem, gdy na interfejsie aplikacji jest wykonywana określona akcja, na zapleczu wywoływana jest odpowiednia akcja CRUD (tworzenie, pobieranie, aktualizowanie i usuwanie). Tester będzie musiał sprawdzić, czy wywoływana jest właściwa akcja i czy wywołana akcja sama w sobie jest skuteczna, czy nie.
# 2) Walidacja właściwości ACID
Atomowość, spójność, izolacja i trwałość. Każda transakcja wykonywana przez DB musi być zgodna z tymi czterema właściwościami.
- Atomowość oznacza, że transakcja kończy się niepowodzeniem lub przechodzi. Oznacza to, że nawet jeśli jakaś część transakcji się nie powiedzie - oznacza to, że cała transakcja się nie powiodła. Zwykle nazywa się to zasadą „wszystko albo nic”.
- Konsystencja : Transakcja zawsze skutkuje prawidłowym stanem bazy danych
- Izolacja : Jeśli istnieje wiele transakcji i są one wykonywane jednocześnie, wynik / stan bazy danych powinien być taki sam, jak gdyby były wykonywane jedna po drugiej.
- Trwałość : Po zakończeniu i zatwierdzeniu transakcji żadne czynniki zewnętrzne, takie jak utrata zasilania lub awaria, nie powinny być w stanie tego zmienić
Sugerowana lektura = >> Samouczek dotyczący transakcji MySQL
# 3) Integralność danych
Dla każdego z Operacje CRUD zaktualizowane i najnowsze wartości / stan udostępnionych danych powinny pojawić się na wszystkich formularzach i ekranach. Wartość nie powinna być aktualizowana na jednym ekranie i wyświetlać starszą wartość na innym.
Gdy aplikacja jest w trakcie wykonywania, rozszerzenie użytkownik końcowy wykorzystuje głównie operacje „CRUD” ułatwione przez narzędzie DB .
C: Utwórz - Gdy użytkownik „Zapisz” każdą nową transakcję, wykonywana jest operacja „Utwórz”.
R: Odzyskaj - Gdy użytkownik „Wyszukaj” lub „Wyświetl” jakąkolwiek zapisaną transakcję, wykonywana jest operacja „Pobierz”.
U: aktualizacja - Kiedy użytkownik „Edytuj” lub „Modyfikuj” istniejący rekord, wykonywana jest operacja „Aktualizacji” DB.
D: Usuń - Kiedy użytkownik „usuwa” dowolny rekord z systemu, wykonywana jest operacja „usuwania” bazy danych.
Każda operacja na bazie danych wykonywana przez użytkownika końcowego jest zawsze jedną z czterech powyższych.
Dlatego opracuj przypadki testowe bazy danych w taki sposób, aby obejmowały sprawdzanie danych we wszystkich miejscach, w których się pojawiają, aby sprawdzić, czy są one spójne.
# 4) Zgodność z regułami biznesowymi
Większa złożoność w bazach danych oznacza bardziej skomplikowane komponenty, takie jak więzy relacyjne, wyzwalacze, procedury składowane itp. Dlatego testerzy będą musieli wymyślić odpowiednie zapytania SQL, aby zweryfikować te złożone obiekty.
Co przetestować (lista kontrolna testowania bazy danych)
# 1) Transakcje
Podczas testowania transakcji ważne jest, aby upewnić się, że spełniają one właściwości ACID.
Oto powszechnie używane stwierdzenia:
- BEGIN TRANSACTION TRANSACTION #
- KONIEC TRANSAKCJI NR TRANSAKCJI
Instrukcja Rollback zapewnia, że baza danych pozostaje w spójnym stanie.
- TRANSAKCJA ROLLBACK #
Po wykonaniu tych instrukcji użyj Select, aby upewnić się, że zmiany zostały odzwierciedlone.
- SELECT * FROM TABLENAME
# 2) Schematy baz danych
Schemat bazy danych to nic innego jak formalna definicja tego, jak dane będą zorganizowane w bazie danych. Aby to przetestować:
- Zidentyfikuj wymagania, na podstawie których działa baza danych. Przykładowe wymagania:
- Klucze podstawowe, które mają zostać utworzone przed utworzeniem jakichkolwiek innych pól.
- Klucze obce powinny być całkowicie zindeksowane w celu łatwego pobierania i wyszukiwania.
- Nazwy pól rozpoczynające się lub kończące określonymi znakami.
- Pola z ograniczeniem, że można lub nie można wstawiać określonych wartości.
- W zależności od trafności użyj jednej z następujących metod:
- Zapytanie SQL DESC
aby sprawdzić poprawność schematu.
- Wyrażenia regularne do walidacji nazw poszczególnych pól i ich wartości
- Narzędzia takie jak SchemaCrawler
# 3) Wyzwalacze
Kiedy określone zdarzenie ma miejsce na określonej tabeli, fragment kodu (wyzwalacz) może zostać automatycznie poinstruowany do wykonania.
Na przykład, nowy uczeń dołączył do szkoły. Uczeń ma 2 zajęcia: matematyczne i przyrodnicze. Uczeń zostanie dodany do „tabeli uczniów”. Wyzwalacz może dodać ucznia do odpowiednich tabel przedmiotów po dodaniu go do tabeli uczniów.
Typową metodą testowania jest najpierw niezależne wykonanie zapytania SQL osadzonego w wyzwalaczu i zapisanie wyniku. Kontynuuj, wykonując wyzwalacz jako całość. Porównaj wyniki.
Są one testowane zarówno w fazie czarnej, jak i białej skrzynki.
różnica między testami alfa i beta
- Testowanie białoskrzynkowe : Stuby i sterowniki służą do wstawiania, aktualizowania lub usuwania danych, które spowodowałyby wywołanie wyzwalacza. Podstawowym pomysłem jest po prostu przetestowanie samej bazy danych, nawet przed wykonaniem integracji z interfejsem użytkownika (UI).
- Testowanie czarnoskrzynkowe :
do) Od czasu interfejsu użytkownika i bazy danych integracja jest teraz dostępna; możemy wstawiać / usuwać / aktualizować dane z interfejsu użytkownika w taki sposób, że wyzwalacz jest wywoływany. Następnie instrukcji Select można użyć do pobrania danych bazy danych w celu sprawdzenia, czy wyzwalacz pomyślnie wykonał zamierzoną operację.
b) Drugim sposobem sprawdzenia tego jest bezpośrednie załadowanie danych, które wywołałyby wyzwalacz i sprawdzenie, czy działa zgodnie z przeznaczeniem.
# 4) Procedury składowane
Procedury składowane są mniej więcej podobne do funkcji zdefiniowanych przez użytkownika. Można je wywołać za pomocą instrukcji Call Procedure / Execute Procedure, a dane wyjściowe mają zwykle postać zestawów wyników.
Są one przechowywane w RDBMS i są dostępne dla aplikacji.
Są również testowane podczas:
- Testowanie białoskrzynkowe: Stuby są używane do wywoływania procedur składowanych, a następnie wyniki są sprawdzane pod kątem oczekiwanych wartości.
- Testowanie czarnoskrzynkowe: Wykonaj operację z interfejsu użytkownika (UI) aplikacji i sprawdź wykonanie procedury składowanej i jej wyniki.
# 5) Ograniczenia pola
Wartość domyślna, wartość unikatowa i klucz obcy:
- Wykonaj operację frontonu, która sprawdza stan obiektu bazy danych
- Sprawdź wyniki za pomocą zapytania SQL.
Sprawdzenie wartości domyślnej dla określonego pola jest dość proste. Jest to część weryfikacji reguł biznesowych. Możesz to zrobić ręcznie lub możesz użyć narzędzi takich jak QTP. Możesz ręcznie wykonać akcję, która doda wartość inną niż domyślna wartość pola z poziomu interfejsu i sprawdzić, czy spowoduje to błąd.
Poniżej znajduje się przykładowy kod VBScript:
Function VBScriptRegularexpressionvlaidation(pattern , string_to_match) Set newregexp = new RegExp newregexp.Pattern = “
” newregexp.Ignorecase = True newregexp.Global = True VBScriptRegularexpressionvlaidation = newregexp.Test(string_to_match) End Function Msgbox VBScriptRegularexpressionvlaidation(pattern , string_to_match) Wynik powyższego kodu to True, jeśli wartość domyślna istnieje, lub False, jeśli tak nie jest.
Sprawdzanie unikalnej wartości można przeprowadzić dokładnie tak, jak zrobiliśmy to dla wartości domyślnych. Spróbuj wprowadzić wartości z interfejsu użytkownika, które będą naruszać tę regułę, i zobacz, czy jest wyświetlany błąd.
Kod skryptu Automation VB może być:
Function VBScriptRegularexpressionvlaidation(pattern , string_to_match) Set newregexp = new RegExp newregexp.Pattern = “
” newregexp.Ignorecase = True newregexp.Global = True VBScriptRegularexpressionvlaidation = newregexp.Test(string_to_match) End Function Msgbox VBScriptRegularexpressionvlaidation(pattern , string_to_match) DlaKlucz obcywalidacja ograniczeń wykorzystuje ładunki danych, które bezpośrednio wprowadzają dane, które naruszają ograniczenie, i sprawdzają, czy aplikacja je ogranicza, czy nie. Wraz z ładowaniem danych zaplecza wykonaj również operacje interfejsu użytkownika frontonu w sposób, który naruszy ograniczenia i sprawdź, czy wyświetlany jest odpowiedni błąd.
Działania związane z testowaniem danych
Tester bazy danych powinien skupić się na następujących czynnościach testowych:
# 1) Zapewnij mapowanie danych:
Mapowanie danych jest jednym z kluczowych aspektów bazy danych i powinno być rygorystycznie testowane przez każdego testera oprogramowania.
Upewnij się, że mapowanie między różnymi formularzami lub ekranami AUT i jego bazy danych jest nie tylko dokładne, ale także zgodne z dokumentami projektowymi (SRS / BRS) lub kodem. Zasadniczo musisz zweryfikować mapowanie między każdym polem frontonu z odpowiadającym mu polem bazy danych zaplecza.
W przypadku wszystkich operacji CRUD sprawdź, czy odpowiednie tabele i rekordy są aktualizowane, gdy użytkownik kliknie „Zapisz”, „Aktualizuj”, „Wyszukaj” lub „Usuń” w interfejsie GUI aplikacji.
Co musisz zweryfikować:
- Mapowanie tabel, mapowanie kolumn i mapowanie typów danych.
- Odwzorowanie danych wyszukiwania.
- Prawidłowa operacja CRUD jest wywoływana dla każdej akcji użytkownika w interfejsie użytkownika.
- Operacja CRUD powiodła się.
# 2) Sprawdź właściwości ACID transakcji:
Właściwości ACID transakcji DB Transactions odnoszą się do „ DO tomicity ”,„ do onsistency ”,„ ja solation ”i„ re urability ”. Prawidłowe testowanie tych czterech właściwości należy wykonać podczas testowania bazy danych. Musisz sprawdzić, czy każda pojedyncza transakcja spełnia właściwości ACID bazy danych.
Weźmy prosty przykład za pomocą poniższego kodu SQL:
CREATE TABLE acidtest (A INTEGER, B INTEGER, CHECK (A + B = 100));
Tabela testu ACID będzie miała dwie kolumny - A i B. Istnieje ograniczenie integralności, że suma wartości w A i B powinna zawsze wynosić 100.
Test atomowości zapewni, że każda transakcja przeprowadzona na tej tabeli to wszystko lub żadna, tj. żadne rekordy nie zostaną zaktualizowane, jeśli którykolwiek krok transakcji nie powiedzie się.
Test spójności zapewni, że za każdym razem, gdy wartość w kolumnie A lub B zostanie zaktualizowana, suma zawsze pozostanie 100. Nie pozwoli na wstawienie / usunięcie / aktualizację w A lub B, jeśli łączna suma będzie inna niż 100.
Test izolacji zapewni, że jeśli dwie transakcje są wykonywane w tym samym czasie i próbują zmodyfikować dane tabeli testowej ACID, wtedy te operacje są wykonywane w izolacji.
Test wytrzymałości zapewni, że po zatwierdzeniu transakcji obejmującej tę tabelę pozostanie taką, nawet w przypadku utraty zasilania, awarii lub błędów.
Ten obszar wymaga bardziej rygorystycznych, dokładnych i wnikliwych testów, jeśli aplikacja korzysta z rozproszonej bazy danych.
# 3) Zapewnij integralność danych
Weź pod uwagę, że różne moduły (tj. Ekrany lub formularze) aplikacji używają tych samych danych na różne sposoby i wykonują wszystkie operacje CRUD na danych.
W takim przypadku upewnij się, że najnowszy stan danych jest odzwierciedlany wszędzie. System musi pokazywać zaktualizowane i najnowsze wartości lub stan takich udostępnionych danych na wszystkich formularzach i ekranach. Nazywa się to integralnością danych.
Przypadki testowe do weryfikacji integralności danych bazy danych:
- Sprawdź, czy wszystkie wyzwalacze są na miejscu, aby zaktualizować rekordy tabeli odniesień.
- Sprawdź, czy w głównych kolumnach każdej tabeli znajdują się nieprawidłowe / nieprawidłowe dane.
- Spróbuj wstawić nieprawidłowe dane w tabelach i obserwuj, czy wystąpią jakiekolwiek błędy.
- Sprawdź, co się stanie, jeśli spróbujesz wstawić dziecko przed wstawieniem jego rodzica (spróbuj bawić się kluczami głównymi i obcymi).
- Sprawdź, czy wystąpi błąd, jeśli usuniesz rekord, do którego nadal odwołują się dane w innej tabeli.
- Sprawdź, czy replikowane serwery i bazy danych są zsynchronizowane.
# 4) Zapewnij dokładność wdrożonych reguł biznesowych:
Obecnie bazy danych nie służą tylko do przechowywania rekordów. W rzeczywistości bazy danych ewoluowały w niezwykle potężne narzędzia, które zapewniają deweloperom wystarczające wsparcie w implementacji logiki biznesowej na poziomie bazy danych.
Kilka prostych przykładów zaawansowanych funkcji to „Więzy integralności”, więzy relacyjne, wyzwalacze i procedury składowane.
Tak więc, korzystając z tych i wielu innych funkcji oferowanych przez bazy danych, programiści implementują logikę biznesową na poziomie bazy danych. Tester musi upewnić się, że zaimplementowana logika biznesowa jest poprawna i działa poprawnie.
Powyższe punkty opisują cztery najważniejsze „Co robić” podczas testowania bazy danych. Przejdźmy teraz do części „Jak”.
Jak przetestować bazę danych (proces krok po kroku)
Ogólna baza danych do testowania procesów testowych nie różni się zbytnio od innych aplikacji.
Oto podstawowe kroki:
Krok 1) Przygotuj środowisko
Krok 2) Uruchom test
Krok 3) Sprawdź wynik testu
Krok 4) Sprawdź zgodnie z oczekiwanymi wynikami
Krok 5) Zgłoś ustalenia odpowiednim zainteresowanym stronomZazwyczaj do tworzenia testów używane są zapytania SQL. Najczęściej używanym poleceniem jest „Wybierz”.
Wybierz * skąd
Oprócz Select, SQL ma 3 ważne typy poleceń:
- DDL: język definicji danych
- DML: język manipulacji danymi
- DCL: język kontroli danych
Zobaczmy składnię najczęściej używanych instrukcji.
Język definicji danych Używa CREATE, ALTER, RENAME, DROP i TRUNCATE do obsługi tabel (i indeksów).
Język manipulacji danymi Zawiera oświadczenia dotyczące dodawania, aktualizowania i usuwania rekordów.
Język kontroli danych: Zajmuje się nadawaniem użytkownikom uprawnień do manipulacji i dostępu do danych. Grant i Revoke to dwie używane instrukcje.
Przyznaj składnię:
Przyznaj wybór / aktualizację
Na
Do ;Unieważnij składnię:
Cofnij wybór / aktualizację
na
od;Kilka praktycznych wskazówek
# 1) Pisz zapytania samodzielnie:
Aby dokładnie przetestować bazę danych, tester powinien mieć bardzo dobrą znajomość instrukcji SQL i DML (Data Manipulation Language). Tester powinien również znać wewnętrzną strukturę bazy danych AUT.
Możesz połączyć GUI i weryfikację danych w odpowiednich tabelach, aby uzyskać lepszy zasięg. Jeśli korzystasz z serwera SQL, możesz użyć narzędzia SQL Query Analyzer do pisania zapytań, wykonywania ich i pobierania wyników.
Jest to najlepszy i niezawodny sposób testowania bazy danych, gdy aplikacja ma mały lub średni poziom złożoności.
Jeśli aplikacja jest bardzo złożona, napisanie wszystkich wymaganych zapytań SQL może być trudne lub niemożliwe dla testera. W przypadku złożonych zapytań korzystasz z pomocy programisty. Zawsze polecam tę metodę, ponieważ daje pewność w testowaniu, a także poprawia umiejętności SQL.
# 2) Obserwuj dane w każdej tabeli:
Weryfikację danych można przeprowadzić przy użyciu wyników operacji CRUD. Można to zrobić ręcznie za pomocą interfejsu użytkownika aplikacji, jeśli znasz integrację z bazą danych. Ale może to być żmudne i uciążliwe zadanie, gdy w różnych tabelach bazy danych znajdują się ogromne dane.
W przypadku ręcznego testowania danych tester bazy danych musi posiadać dobrą znajomość struktury tabel bazy danych.
# 3) Uzyskaj zapytania od programistów:
To najprostszy sposób na przetestowanie bazy danych. Wykonaj dowolną operację CRUD z GUI i sprawdź jej wpływ, wykonując odpowiednie zapytania SQL uzyskane od programisty. Nie wymaga dobrej znajomości języka SQL ani dobrej znajomości struktury bazy danych aplikacji.
Ale tej metody należy używać ostrożnie. Co się stanie, jeśli zapytanie podane przez programistę jest semantycznie nieprawidłowe lub nie spełnia poprawnie wymagań użytkownika? Proces po prostu nie zweryfikuje danych.
# 4) Skorzystaj z narzędzi do testowania automatyzacji bazy danych:
Do procesu testowania danych dostępnych jest kilka narzędzi. Powinieneś wybrać odpowiednie narzędzie zgodnie ze swoimi potrzebami i jak najlepiej je wykorzystać.
=> Oto lista TOP narzędzi testowych DB, które powinieneś sprawdzić
Wniosek
Przy tych wszystkich cechach, czynnikach i procesach do testowania w bazie danych, rośnie zapotrzebowanie na testerów w zakresie technicznej biegłości w zakresie kluczowych koncepcji baz danych. Pomimo niektórych negatywnych przekonań, że testowanie bazy danych stwarza nowe wąskie gardła i wiąże się z dużym dodatkowym wydatkiem - jest to dziedzina testowania, która cieszy się dużym zainteresowaniem i popytem.
Sugerowana lektura = >> Co to jest testowanie bezpieczeństwa bazy danych
Mam nadzieję, że ten samouczek pomógł skupić się na tym, dlaczego tak jest, a także dostarczył podstawowych informacji na temat testowania bazy danych.
Przekaż nam swoją opinię, a także podziel się swoimi osobistymi doświadczeniami, jeśli pracujesz nad testowaniem bazy danych.
rekomendowane lektury
- Testowanie bazy danych za pomocą narzędzia JMeter
- Ponad 40 najlepszych narzędzi do testowania baz danych - popularne rozwiązania do testowania danych
- Proste podejście do testów XML w bazach danych
- Samouczek dotyczący testowania hurtowni danych ETL (kompletny przewodnik)
- Samouczek dotyczący testowania migracji danych: kompletny przewodnik
- 10 najlepszych narzędzi do projektowania baz danych do tworzenia złożonych modeli danych
- Samouczek dotyczący testowania hurtowni danych z przykładami | Przewodnik po testach ETL
- Jak przetestować bazę danych Oracle
^
- Zapytanie SQL DESC