Kapsam uyarısı: Bu rehber yalnızca size ait veya yazılı olarak yetkilendirilmiş QA, staging ve ön üretim ortamları içindir. Anlatılan kalıplar kendi CAPTCHA entegrasyonunuzun tanılanması, test edilmesi ve gözlemlenmesiyle sınırlıdır — üçüncü taraf siteleri ya da yetkisiz akışları kapsamaz.
Checkout formunuza bir reCAPTCHA veya Turnstile doğrulaması eklediyseniz, onu üretime taşımadan önce gerçek yük altında sınamanız gerekir. En güvenli yol nettir: üretimin bir kopyasını staging'de çalıştırın, sahte stok ve test ödeme token'larıyla besleyin ve CAPTCHA çözümünü CaptchaAI ile uçtan uca doğrulayın. Bu rehber, kendi checkout akışınızdaki CAPTCHA entegrasyonunu üçüncü taraf mağazalara ya da gerçek ödemelere hiç dokunmadan nasıl test edeceğinizi adım adım gösterir.
Kapsam: yalnızca kendi ortamınız
- Yalnızca size ait veya yetkilendirilmiş e-commerce QA çalışmaları.
- Staging'de checkout entegrasyon testleri.
- Kendi checkout formlarınızda CAPTCHA smoke testleri.
- Sahte stok, sahte ürünler ve test ödeme token'ları.
- Dahili endpoint'lerde oturum sürekliliği testleri.
- Gerçek satın alma yok; üçüncü taraf mağaza yok.
Türkiye'de çalışan bir ekipseniz test verilerinizi de KVKK kapsamında değerlendirin: staging ortamında gerçek müşteri kaydı yerine sahte kayıtlar ve tr-TR biçiminde kukla veriler (+90 telefon, Europe/Istanbul zaman dilimi) kullanın. Böylece ne kişisel veri işlemiş olursunuz ne de üretim verisini test trafiğine açarsınız.
Staging checkout ortamını üretime yakın kurun
Testin anlamlı olması için staging ortamı üretimi olabildiğince birebir kopyalamalıdır. Checkout ön yüzünü ve sipariş arka ucunu https://staging.example.com/checkout-test altında ayağa kaldırın. Sahte SKU içeren ayrı bir veritabanı replikası kullanın ve ödeme ağ geçidini sandbox modunda yapılandırın. Her CAPTCHA türü için — reCAPTCHA v2, reCAPTCHA v3 ve Turnstile — staging'e ait test sitekey'lerini tanımlayın ki çözüm davranışı üretime yakın olsun.
Sahte SKU ve test ödeme token'ları tanımlayın
Testlerin belirlenimci olması için sabit bir sahte ürün kataloğu ve tek bir test ödeme token'ı tanımlayın. Gerçek fiyat ya da gerçek kart bilgisi asla girmeyin; tüm değerler staging'e özgü kukla verilerdir.
FAKE_PRODUCTS = [
{'sku': 'QA-SKU-001', 'price_cents': 9900, 'stock': 1000},
{'sku': 'QA-SKU-002', 'price_cents': 19900, 'stock': 500},
]
FAKE_PAYMENT_TOKEN = 'qa_pm_token_demo'
STAGING_CHECKOUT = 'https://staging.example.com/checkout-test'
CaptchaAI'ye QA görevi gönderin
CAPTCHA çözümünü CaptchaAI API'sine devredin. Aşağıdaki akış, staging checkout sayfanızdaki Turnstile widget'ı için bir görev oluşturur; in.php görevi başlatır, res.php sonucu verir ve ikisi arasında beş saniyelik aralıklarla periyodik sorgulama yaparak token'ı döndürür.
import os, time, requests
API_KEY = os.environ['CAPTCHAAI_API_KEY']
SITEKEY = os.environ['QA_TURNSTILE_SITEKEY']
def solve_turnstile():
r = requests.post('https://ocr.captchaai.com/in.php', data={
'key': API_KEY,
'method': 'turnstile',
'sitekey': SITEKEY,
'pageurl': STAGING_CHECKOUT,
'json': 1,
}).json()
task_id = r['request']
while True:
time.sleep(5)
rr = requests.get('https://ocr.captchaai.com/res.php', params={
'key': API_KEY, 'action': 'get', 'id': task_id, 'json': 1,
}).json()
if rr['status'] == 1:
return rr['request']
Token'ı kendi checkout endpoint'inizde doğrulayın
Üretilen Turnstile token'ını dahili sipariş endpoint'inize (https://staging.example.com/qa-checkout) cf-turnstile-response alanıyla gönderin. QA endpoint'i token'ı doğrular, sahte SKU'yu onaylar ve simüle edilmiş bir sipariş kimliği döndürür. Böylece CAPTCHA çözümünden sipariş onayına kadar tüm zinciri tek bir test içinde görürsünüz — üretim verisine ya da gerçek ödemeye hiç dokunmadan.
QA metriklerini ve gözlemlenebilirliği ölçün
Her QA checkout çalıştırması için şunları kaydedin: çözüm süresi (saniye), backend sonuç kodu, uçtan uca gecikme ve yeniden deneme sayısı. Kendi pipeline'ınızdan medyan, P90 ve P99 gecikmeyle birlikte başarı oranını toplayın — bu değerler yalnızca sizin staging ortamınız için gösterge niteliğindedir, mutlak bir garanti değil.
Her çalıştırma için yapılandırılmış (structured) günlükler üretin. Toplam token süresi, HTTP yanıt kodu, görev kimliği ve kuyruk derinliği gibi ölçümler panellerinizi ve uyarılarınızı besler. Geliştirme, staging ve ön üretim ortamlarını ayrı kanallara yazın; dağıtık izleme (örneğin OpenTelemetry) ile bağıntı kimliklerini eşleştirin. Tek bir bağıntı kimliğinden tüm senaryoyu yeniden oynatabilmek, bir olay sırasında tanılama süresini belirgin biçimde kısaltır.
Sık karşılaşılan sorunlar ve çözümleri
| Sorun | Önerilen çözüm |
|---|---|
| Test widget'ı sayfada bulunamıyor | Staging ortamınızdaki seçiciyi ve widget'ın yüklenme zamanlamasını kontrol edin |
CaptchaAI ERROR_NO_SLOT_AVAILABLE döndürüyor |
Dahili pipeline'da üstel geri çekilme (exponential backoff) ile yeniden deneyin |
| Backend QA token'ı reddediyor | Action ve sitekey değerlerini staging yapılandırmasıyla karşılaştırın |
| Token doğrulama zaman aşımına uğruyor | Görevi gönderdikten sonra token'ı geçerlilik süresi içinde endpoint'e iletin |
reCAPTCHA testi için minimal QA akışı
Turnstile dışında reCAPTCHA doğrulamalarını da aynı desenle sınayabilirsiniz. Aşağıdaki minimal Python örneği, kendi staging sayfanızdaki bir reCAPTCHA widget'ını CaptchaAI üzerinden çözmek için bir görev oluşturur ve sonucu alır.
import os
import requests
API_KEY = os.environ['CAPTCHAAI_KEY']
QA_PAGE_URL = os.environ['QA_PAGE_URL'] # ör. https://staging.example.com/qa-login
QA_SITE_KEY = os.environ['QA_SITE_KEY']
def submit_qa_recaptcha() -> str:
payload = {
'clientKey': API_KEY,
'task': {
'type': 'NoCaptchaTaskProxyless',
'websiteURL': QA_PAGE_URL,
'websiteKey': QA_SITE_KEY,
},
}
response = requests.post(
'https://api.captchaai.com/createTask',
json=payload,
timeout=30,
)
response.raise_for_status()
return response.json()['taskId']
def fetch_qa_result(task_id: str) -> dict:
payload = {'clientKey': API_KEY, 'taskId': task_id}
response = requests.post(
'https://api.captchaai.com/getTaskResult',
json=payload,
timeout=30,
)
response.raise_for_status()
return response.json()
QA kontrol listesi
- Kapsam kesinlikle kendi uygulamalarınız veya yetkilendirilmiş kaynaklarla sınırlı tutulur.
- CaptchaAI API anahtarı CI gizli deposunda veya kasada saklanır, kaynak kodda asla bulunmaz.
- Her çalıştırma için çağrı süresi ve yanıt kodu kayda geçirilir.
- Geçici hatalar için idempotent yeniden deneme stratejisi kuruludur.
- Testler sürekli entegrasyon ortamınızdan tekrarlanabilir biçimde çalışır.
Paralel QA çalıştırmalarını ölçeklerken eşzamanlı görev sayısı planınızın thread kapasitesine bağlıdır: küçük bir smoke test paketi için BASIC ($15/ay, 5 thread) çoğu zaman yeterlidir; yoğun regresyon koşuları için daha yüksek thread'li planları değerlendirin. Fiyatlar USD üzerinden ve thread tabanlıdır — Türk ekipler için öngörülebilir aylık maliyet, TL dalgalanmasından bağımsız planlama kolaylığı sağlar.
Sık sorulan sorular
Bu test akışı üretim trafiğine dokunur mu?
Hayır. Tüm örnekler staging.example.com ya da kendi QA alan adınız gibi yetkilendirilmiş ortamları varsayar. Üretimdeki CAPTCHA korumasını, kendi staging kopyanızda yeniden üretip test edersiniz.
CaptchaAI bu testte hangi CAPTCHA türlerini çözebilir?
reCAPTCHA v2, reCAPTCHA v3 ve Cloudflare Turnstile bu senaryoların üçünü de kapsar; GeeTest v3 de desteklenir. hCaptcha ve FunCaptcha ise şu an desteklenmiyor, dolayısıyla bu türleri test planınıza dahil etmeyin.
API anahtarımı kaynak koda gömebilir miyim?
Hayır. Anahtarı CI gizli yöneticisi, ortam değişkeni ya da kasa hizmeti üzerinden enjekte edin. Depoya işlenmiş bir anahtar derhal döndürülmelidir.
Geçici hatalar için hangi stratejiyi önerirsiniz?
Idempotent yeniden deneme kurun: üstel geri çekilme (exponential backoff — örneğin 1s, 2s, 4s) ve bir üst sınır ile. Ağ hataları, 5xx yanıtları ve ERROR_NO_SLOT_AVAILABLE için yeniden deneme uygundur; kalıcı kimlik doğrulama hataları için değildir.
İlgili rehberler
- CaptchaAI ile 5 dakikada ilk çözümünüz
- Yetkili ortamlarda CAPTCHA QA testleri
- Kendi formlarınızda CAPTCHA endpoint testleri
- Tarayıcıda başarısız ama API'de çalışan testleri ayıklama
- reCAPTCHA v2'yi API ile çözme rehberi
- Cloudflare Turnstile'ı API ile çözme rehberi
- GeeTest v3'ü API ile çözme rehberi
Checkout CAPTCHA entegrasyonunuzu kendi staging ortamınızda CaptchaAI ile uçtan uca doğrulayın.