首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >对于进行大量A/B测试的代码库来说,什么是好的模式?

对于进行大量A/B测试的代码库来说,什么是好的模式?
EN

Software Engineering用户
提问于 2019-09-12 14:42:56
回答 2查看 744关注 0票数 6

我是在这样一个环境中开发的,我们往往会做大量的A/B测试。我很想向其他人学习如何在您的代码库中管理A/B测试代码?

您是否将A/B测试代码与控制代码(现有功能)混合使用。如果这样做,如何确保代码库不会变得不可维护?

是否有一种特定的设计模式在“分叉”的控制和测试代码中很有用?

我目前的位置基本上是要求前端工程师为每个实验保留“整个”前端文件夹,并对其进行修改。

Pros:

  1. 分离前端控制代码和测试。如果测试代码有错误,则控制代码不受影响。您可以在不进行代码发布的情况下关闭A/B测试。
  2. 可以用此模式进行雄心勃勃的布局更改。

Cons:

  1. 变更管理变得更加困难。如果您正在运行5个并发的A/B测试,并对控制代码进行修改,则必须确保所有A/B测试都得到对控制代码所做的更改。
EN

回答 2

Software Engineering用户

发布于 2019-09-12 19:08:31

依赖注入装饰图案是你做A/B测试的最好朋友。我的团队在任何时候都有几个实验在运行,我们为所有这些实验维护一个代码库。

总的思想是为您想要进行A/B测试的每一个逻辑定义一个接口,并创建:

  • 具有现有逻辑的生产(控制)实现
  • 使用要测试的新逻辑的一个或多个处理实现
  • 一种交换层(修饰器),它构成上述实现,并为传入请求选择使用哪一种实现。

结合依赖注入,在不触及控件实现的情况下添加和删除实验就变得非常简单。

票数 6
EN

Software Engineering用户

发布于 2019-09-12 17:10:05

在每个版本部署许多特性并在生产中测试它们时,有四件事对我有很大帮助:

  • 特征标志。
  • 白种人。
  • 路由控制。
  • 详细记录。

特征标志允许我们在控制的时间内启用一个特征,例如一天中的特定部分,或者仅在一个区域。它允许我们快速地“撤销”一个不适用于客户的更改。

白名单允许我们只为一组特定的、定义良好的客户启用一个功能。它允许我们有明确的“测试版测试人员”的一个功能,并迅速扩大或缩小他们的名单。

路由控制允许我们例如将2%的流量定向到具有特征集A的服务器,将3%的流量定向到具有特征集B的服务器,而将其余的流量引导到最新的稳定服务器。

详细的日志记录使我们能够判断哪一行属于哪个服务器,哪个版本等等。每一行包含足够的信息,可以轻松地分组启用/禁用特定功能的行,并进行分析/比较(使用Splunk)。

希望这能有所帮助。

票数 5
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/398346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档