Sobes.tech
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';