实验参数,是对实验版本的补充,一般是一个功能控制配置项,用来区分对照组和实验组,需要开发人员获取并解析后实验参数才能生效。创建实验时通过配置实验参数,不仅可以实现实验分流,同时好的实验参数设计,也能帮助实验创建者在不增加开发工作量的前提下,进行更灵活的实验。
可以设计实验为:
对照组:视频开始播放时立即展示商品卡片
实验组1:视频播放5秒后展示商品卡片
实验组2:视频播放10秒后展示商品卡片
借助实验参数配置功能,首先在代码中解析goods_card_show_time参数并实现视频播放{goods_card_show_time}秒后展示商品卡片,然后在创建实验时对照组/实验组1/实验组2分别配置goods_card_show_time=0/5/10,即可完成实验的上线。
假如后续要实验“视频播放8秒后展示商品卡片”的效果,则无需修改代码,仅在创建实验时配置实验参数为goods_card_show_time=8即可,甚至可以通过配置不同的参数值创建多组实验后取最优goods_card_show_time值发布。
示例:电商推荐场景中,商品卡片展示时机实验
对照组:视频开始播放时立即展示商品卡片
实验组:视频播放5秒后展示商品卡片
代码实现中,解析实验参数goods_card_show_time为视频播放时长,创建实验时,配置对照组、实验组的参数分别如下:
对照组配置: "goods_card_show_time": 0 实验组配置: "goods_card_show_time": 5
示例:视频推荐引导用户关注的提示文案实验
对照组:无引导
实验组1:关注飙升
实验组2:多位好友关注
代码实现中,解析实验参数follow_guide_tips为字符串,表示引导用户关注文案,创建实验时,配置对照组、实验组的参数分别如下:
对照组配置: "follow_guide_tips": "" 实验组1配置: "follow_guide_tips": "关注飙升" 实验组2配置: "follow_guide_tips": "多位好友关注"
示例:视频推荐场景,控制是否展示互动引导
对照组:不展示互动引导
实验组:展示互动引动
代码实现中,解析实验参数show_interact_guide为boolean值,表示是否展示互动引导,创建实验时,配置对照组、实验组的参数分别为如下:
对照组配置: "show_interact_guide": false 实验组配置: "show_interact_guide": true
一般用于多功能联合实验的场景,此时需要多个参数组合来控制实验逻辑。
示例:视频推荐场景,控制是否展示互动引导以及互动引导展示时机和展示时长实验
对照组:不展示互动引导
实验组1:展示互动引导,且在视频播放剩10秒时展示互动引导3秒
实验组2:展示互动引导,且在视频播放剩15秒时展示互动引导5秒
代码实现中,解析json格式实验参数,其中show_interact_guide表示是否展示互动引导,show_interact_guide_duration表示互动引导展示时长,play_video_countdown表示视频播放倒计时。创建实验时,配置对照组和实验组的参数分别如下:
对照组配置: { "show_interact_guide": false } 实验组1配置: { "show_interact_guide": true, "show_interact_guide_duration": 3, "play_video_countdown": -10 } 实验组2配置: { "show_interact_guide": true, "show_interact_guide_duration": 5, "play_video_countdown": -15 }
实验参数从开发人员视角来看就是一个功能控制配置,因此在进行AB参数设计的时候需要避免一个误区,不要按实验设计来设计参数。例如如下实验:
实验组:
实验组1:仅操作信息5秒后异化
实验组2:进方案一的向上滚,无操作信息5秒后异化
实验组3:方案一+操作信息5秒后异化
实验组4:仅方案二的效果二(一起悬停再一起滚动),无操作信息5秒后异化
实验组5:方案二的效果二+操作信息5秒后异化
一个不恰当的实验参数设计方案是枚举所有实验组(如下preview_expose_style的设计),此时功能的控制只能通过硬编码来处理,如果涉及到实验方案调整,或者其他实验需要复用某些功能,都需要另外开发。
{ "webcast": { "preview_expose_style": 1, // 1/2/3/4/5 分别对应不同实验组1/2/3/4/5 } }
合适的AB参数设计应该是按功能控制视角来进行设计,对于上面的实验,可以设计如下控制参数,然后通过组合这些参数达到实验组的效果。
{ "webcast": { "guide_change": 1, // 操作信息是否异化 "guide_change_after": 5000, // 操作信息X毫秒后异化 "preview_expose_style": 1, // 1,2分别对应方案一和方案二效果二 } }
实验组1:
{ "webcast": { "guide_change": 1, "guide_change_after": 5000 } }
实验组2:
{ "webcast": { "preview_expose_style": 1 } }
实验组3:
{ "webcast": { "guide_change": 1, "guide_change_after": 5000, "preview_expose_style": 1 } }
实验组4:
{ "webcast": { "preview_expose_style": 2 } }
实验组5:
{ "webcast": { "guide_change": 1, "guide_change_after": 5000, "preview_expose_style": 2 } }