"集成测试","持续集成服务器"和"夜间构建"之间的关系是什么?

IAm*_*aja 4 testing continuous-integration integration-testing automated-tests

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

因此有一个专门用于集成测试的半章.而且,就像学术界的大多数事情一样,这是所有理论,在阅读的任何地方都没有实际应用.但是,它让我思考.

我们使用CruiseControl进行持续集成测试,但是看到我们是一个大型开发团队并且我没有处理部署/构建/发布,我从来没有亲自动手.当我打破夜间构建时,我不时会收到一封电子邮件.两位技术人员向我解释.

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

我的问题:

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

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

前两个中有"整合"这个词只是巧合吗?执行"夜间构建"与运行持续集成服务器(在晚上)相同,还是两个单独的概念?

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

我知道这些问题很多,但它们实际上只是归结为了解每个问题以及它们的使用方法.在线搜索每个都拉回了相当模糊,抽象的答案.

Jay*_*dra 5

在几行中解释太大了.

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

这些可以安排在每晚构建和定期建立.

像cruisecontrol,hudson这样的连续集成工具可以帮助您配置此过程.它更像是一个执行不同任务的调度程序,通过添加通知和工件管理来定义依赖项等等.

所有这些都是相互依存的.

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