Sample Django app to play around with ways to do A/B Split testing on a page
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

#A/B Testing Application

Simple app to:


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.


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.


The application can easily be deployed to heroku by:

- git clone git://
- 'cd' into the application directory
- heroku create --stack cedar
- git push heroku master
- heroku run python syncdb

You can see the currently deployed version on heroku here.


Run the application:

  • git clone git://
  • 'cd' into the application directory
  • Setup the database (unless you would like to use the provided one)
    • python 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 runserver
  • Browse to
  • 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.