Middle
Jakie przypadki testowe można opracować do testowania baz danych?
sobes.tech AI
Odpowiedź od AI
Testowanie struktury bazy danych, w tym schematów, tabel, indeksów, ograniczeń (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, NOT NULL).
Testy danych:
- Sprawdzanie poprawności danych po operacjach: INSERT, UPDATE, DELETE.
- Sprawdzanie zgodności danych z logiką biznesową.
- Testy integralności danych podczas operacji równoczesnych.
- Testy importu/eksportu danych.
- Testy migracji danych.
Testy procedur składowanych, funkcji i triggerów:
- Testy parametrów wejściowych i wyników wyjściowych.
- Testy obsługi błędów i wyjątków.
- Testy wpływu na dane w tabelach.
- Testy wydajności.
Testy wydajności i obciążenia:
- Testy czasu wykonania zapytań (SELECT).
- Testy szybkości operacji modyfikacji danych (INSERT, UPDATE, DELETE).
- Testy zachowania bazy pod dużym obciążeniem.
- Testy skalowalności.
Testy bezpieczeństwa:
- Testy uprawnień dostępu użytkowników.
- Testy podatności na ataki SQL injection.
- Testy audytu i logowania.
Testy regresji po zmianach schematu bazy danych lub kodu.
Testy tworzenia kopii zapasowych i przywracania danych.
Przykłady przypadków do sprawdzania ograniczeń:
| ID | Nazwa przypadku | Kroki | Oczekiwany rezultat |
|---|---|---|---|
| 1 | Sprawdzenie PRIMARY KEY - duplikacja wartości | Próba wstawienia nowego rekordu z ID, które już istnieje w tabeli. | System powinien zgłosić błąd naruszenia unikalności PRIMARY KEY. |
| 2 | Sprawdzenie FOREIGN KEY - odwołanie do nieistniejącego rekordu | Próba wstawienia rekordu w tabeli zależnej od odwołania do ID, które nie istnieje w tabeli głównej. | System powinien zgłosić błąd naruszenia integralności klucza obcego. |
| 3 | Sprawdzenie NOT NULL - wstawienie NULL | Próba wstawienia rekordu do tabeli z pozostawieniem NULL w polu oznaczonym jako NOT NULL. | System powinien zgłosić błąd naruszenia ograniczenia NOT NULL. |
| 4 | Sprawdzenie CHECK - niepoprawna wartość | Próba wstawienia/aktualizacji rekordu z wartością nie spełniającą warunku CHECK (np. ujemny wiek). | System powinien zgłosić błąd naruszenia ograniczenia CHECK. |
Przykład zapytania SQL do testowania podatności:
-- Sprawdzenie możliwości ataku SQL injection w polu logowania
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';
Przykład zapytania do testowania wydajności:
-- Pomiar czasu wykonania złożonego zapytania SELECT
EXPLAIN ANALYZE SELECT o.order_id, c.customer_name, p.product_name
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
JOIN order_items oi ON o.order_id = oi.order_id
JOIN products p ON oi.product_id = p.product_id
WHERE c.country = 'USA' AND o.order_date > '2023-01-01';