challenges in a/b testing mobile native apps

31
Challenges in A/B Testing Mobile Native Apps Eric Florenzano RuPy Brno 2012

Upload: eric-florenzano

Post on 30-Oct-2014

797 views

Category:

Documents


0 download

DESCRIPTION

Quick overview of A/B testing How A/B testing is done on the web today Why some (most) of these techniques fail on mobile Common gotchas in naive A/B testing implementations Minimal requirements for a mobile A/B testing system Thinking outside the box by building dynamic parameterized tests Dealing with old tests, outdated clients, etc. Interpreting the data

TRANSCRIPT

Page 1: Challenges in A/B Testing Mobile Native Apps

Challenges in A/B Testing Mobile Native Apps

Eric FlorenzanoRuPy Brno 2012

Page 2: Challenges in A/B Testing Mobile Native Apps

Why am I interested in this?

• Started a company to make iOS apps

• Ended up building A/B testing tools

• Twitter acquired our IP

• All open sourced github.com/clutchio

Page 3: Challenges in A/B Testing Mobile Native Apps

Show of hands

• Who does “web stuff?”

Page 4: Challenges in A/B Testing Mobile Native Apps

Show of hands

• Who does “web stuff?”

• Keep your hand up if you’ve done A/B testing on the web.

Page 5: Challenges in A/B Testing Mobile Native Apps

Show of hands

• Who does iOS or Android apps?

Page 6: Challenges in A/B Testing Mobile Native Apps

Show of hands

• Who does iOS or Android apps?

• Keep your hand up if you’ve done A/B testing on these apps.

Page 7: Challenges in A/B Testing Mobile Native Apps

What is A/B Testing?

• Show users different variations of your app

• Track those users and their actions

• Analyze their actions to find the most effective variation

Page 8: Challenges in A/B Testing Mobile Native Apps

Examples of A/B Tests

• Button text: do people understand “Register” better than “Sign Up”?

• On a mobile website, try replacing the e-mail field with phone number field and verify by text message.

• Does sign-up conversion go up or down if we give people more introductory reading material?

Page 9: Challenges in A/B Testing Mobile Native Apps

A/B Tests on the Web Today

• Backend determines A/B test bucket

• Front-end changes display

Page 10: Challenges in A/B Testing Mobile Native Apps

Example of A/B Test on Web

{% ab user “phone-signup” %} <input name=”phone” type=”tel” placeholder=”Phone Number” />{% else %} <input name=”email” type=”email” placeholder=”E-Mail Address”/>{% endab %}

Page 11: Challenges in A/B Testing Mobile Native Apps

Now Mobile

if(ab(user, @“phone-signup”)) { label.text = @“Phone Number”;} else { label.text = @”E-Mail Address”;}

Page 12: Challenges in A/B Testing Mobile Native Apps

However...

• How does this ab() function work on mobile?

• What can our latency be on this call?

• Can it talk to a database?

• What happens when you are offline?

Page 13: Challenges in A/B Testing Mobile Native Apps

Solution: Manifest Upfront

• Download manifest of all A/B tests on launch

• Client must be smart enough to make its own decision, immediately, offline

Page 14: Challenges in A/B Testing Mobile Native Apps

Problem: First Launch

• Manifest downloads asynchronously at launch

• What about the first launch?

• What about A/B tests on that first screen?

• One possible answer: bundle a manifest with the app. Sucks. Adds extra step to build process.

Page 15: Challenges in A/B Testing Mobile Native Apps

Goal Tracking

• How do we determine success or failure?

• When is a test completed?

Page 16: Challenges in A/B Testing Mobile Native Apps

Goal Tracking

goal_reached(user, “phone-signup”)

Page 17: Challenges in A/B Testing Mobile Native Apps

Goal Tracking

• Must have capability on frontend and backend

• Frontend example: registration page completed successfully

• Backend example: e-mail verified successfully

Page 18: Challenges in A/B Testing Mobile Native Apps

Goal Tracking Mobile Gotcha

• What happens when the phone is offline?

Page 19: Challenges in A/B Testing Mobile Native Apps

Goal Tracking on Mobile

• Store all results in a local phone database

• Upload all of the information periodically

• If possible, upload everything when the app is quit

Page 20: Challenges in A/B Testing Mobile Native Apps

Note: Complications

• May receive some data twice -- have to query to double-check first

• May receive very old data -- working set of data now very wide

• How long is too long to wait for data to come back?

Page 21: Challenges in A/B Testing Mobile Native Apps

Side-Note: User/Test Consistency

• It’s important for a user to have a consistent experience

• Once a user is placed in a test bucket, they should remain there for that session

• How long is a “session”? On mobile, a good heuristic is “forever, until they update their app.”

Page 22: Challenges in A/B Testing Mobile Native Apps

So...Minimum Requirements

• Download manifest up-front

• Make weighted random decisions offline

• Track goals and store progress in a local db

• Peg users to the same bucket during the session

• Periodically upload progress

Page 23: Challenges in A/B Testing Mobile Native Apps

Problem: Slow Release Cycle

• Each release might take weeks or even months

• A/B testing at this time scale is frustrating

• Can anything be done to improve it?

Page 24: Challenges in A/B Testing Mobile Native Apps

Solution: Parameterized Tests

• Instead of a simple boolean if-else, pass back data instead

• Now you can change the tests on the server

• Still need to think ahead, but this can add lots of flexibility

Page 25: Challenges in A/B Testing Mobile Native Apps

Parameterized Test Example

[AB test:@"login" data:^(NSDictionary *data) { btn.title = [data objectForKey:@”title”];}];

Page 26: Challenges in A/B Testing Mobile Native Apps

Note

• Remember, this decision still needs to be made instantly, and off-line

• So all of this data now becomes part of the manifest

• Data must be kept compact and can’t store e.g. a lot of binary

Page 27: Challenges in A/B Testing Mobile Native Apps

Interpreting the Data

• We care about two things:

• Which variation is winning?

• How confident are we about it?

Page 28: Challenges in A/B Testing Mobile Native Apps

Which variation is winning?

• Can easily calculate a ratio for each variation:

• How many people have seen this variation?

• How many of those people have reached the goal?

Page 29: Challenges in A/B Testing Mobile Native Apps

How confident are we about it?

• Statistics. My worst subject in school.

• Must choose a “p-value” - the higher the value, the less results you need, but lower accuracy

• Now compute a confidence interval

• I’m told the Agresti-Coull Interval is a good choice for calculating confidence interval

• Open source JavaScript ABBA library is great!

Page 30: Challenges in A/B Testing Mobile Native Apps

ABBA Examplehttp://www.thumbtack.com/labs/abba/

Page 31: Challenges in A/B Testing Mobile Native Apps

Questions?

• @ericflo on Twitter

• github.com/clutchio