Middle
Aké testovacie prípady je možné vyvinúť na testovanie databáz?
sobes.tech AI
Odpoveď od AI
Testovanie štruktúry databázy vrátane schém, tabuliek, indexov, obmedzení (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, NOT NULL).
Testovanie údajov:
- Kontrola správnosti údajov po operáciách: INSERT, UPDATE, DELETE.
- Kontrola zhody údajov s obchodnou logikou.
- Testovanie integrity údajov pri súčasných operáciách (konkurentný prístup).
- Testovanie importu/exportu údajov.
- Testovanie migrácie údajov.
Testovanie uložených procedúr, funkcií a triggerov:
- Testovanie vstupných parametrov a výstupných výsledkov.
- Testovanie spracovania chýb a výnimiek.
- Testovanie vplyvu na údaje v tabuľkách.
- Testovanie výkonu.
Testovanie výkonu a záťaže:
- Testovanie času vykonávania dopytov (SELECT).
- Testovanie rýchlosti operácií modifikácie údajov (INSERT, UPDATE, DELETE).
- Testovanie správania databázy pod vysokou záťažou.
- Testovanie škálovateľnosti.
Testovanie bezpečnosti:
- Testovanie práv prístupu používateľov.
- Testovanie zraniteľností SQL injekcií.
- Testovanie auditu a logovania.
Regresné testovanie po zmenách schémy databázy alebo kódu.
Testovanie zálohovania a obnovy údajov.
Príklady prípadov na kontrolu obmedzení:
| ID | Názov prípadu | Kroky | Očakávaný výsledok |
|---|---|---|---|
| 1 | Kontrola PRIMARY KEY - duplicitná hodnota | Pokus vložiť novú záznam s ID, ktorý už existuje v tabuľke. | Systém by mal hlásiť chybu o porušení jedinečnosti PRIMARY KEY. |
| 2 | Kontrola FOREIGN KEY - odkaz na neexistujúci záznam | Pokus vložiť záznam do závislej tabuľky, ktorý odkazuje na ID, ktorý neexistuje v rodičovskej tabuľke. | Systém by mal hlásiť chybu o porušení integrity cudzieho kľúča. |
| 3 | Kontrola NOT NULL - vloženie NULL | Pokus vložiť záznam do tabuľky s NULL v poli označenom ako NOT NULL. | Systém by mal hlásiť chybu o porušení obmedzenia NOT NULL. |
| 4 | Kontrola CHECK - nesprávna hodnota | Pokus vložiť / aktualizovať záznam s hodnotou, ktorá nevyhovuje CHECK obmedzeniu (napr. záporná hodnota v poli vek). | Systém by mal hlásiť chybu o porušení CHECK obmedzenia. |
Príklad SQL dotazu na testovanie zraniteľností:
-- Kontrola možnosti SQL injekcie v poli pre zadanie prihlasovacieho mena
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';
Príklad dotazu na testovanie výkonu:
-- Meranie času vykonania zložené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';