一十一
发表于 2017-11-15 15:52:16
名词解释:
TiP:生产测试
前段时间我开始了TestOps系列,我概述了为什么这个话题很重要(实际上我预计它在最近的将来会变得更加重要),并列出了我希望尽快深入调查的各种话题。
我将列出成功落地TiP的先决条件,并为您提供顶级公司的真实案例。 我们先从一个定义开始:
“生产测试(TiP)是一套利用真实用户和生产环境的软件测试方法,既能利用生产的多样性,又能降低终端用户的风险。”
先决条件
1.成熟的工程过程
生产测试会影响您的应用程序的运行,因此会影响您的客户。 你应该总是有这个声明在你的脑海。 虚拟数据没有空间,例如$ 99,999.00的小鼠标。
在你接近它之前,你需要确保你完全理解它的影响。 你应该有熟练的人从头到尾计划和执行它。 通常说来,测试的误差范围相当大,但TiP并不是这种情况。
2.了解和减轻风险
在社交媒体时代,一旦你在互联网上展示的东西,它永远留在那里。 不过也有风险不那么明显。 特别要注意性能/负载测试。 即使应用速度稍有下降,也可能会大大影响收入和转换。
你的监测和警报呢? 你的测试会触发任何误报吗? 你甚至有可能检查你的测试如何影响性能指标?
你有没有想过收集的数据? 一旦你产生虚假的流量可能会损坏。 那么你怎么能做出数据驱动的决定呢?
3.自己清理
这也是你在测试环境中应该实现的东西,但哪一个是生产中必须的。 您的测试可能会产生各种无用的东西 - 用户,数据库条目,假数据,日志。 确保你以后擦除它们。 在日志的情况下添加一些东西来快速识别测试。 你不想花时间分析非人力交通。
TiP类型
1.金丝雀部署和蓝绿色部署
您可以将软件部署在单独的一组服务器上,然后慢慢向客户推出。 从小(从内部或测试版用户)开始,做少量的烟雾测试和日志分析。 如果一切似乎都没有问题,那么重定向部分外部客户(在我们的例子中为5%)以获取新的池。现在假设如果出现问题,您可能会将所有流量回滚到稳定池,或者继续进行新版本发布,并将一半/所有客户重定向到蓝池。
如果是新的软件版本,则恢复角色,现在部署在绿色池中,蓝色池作为安全网运行,以防出现意外的错误。
这里的目标是使这个过程对客户是透明的。
2.受控试飞
技术与金丝雀部署非常相似,但是我们慢慢推出新功能,而不是新的应用程序版本。
假设我们在代码路径1中隐藏了新功能。成功部署后,我们让所有客户使用代码路径2.现在我们更改配置文件,从现在起,一些客户(首先是内部的,然后是5%)正在使用可见的新功能 在代码路径1。
我们再次分析应用程序的运行情况,如果一切正常,我们为所有客户打开Code Path 1。 如果我们对结果感到失望,我们会回滚到代码路径2。
此处警告:受控测试飞行大大增加应用程序的复杂性 企业喜欢它,但我认为这是值得的。
3. A / B测试
这个想法很简单。 50%的客户看到我们的应用程序的变化A,50%的客户看到变化B.我们测量所有的数据,然后分析(数据科学家可能帮助)。 在我们的例子的情况下,变化A更好,因为它保证了更高的转换率。
精益专家高度推荐A / B测试,即使在初创阶段也应该使用它。
4.综合用户(Bot)测试
合成用户是一个在我们的应用程序上运行真实客户场景的机器人。 更具体的说,就像在生产环境中运行的端到端(E2E)测试一样。 理想情况下,你应该找出使用生产数据的场景。
机器人可能会从各种服务器触发(最好是在地理上分割),并应该与现有的监控/警报系统集成。 连续的失败应该引发你的团队调查。
确保每次运行后清除数据(请参阅先决条件3)。
5.故障注入和恢复测试
Netflix的Chaos Monkey推广的技术。 这个想法非常简单 - 我们在生产基础设施中产生随机故障,强制工程师设计恢复系统,并开发更强大,更适应性的平台。
“防范重大意外失败的最好办法是经常失败。 经常导致失败,我们强迫我们的服务建立在一个更有弹性的方式”
6.性能/负载/压力测试
(需要很快计划)非常复杂和复杂的主题。
7.数据驱动的质量
(需要很快计划)非常复杂和复杂的主题。
你需要更多阅读丰满你的知识体系: