Firebase A/B Testing for Swift iOS Project

Beyza Karadeniz
LCW Digital
Published in
5 min readFeb 20, 2023

Herkese merhabalar, bu yazımda firebase A/B test işlemini iOS projemizde swift dili ile beraber nasıl entegre edileceğini inceleyeceğiz.

Photo by Robert Anasch on Unsplash

6 Şubat 2023 tarihinde ülkemizde gerçekleşen ve doğudaki 10 ilimizi Kahramanmaraş’ın yanı sıra Adana, Gaziantep, Hatay, Malatya, Kilis, Osmaniye, Diyarbakır, Şanlıurfa ve Adıyaman’da deprem sonucu büyük hasar yaratması ve derin üzüntü bırakması sonucu birlik olup oradaki vatandaşlarımıza yardımcı olarak yaralarını sarıp hayata tutunma çabalarında yanlarında olmak istiyoruz. Bu doğrultuda Ahbap ülkemiz için bu dönemde öncü kuruluşlardan biridir ve elimizden geldiğince yardımcı olabiliriz. Tüm Türkiye’ye geçmiş olsun dileklerimle.

Neler konuşacağız?

  • A/B Nedir ? Nasıl, hangi amaçla kullanılır?
  • Firebase A/B Test kurulumu
  • A/B test iOS projede incelenmesi

A/B Test?

A/B testini, genel olarak kontrol ve alternatif olarak bilinen iki farklı varyantı olan bir deney olarak düşünebiliriz. Adından da anlaşılacağı gibi, bu deneyin iki versiyonu başlatılır ve karşılaştırılır. İki sürüm, kullanıcılarımıza rastgele atanır, böylece zamanı gelince, istatistiksel analiz kullanarak, hangi sürümün en iyi performansa sahip olduğunu ve dolayısıyla kazanan varyant olduğunu değerlendirebiliriz. Bölme söz konusu olduğunda bile, yarımlarla sınırlı değiliz, örneğin, kullanıcılarımızın %80'inin kontrol sürümünü kullanmasını ve %20'sinin alternatif sürümü kullanmasını sağlayabiliriz. Her durum farklıdır ve testi ihtiyaçlarımıza göre uyarlarız.

Şirketler birkaç nedenden dolayı teste ihtiyaç duyarlar bunlar: A/B Test ihtiyaç nedenleri?

Yeni sistemler : Uygulama ya da şirkette yeni oluşturulan ya da geliştirilen sistemler mevcuttur bunlar da testler sonucu yapı oluşturulmaya çalışılınır.

Hız ve avantaj : Günümüzde teknoloji şirketleri hızlı bir şekilde deney yapmak ve verilere dayalı kararlar almak, onu kurum içinde tutmak istemek büyük bir avantajdır.

Deneyleri kendi bünyelerinde tutmayı seçen şirketler arasında Amazon, Google, Netflix, Twitteri LinkedIn, Dropbox, Spotify, Pinterest ve daha fazlası yer alıyor.

Kullanıma hazır deneyler ve flag sistemler değimiz yapılar çoktur, küçük ve orta ölçekli şirketler genellikle bunlardan seçer.

Popüler satıcılar arasında Firebase Remote Config, LauchDarkly, Optimizely, Split.io ve birkaç seçenek daha yer almaktadır. Bu yazımda Firebase Remote Config kullanarak bir örnek inceleyeceğiz.

A/B test zorluğu ise testin sürecidir çünkü bu süreci takip edip deneylerin birbirini etkileyip etkilemediğini kontrol etmek gerekir. Büyük takımlarda işler artacağından yapılan deneyler karışabilir ve amacından sapmalar gösterebilir.

Ve akıllarda beliren en önemli sorulardan biri de deneylerin kimin koordine ettiği ekip içerisinde açıklığa kavuşturulması gereken bir konudur. En yaygın olarak veri bilimcileri ya da proje yöneticileri kurulum ile birlikte geliştiriciler ile nasıl kullanacaklarını çalışarak deneyi işlevsel hale getirilir.

A/B Test Kurulumu ve Entegrasyonu

Firebase ile A/B test entegrasyonu yapıp projemize ekleme aşamasında geçildiğinde ilk olarak Firebase konsolunda gerekli aşamaları yapacağız.

Firebase üzerinde platform farketmeksizin ortak kurulum olur ve benzer işlemler yapılır, platform kısmında Android ve iOS seçim yapılır ve projede koda aktarılır.

  • Firebase Kurulumu

Firebase platformu üzerindeki soldaki Remote Config sekmesinden deneyimizi parametre ekleyerek işleme başlanır.

A/B Test sekmesinde projemiz firebase entegre edilmiş olmalıdır çünkü buradan proje seçip işlem yapılıcaktır. A/B test seçildikten sonra alandaki Create Experiment -> Remote Config seçme işlemi yapılır.

