| Termin | Definicja |
|---|---|
| Testy integralności danych | Testy integralności danych weryfikują spójność wartości i relacji między tabelami bazy. Testy integralności danych — czym są i jaki mają celTesty integralności danych służą do sprawdzenia, czy informacje przechowywane w bazie tworzą logiczną, kompletną i zgodną całość. Nie ograniczają się do odczytania pojedynczej wartości. Analizie podlega również sposób, w jaki rekordy są ze sobą powiązane, czy wymagane pola zawierają dane oraz czy zmiany wykonywane w jednym miejscu nie powodują niespójności w innym obszarze systemu. Dzięki takim testom można wykryć sytuacje, w których tabela zawiera odwołanie do nieistniejącego rekordu, status nie pasuje do daty, suma elementów nie zgadza się z wartością dokumentu albo wpis został zapisany mimo braku informacji wymaganych przez reguły aplikacji. Integralność ma kilka wymiarów. Integralność encji oznacza, że każdy rekord można jednoznacznie rozpoznać, zwykle za pomocą klucza głównego. Integralność referencyjna dotyczy zależności pomiędzy tabelami, na przykład przypisania zamówienia do istniejącego klienta. Integralność dziedzinowa określa, jakie wartości są dopuszczalne w danym polu, natomiast integralność biznesowa wynika z reguł działania konkretnego systemu. Testy powinny obejmować wszystkie te poziomy, ponieważ poprawny typ danych nie gwarantuje jeszcze zgodności z procesem. W praktyce sprawdza się zarówno stan bazy po imporcie lub migracji, jak i zachowanie systemu podczas codziennej pracy. Kontroli mogą podlegać nowe rekordy, aktualizacje, usuwanie danych, odtwarzanie kopii, synchronizacja między modułami oraz wyniki raportów. Szczególne znaczenie ma porównanie danych źródłowych z danymi po przetworzeniu, ponieważ błędy często pojawiają się dopiero po konwersji, agregacji albo zmianie struktury tabel. Testy integralności danych w kontekście relacji i mechanizmów kontroliPodstawą testów jest rozpoznanie modelu danych. Najpierw ustala się, które tabele opisują obiekty główne, a które przechowują zależności, historię lub elementy składowe. Następnie analizuje się klucze główne, klucze obce, ograniczenia unikalności, wartości domyślne oraz warunki, które nie pozwalają zapisać pustego pola. Weryfikowane jest także zachowanie relacji przy usuwaniu i aktualizacji rekordu nadrzędnego. Jeżeli po skasowaniu obiektu pozostają osierocone wpisy, może to oznaczać niewłaściwą regułę usuwania albo brak dodatkowego mechanizmu porządkującego dane. Ważne jest rozróżnienie pomiędzy kontrolą realizowaną przez samą bazę a kontrolą wykonywaną przez aplikację. Ograniczenie w tabeli może zablokować zapis wartości spoza określonego zakresu, lecz nie zawsze wykryje błąd wynikający z kolejności operacji. Z kolei aplikacja może sprawdzić, czy użytkownik ma prawo wykonać zmianę, ale przy równoczesnych zapisach nie zapewni spójności bez odpowiedniej transakcji. Dlatego testuje się zarówno pojedyncze operacje, jak i całe sekwencje zdarzeń. Przydatne jest porównanie kilku sposobów wykrywania problemów:
Testy integralności danych a typowe problemy wykrywane w bazieJednym z częstych problemów są rekordy osierocone, czyli wpisy wskazujące na obiekt, który już nie istnieje. Mogą powstać po ręcznym imporcie, niepełnym usunięciu danych albo błędnie obsłużonej synchronizacji. Innym zagrożeniem są duplikaty. Powtarzający się identyfikator zewnętrzny, adres kontaktowy lub numer dokumentu może zaburzyć raporty, naliczanie należności i wyszukiwanie historii. Testy ujawniają również rozbieżności pomiędzy polami, które powinny się wzajemnie potwierdzać. Przykładem może być dokument oznaczony jako zamknięty, mimo że zawiera pozycję bez rozliczenia, albo wpis z datą zakończenia wcześniejszą od daty rozpoczęcia. W systemach przechowujących stany magazynowe sprawdza się, czy wartość całkowita odpowiada sumie elementów oraz czy żadna operacja nie doprowadziła do nieuzasadnionego ujemnego stanu. W rejestrach zdarzeń bada się kolejność czasową, brakujące etapy i wielokrotne wykonanie tej samej operacji. Osobną grupę stanowią błędy powstające podczas przerw w zapisie. Jeżeli transakcja została wykonana tylko częściowo, jedna tabela może zostać zmieniona, a powiązana tabela pozostać bez aktualizacji. Weryfikuje się wtedy, czy operacja jest atomowa, czy po błędzie następuje wycofanie zmian oraz czy ponowienie żądania nie tworzy kolejnego duplikatu. Warto badać także równoczesne modyfikacje, ponieważ dwa procesy zapisujące ten sam rekord mogą nadpisać informacje bez widocznego komunikatu o problemie. Nieprawidłowości mogą pojawić się również po zmianie struktury bazy. Dodanie kolumny, przekształcenie formatu daty, zmiana kodowania znaków albo podział jednej tabeli na kilka nowych tabel wymaga porównania danych przed i po operacji. Sama zgodność liczby rekordów nie wystarcza. Należy sprawdzić znaczenie wartości, kompletność relacji, unikalność identyfikatorów oraz wyniki kluczowych zestawień. Testy integralności danych — praktyczne wskazówki przygotowaniaPrzygotowanie testów warto rozpocząć od spisania reguł, które dane powinny spełniać. Każda reguła powinna mieć jasno określony warunek oraz sposób raportowania naruszeń. Dobrze zdefiniowany test odpowiada na pytania: jaki zbiór jest sprawdzany, jaka sytuacja oznacza błąd, czy wynik jest powtarzalny i kto podejmuje decyzję po wykryciu niezgodności. Należy unikać kontroli, których wynik zależy od przypadkowej kolejności rekordów albo od aktualnego czasu, jeżeli nie jest to częścią sprawdzanego procesu. Przed uruchomieniem kontroli zaleca się wykonanie kopii roboczej i określenie zakresu badania. Testy na danych produkcyjnych powinny być prowadzone z zachowaniem ostrożności, szczególnie gdy narzędzie wykonuje automatyczne naprawy. Najpierw powinien powstać raport wykrytych przypadków, a dopiero potem plan korekty. Każda zmiana powinna być możliwa do prześledzenia, odwrócenia i ponownego zweryfikowania. Warto rozpocząć od kontroli prostych i niezależnych: braków kluczy, powtórzeń, niepoprawnych wartości oraz odwołań do nieistniejących rekordów. Następnie można przejść do reguł obejmujących kilka tabel i całe procesy. Dla ważnych danych przydatne jest ustalenie punktów kontrolnych, na przykład po imporcie, po zakończeniu migracji, po odtworzeniu kopii oraz po wdrożeniu zmian w formularzach. Wyniki najlepiej przechowywać w sposób pozwalający porównać bieżący stan z poprzednimi sprawdzeniami. Podczas interpretacji wyniku należy odróżnić rzeczywisty błąd od uzasadnionego wyjątku. Nie każdy brak powiązania świadczy o awarii, jeżeli model dopuszcza rekord tymczasowy. Z drugiej strony ignorowanie wyjątków bez opisania przyczyny osłabia wartość kontroli. Każde odstępstwo powinno mieć właściciela, uzasadnienie i ustalony sposób dalszego postępowania. Kiedy zgłosić testy integralności danych do serwisu komputerowegoDo serwisu warto zgłosić się wtedy, gdy pojawiają się znikające rekordy, powtarzające się wpisy, niespójne raporty, błędy po przywróceniu kopii lub problemy po aktualizacji programu. Pomoc może być potrzebna również wtedy, gdy baza działa wolno, operacje kończą się komunikatem o błędzie, a przyczyna nie jest widoczna w zwykłym interfejsie. W takiej sytuacji analizuje się stan nośnika, sposób przechowywania danych, komunikaty systemowe oraz zachowanie aplikacji, z zachowaniem zasady, aby nie pogłębiać uszkodzeń przez wielokrotne próby zapisu. Przed przekazaniem urządzenia lub danych dobrze jest przygotować opis problemu, moment jego wystąpienia, informację o ostatnich zmianach oraz dostępne komunikaty. Przydatna bywa kopia zapasowa, lecz nie należy zakładać, że każda kopia jest poprawna. Można sprawdzić datę jej utworzenia, możliwość odczytu i zgodność z oczekiwanym zakresem. Jeżeli problem dotyczy komputera używanego do pracy z bazą, kontakt z Warszawskim Pogotowiem Komputerowym 24/7 jest możliwy pod numerem +48 22 100 48 29. Testy integralności danych nie zastępują kopii zapasowych ani kontroli dostępu. Uzupełniają je, pokazując, czy informacje po zapisie, migracji, awarii lub odtworzeniu nadal zachowują właściwą strukturę i znaczenie. Regularne, udokumentowane sprawdzanie relacji oraz reguł biznesowych ułatwia wcześniejsze wykrycie problemu i ogranicza ryzyko, że niespójne dane zostaną wykorzystane w dalszych procesach. |