Manual SQL Database Testi
1. Giriş
Section titled “1. Giriş”Database Testing Nedir?
Section titled “Database Testing Nedir?”Database Testing, uygulamanın veri tabanı katmanındaki işlemlerin (ekleme, güncelleme, silme, sorgulama) doğru çalışıp çalışmadığını doğrulama sürecidir.
Amaç, verilerin bütünlüğünü, tutarlılığını ve doğruluğunu sağlamaktır.
Manual SQL Testing Nedir?
Section titled “Manual SQL Testing Nedir?”Manual SQL Testing, test senaryolarının SQL sorguları ile manuel olarak yürütülmesidir.
Genellikle veritabanı istemcileri (örnek: MySQL Workbench, pgAdmin, SQL Server Management Studio, DBeaver) kullanılır.
2. Test Ortamı ve Gereksinimler
Section titled “2. Test Ortamı ve Gereksinimler”| Gereksinim | Açıklama |
|---|---|
| Veritabanı Türü | MySQL / PostgreSQL / Oracle / SQL Server |
| Bağlantı Aracı | DBeaver, MySQL Workbench veya benzeri |
| Bağlantı Bilgileri | Host, Port, Username, Password, Database Name |
| Amaç | CRUD (Create, Read, Update, Delete) işlemlerini test etmek |
3. Temel SQL Komutları
Section titled “3. Temel SQL Komutları”| İşlem | SQL Komutu | Açıklama |
|---|---|---|
| CREATE | INSERT INTO employees VALUES (...); | Yeni kayıt ekleme |
| READ | SELECT * FROM employees; | Kayıtları okuma |
| UPDATE | UPDATE employees SET salary = 5000 WHERE id = 1; | Kayıt güncelleme |
| DELETE | DELETE FROM employees WHERE id = 1; | Kayıt silme |
4. Test Senaryosu Şablonu
Section titled “4. Test Senaryosu Şablonu”| Test ID | Senaryo | SQL Komutu | Beklenen Sonuç | Gerçek Sonuç | Durum |
|---|---|---|---|---|---|
| TC001 | Yeni çalışan ekle | INSERT INTO employees ... | 1 satır eklendi | 1 satır eklendi | PASS |
| TC002 | Tüm çalışanları getir | SELECT * FROM employees | Kayıt listesi dönmeli | Döndü | PASS |
| TC003 | Maaş güncelle | UPDATE employees SET salary=6000 WHERE id=2 | 1 satır güncellendi | 1 satır güncellendi | PASS |
| TC004 | Çalışan sil | DELETE FROM employees WHERE id=3 | 1 satır silindi | 1 satır silindi | PASS |
5. CRUD İşlemleri Örnekleri
Section titled “5. CRUD İşlemleri Örnekleri”🔹 1. CREATE (INSERT)
Section titled “🔹 1. CREATE (INSERT)”INSERT INTO employees (id, name, job, salary)VALUES (1, 'Mehmet Simsek', 'QA Engineer', 5500);✅ Beklenen Sonuç:
Kayıt başarıyla eklendi (1 row affected).
🔹 2. READ (SELECT)
Section titled “🔹 2. READ (SELECT)”SELECT * FROM employees WHERE job = 'QA Engineer';✅ Beklenen Sonuç:
QA Engineer olan çalışanlar listelenmeli.
🔹 3. UPDATE
Section titled “🔹 3. UPDATE”UPDATE employeesSET salary = 7000WHERE id = 1;✅ Beklenen Sonuç:
1 kayıt güncellenmeli, salary sütunu 7000 olmalı.
🔹 4. DELETE
Section titled “🔹 4. DELETE”DELETE FROM employees WHERE id = 1;✅ Beklenen Sonuç:
Kayıt silinmeli (1 row affected).
6. Veri Doğrulama (Validation Testleri)
Section titled “6. Veri Doğrulama (Validation Testleri)”| Test Türü | Açıklama | Örnek SQL |
|---|---|---|
| Veri Doğruluğu | Veri doğru mu girilmiş? | SELECT COUNT(*) FROM employees WHERE name IS NULL; |
| Veri Tutarlılığı | ID veya foreign key ilişkileri doğru mu? | SELECT * FROM orders WHERE customer_id NOT IN (SELECT id FROM customers); |
| Veri Güncelliği | Güncelleme sonrası veri doğru mu? | SELECT salary FROM employees WHERE id=2; |
| Performans | Sorgu süresi < 2sn mi? | EXPLAIN SELECT * FROM employees; |
7. Negative Test Senaryoları
Section titled “7. Negative Test Senaryoları”| Test ID | Senaryo | SQL Komutu | Beklenen Sonuç |
|---|---|---|---|
| TC005 | Eksik sütunla insert | INSERT INTO employees (name) VALUES ('Ali'); | Hata döndürmeli |
| TC006 | Yanlış tablo adı | SELECT * FROM employeess; | Tablo bulunamadı hatası |
| TC007 | Yanlış veri tipi | INSERT INTO employees (salary) VALUES ('ABC'); | Veri tipi hatası |
| TC008 | Foreign key ihlali | INSERT INTO orders (customer_id) VALUES (999); | Foreign key constraint hatası |
8. Veri Bütünlüğü Kontrolleri
Section titled “8. Veri Bütünlüğü Kontrolleri”-
Primary Key benzersiz olmalı
SELECT id, COUNT(*) FROM employees GROUP BY id HAVING COUNT(*) > 1; -
Foreign Key ilişkisi sağlanmalı
SELECT * FROM orders WHERE customer_id NOT IN (SELECT id FROM customers); -
NULL Alanlar kontrol edilmeli
SELECT * FROM employees WHERE name IS NULL;
9. Test Raporlama
Section titled “9. Test Raporlama”| Test ID | Sonuç | Not |
|---|---|---|
| TC001 | PASS | Kayıt başarıyla eklendi |
| TC002 | PASS | 10 kayıt döndü |
| TC003 | PASS | Maaş güncellendi |
| TC004 | PASS | Kayıt silindi |
| TC005 | FAIL | Hata doğru şekilde döndü |
10. Sonuç
Section titled “10. Sonuç”Manual SQL testing, API ve UI testleri kadar önemlidir.
Veritabanındaki hatalar genellikle kullanıcı arayüzünden görünmez, bu nedenle doğrudan SQL testleri yapılmalıdır.