在生产中测试——你应该吗?

发布的

生产版英雄测试

你写了代码。你甚至测试过它。而现在,你渴望git推它。但你如何验证它是否真的有效呢?在Taboola中,我们在产品中测试代码!

在本文中,您将看到每个软件工程师,即使是在公司的第一天可以在生产中进行测试——这都归功于专用的Jenkins管道工作和大量的指标

在生产中进行测试有多难?

很困难的。你可能已经知道了。每个人都害怕需要在生产中测试变更的时刻。主要原因是,并不是每个人都具备所需的IT技能。此外,人们不得不这样做重复容易出错的手工任务-这可能会导致停机和收入损失。

对于我们的发布工程师来说,这也是一个难以管理的头痛问题——一个“雷鸣”群”开发人员渴望在生产环境中测试他们的特性。

问题-繁琐的,手工的,容易出错的任务

在生产过程中,测试过程是手工和繁琐的。每个开发人员必须(至少)处理以下问题:

  • 明智地选择生产环境中的服务器
  • 确保数据中心没有受到压力
  • 将服务器从负载均衡器中取出
  • 安装特性分支
  • 执行功能和非功能测试
  • 以某种方式验证没有引入性能降低
  • 回滚到以前的版本
  • 和更多…

我们都同意这一点这对人类来说太难了记住!

解决方案- Jenkins管道可以完成所有工作

我们的发布工程师构建了一个全自动管道用于在生产中快速方便地验证和测试。为了使用它,你所需要的是一个功能分支,然后-魔术开始:

准备

  • Jenkins明智地选择了一对可用的服务器
  • 在第一个服务器上安装特性分支
  • 在第二台服务器上安装版本作为基线

测试

  • 在测试期间,两个服务器都记录了它们的所有日志和度量
  • 开发人员使用实际的生产流量测试代码

总结

  • 脚本比较日志和指标
  • 剧本决定:通过/失败
  • 成功标准-偏离基线X%以下

几个小时后,詹金斯的管道结束了,把一切都卷了回来,就像什么都没发生过一样!

你会收到关于结果的邮件

比较脚本读取Prometheus和Elastic。它验证基本kpi没有下降,错误日志的峰值没有超过允许的阈值。

下面,您可以看到这些电子邮件消息的示例,包括成功和不成功的测试结果。

成功邮件(绿色)与失败邮件(红色)

比较失败是突出显示的-所以它是非常简单和直接地决定你的功能是准备好了,还是需要更多的工作。

深入研究Grafana和Kibana的参数

为了将比较结果可视化,特设的Grafana和Kibana仪表盘与相关的测试时间框架自动创建。链接通过电子邮件和#slack发送。

示例:深入研究Grafana仪表板

主干每2小时进行一次生产测试

实际上,我们的版本工程团队将此方法作为验证新版本的强制性阶段,并作为每2小时进行一次的持续验证。我们不断地验证主分支是否健康。通过这样做,我们可以防止糟糕的代码尽早进入生产环境。

你刚读了什么?

您刚刚遇到了一个真正的持续部署启用器。这样一个过程的好处是一个快速、稳定的交付过程和改进的质量。这是最接近“真实的东西”了。这对开发人员和发布工程团队来说是双赢的,当然对客户来说也是如此。

你也需要这样的解决方案吗?

您是否同意现在是在生产环境中开始自动化测试的好时机?

请随时联系我们,我们很乐意分享更多细节。

-与Tidhar克莱因巴赫

今天就开始你的Taboola事业吧!