QA ve Test Otomasyonu: Bahis Akışlarında Hata Payını Azaltmak
Üç dakika geciken bir oran beslemesi, bir derbi akşamı kasayı sessizce eritir. Kuponlar yanlış fiyattan kesilir, cashout tetik almaz, canlı destek alev alır. Aslında sorun bir bug değil; zincirde küçük bir zaman kaymasıdır. Ve pahalıdır.
Bu yazı ürün, QA, test otomasyon ve risk ekiplerine net bir yol verir: bahis akışlarında hata riskini nasıl azaltırız, nereden başlarız, hangi testler en çok para kazandırır?
Bahis akışının anatomisi: görünenden fazlası
Bahis akışı, tek bir tuş gibi görünür. Oysa sahne arkasında pek çok adım vardır ve her adımda kırılma şekli ayrıdır. Önce resmi netleştirelim, sonra kırılma noktalarını işaretleyelim.
- Pre-match: Oranlar gelir, pazar kuralları yüklenir, kotalar ayarlanır.
- In-play: Canlı oranlar akar, olaylar (gol, kart) ile fiyatlar saniye içinde güncellenir.
- Kupon: Kullanıcı seçer, sistem kuralları ve çakışmaları denetler, kuponu fiyatlar.
- Bonus/ödül: Kurallar uygular, seçimlere göre tetik verir veya engeller.
- Ödeme/KYC: Cüzdan, limitler, kimlik doğrulama, AML kontrolleri.
- Cashout: Gerçek zamanlı fiyat, limit ve risk ile onay/ret kararı.
Bozulma örnekleri net: pre-match’te yanlış pazar kuralı, in-play’de geciken feed, kuponda yanlış çarpan, bonusta suistimal penceresi, KYC’de döngü, cashout’ta eski fiyat kullanımı. Bir tanesi bile, günde binlerce kullanıcıya çarpar.
Risk kümesi ve hata taksonomisi
Hataları beş kutuya ayırmak işimizi kolaylaştırır: veri/akış, zamanlama, para, uyum, bütünlük. Her kutu için “olay gerçekleşirse maliyet ne olur?” diye sorarız. Olasılık x etki x tespit edilebilirlik ile hızlı sınıflama yapılır. Standart bir dil isterseniz, ISO/IEC/IEEE 29119 yazılım testi referans olur.
- Veri/Akış: Yanlış fiyat, eksik pazar, feed formatı kırılması.
- Zamanlama: Yüksek gecikme, saat kayması, cache gecikmesi.
- Para: Ödeme zaman aşımı, yanlış oran çarpanı, yuvarlama.
- Uyum: KYC/AML adımı kopması, yaş/doğrulama hatası.
- Bütünlük: Kupon kuralı, bonus tetik koşulu, oturum çoklanması.
Gerçek soru: Hangi hata pahalı? Canlı fiyat gecikmesi ve cashout ret/timeout ilk sıradadır. Ödeme/KYC akışındaki kırılma ikinci sıradadır. Bonus suistimali daha az sık olur, ama olduğunda yüksek kayba yol açar.
Öncelik çerçevesi: büyük resim, küçük pahalı parça
Pareto hep çalışır: hataların %20’si maliyetin %80’ini yaratır. Bu %20’yi bulmanın yolu veriye bakıp kullanıcı yolunu izlemektir: “en çok para dönen adımlar neresi?” ve “en çok temas nerededir?”
Skor kartı basit olsun: risk puanı = olasılık (1–5) x etki (1–5) x tespit edilebilirlik (1–5, ters ölçek). En yüksek skorlu ilk 10 senaryoyu otomasyona alın. Geri kalanı, duman setine ve gözlemlenebilirliğe bağlayın.
Otomasyonun yeri: piramit var ama bahis bağlamı şart
Genel kural geçerlidir: çok sayıda hızlı unit ve contract testi, sınırlı ama değerli E2E. Martin Fowler’ın test piramidi çizimi hâlâ iyi bir pusuladır. Fakat canlı bahis, akış doğası nedeniyle ekstra entegrasyon testi ister.
UI otomasyonu, davranışın kanıtıdır ama kırılgandır. Selenium ile tarayıcı sürtünmesi kaçınılmazdır; resmi belgelere bakın: Selenium WebDriver belgeleri. Daha modern seçenekler E2E için daha çeviktir: Playwright ile E2E veya Cypress E2E testi canlı kupon akışlarında daha kararlı olabilir.
Özetle: fiyat beslemesi ve ödeme API’leri için contract test; bonus kuralları için unit ve entegrasyon; kupon ve cashout için az sayıda ama iyi seçilmiş E2E. Böylece hız ve güven arasında denge kurulur.
Ortam hijyeni ve veri simülasyonu
Staging ve prod kardeş olmalı. Aynı sürüm, aynı konfig, aynı feature flag seti. Dış bağımlılıklar maket (mock/stub) ile kontrol edilmelidir. Fiyat beslemelerinde sözleşme tabanlı yaklaşımı öneririm: contract testing (Pact) ile “hangi alan ne zaman ve nasıl gelir?” netleşir.
Gerçek cihaz ve tarayıcı çeşitliliği, ince hatalar çıkarır. Saha testini ölçeklemek için BrowserStack cihaz laboratuvarı gibi hizmetler ile farklı çözünürlük, OS, tarayıcı kombinasyonlarını hızlıca tarayın. Test verisini maskeleyin, kısa ömürlü tutun, düzenli temizleyin.
Performans: pik dakika gerçeği
Derbi başlar, trafik iki katına çıkar, back-end p95 değerleri bozulur. Bu anlar için ölçü ve hedef şarttır: kupon oluşturma p95 < 800 ms, cashout onay p95 < 1200 ms gibi SLO’lar belirleyin. Çöküş noktalarını önceden bulmak için sürekli yük testi çalıştırın.
Akış bazlı yük üretimi için k6 yük testi pratik bir seçenektir. Alternatif ya da tamamlayıcı olarak Apache JMeter ile senaryolu trafik kurup “oranda hızlı salınım + kupon + cashout” zincirini aynı anda bastırabilirsiniz.
Gözlemlenebilirlik ve sentetik kuponlar
İzlemediğiniz şeyi yönetemezsiniz. SLI/SLO tanımı ile başlayın: oran tazeleme süresi, kupon onay oranı, cashout timeout oranı. Google SRE’nin SLO/SLI yaklaşımı net bir iskelet verir.
Dağıtık izlek (trace) ve metrik şart. dağıtık izleme için OpenTelemetry ile uçtan uca bir iz kurun: “feed → fiyat servisi → kupon → risk → cashout”. Üstüne, saat başı sentetik kupon robotları koyun. Erken uyarı sağlar, gerçek kullanıcıyı beklemezsiniz.
Güvenlik, bütünlük ve regülasyon
Web güvenliği boşlukları, bonus ve oturum bütünlüğünü de etkiler. Sızmalar, çifte oturum, CSRF, SSRF gibi riskleri OWASP Testing Guide ile sistemli tarayın. Bonus suistimali ve bot davranışı için kural ve hız limiti testleri kurun.
Regülatör isterleri pazara göre değişir. UK pazarında UKGC Remote Technical Standards, daha geniş bir çerçevede GLI-19 Interactive Gaming Systems yol haritası sunar. Uyum testlerini kanıt dosyası (evidence) ile iliştirin; denetimde hayat kurtarır.
CI/CD ve değişiklik yönetimi
Hızlı ve güvenli yayının temeli boru hattıdır. Çekme isteği açıldığında testler koşar, sözleşmeler doğrular, küçük bir duman E2E seti yeşil yakar. Kolay başlamak için GitHub Actions ile CI/CD akışını kurun.
Yeni özelliği “bayrak” ile açıp kapayın. Canary/blue-green ile küçük kitleye sunun. Bayraklar için açık standart seçin: OpenFeature ile feature flag standardı ekipler arası düzen sağlar. Geri alma (rollback) tek komut olmalı.
ROI: kasada kaç kuruş?
Basit formül kullanın: Hata maliyeti = (Etkilenen kupon sayısı x ortalama kupon değeri x düzeltme çarpanı) + itibar etkisi. Örneğin, canlı cashout timeout oranını %0,8 → %0,2 düşürmek, günde 10.000 cashout isteğinde, net iade ve destek maliyetini dramatik azaltır.
İzlenecek çekirdek KPI’lar: Defect Escape Rate, MTTR, Test Flakiness, p95 cashout onayı, kupon başarı oranı, SLO ihlalleri/hafta. Üç ayda bir ROI gözden geçirin; hangi test seti en çok tasarruf sağladıysa, onu genişletin.
Vaka notu: in-play cashout timeout
Belirti: Maç son 5 dakikada cashout istekleri artınca timeout yükseldi. Kök neden: fiyat servisi, olay kuyruğunda biriken mesajlar nedeniyle eski fiyatı kilitledi. Çözüm: fiyat servisinde geri basınç ayarı, cashout isteğinde “fiyat tazele” kısa yol, sentetik kupon botu ile pik simülasyonu. Sonuç: p95 onay süresi 1700 ms → 900 ms; destek talebi %35 azaldı.
Bilgilendirici tablo: akış-odaklı otomasyon planı
| Pre-match oran alma | Gecikmeli/yanlış oran | Contract test + feed simülasyonu | Pact, Kafka mock, Playwright | Oran tazeleme süresi p95, hata oranı | Yüksek |
| Kupon oluşturma | Yanlış kural validasyonu | Bileşen test + E2E duman seti | Cypress/Playwright, Jest | Başarısız kupon/1K, flakiness | Yüksek |
| Ödeme/KYC | Zaman aşımları, akış kopması | API sözleşme + entegrasyon | Postman/Newman, Pact | KYC tamamlanma oranı, MTTR | Yüksek |
| In-play cashout | Latency, eski fiyat | Sentetik kullanıcı + canary | k6, Playwright, Feature flag | Cashout onay süresi p95 | Çok yüksek |
| Bonus/Promo | Suistimal, hatalı koşul | Kural motoru unit + integ. | Jest, Testcontainers | Hatalı bonus yüzdesi | Orta |
| İzleme/Alarm | Kör noktalar | Synthetic + tracing | OpenTelemetry, Grafana | SLO ihlalleri/ay | Yüksek |
Uygulanabilir kontrol listesi
- İlk 10 riskli senaryoyu “olasılık x etki x tespit” ile seç.
- Feed ve ödeme API’leri için contract test kur.
- Kupon ve cashout için az sayıda sağlam E2E tut.
- Staging-prod paritesi ve feature flag uyumu sağla.
- Sentetik kupon botları ile saatlik sağlık taraması yap.
- SLO/SLI tanımla; dashboard ve alarm eşiği ekle.
- k6/JMeter ile pik saat senaryolarını sürekli çalıştır.
- Bonus kuralları için unit/integ. test yaz; suistimal yollarını kapat.
- OpenTelemetry trace ile uçtan uca gecikmeyi ölç.
- CI/CD’de sözleşme, duman ve güvenlik taramasını zorunlu kıl.
- Flaky testleri etiketle, karantinaya al, kök nedenini çıkar.
- Regülasyon kanıt dosyalarını (evidence) otomatik üret.
Operatör seçimi ve bağımsız incelemeler
Operatör tarafı hatalarını ve kullanıcı şikâyetlerini izlemek, test önceliğini keskinleştirir. Pazar sinyalleri için tarafsız kaynaklara bakın. Nordik pazarı izliyorsanız, bonus kuralları ve oyuncu koruması farklıdır; örneğin İsveçli oyuncular için casino bonusları gibi rehberler, kural değişimlerini ve kullanıcı beklentisini erken gösterir. Bu verileri, bonus ve KYC senaryolarınızla eşleştirip test setinizi güncelleyin.
SSS
Canlı bahislerde en kritik testler hangileridir?
Canlı oran tazeleme, kupon fiyatlama, cashout onayı ve ödeme/KYC akışı. Bu dört alan için sözleşme, entegrasyon ve sınırlı E2E birlikte çalışmalıdır.
Cashout akışında gecikmeyi nasıl ölçerim?
“İstek alındı → fiyat doğrulandı → onay/ret” izlerini tek bir trace ID ile bağlayın. p50/p95 değerlerini dashboard’a koyun. Pik dakikalarda sentetik istek üretin.
Test verisini regülasyona uyumlu nasıl yönetirim?
Gerçek veriyi maskeleyin, TTL koyun, erişimi kısıtlayın. KYC için sahte ama gerçekçi belge setleri kullanın. Silme işlemlerini CI sonrası otomatikleştirin.
Flaky testleri nasıl sönümlendiririm?
Kaynağı ayırın: çevre (zamanlama), veri (deterministik değil), araç (UI bekleme). Karantinaya alın, tekrarlı çalıştırma yerine kök nedeni düzeltin.
E2E mi, contract test mi? Hangisi ne zaman?
Kuralları ve veri sözleşmesini contract test ile koruyun. Kullanıcı yolunun kritik bir ucunu E2E ile sigorta edin: kupon oluşturma ve cashout gibi.
Mini yöntem rehberi: akışları sahada sertleştirmek
Küçük ama pahalı adımları sevin: cashout, kupon ve ödeme. Bu üç adımda “en çok kırdığı yerler” için hedef test yazın. Kalanında duman seti ile hızlı güven elde edin. Hepsi izlenebilir olsun; alarm yanlış pozitif vermesin.
Kod ve araç seçimi: pratik notlar
Playwright/Cypress ile E2E setini kısa tutun. Kritik API’ler için Pact sözleşmesi yazın. Performans için k6 senaryoları günlük koşturun. CI’de GitHub Actions ile pipeline’ı sade tutun; artefakt ve logları 14 gün saklayın.
Denetim ve regülasyon için iz bırakma
UKGC ve GLI isteklerini PR onayı ve yayın notuna bağlayın. Her değişiklikte hangi SLO riskte, hangi testler koştu, hangi kanıt üretildi, özet çıkarmak düzeni korur. Denetimde “evet” ve “işte kanıtı” beraber gelir.
Kapanış: küçük gecikme, büyük fatura
Bahis akışları, yüksek hız ve para ile çalışır. O yüzden riskli adımları otomasyonla kapatmak, parayı ve güveni korur. Yukarıdaki planla başlayın, üç hafta içinde ilk düşüşü metriklerde görün. Sonra tekrar edin.
Kaynaklar ve ileri okuma
- Test Piramidi
- Selenium WebDriver, Playwright, Cypress
- Pact Contract Testing
- SLO/SLI (Google SRE)
- OpenTelemetry
- k6, JMeter
- OWASP Testing Guide
- UKGC RTS, GLI-19
- GitHub Actions, OpenFeature
- BrowserStack, ISO/IEC/IEEE 29119