Database (JDBC) Step
Veritabanına doğrudan bağlanın, SQL sorguları çalıştırın. Test data setup, backend doğrulama ve cleanup işlemleri için.
Video yakında eklenecek
Database Step Nedir?
Database Step, JDBC üzerinden veritabanlarına bağlanıp SQL sorguları çalıştırmanızı sağlar. UI'dan yapılan işlemlerin backend'e doğru yansıyıp yansımadığını kontrol edebilir, test öncesi data hazırlayabilirsiniz.
MySQL
PostgreSQL
Oracle
SQL Server
Data Doğrulama
UI işlemi DB'ye yansıdı mı?
Test Data Setup
Test öncesi veri hazırla
Cleanup
Test sonrası temizlik
Ne Zaman Kullanmalısın?
Kullan ✓
- • UI'dan kayıt oluşturdun, DB'de var mı kontrol et
- • Test öncesi kullanıcı/sipariş verisi hazırla
- • Unique constraint test et (aynı email 2 kez)
- • Soft delete kontrolü (is_deleted flag)
- • Test sonrası oluşturulan veriyi temizle
- • Kompleks veri senaryoları için bulk insert
Kullanma ✗
- • API varsa ve yeterliyse (API kullan)
- • Production veritabanında (tehlikeli!)
- • Sadece UI ile test edilebilen durumlar
- • NoSQL veritabanları (MongoDB vb.)
Bağlantı Kurulumu
Project Settings → Database Connections bölümünden veritabanı bağlantılarınızı tanımlayın. Test step'lerinde bu bağlantıları seçerek kullanabilirsiniz.
JDBC Connection String Örnekleri
jdbc:mysql://hostname:3306/database_name
jdbc:postgresql://hostname:5432/database_name
jdbc:oracle:thin:@hostname:1521:SID
jdbc:sqlserver://hostname:1433;databaseName=database_name
Güvenlik: Veritabanı credentials'larını Secret tipinde Global Parameter olarak saklayın. Loglarda ve raporlarda maskelenir.
Gerçek Senaryo Örnekleri
Senaryo 1: Kullanıcı Kaydı Doğrulama
UI'dan kayıt ol, DB'de kontrol et
🎯 Kullanım Durumu: Register formunu doldurdun, "Kayıt Başarılı" mesajı geldi. Ama veritabanına gerçekten yazıldı mı?
SELECT id, email, created_at
FROM users
WHERE email = '{{test_email}}'
Sonuç 1 satır dönmeli. id değerini user_id parametresine kaydet.
Senaryo 2: Test Öncesi Data Hazırlama
Sipariş detay sayfasını test etmek için sipariş oluştur
🎯 Kullanım Durumu: "Sipariş Detay" sayfasını test edeceksin ama önce bir sipariş lazım. UI'dan sipariş vermek 15 step, DB'ye INSERT 1 step!
INSERT INTO orders (user_id, total_amount, status, created_at)
VALUES ({{user_id}}, 299.99, 'pending', NOW());
-- Son eklenen ID'yi al
SELECT LAST_INSERT_ID() as order_id;
order_id'yi kaydet, sonra {{base_url}}/orders/{{order_id}} sayfasına git.
Senaryo 3: Soft Delete Doğrulama
Silinen kayıt gerçekten soft delete mi?
🎯 Kullanım Durumu: UI'dan adresi sildin. Ama sistem soft delete kullanıyor, yani kayıt silinmemeli sadece is_deleted=1 olmalı.
SELECT id, is_deleted, deleted_at
FROM addresses
WHERE id = {{address_id}}
Beklenen Sonuç:
Senaryo 4: Duplicate Email Kontrolü
Aynı email ile 2 kayıt olmamalı
🎯 Kullanım Durumu: Zaten kayıtlı bir email ile tekrar kayıt olmaya çalışıyorsun. Sistem hata vermeli.
SELECT COUNT(*) as count FROM users WHERE email = '{{test_email}}'
-- Sonuç: count = 1 (zaten var)
Senaryo 5: Test Sonrası Cleanup
Oluşturulan test verisini temizle
🎯 Kullanım Durumu: Test sırasında oluşturulan kullanıcı ve siparişler DB'de kalmasın. Her test temiz başlasın.
-- Test kullanıcısının siparişlerini sil
DELETE FROM order_items WHERE order_id IN (
SELECT id FROM orders WHERE user_id = {{test_user_id}}
);
DELETE FROM orders WHERE user_id = {{test_user_id}};
-- Test kullanıcısını sil
DELETE FROM users WHERE id = {{test_user_id}};
Tip: Cleanup step'lerini Testcase'in Teardown bölümüne ekle. Test PASS veya FAIL olsa da çalışır.
Senaryo 6: Pagination Test için Bulk Insert
100 ürün oluştur, sayfalama test et
🎯 Kullanım Durumu: Ürün listesi pagination'ını test edeceksin. Ama test ortamında sadece 5 ürün var, 100 lazım.
-- 100 test ürünü ekle
INSERT INTO products (name, price, category_id, created_at)
SELECT
CONCAT('Test Product ', n),
ROUND(RAND() * 1000, 2),
1,
NOW()
FROM (
SELECT a.N + b.N * 10 + 1 as n
FROM (SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) a,
(SELECT 0 AS N UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4
UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) b
) numbers
WHERE n <= 100;
Sonuç İşleme
Query Sonucunu Kullanma
SELECT sorgusu sonucunda dönen veriler JSON formatında saklanır ve sonraki step'lerde kullanılabilir.
Örnek Sorgu:
SELECT id, email, status FROM users WHERE id = 123
Dönen Sonuç (JSON):
[
{
"id": 123,
"email": "user@test.com",
"status": "active"
}
]
Değerlere Erişim
| Expression | Açıklama | Sonuç |
|---|---|---|
{{db_result[0].id}} |
İlk satırın id'si | 123 |
{{db_result[0].email}} |
İlk satırın email'i | user@test.com |
{{db_result.length}} |
Toplam satır sayısı | 1 |
Row Count Assertion
{{db_result.length}} == 1
Global Parameter'a Kaydet
{{db_result[0].id}} → user_id
Sık Sorulan Sorular
Production veritabanına bağlanabilir miyim?
Kesinlikle önermiyoruz! Sadece test/staging ortamlarında kullanın. Yanlışlıkla DELETE çalıştırırsanız geri dönüşü olmaz. Read-only kullanıcı bile riskli olabilir.
Connection timeout alıyorum, ne yapmalıyım?
Veritabanı sunucusunun Agent'ın IP'sinden erişime açık olduğundan emin olun. Firewall kurallarını kontrol edin. VPN gerekiyorsa Agent'ın VPN'e bağlı olması gerekir.
Transaction kullanabilir miyim?
Her Database Step kendi connection'ını açar ve kapatır. Multi-step transaction için tüm SQL'leri tek bir step'te çalıştırın veya stored procedure kullanın.
Stored Procedure çağırabilir miyim?
Evet! CALL procedure_name(param1, param2) syntax'ı ile stored procedure'leri çağırabilirsiniz.