AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 36407
In Process
Jon Topper
Jon Topper
Asked: 2009-07-07 07:06:30 +0800 CST2009-07-07 07:06:30 +0800 CST 2009-07-07 07:06:30 +0800 CST

基础设施部署的测试驱动开发?

  • 772

我一直在使用 puppet 来部署基础架构,并且我所做的大部分工作都是与 Web 2.0 公司合作,这些公司都在为他们的 Web 应用程序进行测试驱动开发。这里有没有人使用测试驱动的方法来开发他们的服务器配置?你用什么工具来做到这一点?你的测试有多深?

deployment testing automated-testing
  • 5 5 个回答
  • 1455 Views

5 个回答

  • Voted
  1. Joseph Kern
    2009-07-07T07:35:05+08:002009-07-07T07:35:05+08:00

    我认为您不能使用测试驱动开发。但是您当然可以尝试在新服务器上进行单元测试。

    基本上,您需要部署服务器,以测试模式启动服务,然后从另一台服务器(或一系列服务器)针对服务运行测试。然后最终将它们投入生产。

    也许使用 python 脚本连接到数据库、网页和 ssh 服务。然后返回 PASS/FAIL。对你来说将是一个好的开始。

    或者你可以把它整合到一个监控解决方案中,比如 Zenoss、Nagios 或 Munin。然后您可以在部署期间进行测试;并在生产过程中进行监控。

    • 3
  2. Zac Thompson
    2009-07-07T21:16:51+08:002009-07-07T21:16:51+08:00

    我认为 Joseph Kern 使用监控工具走在正确的轨道上。典型的 TDD 循环是:编写一个失败的新测试,然后更新系统以使所有现有测试通过。这很容易适应 Nagios:添加失败的检查,配置服务器,重新运行所有检查。想一想,我有时就是这样做的。

    如果您想获得真正的核心,您将确保编写脚本来检查服务器配置的每个相关方面。像 Nagios 这样的监控系统可能与其中一些无关(例如,您可能不会“监控”您的操作系统版本),但没有理由不能适当地混合搭配。

    • 1
  3. Paul Lathrop
    2009-07-27T11:09:51+08:002009-07-27T11:09:51+08:00

    虽然我还不能用 Puppet 清单做 TDD,但我们确实有一个很好的循环来防止未经测试的更改进入生产。我们设置了两个 puppetmaster,一个是我们的生产 puppetmaster,另一个是我们的开发 puppetmaster。我们使用 Puppet 的“环境”来设置以下内容:

    • 开发环境(每个处理 Puppet 清单的人一个)
    • 测试环境
    • 生产环境

    我们的应用程序开发人员在虚拟机上工作,这些虚拟机从开发 Puppetmaster 的“测试”环境中获取他们的 Puppet 配置。我们在开发 Puppet manifest 时,通常会在开发过程中设置一个 VM 作为测试客户端,并将其指向我们个人的开发环境。一旦我们对清单感到满意,我们就会将它们推送到测试环境,应用程序开发人员将在他们的虚拟机上获得更改 - 他们通常会在出现问题时大声抱怨:-)

    在我们生产机器的一个有代表性的子集上,有第二个 puppetd ​​在 noop 模式下运行并指向测试环境。我们使用它来在清单被推送到生产之前发现它们的潜在问题。

    一旦更改通过,即它们不会破坏应用程序开发人员的机器,并且它们不会在生产机器的“noop”puppetd ​​进程的日志中产生不良输出,我们会将新清单推送到生产中。我们有一个回滚机制,因此我们可以恢复到早期版本。

    • 1
  4. Rik Schneider
    2009-07-28T06:33:16+08:002009-07-28T06:33:16+08:00

    我在一个正在迁移到 TDD 操作模型的环境中工作。对于监视脚本之类的某些事情,这非常有效。我们使用 buildbot 来设置测试环境并运行测试。在这种情况下,您从“遗留代码”的角度来处理 TDD。在 TDD 中,“遗留代码”是没有测试的现有代码。所以第一个测试不会失败,它们定义了正确的(或预期的)操作。

    对于许多配置作业,第一步是测试配置是否可以被服务解析。许多服务提供了一些设施来做到这一点。Nagios 有 preflight 模式,cfagent 没有 act,apache、sudo、bind 和许多其他有类似的设施。这基本上是配置的 lint 运行。

    一个例子是,如果您使用 apache 并为不同的部分使用单独的配置文件,您也可以测试这些部分,只需使用不同的 httpd.conf 文件来包装它们以在您的测试机器上运行。然后您可以测试测试机器上的网络服务器是否在那里给出正确的结果。

    沿途的每一步都遵循相同的基本模式。编写测试,使测试通过,重构你所做的工作。如上所述,当遵循这条路径时,测试可能并不总是以公认的 TDD 方式失败。

    里克

    • 1
  5. dolzenko
    2010-07-22T02:42:13+08:002010-07-22T02:42:13+08:00

    我相信以下链接可能会引起您的兴趣

    1. cucumber-nagios - 让您将Cucumber套件转换为 Nagios 插件的项目,并附带 SSH、DNS、Ping、AMQP 和通用“执行命令”类型任务的步骤定义
      http://auxesis.github.com/cucumber- nagios/
      http://www.slideshare.net/auxesis/behaviour-driven-monitoring-with-cucumbernagios-2444224
      http://agilesysadmin.net/cucumber-nagios

    2. 在 Puppet/Python 方面也有一些努力 http://www.devco.net/archives/2010/03/27/infrastructure_testing_with_mcollective_and_cucumber.php

    • 1

相关问题

  • 硬盘发热问题

  • 您如何进行生产 IIS 网站部署?

  • 有没有人部署了 Humyo 或类似的商业版本?

  • 自动化服务器部署

  • 如何说服我的 IT 经理将企业从 IE6 升级到更新的浏览器?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve