我一直在寻找是否有适用于服务器的 BDD,类似于 Cucumber 或 Behat 的东西?具有一些语法糖的东西,例如:
Feature: jre
In order to use our monitoring software
As a UNIX user
I need to have JRE version at 8
Scenario:
Given I am in the directory "/usr/local/bin"
And I have a file named "java"
When I run "java -version"
Then I should get:
"""
java version "1.8.*"
"""
答案1
它不像 Cucumber 那样“纯文本”,但是服务器规范(Ruby,基于 RSpec)和测试基础(Python)都提供了为你的机器编写规范的能力,以验证它们是否处于你想要的状态。
顺便说一句,测试你的基础设施是难以置信很重要,尽管不是“在每台机器上运行”,而是要验证您的配置管理是否按预期运行。回归并不罕见,并且知道清单的更改不会妨碍机器正确配置是非常令人放心的。
进行更改以停止安装某个软件包非常容易,但您永远不会发现这一点,直到您去构建一台新机器时,发现该软件包没有出现,即使它在其他所有机器上都有。因此,请将您的基础设施测试套件与您的 CI 系统集成,在每次提交时进行增量和干净(从头开始)构建。然后,在构建完成后,将您的测试套件移到机器上。这将验证您的配置管理是否仍在做它应该做的一切。
答案2
我是测试基础,一款用 Python 编写基础设施测试的工具(基于pytest)。所有testinfra功能都可以通过API在pytest之外使用。
因此,如果您具备一些 Python 技能,您可以将 testinfra 与 pytest-bdd 或 behaviour 插入并实现行为驱动的基础设施。
注意:作为新用户,我不能发布超过 2 个链接(很棒的功能......)
- Testinfra API:testinfra.readthedocs.org/en/latest/api.html
- pytest-bdd:github.com/pytest-dev/pytest-bdd
- 行为:pythonhosted.org/behave/
答案3
马克·伯吉斯 (Mark Burgess) 在这一领域做出了大量研究贡献:
http://markburgess.org/sysadmin.html
具体来说,看看http://cfengine.com,并得到了他的工作支持。