Sunucu taraflı A/B testi
Kısaca
Sunucu taraflı teslimat API'si, A/B testini kendi altyapılarına tamamen entegre etmek isteyen kurum içi geliştirme ekiplerine yöneliktir. Varyantlar, sayfa render edilip teslim edilmeden önce sunucu tarafında atanır - istemci tarafında herhangi bir JavaScript olmadan. Bu, titremeyi (flicker) ortadan kaldırır, geliştirme ekibine uygulama üzerinde tam kontrol sağlar ve klasik istemci taraflı snippet'in çalışmadığı mimarilerde test yapılmasını mümkün kılar: Headless kurulumlar, sunucu tarafında render edilen uygulamalar veya native mobil uygulamalar.
Nasıl çalışır
Varify panosunda yeni bir deney oluştur ve Server Side Experiment'i seç.
Deneyi ardından panoda bulacaksın ve buradan trafik dağılımını kontrol edip deneyi başlatabilirsin. Ayrıca entegrasyon için ihtiyacın olan Experiment ID ve Variation ID'leri de burada bulacaksın.
Entegrasyon, geliştirme ekibinin doğrudan mevcut backend mantığına entegre edeceği iki API endpoint'i üzerinden gerçekleşir.
1. Kullanıcı oluştur POST /ss/{teamId}/users
Yeni bir ziyaretçi ilk kez bir istek yaptığında, bu endpoint üzerinden bir kullanıcı oluşturulur. API bir userId (UUID) sağlar; bu, sisteminin kalıcı olarak saklaması gereken bir değerdir - örneğin bir çerezde, bir oturumda veya veritabanında. Bu ID, kullanıcıyı gelecekteki tüm istekler için tanımlar.
Yanıt örneği:
{
"userId": "a9533ef0-bbc4-47a1-90b8-2f2d3bba43a3"
}
2. Varyantı çağır GET /ss/{teamId}/experiments/{experimentId}/variations/{userId}
Kaydedilmiş userId ile - kaydedilmiş UUID'yi kullanarak belirli bir deney için atanan varyantı sorgula. Henüz bir varyant atanmadıysa, ilk çağrıda otomatik olarak atanır. Atama deterministiktir - aynı kullanıcı, endpoint kaç kez çağrılırsa çağrılsın, aynı deney için her zaman aynı varyantı alır.
Yanıt örneği (kullanıcıya bir varyant atanmış):
{
"variation": 48838,
"tracking": {
"experiment": {
"id": 32596,
"name": "Homepage CTA Test"
},
"variation": {
"id": 48838,
"name": "variation-1"
}
}
}
Yanıt örneği (kullanıcı orijinali alıyor):
{
"variation": null,
"tracking": {
"experiment": {
"id": 32596,
"name": "Homepage CTA Test"
},
"variation": {
"id": null,
"name": null
}
}
}
variation alanı ya atanan varyasyonun ID'sini (örn. 48838) içerir - bu ID'leri Varify panosunda bulabilirsin - ya da kullanıcının Orijinal varyantı görmesi gerekiyorsa null içerir. Deney bağlamına sahip tracking nesnesi her iki durumda da döndürülür.
Backend'in ardından döndürülen varyasyon ID'sini kullanarak sayfanın veya içeriğin hangi versiyonunun render edilip teslim edileceğine karar verir. Bunu yapmak için, backend mantığında her varyasyon ID'sini ilgili render varyantına eşle - null her zaman şu anlama gelir: orijinal versiyonu göster.
Deney yapılandırmasının kendisi - hedef gruplar, trafik dağılımı, başlangıç ve durdurma - Varify panosunda rahatça yönetilmeye devam edebilir.
3. Tracking kurulumu
Sunucu deneyinin panoda analiz edilebilmesini sağlamak için, GET /ss/{teamId}/experiments/{experimentId}/variations/{userId} yanıtındaki tracking bloğunun istemci tarafında entegre edilmesi gerekir:
trackingnesnesinin içeriğini değiştirmeden JSON olarak, render edilen HTML içindekitype="application/json" data-varify-tracking>-tag'ine yaz.- Varify ardından, kullanıcının onay durumunu dikkate alarak takip fonksiyonlarını otomatik olarak tetikler. Bu,
varify.js'in istemci tarafında testte hiçbir şekilde yer almadığı durumlarda da geçerlidir; bunun için manuel birwindow.varify.setTracking(true)gerekli değildir. - Bu adım atlanırsa, panoda yalnızca deney yapılandırması görünür - değerlendirme verisi görünmez, çünkü Delivery API'sinin kendisinin olay raporlama için bir endpoint'i yoktur.
Örnek işaretleme:
Kaydedilmiş userId ile - kaydedilmiş UUID'yi kullanarak belirli bir deney için atanan varyantı sorgula. Henüz bir varyant atanmadıysa, ilk çağrıda otomatik olarak atanır. Atama deterministiktir - aynı kullanıcı, endpoint kaç kez çağrılırsa çağrılsın, aynı deney için her zaman aynı varyantı alır.
Yanıt örneği (kullanıcıya bir varyant atanmış):
<script type="application/json" data-varify-tracking>
{
"experiment": {
"id": 32596,
"name": "Homepage CTA Test"
},
"variation": {
"id": 48838,
"name": "variation-1"
}
}
</script>
variation.id ve variation.name null ise (orijinal versiyon), blok yine de render edilir - Varify bunu o zaman bir orijinal oynatma olarak ele alır.
Geliştirici dokümantasyonu
Geliştirme ekibin için tüm endpoint'ler, parametreler ve hata kodlarıyla eksiksiz API referansı (OpenAPI 3.1): https://app.varify.io/ss/docs