Canary测试是最小的测试,可以快速,自动地验证您所依赖的一切是否就绪。 您在其他耗时的测试之前运行Canary测试,并且在其他测试为红色时浪费您的时间调查代码。 如果Canary测试失败,您就必须先在环境中修复某些问题。
Canary测试的想法不同于Canary部署。 在Canary Deployment中,您可以部署到一小部分用户,以检查一切是否正常,然后再推广到更多用户。通过检查什么总是可以的来节省时间
Canary测试会检查问题的明显和常见来源,例如:
- 与网络的连接 :防火墙规则正常,端口打开,代理工作正常,NAT,可ping阈值以下
- 数据库和中间件启动
- 日志的磁盘配额几乎未满
- 每个所需的登录名和密码均有效
- 正确版本中提供的已安装软件 :已安装dll,已设置注册表,已设置环境变量,用户目录均已存在,框架和操作系统版本合适,时区和语言环境符合预期
- 可以参考数据的完整性和一致性(日期,评估…)
- 数据库模式和所应用脚本的审核符合预期
- 许可证未过期 (通常有一种自动检查许可证的方法)
Canary测试应定期运行,最好在端到端测试之类的昂贵测试之前进行。 当然,您希望在任何地方遇到问题时都可以运行它们,然后在预期的环境无法完全使用时,浪费时间进行代码中的手动调查。
即使在代码级别,canary测试也只是微不足道的测试,它可以验证测试框架是否正常工作,正如Marcus在他的博客中提到的那样:
assertTrue(true)
不要忘记验证您的测试也会失败!
简单且低维护
金丝雀测试工具在应用程序中不应承担太多责任。 它们必须独立于新的发展,以便尽可能稳定。 他们应该几乎不需要维护。
在实践中,这样做的一种方法是简单地扫描每个URL,密码的配置文件,然后按照预定义的时间阈值对它们进行ping操作。 可以扫描配置文件中提到的任何日志路径,并检查所需的写权限和可用磁盘空间。 即使可能更复杂,也可以检查任何登录名和密码。
金丝雀测试也是文档
进行Canary测试可能需要明确的期望声明,例如注释AssumedPermission('777'),以声明对配置文件中引用的文件所需的权限。 或者,您可以依靠约定高于配置原则。 例如每个
log.*.path
假定变量为日志路径,以检查一些预定义的期望,例如可写和磁盘配额是否正常。
添加金丝雀测试时,这种自动化本身就是一种使假设更加明确的文档形式。
您可以导出已经以易于阅读的形式进行的每个金丝雀测试的报告,这些报告可以成为您的生活文档的一部分。
翻译自: https://www.javacodegeeks.com/2014/02/canary-tests.html