İçeriğe geç

Manual SQL Database Testi

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, 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.


GereksinimAçıklama
Veritabanı TürüMySQL / PostgreSQL / Oracle / SQL Server
Bağlantı AracıDBeaver, MySQL Workbench veya benzeri
Bağlantı BilgileriHost, Port, Username, Password, Database Name
AmaçCRUD (Create, Read, Update, Delete) işlemlerini test etmek

İşlemSQL KomutuAçıklama
CREATEINSERT INTO employees VALUES (...);Yeni kayıt ekleme
READSELECT * FROM employees;Kayıtları okuma
UPDATEUPDATE employees SET salary = 5000 WHERE id = 1;Kayıt güncelleme
DELETEDELETE FROM employees WHERE id = 1;Kayıt silme

Test IDSenaryoSQL KomutuBeklenen SonuçGerçek SonuçDurum
TC001Yeni çalışan ekleINSERT INTO employees ...1 satır eklendi1 satır eklendiPASS
TC002Tüm çalışanları getirSELECT * FROM employeesKayıt listesi dönmeliDöndüPASS
TC003Maaş güncelleUPDATE employees SET salary=6000 WHERE id=21 satır güncellendi1 satır güncellendiPASS
TC004Çalışan silDELETE FROM employees WHERE id=31 satır silindi1 satır silindiPASS

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).

SELECT * FROM employees WHERE job = 'QA Engineer';

Beklenen Sonuç:
QA Engineer olan çalışanlar listelenmeli.

UPDATE employees
SET salary = 7000
WHERE id = 1;

Beklenen Sonuç:
1 kayıt güncellenmeli, salary sütunu 7000 olmalı.

DELETE FROM employees WHERE id = 1;

Beklenen Sonuç:
Kayıt silinmeli (1 row affected).


Test TürüAçıklamaÖrnek SQL
Veri DoğruluğuVeri 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ğiGüncelleme sonrası veri doğru mu?SELECT salary FROM employees WHERE id=2;
PerformansSorgu süresi < 2sn mi?EXPLAIN SELECT * FROM employees;

Test IDSenaryoSQL KomutuBeklenen Sonuç
TC005Eksik sütunla insertINSERT INTO employees (name) VALUES ('Ali');Hata döndürmeli
TC006Yanlış tablo adıSELECT * FROM employeess;Tablo bulunamadı hatası
TC007Yanlış veri tipiINSERT INTO employees (salary) VALUES ('ABC');Veri tipi hatası
TC008Foreign key ihlaliINSERT INTO orders (customer_id) VALUES (999);Foreign key constraint hatası

  • 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;

Test IDSonuçNot
TC001PASSKayıt başarıyla eklendi
TC002PASS10 kayıt döndü
TC003PASSMaaş güncellendi
TC004PASSKayıt silindi
TC005FAILHata doğru şekilde döndü

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.