Add browser segments to a/b test scripts
This commit is contained in:
parent
9ead6600b0
commit
6178800d16
5 changed files with 212 additions and 178 deletions
|
@ -1,21 +1,15 @@
|
|||
// foreshadowsLevels A/B Results
|
||||
// Test started 2015-01-29
|
||||
// Fixed some particle problems on 2015-02-02
|
||||
|
||||
// Usage:
|
||||
// mongo <address>:<port>/<database> <script file> -u <username> -p <password>
|
||||
|
||||
// Inputs to modify below:
|
||||
// numDays - number of days into the past to fetch
|
||||
// eventFunnel - ordered array of events that define the completion funnel
|
||||
// levelSlugs - [optional] array of levels to examine, otherwise fetch all levels
|
||||
// testGroupFn - return group value from user testGroupNumber
|
||||
|
||||
// Include getFunnelData(), log()
|
||||
load('abTestHelpers.js');
|
||||
|
||||
var scriptStartTime = new Date();
|
||||
try {
|
||||
var startDay = '2015-01-29'
|
||||
var startDay = '2015-02-03'
|
||||
log("Today is " + new Date().toISOString().substr(0, 10));
|
||||
log("Start day is " + startDay);
|
||||
|
||||
|
@ -30,33 +24,20 @@ try {
|
|||
|
||||
var funnelData = getFunnelData(startDay, eventFunnel, testGroupFn, levelSlugs);
|
||||
|
||||
log("Day\tLevel\tGroup\tStarted\tFinished\tCompletion Rate");
|
||||
var overallCounts = {};
|
||||
for (var i = 0; i < funnelData.length; i++) {
|
||||
var level = funnelData[i].level;
|
||||
var day = funnelData[i].day;
|
||||
var group = funnelData[i].group;
|
||||
var started = funnelData[i].started;
|
||||
var finished = funnelData[i].finished;
|
||||
var rate = started > 0 ? finished / started * 100 : 0.0;
|
||||
|
||||
if (!overallCounts[level]) overallCounts[level] = {};
|
||||
if (!overallCounts[level][group]) overallCounts[level][group] = {started: 0, finished: 0};
|
||||
overallCounts[level][group]['started'] += started;
|
||||
overallCounts[level][group]['finished'] += finished;
|
||||
|
||||
log(day + "\t" + level + "\t" + group + "\t" + started + "\t" + finished + "\t" + rate.toFixed(2));
|
||||
}
|
||||
|
||||
log("Overall totals:");
|
||||
for (level in overallCounts) {
|
||||
for (group in overallCounts[level]) {
|
||||
var started = overallCounts[level][group].started;
|
||||
var finished = overallCounts[level][group].finished;
|
||||
var rate = started > 0 ? finished / started * 100 : 0.0;
|
||||
printFunnelData(funnelData, function (day, level, browser, group, started, finished, rate) {
|
||||
if (day && level && browser && group) {
|
||||
log(day + "\t" + group + "\t" + started + "\t" + finished + "\t" + rate.toFixed(2));
|
||||
}
|
||||
else if (level && browser && group) {
|
||||
log(level + "\t" + browser + "\t" + (browser.length < 8 ? "\t": "") + group + "\t" + started + "\t" + finished + "\t" + rate.toFixed(2));
|
||||
}
|
||||
else if (level && group) {
|
||||
log(level + "\t" + group + "\t" + started + "\t" + finished + "\t" + rate.toFixed(2));
|
||||
}
|
||||
}
|
||||
else if (group) {
|
||||
log(group + "\t" + started + "\t" + finished + "\t" + rate.toFixed(2));
|
||||
}
|
||||
});
|
||||
}
|
||||
catch(err) {
|
||||
log("ERROR: " + err);
|
||||
|
|
Reference in a new issue