continuous-integration - 如何自动化集成测试?

标签 continuous-integration integration integration-testing

我想知道一些事情,我知道为了使您的测试更容易,您应该在单元测试期间使用模拟来仅测试您想要的组件,而无需外部依赖。但是在某些时候,您必须硬着头皮测试与数据库、文件、网络等交互的类。

我的主要问题是:您如何测试这些类(class)?

  • 我不认为在我的 CI 服务器上安装数据库是一个好习惯,但你有其他选择吗?
  • 我是否应该使用其他 CI 工具创建另一个服务器,并包含所有外部依赖项?
  • 我应该像我的单元测试一样经常在我的 CI 上运行集成测试吗?
  • 也许应该由专职人员负责手动测试这些组件? (或负责创建测试环境并配置类和外部依赖项之间的交互,例如编辑应用程序的配置文件)

  • 我想知道你在现实世界中的表现如何。

    最佳答案

    I'd like to know how do you do in the real world ?



    在现实世界中,对于要做什么没有一个简单的处方,但有一个指导性的真理:在引入错误/错误/测试失败后,您希望尽快捕获它们。让它成为你的向导;其他一切都是技术。

    几种常见的技术:
  • 并行运行的测试。这是我的偏好;我喜欢有两个系统,每个系统都运行自己的 CruiseControl* 实例(我是它的提交者),一个系统以快速反馈(< 5 分钟)运行单元测试,而另一个系统则不断运行集成测试。我喜欢这个,因为它最大限度地减少了 checkin 发生和系统测试可能会捕获它之间的延迟。有些人不喜欢的缺点是,对于同一个 checkin ,您最终可能会遇到多个测试失败,包括单元测试失败和集成测试失败。我不认为这在实践中是一个主要的缺点。
  • 一种生命周期模型,其中系统/集成测试仅在单元测试通过后运行。有像 AnthillPro* 这样的工具是围绕这种模型构建的,这种方法非常流行。在他们的模型中,他们采用通过单元测试的工件,将它们部署到单独的临时服务器,然后在那里运行系统/集成测试。

  • 如果您对此主题有更多疑问,我建议您访问 Continuous Integration and Testing Conference (CITCON) 和/或 CITCON mailing list .
  • 有很多CI and build|process automation tools在那里。这些只是其工具类别的代表。
  • 关于continuous-integration - 如何自动化集成测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/516915/

    相关文章:

    ios - 使用 Jenkins 和 altool 自动上传 IPA 失败,出现 'Transporter not found' 错误

    integration - Redmine 和 JIRA 集成

    c# - 如何使用 C++ (C#) 读取 flash 发送的声音流?

    java - 模拟 CGLIB 增强对象

    teamcity - 为什么 Teamcity 会发送键盘中断来终止我的构建?

    c# - 使用 MVC 进行依赖注入(inject)和内存中集成测试

    continuous-integration - 让 ArgoCD 和 BuildKite 相互通知

    jenkins - Jenkins 中同一项目的多个并发构建

    ssl - tfs 构建随机失败

    java - 如何使 Java 应用程序能够直接打开文件。例如右键单击文件或目录并能够单击 "open with mytool"