SkyLab 1.0.0

SkyLab 1.0.0

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
Released最后发布2014 年 12 月

Mattt 维护。



SkyLab 1.0.0

  • 作者
  • Mattt Thompson

针对 iOS 和 Mac 的多变量测试与 A/B 测试

SkyLab 是一个后端无关的多变量测试和 A/B 测试框架。

使用 NSUserDefaults 持久化测试条件,确保每个用户都会有一个一致的经验,无论他们最终落在哪个测试桶中。

SkyLab 容易集成到任何现有的统计网页服务。根据您特定的需求,这可能包括在测试块中发布到端点或为共享 API 客户端设置 HTTP 标头。

鼓励请求与任何特定后端的集成。

该项目是开源库系列的一部分,涵盖 iOS 应用基础设施的关键方面。请务必查看其姐妹项目:GroundControlCargoBayhoustonOrbiter

用法

查看包含的示例项目以查看所有功能。

简单 A/B 测试

[SkyLab abTestWithName:@"Title" A:^{
    self.titleLabel.text = NSLocalizedString(@"Hello, World!", nil);
} B:^{
    self.titleLabel.text = NSLocalizedString(@"Greetings, Planet!", nil);
}];

带加权概率的分割测试

您可以将一个 NSDictionary(其中值代表其相应键的加权概率)或一个 NSArray(其中每个值都有相等的机会被选中)传递到 choices 参数中。

[SkyLab splitTestWithName:@"Subtitle" conditions:@{
    @"Red" : @(0.15),
    @"Green" : @(0.10),
    @"Blue" : @(0.50),
    @"Purple" : @(0.25)
} block:^(id choice) {
    self.subtitleLabel.text = NSLocalizedString(@"Please Enjoy This Colorful Message", nil);

    if ([choice isEqualToString:@"Red"]) {
        self.subtitleLabel.textColor = [UIColor redColor];
    } else if ([choice isEqualToString:@"Green"]) {
        self.subtitleLabel.textColor = [UIColor greenColor];
    } else if ([choice isEqualToString:@"Blue"]) {
        self.subtitleLabel.textColor = [UIColor blueColor];
    } else if ([choice isEqualToString:@"Purple"]) {
        self.subtitleLabel.textColor = [UIColor purpleColor];
    }
}];

多变量测试

[SkyLab multivariateTestWithName:@"Switches" variables:@{
    @"Left" : @(0.5),
    @"Center" : @(0.5),
    @"Right" : @(0.5)
 } block:^(NSSet *activeVariables) {
     self.leftSwitch.on = [activeVariables containsObject:@"Left"];
     self.centerSwitch.on = [activeVariables containsObject:@"Center"];
     self.rightSwitch.on = [activeVariables containsObject:@"Right"];
}];

联系

Mattt Thompson @mattt

许可证

SkyLab 可在 MIT 许可证下获得。有关更多信息,请参阅 LICENSE 文件。