Parameter name (key) yazılır ve ardından kaydedilir burdaki işlemi birazdan yapacağımız A/B Test tarafında oluşturacağımız experiment ile eşlecektir.

Engage altındaki A/B test sekmesinden test işlemine baslanır.

Açılan sekme üzerindeki

  • 1. adım: Projede deney amacıyla kullanılacak ismi Experiment name veriyoruz ve bu isim projemizde eşlesecektir.
  • 2. adım: Projenin hangi platformada(Android/iOS) kullanacağımız ve experiment (deneyin) ne kadar kullanacaya(user) (of eligible users will be exposed to this experiment)sunulacağı seçiliyor. Default olarak %5 veriliyor bunu %100 çekilir tüm kullanıcılara açılması amaçlanır.
  • 3. adım: Deneyin izlenme süreci için bir seçenektir genelde 1 day seçilebilir bu kısım.
  • 4. adım: Bu adımda aslında en önemli kısım, deneyin seçeneklerin belirlendiği ve yönetildiği alandır.

1 numaralı kısım Baseline, Variant A, Variant B kısım seçeneklerin belirlendiği ve bunlara göre deneyimlerin farklı yönlendirebileceğimi kısımdır.

2 numaralı kısımda value degeri ile hangi A/B test değerini yöneteceğimizi belirliyoruz.

Bu senaryomuzda sayfamızda bulunan deneyimizde butonumuzu aynı konumda bulunan, örneğin belli kullanıcılar için favori belli kullanıcılar için paylaş ikonu olması isteniyor. İşte bu durumları parameter ve value ile eşleştirerek variant yönlendiriyoruz.

4.adımı da variant isimlerini belirleyip tanımladıktan sonra alt kısımdaki Review butonu ile işlemi başlatıyoruz ardından tekrar edit kısmından aynı sekmeye gelip Publish ile yayına alınır.

  • Kod Entegrasyonu

Projemiz üzerinde entegrasyon işlemine başlıyoruz bu kısımda pod kısmında Firebase RemoteConfig kurulumu yapılır.

Kod kısmında uygulayacağımız aşamalar:

1- Firebase ile iletişimi kurmak ve testi yönetmek amacıyla manager oluşturmak

2- Experiment isimlerini okumak için enum oluşturup bütün isimleri tek bir dosyadan kontrol edeceğiz.

3- A/B test durumuna ilişkin istenilen gerek view gerekse business katmanında yapılacak işlem

İlk olarak RemoteConfigManager class oluşturarak burada gerekli methodları initialize ederek firebase ve projemiz için gerekli bağlantıyı oluşturuyoruz.

Remote Config üzerindeki experiment name ile projemizde nerede kullanacağımızı eşleştiriyoruz.

VE son adım olarak deneyin gerçekleşeceği uygun kısımda deney fonksiyonumuzu çağırıyoruz. Örneğin detay sayfamızda butonumuz belli bir konum üzerinde a/b test amacıyla paylaş ve favori olarak 2 seçenek sunup hangi durumda daha çok tercih edileceği araştırılıyor.

let value = 
HomeDetailRemoteValues.init(rawValue: RemoteConfigItem.exampleButtonTest.value)
?? .none

Örnek senaryo içerisinde sayfa içerisinde manager içerisindeki deney items degerine erişip çağırma işlemi yapacaktır.

Burada kodumuzu extension içersinde fonksiyonumuzu yazarak sayfamızda parçalıyoruz daha temiz ve okunaklı bir kod olması için. shareFavouriteButtonABTest() fonksiyonumuzuda gerekli yerde çağrılır.

HomeDetailRemoteValues içerisindeki değerler firebase içerisinde oluşturduğumuz value değerleri ile eşleşerek ilgili işlemler yapmak üzere switch seçimi içerisinde ayrılacaktır. Default durumunda mevcut işleyişteki durum devam edecektir.

Bu adımlarla A/B test için gerekli adımlar tamamlanıp proje entegresi yapılmıştır, başarılı bir şekilde izlenebilir.

BONUS

Yapılan test işlemini cihazda görüntülemek için deney içerisindeki Manage Test Devices içerisinde cihazın firebase token ekleyip ve istenilen variant seçip anında build alarak görüntüleyebilirsiniz.

**Cihaz token almak için

Önemli platformların teknoloji kaynaklarında A/B test kullanım tecrübeleri:

Twitter:

Pinterest:

Airbnb:

Linkedln:

Firebase A/B Test ile swift iOS projelerimizde nasıl kullanabileceğimize dair yazımı okuduğunuz için teşekkür ederim umarım faydalı olmuştur ve projelerinizde yardımcı olur.

--

--