服务器的行为驱动开发?

服务器的行为驱动开发?

我一直在寻找是否有适用于服务器的 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,并得到了他的工作支持。

相关内容