我们如何将A/B测试的分配设计与行业标准对齐 —— 分离“投放比例”与“A/B分配”
HeatMapX Engineering Team3 min read
- engineering
- ab-testing
- product-design
本文要点
- A/B测试的比例设置中,“投放比例”与“A/B分配”这两个不同的关注点很容易被混为一谈
- 我们将两者拆分为两个独立的参数
- 通过分离,可以分别清晰地处理“风险管理”和“公平比较”
在为 HeatMapX 实现A/B测试功能的过程中,有一个看似不起眼却十分重要的设计判断:如何为“比例”建模。最终结论是,我们将“纳入实验的比例(投放比例)”与“A/B之间的分配”拆分为两个独立的参数。本文将分享这样做的原因。
容易被混淆的两个关注点
A/B测试中的“比例”,实际上包含了性质不同的两个关注点。
- 让多少访客参与实验(即风险管理)
- 在参与实验的访客中,如何分配A和B(即比较的公平性)
在早期的朴素设计中,这两者往往会被合并到同一个滑块中。但这样一来,“想安全地小规模试验”和“想公平地比较A和B”这两个不同的目的就会纠缠在一起,无论对用户还是对实现来说都会变得难以理解。
分离后的模型
因此,我们将两者独立开来。
traffic_allocation(纳入实验的比例):在全部访客中,纳入实验对象的比例。范围为0~100%。- A/B分配:在实验对象中,Control 与 Variant B 各自的权重。
用伪代码描述,分配判定的流程如下:
- 首先根据投放比例判断访客“是否属于实验对象”。
- 仅对属于实验对象的访客,按照A/B分配比例将其分流到 Control 或 Variant B。
不属于实验对象的访客,将照常看到普通页面(无任何变化)。
分离带来的好处
- 可以分阶段扩大风险范围:投放比例可以按 10% → 30% → 100% 的节奏调整,同时保持比较的公平性(50:50)不变,只单独调节风险大小。
- 设置的含义更清晰:“纳入多少人”和“如何展示”成为两个独立的界面,减少误解。
- 与行业标准保持一致:主流的A/B测试工具同样将流量分配与实验内的分配分开处理。
也体现在界面设计中
这一设计判断同样体现在了界面上。在实验设置界面中,“纳入实验的比例”与“A/B分配”可以分别独立指定;在实验详情页中,两者也会以摘要形式一并呈现。
总结
“比例”这个看似简单的设置项,其实潜藏着风险管理与比较公平性这两个不同的关注点。通过将它们分离建模,我们得到了一个对用户来说更易理解、也更便于运营的A/B测试功能。这虽然只是一个很小的设计判断,但正是这样的积累决定了产品的易用性。