现代软件测试技术之美
上QQ阅读APP看书,第一时间看更新

1.2.1 A/B测试

当前的互联网环境充满了不确定性,一个功能在上线前,我们往往很难预估市场对该功能的反应,此时A/B测试就有了用武之地。A/B测试是一种比较常见的软件发布策略,但它更是一种业务决策手段。如图1-7所示,为用户同时推送新旧版本的功能并进行对比实验,可以分析这一功能给用户带来的价值是否达到预期,并指导下一步的业务决策。简而言之,A/B 测试能快速帮助我们做出正确决策。

图1-7 A/B测试的流量推送策略

A/B测试是一种“先验”的实验体系——通过科学的实验设计、采样具有代表性的样本、流量分割与小流量测试等手段,获得实验结论。A/B测试一般包含以下5个步骤。

(1)确定优化目标:在实施A/B测试之前,我们需要设定明确的优化目标,确保目标是可量化的,否则后续的实验和分析都会无从下手。举个例子,“将用户满意度提升20%”就不是一个合适的目标,因为它太难量化了;而“通过优化运费的展示格式,提升10%的用户留存率(按每月计算)”就是一个合适的目标,因为它既可以被客观量化,又足够具体。

(2)分析数据:以数据分析的方式,找出现有软件产品中的潜在问题,继而挖掘出相应的优化方案。

(3)提出假设:针对上一步发现的问题,提出优化方案。在A/B测试中,这些优化方案一般是以“假设”的方式被提出的,而且往往会提出多个假设。例如,“假设降低5%的运费,用户留存率可能会提升10%”“假设优化运费的展示格式,用户留存率也可能会提升10%”。基于这些假设制定A/B测试的实验方案,并根据实验结果判断是否符合预期。

(4)进行重要性排序:由于我们提出了较多假设,实际情况下受资源限制很难对这些假设一一进行验证,此时就需要对这些假设进行重要性排序,根据资源成本优先验证最重要的假设。

(5)实施A/B测试并分析实验结果:基于选取的重要假设,实施A/B测试,并得出实验结果。若实验结果证明假设成立,则可以考虑将这一功能版本作为正式版本推送给所有用户;若实验结果证明假设不成立,就进行复盘、积累经验。

在工程领域,已有不少工具能够支撑A/B测试的整个体系,比较著名的开源工具有GoogleOptimize 360,也有一些商用化的A/B测试工具,如Optimizely、AppAdhoc等。如果企业有较强的定制化需求,还可以考虑自研A/B测试工具。