我负责清理旧的单元测试环境。现有环境包含大量可执行文件(1000 多个 shell 脚本、已编译的二进制文件等),每个都返回代码 0 或 1,并根据结果返回一些输出。测试也可能超时。一组 PERL 脚本通过,运行每个可执行文件,并将结果收集到一个大的 XML 文件中,该文件被呈现到一个网页中。这个系统工作得很好,但不是非常可扩展或快速。
除了清理/加速这个,我想实现并发测试。现在测试一次运行一个。许多测试需要资源锁(端口、文件等),并且没有列出哪些可以安全同时运行。这里的一个选项是在某种虚拟机中运行每一个。
是否有针对这种情况设计的框架或工具?如果我必须编写自己的全新系统,最好的方法是什么?我的限制是我无法更改 1000 多个测试可执行文件。我正在考虑类似 PyUnit 的 Python 单元测试,它使用 subprocess 或类似方法来执行现有测试并将结果转换为 Pythonic 格式。这是矫枉过正吗?这样的系统能否支持进程隔离以避免测试之间的死锁和竞争条件?在最坏的情况下,我正在考虑使用 Python 将 SSH 连接到几个 VM 之一来运行测试。
任何帮助或指导将不胜感激。
编辑:Python 不是绝对必要的。另一种解决方案可能只是将测试集分成几个 M 大小的块,并通过 SSH 在独立的 VM 中运行每个测试,直到完成所有 M 大小的块。我希望有一个工具可以解决这个问题。