Middle
Koji test slučajevi mogu biti razvijeni za testiranje baza podataka?
sobes.tech АИ
Одговор од АИ
Testiranje strukture baze podataka, uključujući šeme, tabele, indekse, ograničenja (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, NOT NULL).
Testiranje podataka:
- Provera tačnosti podataka nakon operacija: INSERT, UPDATE, DELETE.
- Provera usklađenosti podataka sa poslovnom logikom.
- Testiranje integriteta podataka tokom istovremenih operacija (konkurentni pristup).
- Testiranje uvoza/izvoza podataka.
- Testiranje migracije podataka.
Testiranje skladištenih procedura, funkcija i trigera:
- Testiranje ulaznih parametara i izlaznih rezultata.
- Testiranje obrade grešaka i izuzetaka.
- Testiranje uticaja na podatke u tabelama.
- Testiranje performansi.
Testiranje performansi i opterećenja:
- Testiranje vremena izvršenja upita (SELECT).
- Testiranje brzine operacija modifikacije podataka (INSERT, UPDATE, DELETE).
- Testiranje ponašanja baze podataka pod visokim opterećenjem.
- Testiranje skalabilnosti.
Testiranje bezbednosti:
- Testiranje prava pristupa korisnika.
- Testiranje ranjivosti na SQL injekcije.
- Testiranje audita i logovanja.
Regresiono testiranje nakon promena šeme baze podataka ili koda.
Testiranje rezervnih kopija i oporavka podataka.
Primeri slučajeva za proveru ograničenja:
| ID | Naziv slučaja | Koraci | Očekivani rezultat |
|---|---|---|---|
| 1 | Provera PRIMARY KEY - dupliranje vrednosti | Pokušaj umetanja nove evidencije sa ID-jem koji već postoji u tabeli. | Sistem treba da prikaže grešku o kršenju jedinstvenosti PRIMARY KEY. |
| 2 | Provera FOREIGN KEY - referenca na nepostojeću evidenciju | Pokušaj umetanja zapisa u zavisnu tabelu koja se odnosi na ID koji ne postoji u roditeljskoj tabeli. | Sistem treba da prikaže grešku o kršenju integriteta spoljnog ključa. |
| 3 | Provera NOT NULL - unos NULL | Pokušaj umetanja zapisa u tabelu ostavljajući NULL u polju označenom kao NOT NULL. | Sistem treba da prikaže grešku o kršenju ograničenja NOT NULL. |
| 4 | Provera CHECK - nevažeća vrednost | Pokušaj umetanja / ažuriranja zapisa sa vrednošću koja ne zadovoljava CHECK ograničenje (npr. negativna vrednost u polju starosti). | Sistem treba da prikaže grešku o kršenju CHECK ograničenja. |
Primer SQL upita za testiranje ranjivosti:
-- Provera mogućnosti SQL injekcije u polju za unos korisničkog imena
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';
Primer upita za testiranje performansi:
-- Merenje vremena izvršenja složenog SELECT upita
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';