Middle
Veritabanlarını test etmek için hangi test vakaları geliştirilebilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Veritabanı yapısının testleri, şemalar, tablolar, indeksler, Constraints (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, NOT NULL) dahil.
Veri testleri:
- İşlemler sonrası verilerin doğruluğunun kontrolü: INSERT, UPDATE, DELETE.
- Verilerin iş mantığıyla uyumunun kontrolü.
- Eşzamanlı işlemler sırasında veri bütünlüğü testleri.
- Veri ithalat/ihracat testleri.
- Veri göçü testleri.
Saklı prosedürler, fonksiyonlar ve tetikleyiciler için testler:
- Giriş parametreleri ve çıkış sonuçlarının test edilmesi.
- Hata ve istisna işlemenin test edilmesi.
- Tablo verileri üzerindeki etkilerin test edilmesi.
- Performans testleri.
Performans ve yük testi:
- Sorgu sürelerinin test edilmesi (SELECT).
- Veri değiştirme işlemlerinin hızının test edilmesi (INSERT, UPDATE, DELETE).
- Yük altında veritabanı davranışının test edilmesi.
- Ölçeklenebilirlik testleri.
Güvenlik testi:
- Kullanıcı erişim izinlerinin test edilmesi.
- SQL enjeksiyon açıklarının test edilmesi.
- Denetim ve kayıt işlemlerinin test edilmesi.
Veritabanı şeması veya kodda yapılan değişikliklerden sonra regresyon testi.
Yedekleme ve veri kurtarma testleri.
Constraints kontrolü için örnek vakalar:
| ID | Vaka Adı | Adımlar | Beklenen Sonuç |
|---|---|---|---|
| 1 | PRIMARY KEY - değer tekrarını kontrolü | Tabloya yeni bir kayıt eklemeye çalışmak, ID zaten mevcut ise. | Sistem, PRIMARY KEY benzersizliği ihlaline ilişkin hata vermeli. |
| 2 | FOREIGN KEY - var olmayan kayda referans | Bağımlı tabloya, ana tabloda olmayan bir ID'ye referans eden kayıt ekmeye çalışmak. | Sistem, dış anahtar bütünlüğü ihlali hatası vermeli. |
| 3 | NOT NULL - NULL ekleme | NOT NULL olarak işaretlenmiş bir alana NULL bırakılarak kayıt eklemeye çalışmak. | Sistem, NOT NULL kısıtlaması ihlali hatası vermeli. |
| 4 | CHECK - geçersiz değer | CHECK kısıtlamasını ihlal eden bir değerle kayıt eklemeye veya güncellemeye çalışmak (örneğin, yaş alanında negatif değer). | Sistem, CHECK kısıtlaması ihlali hatası vermeli. |
SQL enjeksiyonlarını test etmek için örnek sorgu:
-- Kullanıcı giriş alanında SQL enjeksiyonu olasılığını test et
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';
Performans testi için örnek sorgu:
-- Karmaşık bir SELECT sorgusunun çalışma süresini ölçme
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';