Enhancing User Experience with Dynamic A/B Testing

Oguz Ozsoy
Trendyol Tech
Published in
6 min readDec 13, 2023

--

Mobile applications have become an integral part of our daily lives, offering a diverse range of services and experiences to users. For mobile application developers, optimizing the user experience is an ongoing journey, and A/B testing is a powerful tool in achieving this goal. In the Dolap Application, we always use the A/B tests to measure the conversion rate with the data-driven approach and enhance user experience.

However, the traditional approach — updating mobile applications for each A/B test — was time-consuming. To address this challenge we devised a solution and have called it the Dynamic A/B test.

In this article, we will dive into the dynamic A/B test development, exploring its benefits and how it revolutionizes how we optimize the Dolap Application.

A/B Testing

A/B testing, also known as split testing, is a method used to compare two versions of a webpage or mobile application to determine which one performs better. It helps us make data-driven decisions to improve user engagement, retention and conversion rates. Especially for e-commerce application developers, implementing A/B testing can be a game-changer in understanding user behaviour and suggesting them to the correct products.

Dynamic A/B Testing

Dynamic A/B testing is an A/B testing system that allows us to launch an A/B test anytime without needing any client development. Using dynamic A/B testing, we can create A/B tests without waiting for users to download the new version of the application.

Of course, it is not possible to use a dynamic A/B test approach for all A/B tests but it is very useful for dynamic pages, dynamic contents and product suggestions sent by the providers.

How do we handle A/B tests?

First of all, I would like to say that we don’t use any 3rd party tool for A/B tests and we assign A or B values to the user in the client not in the server. We fetch configurations from the server and the client handles the rest.

Here is the flow chart of our A/B structure.

Dolap Application A/B test flow
  1. We define 3 variables on the server for each A/B test
    abTestName_Enabled (Boolean): To check A/B test is enabled or not
    abTestName_A (Integer): Percentage of the A users to be assigned
    abTestName_B (Integer): Percentage of the B users to be assigned
  2. We create an A/B test with abTestName in the client and add this A/B test to the local A/B test list.
  3. As shown in the flow chart above;
    A-) When the application is opened, we get the configurations from the server.
    B-) For each element in the Local A/B test list, if a random value has not been assigned before, we assign a value between 0 and 100 and save it locally.
    C-) If A/B testing is disabled, we return the value A which is always an as-is for us and show the UI that should be displayed to the user in variant A.
    D-) If A/B testing is enabled, we compare the abTestName_A value we receive from the server with the random value we assign to the user. If this random value is greater than configuration abTestName_A, we return the value B to the user and show the UI that should be shown to the user in the B variant. If the random value is less than configuration abTestName_A we return A and show the that should be shown to the user in variant A.
    (We use abTestName_B for 3 variants or more, but that part is not the subject of this article)
    E-) If A/B testing is enabled, in the events where we measure user interactions, we send the A or B value we assign to the user and make our analysis accordingly.

How do we handle dynamic A/B tests?

Dolap Application dynamic A/B test flow
  1. We define 3 variables on the server for each A/B test
    dy_abTestName_Enabled (Boolean): To check A/B test is enabled or not
    dy_abTestName_A (Integer): Percentage of the A users to be assigned
    dy_abTestName_B (Integer): Percentage of the B users to be assigned
  2. As shown in the flow chart above;
    A-) When the application is opened, we get the configurations from the server.
    B-) We filter dynamic A/B tests from the configuration list by dynamic prefix. For each element in the filtered list, if a random value has not been assigned before, we assign a value between 0 and 100 and save it locally.
    C-) If A/B testing is disabled, we do nothing.
    D-) If A/B testing is enabled, we compare the abTestName_A value we receive from the server with the random value we assign to the user. If this random value is greater than configuration abTestName_A, we return the value B to the user and show the UI that should be shown to the user in the B variant. If the random value is less than configuration abTestName_A we return A and show the that should be shown to the user in variant A.
    (We use abTestName_B for 3 variants or more, but that part is not the subject of this article)
    E-) We send all enabled dynamic A/B testing values at the header of each request.
    F-) If A/B testing is enabled, in the events where we measure user interactions, we send the A or B value we assign to the user and make our analysis accordingly.

Use Cases

Introducing use cases where dynamic A/B testing is instrumental:

Banner A/B Test: We use many banners on the Dolap home and explore pages. These banners come from the server as an image URL and are shown to the user. No development is done on the client side for a newly designed banner. By separating users with a dynamic A/B structure, different banners can be presented to different user groups and users’ interaction with the banners can be tested.

Product Badges: We show badges such as starred products on product cards. These badges, like banners, come from the server as an image URL. Likewise, using dynamic A/B testing, we only show badges to the users in the B group and measure the user’s interaction.

Product Badges

Product Recommendation: The data science team is constantly making improvements in order to recommend the right product to the user, and these improvements need to be tested. With dynamic A/B testing, we can easily test the interactions of the products recommended to users divided into groups A and B.

Conclusion

Dolap Application is committed to enhancing user experience through dynamic A/B testing. This approach allows us to test different content and designs without waiting for app updates. It’s used in scenarios like banner designs, product badges, and product recommendations to improve user experience continuously.

At Dolap Application, we’ll keep working to provide a better experience based on user feedback and data. This user-centric approach reflects our mission to offer a more satisfying and personalized shopping experience. We look forward to introducing more innovative and user-friendly features.

Join Us

If you’re eager to be part of this exciting adventure, contribute to new projects, and add a success story, we can’t wait to have you on board!

--

--