Backend Test Hazırlıkları
1. Backend Hazırlıkları
- Yeni geliştirilen oyunlar için backend altyapısı hazırlanır.
- Tamamlanan metodlar belirlenir.
2. Local Ortam Testleri
- API canlı teste çıkmadan önce local ortamda testler yazılır.
- Yazılan testler, metodların istenildiği şekilde çalışıp çalışmadığını kontrol eder. Aynı zamanda, oyunun geliştirme sürecinde yazılan test kodları da
- Yapılan işlerin doğruluğu bu testler aracılığıyla kanıtlanır.
GitHub'a girilerek oyunun milestone başlığı altında
eklenir.
3. Dokümantasyon Süreci
- Test ve geliştirme süreciyle paralel olarak kod dokümantasyonu hazırlanır.
- Hazırlanan dokümanlar
documents.dracofusion.comadresinde erişime sunulur.
4. Son Kontroller
- Tüm testler başarıyla geçerse canlı ortama geçiş planlanır.
- Gerekirse ek iyileştirme ve optimizasyon yapılır.
Test Süreci Akış Şeması
- Başlangıç: API endpoint’leri belirlenir.
1) Endpoint’lerin İncelenmesi (Swagger)
- Endpoint açıklamaları, request/response şemaları ve hata kodları analiz edilir.
- Giriş parametreleri, doğrulama kuralları ve gereksinimleri netleştirilir.
2) Postman’de Test Caseleri Oluşturma
- Collection ve Environment değişkenleri tanımlanır
(
{{base_url}},{{token}}vb.). - Her endpoint için pozitif/negatif ve sınır durumlarını kapsayan testler eklenir.
- Örnek istek:
{{base_url}}/v1/users?status=active
3) Testleri Çalıştırma ve Doğrulama
- HTTP durum kodu, süre ve yanıt gövdesi beklentilerle karşılaştırılır.
- JSON şema validasyonu ve alan bazlı kontroller yapılır.
- Beklenen örnek yanıt:
"success": true, "data": [{"id": 1, "name": "Keno"}]
4) Raporlama ve Otomasyon
- Geçen/kalan testler ve hata mesajları özetlenir.
- CI/CD’de otomatik çalıştırma için Newman veya pipeline entegrasyonu yapılır.
- Newman örneği:
newman run collection.json -e env.json --reporters cli,html
5) Hata Yönetimi ve Düzeltme (GitHub)
- Başarısız testler için ayrıntılı issue açılır (adımlar, beklenen/gerçek sonuç, log).
- Geliştirici düzeltme için branch açar ve PR gönderir:
feat/fix-users-endpoint-validation - Merge sonrası ilgili caseler yeniden çalıştırılır ve süreç onaylanır.
Süreç Sonu: Tüm testler başarıyla geçtiğinde akış tamamlanır.
Newman Otomasyon Testi
Test Amacı
Hazırlanan Dracofusionv3.json koleksiyonu ve
Draco-v3-env.json ortam dosyaları, her dağıtımdan sonra
platformun kararlılığını otomatik olarak doğrulamak üzere tasarlanmıştır.
Kapsam
- Kayıt işlemi
- Bakiyenin finanse edilmesi
- Bir oyunun başlatılması
- Her oyunun temel işlevlerinin test edilmesi
Çalışma Prensibi
Koleksiyon, eksiksiz bir oyuncu yaşam döngüsünü simüle eder. Böylece dağıtım sonrası sistemin bütün kritik fonksiyonları test edilmiş olur.
DC-KenoTest v0.1
Genel Tanım
DC-KenoTest v0.1, kendi geliştirdiğimiz test aracıdır ve örnek Keno oyununu kapsamlı şekilde analiz etmek amacıyla kullanılmaktadır. Test sırasında sistemden alınan veriler dört ana başlık altında değerlendirilir:
- Temel Metrikler (Core Metrics): Oyunun temel performans verileri
- Oyun Sonucu Metrikleri (Game Outcome Metrics): Oyun sonucuna ilişkin mali ve teknik veriler
- Analiz ve Anomali Metrikleri (Analytics & Anomaly Metrics): Gelişmiş analizler ve anomali tespit göstergeleri
- Seri Analizi ve Hata Yönetimi (Streak Analysis & Error Handling): Kazanma/kaybetme serilerinin takibi ve hata yönetimi
TEMEL METRİKLER
| Alan | Açıklama |
|---|---|
| timestamp | Oyunun oynandığı zaman. Kronolojik takip ve raporlama için kullanılır. |
| user | Oyunu oynayan kullanıcının adı. Kullanıcı bazlı analizleri mümkün kılar. |
| round_number | Test tur numarasını gösterir. Oyun döngülerinin takibi için kullanılır. |
| request_id | Her oyun için benzersiz kimlik. Log takibi için kullanılır. |
| bet_amount | Oyunda kullanılan bahis miktarı. Kâr/zarar hesaplamaları için gereklidir. |
| currency | Kullanılan para birimi. Çoklu para birimi raporlamasını sağlar. |
| level | Oyun seviyesi (Örn: Klasik, Zor). Seviye bazlı performans karşılaştırması için kullanılır. |
| picked_indexes | Oyuncunun seçtiği sayı indeksleri. Seçim stratejilerini değerlendirmek için kullanılır. |
| matched_numbers | Eşleşen sayılar. Kazanma oranlarını hesaplamak için kullanılır. |
| matched_count | Eşleşen sayıların adedi. Performans değerlendirmesi için önemli bir ölçü. |
| winning_numbers | Sistem tarafından çekilen sayılar. Seçilen sayılarla karşılaştırılarak doğruluk ölçülür. |
💰 OYUN SONUCU METRİKLERİ
| Alan | Açıklama |
|---|---|
| expected_payout | Oyun algoritmasına göre teorik olarak hesaplanan ödeme. |
| response_status | İsteğin başarılı mı başarısız mı olduğunu gösterir. |
| response_time_ms | API yanıt süresi (milisaniye). Gecikme ölçümü için kullanılır. |
| result | Oyun API’sinden dönen ham sonuç alanı. |
| is_win | Kullanıcının kazanıp kazanmadığını belirten mantıksal değer. |
| profit | Oyuncunun net kârı. Temel finansal gösterge. |
| payout | Brüt ödeme tutarı. Kazanıldığında dönen toplam miktar. |
| coefficient | Çarpan değeri (ödeme / bahis). |
| session_id | Oturum kimliği. Aynı oturumda oynanan oyunları gruplamak için kullanılır. |
| balance_before / balance_after | Oyun öncesi ve sonrası bakiye. Kâr tutarlılığını kontrol eder. |
| actual_diff | Hesaplanan bakiye farkı. Tutarsızlıkları tespit eder. |
| diff_match | profit ile actual_diff eşleşiyor mu kontrol eder. Anomali tespiti için faydalı. |
📈 ANALİZ VE ANOMALİ METRİKLERİ
| Alan | Açıklama |
|---|---|
| pick_quality_score | Eşleşme adedi / toplam seçim sayısı. Seçim kalitesini gösterir. |
| coefficient_category | Düşük, orta veya yüksek olarak kategorilendirilir. Çarpan dağılımını analiz eder. |
| profitability_score | Kâr / Bahis. Tur başına yatırım getirisini gösterir. |
| was_payout_high_but_profit_low | Ödeme yüksek olmasına rağmen net kârın orantısız düşük olduğu durumları işaretler. |
| repeated_from_last_pick | Bir önceki turdan tekrar eden seçim sayısı. Oyuncu alışkanlıklarını tespit eder. |
🔁 SERİ ANALİZİ
| Alan | Açıklama |
|---|---|
| win_streak | Ardışık kazanma sayısı. |
| loss_streak | Ardışık kaybetme sayısı. |
| is_streak_start | Yeni bir kazanma/kaybetme serisinin başlayıp başlamadığını belirtir. |
🔮 Gelecek Sürümler ve Yol Haritası
DC-KenoTest'in gelecek sürümlerinde, test yeteneklerini ve sistem gözlemlenebilirliğini artırmak için aşağıdaki özelliklerin eklenmesi planlanıyorum:
-
🗂️ Veritabanı Entegrasyonu
Tüm test sonuçları ve oyun verileri yapılandırılmış bir veritabanında saklanacaktır.
Geçmişe dönük izleme, sorgulanabilir test kayıtları ve uzun vadeli analiz olanağı sağlar. -
🌐 Canlı API Entegrasyonu ve İzleme
\ Sürekli API doğrulaması ve çalışma süresi izleme. -
Web Kullanıcı Arayüzü
- Canlı test oturumlarını görüntüleme
- Son performans ölçümlerinin gözden geçirilmesi
- Özel test senaryolarını tetikleme
CLI Tabanlı Yük Testi – K6
K6CLI tabanlı yük testi ozel scriptlar yazarak Oyun API'lerini performansını test etmek için kullaniyoruz.
Oyunlarda kullandığımiz backend API'leri için K6 ile çeşitli yük senaryoları hazırlıyoruz. Örneğin:
- Login endpoint'i: Aynı anda 1000 oyuncunun giriş yapması simüle edilir.
- Oyun başlatma: Yeni oyun oluşturma veya oyun durumu alma işlemleri test edilir.
- Bahis işlemleri: Oyuncuların bahis gönderme istekleri yüksek yoğunlukla test edilir.
K6 ile test süreci şu şekilde ilerliyor:
- Her oyun API’si için özel JavaScript senaryoları hazırlanır
- K6 CLI üzerinden bu scriptler çalıştırılır:
k6 run script.js - Test süresince gecikme, başarısız istek gibi metrikler izlenir
Gerçek test çıktılarından örnekler:
- Avg Response Time: 240ms
- Failure Rate: 0.3%
- Requests per Second: 100 RPS
K6 ile gerçekleştirdiğimiz bu testler sayesinde, oyunun yüksek trafik altında bile stabil çalıştığını ve beklenmedik hataların oluşmadığını doğrulayabilmektir.
Ayrıca, alınan JSON çıktılarını MongoDB'ye kaydederek görselleştirme işlemleri yapılabilir. Bu sayede test sonuçları üzerinde daha detaylı analizler yapılabilir ve zaman içindeki değişimler grafiksel olarak izlenebilir.
JMeter HTML Dashboard – Raporlar ve Özellikler
1) Genel Bakış
- Özet (Overview): Teste ait başlıklar, tarih/süre, toplam istek, hata yüzdesi, Apdex ve hızlı metrikler.
- İstatistikler (Statistics Table): Her sampler için Samples, Average, Min, Max, p90/p95/p99, Throughput, KB/sec.
- Hatalar (Errors): Hata türleri, oranları ve en çok hata veren istekler.
2) Zaman Serisi Grafikler
- Response Times Over Time: Ortalama ve yüzdelik (p90/p95/p99) yanıt sürelerinin zaman içinde değişimi.
- Active Threads Over Time: Eşzamanlı kullanıcı (thread) artış/azalış eğrisi (ramp-up doğrulaması).
- Throughput & Hits/s: Saniye başına istek/işlem; kapasite ve ölçeklenebilirlik göstergesi.
- Bytes Throughput Over Time: Gönderilen/alınan veri miktarı—ağ yükünü görselleştirir.
3) Yanıt Süresi Analizi
- Response Time Distribution: İsteklerin hangi süre bantlarında toplandığını gösterir (histogram).
- Response Time Percentiles: p50/p90/p95/p99 değerlerinin genel dağılımı; SLO/SLA karşılaştırması için kritik.
- Times vs Threads: Thread sayısı arttıkça gecikmenin nasıl değiştiğini gösterir (ölçeklenebilirlik analizi).
- Connect Time / Latency: Bağlantı kurulumu ve ilk bayta kadar gecikme; ağ/kaynak darboğazlarını işaret eder.
4) Doğrulama & Hata Ayrıntıları
- Response Codes: 2xx/4xx/5xx dağılımı; başarısızlık kökeni tespiti.
- Assertions: Başarısız doğrulamalar ve etkilediği sampler’lar.
- Top Samplers / Slowest Samples: En yavaş ve en çok hata üreten noktalar (prioritizasyon için hızlı rehber).
5) Kullanılabilirlik (Apdex)
- Apdex Score: Kullanıcı memnuniyetini gösterir. T eşiği altında “tatmin”, 4×T’ye kadar “tolere”, üzeri “memnuniyetsiz”.
- Dashboard, Apdex’i metriklerle birlikte sunarak hedef deneyim eşiğine uyumu gösterir.
6) Raporlama Kolaylıkları
- Filtreler: Sampler bazlı filtreleme (ör. sadece
/loginveya/betakışını incele). - İndirme/Paylaşım: HTML rapor klasörü statik—CI/CD’de arşivlenip ekiplerle paylaşılabilir.
- CSV/JTL Dayanağı: Tüm grafikler ham sonuç dosyasına dayanır; veri tutarlılığı kolayca doğrulanır.
OWASP ZAP – Güvenlik Açıkları Raporu
1) Genel Bakış
- Özet (Summary): Toplam uyarı sayısı, Risk (High/Medium/Low/Info) dağılımı, taranan URL sayısı.
- Site/Sayfa Kapsamı: Tarama kapsamındaki siteler, yollar ve parametreler listesi.
2) Uyarılar (Alerts) – Ana Bölüm
- Risk & Confidence: Açığın önem derecesi (High–Info) ve tespit güvenirliği.
- Rule/CWE/OWASP: İlgili kural, CWE ID ve (varsa) OWASP Top 10 referansları.
- URL & Parametre: Hangi uç nokta/parametrede görüldüğü.
- Kanıt (Evidence): Yanıttan alınan kanıt/parça (ör. hassas header, hata izi).
- Çözüm (Solution): Önerilen düzeltme/sertleştirme adımları.
- Referanslar: Harici kaynak/rehber bağlantıları.
3) Pasif vs. Aktif Tespitler
- Pasif (Passive): Trafiği değiştirmeden yapılan kontroller (güvenli header’lar, bilgi sızıntısı, TLS ayarları vb.).
- Aktif (Active): Kontrollü saldırı kalıplarıyla açık doğrulama (XSS, SQLi, Path Traversal vb.).
- Rapor, uyarı satırlarında hangi kategoriden geldiğini belirtir ve risk değerlendirmesine dahil eder.
4) Kapsam & Keşif Bilgileri
- Sites Tree: Keşfedilen dizin/sayfa yapısı; hangi alanların tarandığına dair görünürlük.
- Spider / AJAX Spider Kapsamı: Bulunan linkler, parametreli URL’ler, dinamik içerik akışları.
5) Rapor Görünümleri
- By Risk: Yüksekten düşüğe kritiklerin listesi; önceliklendirme için idealdir.
- By Alert Type/Rule: Aynı tip açıkların gruplanması (örn. “Cross-Domain Misconfiguration”).
- By URL: Sayfa/endpoint bazında tüm uyarıların toplanmış hali.
- Trend/Run Karşılaştırma (dış araçlarla): ZAP çıktı formatı sayesinde eski–yeni raporların kıyaslanması.
6) Kullanışlı Özellikler
- Filtreleme & Etiketleme: Risk seviyesine, kurala veya URL’ye göre filtreleme.
- False Positive Yönetimi: İlgisiz/gürültülü uyarıların işaretlenmesi veya bastırılması (ignore).
- Çıktı Formatları: HTML (görsel rapor), JSON/XML (entegrasyon), SARIF (kod tarama ekosistemi) gibi formatlara aktarım.
- Auth/Context Bilgisi (raporda yansır): Yetkili oturum kapsamındaki uç noktalar ve bulguların ayrımı.
7) Önceliklendirme İpuçları
- High Risk + High Confidence bulgular ilk sırada ele alınmalı.
- Kimlik doğrulamalı akışlardaki (session, ödeme) açıklar ürün riskine göre öne çekilmeli.
- Aynı tip uyarılar URL bazında kümelenip kök neden analizi yapılmalı (ortak middleware, header politikası vb.).
Süreç Haritası (Dev → Test → Release)
Akışın Ana Adımları
- Backend Hazırlıkları → metod/endpoint tanımı, şema & sözleşmeler
- Local Testler → Postman/Newman, birim & entegrasyon testleri
- Milestone Takibi (GitHub) → test kodları & işlerin doğrulanması
- Performans Testleri → K6 (CLI), JMeter (HTML Dashboard)
- Güvenlik → OWASP ZAP raporları (Risk & Evidence)
- Dokümantasyon → documents.dracofusion.com
- Release Öncesi QA Onayı → checklist & SLO eşikleri
- Canlı İzleme → smoke & regresyon, metrik takibi
Kontrol Durakları
Milestonegüncellemeleri → PR/Issue bağlantılı test sonuçlarıDokümantasyon→ test scope, karar kayıtları, rapor linkleriGate→ p95 latency, error %, High risk security = “geç/kal”
KPI & Hedefler
Son Test Durumu: Stabil
| Test Türü | KPI | Hedef | Son Ölçüm | Durum |
|---|---|---|---|---|
| Performans (JMeter) | p95 Response Time | ≤ 300 ms | 240 ms | ✅ |
| Yük (K6) | Requests/sec | ≥ 80 | 100 | ✅ |
| Genel | Failure Rate | ≤ 1% | 0.3% | ✅ |
| Güvenlik (ZAP) | High Risk Açık | 0 | 0 | ✅ |
Notlar
- p95/p99 yüzdelikleri karşılaştırmasında baz alındı.
- Hedefler milestone bazlı olarak yeniden kalibre edilebilir.
Test Çeşitliliği (Araçlar & Amaçlar)
Performans
(JMeter)
İşlem
Hacmi / İşlem Kapasitesi, p95/p99, hata
oranı
Yük
(K6)
RPS, VU,
senaryo esnekliği
Güvenlik
(ZAP)
Fonksiyonel
(Postman/Newman)
API doğrulama, regresyon
Milestone/PR
Entegrasyon
Issue/PR-test bağı
Dokümantasyon
Karar kayıtları, rapor
linkleri
Test Case Hazırlık Aşamaları
Her bir test case, oyunun belirli bir özelliğini ya da işlevini doğrulamak için hazırlanır. Aşamalar:
- Kullanıcı senaryolarının çıkarılması
- Pozitif ve negatif senaryoların yazılması
- Edge case’lerin belirlenmesi
- Acceptance Criteria (kabul kriterleri) tanımlanması
Test Türleri ve Hedefleri
Oyun testinde uygulanan başlıca test türleri şunlardır:
- Fonksiyonel Testler: Oyunun beklenen şekilde çalışıp çalışmadığını kontrol eder.
- Regresyon Testleri: Yeni değişikliklerin eski özellikleri bozup bozmadığını test eder.
- Kullanılabilirlik Testleri: Oyunun kullanıcı dostu olup olmadığını değerlendirir.
- Performans Testleri: Sistem kaynaklarını nasıl kullandığını ve yük altında nasıl davrandığını ölçer.
- Güvenlik Testleri: Oyunun dış saldırılara karşı dayanıklılığını kontrol eder.
Test Yönetimi & Takibi
Test case’lerin takibi hem manuel hem de dijital araçlarla yapılır:
- Excel: Her test case için kategori, test adımı, açıklama ve beklenen sonuç alanları oluşturulur.
- GitHub:
- İlgili issue’lara
status: test-caseetiketi verilerek test süreci takip edilir. - Bulunan hatalar gerekli kişilere bildirilir.
- Hatalar, ilgili issue olarak bug etiketiyle açılır.
- Gerekirse hata detayına ekran görüntüsü, log çıktısı ve tekrar adımları eklenir.
- İlgili issue’lara
Dökümantasyon & Raporlama Araçları:
- Google Sheets: Manuel test case dokümantasyonu
- Google Drive: Paylaşımlı doküman saklama ve paylaşma
- Excel: Test senaryoları, sonuçlar ve CSV çıktıları
Bu sistemli yapı sayesinde test süreçleri tekrarlanabilir, denetlenebilir ve ekipler arasında şeffaf bir iletişim kurulmuş olur.
Keno Oyunu - Test Ortamının Hazırlanması
- Localhost üzerinden masaüstü testleri:
- Chrome DevTools: API ve network log inceleme
- Browser Console: Hata log takibi
- JSON Viewer: API çıktısı okunabilirliği
- Backend’den gelen response parametreleri ile oyundan gönderilen request verilerinin uyum kontrolü
- Oyun içi event tetiklenmelerinin doğru API çağrılarını başlatıp başlatmadığı
- Edge case durumlarında (ör. geçersiz kullanıcı ID, zaman aşımı) backend cevaplarının doğruluğu
- Gerçek cihaz testleri: Mobil ve tablet üzerinde kullanıcı deneyimi, gecikme süreleri, grafik hataları ve dokunmatik hassasiyet testleri
- GitHub Süreç Entegrasyonu:
- Bulunan hatalar ilgili kişilere bildirilir
- Her hata için GitHub üzerinde “bug” etiketi ile ilgili issue açılır
- Issue içerisine ekran görüntüsü, log dosyası ve hata tekrarlama adımları eklenir
- Test tamamlandığında ilgili issue kapatılarak süreç sonlandırılır
BrowserStack ile Çoklu Platform Testleri
Test Sürecinde BrowserStack Kullanımı
Oyun geliştirme sürecinde, tarayıcı ve cihaz çeşitliliğini test edebilmek için BrowserStack kullanıyoruz. Bu sayede gerçek cihazlar, farklı tarayıcı sürümleri ve işletim sistemleri üzerinde senaryolarımızı çalıştırabiliyoruz.
Dikkat Ettiğimiz Noktalar
- UI/UX Uyum Kontrolü: Ekran boyutlarına göre arayüz bozulmalarının tespiti
- Fonksiyonel Doğrulama: Buton, menü, form ve animasyonların farklı cihazlarda aynı şekilde çalışması
- Performans Ölçümü: Yüklenme süreleri, FPS değerleri ve gecikme analizleri
- Responsive Davranış: Mobil, tablet ve masaüstünde tutarlı görünüm
- Çoklu Tarayıcı Testleri: Chrome, Firefox, Safari ve Edge gibi yaygın tarayıcılarda doğrulama
Avantajlar
BrowserStack ile manuel ve otomasyon testlerini entegre çalıştırabiliyor, hataları cihaz-tarayıcı kombinasyonuna göre hızlıca izole edebiliyoruz. Bu, canlıya çıkmadan önce riskleri minimuma indiriyor.
Prep Akışı (Dev → Test → Rapor → Release)
Selenium Test – Keno Masaüstü Oyunu
- Test Amacı: Keno oyununun masaüstü sürümünü otomatik kontrol etmek
- Senaryolar:
- Login → Oyun giriş kontrolü
- Sayı seçimi ve bahis miktarı doğrulaması
- Oyun sonucu: Kazanma / Kaybetme
- Araç: Selenium WebDriver (Python)
- Beklenen Çıktı: Oyun akışının hatasız ve stabil çalışması
Product Test Akışı (Selenium → K6 → JMeter → Rapor)
Gelecek Hedeflerimiz & Planlarımız
-
Yeni Oyunlara Özel Test Tool’ları
Okey, 101, Tavla, Slot için Python tabanlı mini test araçları geliştirme. -
Okey & 101
Masa kurma, taş dağılımı, otomatik hamle doğrulama. -
Tavla
Zar RNG doğrulama, hamle validasyonu ve bot vs bot simülasyon. -
Slot
Spin simülatörü, free spin/jackpot analizi. -
Appium
Mobil uygulamalar için otomasyon framework’ü Hem native (Android / iOS), hem de hybrid (webview içerikli), hem de mobil web uygulamalarını test edebilir.