我目前正在尝试将基于VM的基础架构迁移到基于Docker的基础架构,并抓住机会为此基础架构添加行为测试.因此,我的目标是在代码中对基本系统配置进行所有更改(例如在Dockerfile中),git版本化和(在理想世界中)每个更改都应该具有可测试的效果.
我想做的测试示例:
>如果我在“postgres”容器中添加用户帐户和权限规则,则用户“x”应该能够(仅)从“web”容器访问(仅)数据库“y”(仅).
>如果我在此处更改后缀配置,例如插入更改,那么人类用户必须进行身份验证,但系统用户可以发送未经身份验证的电子邮件.
>如果我在此处更改Apache配置,那么平均响应时间将低于x ms.
我真的不想测试的东西(尽管如此我不会受伤):
>文件x应该存在.
>应安装服务y.
我想知道如上所述进行基础设施测试的好/常用方法是什么,并乐于接受任何建议或听取最佳实践. (我发现serverspec,但在我看来好像这会支持第二种测试;在我读过的所有例子中,它宁愿检查系统状态而不是系统行为.)
最佳答案
在单一的“行为测试”中,您将混合各种想法.测试安全性(访问…),应用程序监控(响应时间……),基础架构合规性(文件/服务应该存在……).
原文链接:https://www.f2er.com/docker/437109.html因为你将infra作为版本化的代码方式,所以你应该像任何代码一样测试它,而serverspec是一个很好的工具.我个人更喜欢testinfra,基于python的等效框架.还有其他的,比如goss,robotframework,inspec ……在那里你可以测试很多东西:监听端口80,服务运行,配置文件存在.此外,由于您可以连接任何代码,您可以读取配置文件并检查用户X是否可以访问数据库Y而不是数据库Z.
至于响应时间是一个监控主题,如果它是关于实时环境,或负载测试,如果它是关于在上线之前测试分期.监控的可能性很多,比如nagios,zabbix ……对于负载测试,我会选择蝗虫.