Summary
The aim of Absurdity is to give you a simple yet feature-rich way of conducting split testing. It offers multiple variants, multiple metrics, and multiple tracks per user. When writing it I favored explicit over implicit, and pushed any methods you should need to a single external class: Absurdity.
It also comes with a display-only backend interface, available at /absurdities, where you can access the results of any experiments. At the moment it only supports redis, 1.2.6 and higher, for backend storage of the experiments and metrics.
Usage
To get Absurdity set up, please refer to the README at github.There are also examples of usage there, but I consider this one of Absurdity’s strengths, so would like to highlight it here.
In “daily” usage you will only need to use 2 methods: track! and variant. “variant” will return which variant a particular identifier should receive for an experiment. Why is this interesting?
Well, it means you could vary which experiment a user sees based on something besides his or her user ID, such as language.
For example:
Absurdity.variant(:my_experiment, language)
or
Absurdity.variant(:my_other_experiment, current_user_id)
And track! is just as simple:
Absurdity.track!(:my_metric, :my_experiment, current_user_id).
This will automatically determine which variant the current_user_id is assigned, and add the metric to that variant. That’s it. Visit /absurdities and you’ll be able to see the results of your various split tests.
Acknowledgements
Vanity, and its excellent documentation on what A/B testing is, helped me a lot in building absurdity. If you aren’t familiar with the terms used, look here: vanity documentation. You can also check out modesty, which has nearly the same feature set as Absurdity.