How long does a hypothesis test for a mobile application take? Let's count:
If your developers work on Scrum with two-week iterations, it usually means that testing a hypothesis takes a full month. With other methodologies, this period can be shrunk, but only slightly.
This state of affairs makes it impossible to achieve the rhythm of “5 hypotheses per week”, which many product teams are striving for.
Below I will explain how to speed up and improve this process and point out a number of ready-made solutions that can be used.
Go.
Before you dive into the details, you need to enter an additional term - the Feature flag (Feature toggle) pattern .
For readers without a technical background, explanations may be required:
When developing a new feature, the programmer injects a “switch” in the application code that activates this feature. Typically, this solution is used to keep unfinished features in the off state in the general program code, but, of course, it can also be used to test hypotheses.
To use the Feature flag pattern in experiment verification, you will need:
The question arises, on what time is saved, if the functionality still needs to be developed before you conduct A / B tests? Let's try to sort through the stages of the experiment:
What do we see here?
First, using the Feature flag, we can upload the application to the app stores until full testing for errors. We just need to make sure that when the new functionality is turned off, the application behaves as before - and this can be done with previously written autotests. The rest can be tested while the application is distributed to users.
Secondly, after completing the experiment, you can use the Feature flag to enable / disable functionality for all users until the next version is ready, where the flag will not be used anymore.
It is on this principle that the Apptimize service works , which provides a complete A / B testing system.
To conduct an experiment, you need to do a few things:
If you do not use a ready-made solution from Apptimize, the simplest approach would be a bunch of Google Analytics for Firebase for analytics and Firebase Remote Config for specifying individual configurations (segments and tests). These tools are adapted for collaboration.
Accordingly, you need:
We discussed how to shorten the hypothesis testing cycle for mobile applications, reducing the time for testing and dissemination of the experimental results. But this approach does not allow to get rid of the time for approval and distribution of the application. The goal of “5 hypotheses per week” with this approach is still a little realistic.
To speed up the experiments, you need to be able to develop and submit new functionality without having to update the application. This can be achieved by using a dynamic user interface. However, this approach has problems:
On the one hand, there are technical restrictions on the construction of the interface on the settings received from the outside. Most mobile development frameworks use a declarative approach, where it is impossible or very difficult.
On the other hand, application store policy prohibits the loading and execution of arbitrary code, since it can be used for functionality that violates the rules of application stores.
Another limitation is the amount of data transferred from Firebase Remote Config. It cannot be used to transfer the entire interface. It is optimal to store in it only the “key” of a specific version of the interface, and when changing this code, load the interface from a third-party service. In itself, it does not limit the choice of mobile development framework, but requires additional implementation efforts.
The optimal solution is an approach in which only the user interface is dynamically built, and the business logic remains fixed. Since the vast majority of product experiments concern the interface, it is possible to maintain a high rate of work. At the same time, experiments that require the refinement of business logic can be performed in parallel, according to the process described above with flags.
Technically, this approach is easiest to implement in a framework that has the following characteristics:
Optimally, these criteria are met by the Flutter framework. As a proof-of-concept of this approach, there is a library for it that allows you to create a dynamic interface .
Using the dynamic interface created in Flutter, Google Analytics for Firebase and Firebase Remote Config, you can develop applications that are easy to test hypotheses will be comparable to web sites.
Source: https://habr.com/ru/post/445308/
All Articles