我已经离开学校几年了,最近才开始回去重新阅读我的一些教科书(我想保持新鲜感)。我实际上发现我的软件工程教科书很吸引人,并计划阅读整本书——如果这很有趣,因为当我在学校时,我发现它非常无聊。

所以有半章专门介绍集成测试。而且,就像学术界的大多数事情一样,这都是理论,在阅读中几乎没有实际适用性。但是,它让我思考。

我们使用 CruiseControl 进行持续集成测试,但看到我们是一个庞大的开发团队,我不处理部署/构建/发布,我从未亲自使用过它。当我打破每晚构建时,我只是时不时地收到一封电子邮件。和两个技术负责人解释自己。

继续我的问题:我的旧教科书将集成测试称为组件彼此的配对和测试,而不是针对 1 个特定类的单元测试。这可以通过“自上而下”或“自下而上”的方法来完成,其中自上而下意味着将整个事物作为一个系统进行测试,然后递归地将系统分解为更小的子系统并对其进行测试;自下而上意味着相反(从小处开始,逐渐变大)。

我的问题:

以下三个概念如何相互关联:

  • 这个集成测试的学术解释;和
  • 所谓的“持续集成服务器”,如 Hudson、Jenkins 或 CruiseControl;和
  • 具有“夜间构建”的概念,其中代码从 SCM 中 check out 并自动编译

  • 前两者有“整合”这个词只是巧合吗?执行“每晚构建”是否与运行持续集成服务器(在夜间)相同,还是它们是两个独立的概念?

    如果持续集成测试和夜间构建与学术集成测试完全无关,那么集成测试如何在现实世界中真正体现出来?他们的框架是否像 JUnit 这样的框架,但只专注于集成测试?

    我知道这些问题很多,但它们实际上只是归结为了解每个问题是什么以及如何使用它们。在线搜索每一个都会拉回非常模糊、抽象的答案。

    最佳答案

    太庞大了,无法用几行来解释。

    持续集成基本上是自动 check out 、构建、测试、代码质量检查、部署等的循环。
    它的测试部分将包括单元测试(单元代码)、集成测试(依赖于数据库或外部资源)以及工具和框架,如 junit、rspec。

    这些可以安排为每晚构建并定期构建。

    Cruisecontrol、hudson 等持续集成工具可帮助您配置此过程。
    它更像是一个执行不同任务的调度程序,定义依赖关系以及通知和工件管理等等。

    所有这些几乎都是相互依存的。

    更多信息@http://martinfowler.com/articles/continuousIntegration.html

    关于testing - "integration testing"、 "continuous integration servers"和 "nightly builds"之间的关系是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7471539/

    10-14 23:40