Middle
Jaké testovací případy lze vyvinout pro testování databází?
sobes.tech AI
Odpověď od AI
Testování struktury databáze, včetně schémat, tabulek, indexů, omezení (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, NOT NULL).
Testování dat:
- Kontrola správnosti dat po operacích: INSERT, UPDATE, DELETE.
- Kontrola souladu dat s obchodní logikou.
- Testování integrity dat při současných operacích (konkurenční přístup).
- Testování importu/exportu dat.
- Testování migrace dat.
Testování uložených procedur, funkcí a triggerů:
- Testování vstupních parametrů a výstupních výsledků.
- Testování zpracování chyb a výjimek.
- Testování vlivu na data v tabulkách.
- Testování výkonu.
Testování výkonu a zátěže:
- Testování doby provádění dotazů (SELECT).
- Testování rychlosti operací modifikace dat (INSERT, UPDATE, DELETE).
- Testování chování databáze pod vysokou zátěží.
- Testování škálovatelnosti.
Testování bezpečnosti:
- Testování oprávnění uživatelů.
- Testování zranitelností SQL injection.
- Testování auditu a logování.
Regresní testování po změnách schématu databáze nebo kódu.
Testování zálohování a obnovy dat.
Příklady případů pro kontrolu omezení:
| ID | Název případu | Kroky | Očekávaný výsledek |
|---|---|---|---|
| 1 | Kontrola PRIMARY KEY - duplicitní hodnota | Pokus vložit novou záznam s ID, který již existuje v tabulce. | Systém by měl hlásit chybu o porušení unikátnosti PRIMARY KEY. |
| 2 | Kontrola FOREIGN KEY - odkaz na neexistující záznam | Pokus vložit záznam do závislé tabulky, který odkazuje na ID, jež neexistuje v rodičovské tabulce. | Systém by měl hlásit chybu o porušení integrity cizího klíče. |
| 3 | Kontrola NOT NULL - vložení NULL | Pokus vložit záznam do tabulky s NULL v poli označeném jako NOT NULL. | Systém by měl hlásit chybu o porušení omezení NOT NULL. |
| 4 | Kontrola CHECK - nesprávná hodnota | Pokus vložit / aktualizovat záznam s hodnotou, která nesplňuje CHECK omezení (například záporná věk). | Systém by měl hlásit chybu o porušení CHECK omezení. |
Příklad SQL dotazu pro testování zranitelností:
-- Kontrola možnosti SQL injection v poli přihlášení
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';
Příklad dotazu pro testování výkonu:
-- Měření doby provedení složitého SELECT dotazu
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';