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 GitHub'a girilerek oyunun milestone başlığı altında eklenir.
  • Yapılan işlerin doğruluğu bu testler aracılığıyla kanıtlanır.
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.com adresinde 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 /login veya /bet akışı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ı
  • Milestone güncellemeleri → PR/Issue bağlantılı test sonuçları
  • Dokümantasyon → test scope, karar kayıtları, rapor linkleri
  • Gate → 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 case yazarken 'oyuncu bu butona basarsa ne olur?' değil, 'bu butona basarsa neler olabilir?' diye düşünmeliyiz."

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-case etiketi 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.

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)

Ortam & Konfig Ortam & Konfigürasyon Test verisi hazırlığı Masaüstü Doğrulama Req ↔ Res uyumu Console/Network temiz Mobil / BrowserStack Cihaz matrisi & FPS Video & log kayıtları Rapor & Yayın Öncesi QA Bug yönetimi (GitHub) & karar

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ı
Keno Selenium Test Görseli

Product Test Akışı (Selenium → K6 → JMeter → Rapor)

Selenium (UI Test) Login → Bahis akışı Negatif senaryolar K6 (Performans) API yük testi Latency & hata oranı JMeter (Stres) 1000+ kullanıcı Uzun süreli test Raporlama Dashboard & CI/CD GitHub issue açma

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.
Gelecek Hedeflerimiz