Continuous integration 与物理设备的连续集成测试

Continuous integration 与物理设备的连续集成测试,continuous-integration,Continuous Integration,我一直在想,在处理物理设备时,您如何进行CI风格的测试 我想象你有一套测试,和一个可以运行它们的设备池。 此外: 某些测试可能需要特定的设备型号 某些测试可能需要使用多个设备 哪些CI服务器支持此功能 我仍然对那些通过本机或插件获得部分支持的项目感兴趣,因为我对它的实现方式感兴趣。持续集成使团队能够经常集成和测试他们的工作。自动构建旨在编译、链接和运行单元测试。您希望CI快速运行,尤其是在每次签入时运行CI时。这就是为什么您希望将CI活动限制为仅对构建和单元测试的简单确认。您所问的似乎更多地

我一直在想,在处理物理设备时,您如何进行CI风格的测试

我想象你有一套测试,和一个可以运行它们的设备池。 此外:

  • 某些测试可能需要特定的设备型号
  • 某些测试可能需要使用多个设备
哪些CI服务器支持此功能


我仍然对那些通过本机或插件获得部分支持的项目感兴趣,因为我对它的实现方式感兴趣。

持续集成使团队能够经常集成和测试他们的工作。自动构建旨在编译、链接和运行单元测试。您希望CI快速运行,尤其是在每次签入时运行CI时。这就是为什么您希望将CI活动限制为仅对构建和单元测试的简单确认。您所问的似乎更多地是沿着质量保证(QA)测试的思路……将QA失败混入您的CI工作会影响开发工作的进展

因此,我认为与CI相关的活动并不依赖于所说的工作最终可能迁移到的物理机器

现在…这并不意味着你不能使用CI编译的包并在最终的目标机器上运行它…但是再次…这实际上被认为是一个独立的活动

这似乎在以下方面得到了加强


请注意,他没有谈到最终的目标设备……只有构建机器。

我可以推荐测试管理器,它是Microsoft TFS套件的一部分。除了基于windows的环境外,我没有在许多不同的环境中尝试过它,尽管我知道有许多连接器。对于基于windows的环境,我相信它将满足大多数需求

我在夜间构建中使用它来执行冒烟测试(打开它,看看是否有冒烟),但是如果您希望它成为CI的一部分,您必须小心地保持测试的规模较小,以便在几个小时而不是几天内完成测试


然后,当你有足够好的质量时,如果需要,你可以继续进行回归测试和集成测试。

我不会太关注CI系统应该做什么或不应该做什么。相反,我会专注于你试图解决的问题。听起来这个问题是为了促进在多个平台上的开发。您可以使用持续集成的概念,并将其添加到该概念中,以成功地解决该问题。我知道,因为我以前做过

我为需要在4个不同平台(nt、wince、linux arm、linux-x86)上成功编译和测试的代码实现了一个构建系统。CI服务器将:

  • 使用linux和winnt构建服务器编译(和交叉编译)
  • 然后将编译的测试和支持的lib复制到适当的设备,并执行自动测试运行
  • 测试套件完成后,日志将被复制回来(或写入网络安装的fs)
  • 如果测试套件成功,我们将标记源代码,并打包libs和可执行文件
在提交之前,该平台被重新用于开发人员验证。开发人员将运行部分构建和测试(只重新编译更新的源代码,然后重新运行这些测试)。CI将执行完整构建(从头开始)


我们的构建速度非常快,因为我们对构建依赖项有一个合适的DAG。这允许在平台构建中进行并发编译。每个平台构建也是并行的。因此,部分构建只需几秒钟,完整构建只需约30分钟。我们的构建服务器非常坚固(针对快速编译进行了优化),代码库大小适中(我不记得统计数据)。

您能更具体地描述一下物理设备这个术语吗?你说的是物理服务器还是移动设备?我想的更多的是网络连接设备。如果服务器上安装了特定的第三方软件/硬件,您的代码将必须进行测试,那么服务器可能会被计算在内。您对即时反馈循环提出了一些好的观点。也许我应该将其视为其他形式的测试,例如回归。作为连续交付管道的一部分,我们的构建机器在各种环境中执行CI和部署&测试。我更感兴趣的是您的第二个要点:如何针对一组设备执行一组测试,有些是不同类型的。此外,一个测试可能需要多个设备。@Lathargy:这些测试用它要运行的平台进行了“标记”。特定平台上的测试运行程序将仅运行为该平台标记的测试。不过,我们没有跨多个平台进行一次测试运行。