一. 线上环境的特殊性
虽然部署到QA或Staging环境可以模拟线上环境,但实际这些环境和线上环境还是有差别的。
线上环境的复杂程度和多样性是很难在测试环境中复制的。客户流量和实际客户操作也很难模拟。而且,即使我们在测试环境上验证了新需求,随着每次新需求上线,维护线上环境的客户偏好设置以及环境的稳定性也是很重要的。
此外,生产环境一直在变化。它永远不会不变,即使你的应用程序没有变化,它下面的一切都在不断变化。它所依赖的基础设施一直在变化。所以经过一段时间后,团队发现某些类型的测试只能在产品中进行。
二. 测试右移要验证什么?
测试右移是一种利用真实部署的线上环境来测试应用程序的功能和性能的过程。
- 它可以验证线上部署是否一切顺利。 - 它可以验证不断变化的生产环境的功能以及服务是否正常。
1. 验证部署
线上环境部署和测试环境部署不同。除了部署好新功能。同时也要关注用户数据以及用户的偏好设置甚至登录状态不能丢。所以需要在线上环境验证新部署功能以及用户相关数据。
2. 故障注入
通过故障注入,验证系统的容错性以及新部署是否已经修复。通过故障注入,开发同学在维护线上环境时也可以更好地应对实际事故。
3. 使用断路器进行故障测试
断路器是一种从较大系统中断开给定组件的机制。它通常用于避免组件中的故障分散到其边界之外。但是,可以有意触发断路器,以测试系统响应方式。比如,发货系统从最近仓库发货机制测试。如果某一个仓库有异常,尽快切换到最近的其他仓库发货。某个有异常的仓库就可以理解为断路器。
可以有意触发断路器来评估两个重要方案:
●断路器打开后,回退是否正常工作?它适用于单元测试,但无法确保它在生产环境中的行为符合预期,而无需注入错误来触发它。
●断路器在需要时是否打开?是否配置了正确的敏感度阈值?故障注入可能会强制延迟和/或断开连接依赖项,以观察断路器的响应能力。除了评估是否发生了正确的行为外,确定其发生速度是否足够快也很重要。
4. 业务连续性和灾难恢复 (BCDR)
另一种形式的错误测试是故障转移测试。团队应具有所有服务和子系统的故障转移计划。计划包括应涵盖多个主题:
●服务关闭对业务的影响的清晰说明。
●映射在平台、技术以及制定 BCDR 计划的人方面的所有依赖项。
●灾难恢复过程的正式文档。
●定期执行 DR 演练的节奏。
三.总结
无论准备了多少预生产测试层,在生产环境中测试兼容性都是必要的。发布到产品环境只是工作的一半。另一半是通过实际的工作量来确保质量。
没有任何测试环境像生产环境一样。生产环境随时随地在变化,所以团队永远不会完成生产中的测试。这包括监视、故障注入、故障转移测试和所有其他形式。