Repository is archived
No commit activity in last 3 years
No release in over 3 years
The Official GroupMe AB Testing Solution
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 0
 Project Readme

The Official GroupMe AB Testing Solution

Simple AB testing with Redis.

USAGE

Define an AB test:

AB.define :new_twitter, "Show new Twitter or old Twitter to logged in users" do
  alternative(:new) { "new-twitter.erb" }
  alternative(:old) { "old-twitter.erb" }
end

Currently, identity of experiment participants is determined by an integer you pass when the participant views the experiment. Use AB.test to show always show a participant a consistent experience.

class TwitterController
  def show
    render :template => AB.test(:new_twitter, current_user.id)
  end
end

If you don't have a current user, you can set a cookie or something:

class HomepageController
  def index
    identifier = session[:ab_identifier] ||= rand(100)
    render :template => AB.test(:home_page, identifier)
  end
end

To track conversions, use AB.track, passing the participant's identifier:

class TwitterController
  def spend_dollahs
    AB.track(:new_twitter, current_user.id)
  end
end

or with a cookie:

class HomepageController
  def signup
    AB.test(:home_page, session[:ab_identifier])
  end
end

To get at your results, you can get a test, and call results.

AB.get(:home_page).results

Testing

In tests, if you want to guarantee a certain alternative will be shown, you can do so by specifying it with use

it "should say 'NEW TWITTER' showing new Twitter" do
  AB.test(:new_twitter).use(:new) do
    get "/twitter/show"
    page.should have_content("NEW TWITTER")
  end
end

TODO

  • More interesting statistics, including relevance information
  • Pretty printing of stats to the command line
  • Pretty web interface