Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Sample Django app to play around with ways to do A/B Split testing on a page
Python
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
ab_sumo
assets
registration
templates
.gitignore
README.md
chart_requirements.txt
manage.py
requirements.txt
split_testing.db

README.md

A/B Testing Application

Simple app to:

Why

I wanted to play around with some ideas to learn more about A/B testing. It's far from complete. It mainly serves as a platform for demonstrating one way to automate scheduling an A/B test for a given portion of time.

Using this approach, admin users could login and 'schedule' an A/B test. Then, the designer/developer could discuss the test goals with the admin and execute the code for the test with very minimal effort.

Install

This application can be installed simply by installing the requirements designated in the requirements.txt file.

- pip install -r requirements.txt
- pip install -r chart_requirements.txt

Currently PIL and ReportLab are specified in the chart_requirements.txt file. These requirements are not stricly necessary to run the application. However, they allow the application to show a veritcal bar chart for conversion rates.

Deploy

The application can easily be deployed to heroku by:

- git clone git://github.com/durden/split_testing_playground.git
- 'cd' into the application directory
- heroku create --stack cedar
- git push heroku master
- heroku run python manage.py syncdb

You can see the currently deployed version on heroku here.

Usage


Run the application:

  • git clone git://github.com/durden/split_testing_playground.git
  • 'cd' into the application directory
  • Setup the database (unless you would like to use the provided one)
    • python manage.py syncdb (make sure to create admin account)
    • Again, this is an optional step since the git repo includes a sample database that will automatically be connected to.
  • python manage.py runserver
  • Browse to http://127.0.0.1:8000/
  • Login
  • Create an A/B test
  • Add A/B choices
  • Use the database IDs from these choices to show them in the template
  • For example see register template

I've provided a sample database that will demonstrate the basic use of the application. It includes a single A/B with a few choices. You can run the existing test by modifying the start/end dates of the test. You can also see that there are already 'fake' results included for demonstration.

**The login for the sample database is 'test_user' with 'password' as the password.

Technologies Used


Improvement Ideas

  • Might be able to turn the main split testing view code into a decorator and more easily scale the idea to multiple views in the future
  • Add a template tag to somehow more gracefully handle the switching on/off different UI choices for the actual test in the template. I'm not too crazy about having to litter the code with a bunch of if statements, just haven't found a really good way to do it yet.
  • Devise a better way to refer to test choices
    • Currently the application only tracks a long description. This is useful, but it would probably be better to have a 'shorter' way to refer to them. This would look much better on the vertical bar chart x-axes.
Something went wrong with that request. Please try again.