Customers Choice is a AB-Test library for Android. Unlike the Amazons offer, you can use it in every productive application, configure it freely and its easily extensible. It is provided as an Open Source library that can be used within any Android project. The slides will be an introduction into the library and will present a Demo for showing the practical usage of Customers Choice.
2. About me
Hasan Hosgel
Twitter: @alosdev
Github: alosdev
Google+: Hasan Hosgel
際際滷share: hosgel
developer @ ImmobilienScout24
Page 2
moosecon 2013 | Customers Choice | Hasan Hosgel
3. Agile Scenario
The Product Owner defines following user story:
As a user I want to purchase the products on a
shopping card with a click on a button.
Page 3
moosecon 2013 | Customers Choice | Hasan Hosgel
Source: http://www.flickr.com/photos/europedistrict/4292951182/
4. First design
Page 4
moosecon 2013 | Customers Choice | Hasan Hosgel
6. User Test
page6
Source: http://www.flickr.com/photos/lwaldal/4900501706/ moosecon 2013 | Customers Choice | Hasan Hosgel
7. User Test Results
Page 7
Source: http://www.flickr.com/photos/couragextoxlive/3054488331/ moosecon 2013 | Customers Choice | Hasan Hosgel
8. What now?
Page 8
Source: http://www.flickr.com/photos/mkamp/2429091134/ moosecon 2013 | Customers Choice | Hasan Hosgel
9. What now?
What do we normally in the web?
Page 9
Source: http://www.flickr.com/photos/mkamp/2429091134/ moosecon 2013 | Customers Choice | Hasan Hosgel
10. Make an AB-Test
Page 10
Source: http://www.flickr.com/photos/8047705@N02/5366637592/ moosecon 2013 | Customers Choice | Hasan Hosgel
11. AB-Test for Android
You have an application, which is probably publicly
available.
Send an amount of users to another variant than the
normal one.
Depending on success ratio you have the best
suiting solution.
Page 11
moosecon 2013 | Customers Choice | Hasan Hosgel
12. The Development
Page 12
Source: http://www.flickr.com/photos/geminidustin/275375865/ moosecon 2013 | Customers Choice | Hasan Hosgel
13. Developers Todo List
Create switches depending on the business logic
Create a proprietary solution
Not reusable
Publish application
Waiting for the results
Remove switches and republish application
Waiting that everybody updates to the new version
Page 13
moosecon 2013 | Customers Choice | Hasan Hosgel
15. Customers Coice
A lightweight Open Source Android library making
simple AB-Tests in an application, which can be
configured over the network.
Possible AB-Tests variants:
For layouts and positions
For colors
For workflows
For texts
https://github.com/alosdev/CustomersChoice
Page 15
moosecon 2013 | Customers Choice | Hasan Hosgel
16. Usage
Add the library (*.jar) to your project
Configure your switch based on the variant
CustomersChoice.getVariant(context,VariantName);
When you reach your expected goal, report it
CustomersChoice.reachesGoal(VariantName);
done
Page 16
moosecon 2013 | Customers Choice | Hasan Hosgel
17. Usage
Will an exception be raised?
Page 17
moosecon 2013 | Customers Choice | Hasan Hosgel
18. Usage
Will an exception be raised?
No
Page 18
moosecon 2013 | Customers Choice | Hasan Hosgel
19. Usage
Will an exception be raised?
No
Will it have full functionality?
Page 19
moosecon 2013 | Customers Choice | Hasan Hosgel
20. Usage
Will an exception be raised?
No
Will it have full functionality?
Not really
Page 20
moosecon 2013 | Customers Choice | Hasan Hosgel
21. Usage
Will an exception be raised?
No
Will it have full functionality?
Not really
Why?
Page 21
moosecon 2013 | Customers Choice | Hasan Hosgel
22. Usage
Will an exception be raised?
No
Will it have full functionality?
Not really
Why?
It is not configured, therefore #getVariant(String) will
always return variant 1 for the given variant name
Page 22
moosecon 2013 | Customers Choice | Hasan Hosgel
23. Configuration of Variants
Through code
JSON String in resources
Configuration file on SD card
Configuration file in the network with standard caching
mechanism, like Etag- and Modified Since Header
For testing purposes you can overwrite a variant with a
broadcast intent
Page 23
moosecon 2013 | Customers Choice | Hasan Hosgel
24. Variants Attributes
name: String (required)
startTime: Integer in Milliseconds
endTime: Integer in Milliseconds
spreading: Integer array for ratio of different variants
reset: Boolean for resetting the current value
{variants:[{
name:VariantName, startTime:768997,
endTime:1022222, spreading:[1,2,1],
reset:true}, {}
,]}
Global Attribute: resetAll reset all variants
Page 24
moosecon 2013 | Customers Choice | Hasan Hosgel
25. Extensibility
You can write custom plugins for:
Logging
Reporting
You can fork the library on Github, make your changes and
send a pull request.
https://github.com/alosdev/CustomersChoice
Page 25
moosecon 2013 | Customers Choice | Hasan Hosgel
28. Attention
Always make clear
what and how to
report for gaining the
results you need.
Otherwise you can get
a comparison like the
diagram.
source: http://i.imgur.com/h2JClux.jpg
Page 28
moosecon 2013 | Customers Choice | Hasan Hosgel
30. www.immobilienscout24.de
Thanks for your attention!
We are hiring!
Contact:
Hasan Hosgel Customers Choice
Twitter: @alosdev Repo: https://github.com/alosdev/CustomersChoice
Github: alosdev 際際滷Share: http://de.slideshare.net/hosgel/moosecon-2013-customerschoice