gpt4 book ai didi

unit-testing - 从不同的可执行文件收集单元测试输出的框架?

转载 作者:行者123 更新时间:2023-11-28 20:15:54 25 4
gpt4 key购买 nike

我负责清理旧的单元测试环境。现有环境包含大量可执行文件(1000 多个 shell 脚本、编译的二进制文件等),每个可执行文件都返回代码 0 或 1 以及一些输出,具体取决于结果。测试也可能超时。一组 PERL 脚本遍历,运行每个可执行文件,并将结果收集到一个大的 XML 文件中,该文件被呈现到网页中。该系统运行良好,但可扩展性或速度不是很好。

除了清理/加速它之外,我还想实现并发测试。现在测试一次运行一个。许多测试需要资源锁(端口、文件等),并且没有列出哪些可以安全地同时运行。这里的一个选项是在某种虚拟机中运行每一个。

是否有针对此类情况设计的框架或工具?如果我必须编写自己的全新系统,最好的方法是什么?我的限制是我无法更改 1000 多个测试可执行文件。我在想像 PyUnit 这样的 Python 单元测试,它使用子进程或类似的方法来执行现有测试并将结果转换为 Pythonic 格式。这是矫枉过正吗?这样的系统能否支持进程隔离以避免死锁和测试之间的竞争条件?在最坏的情况下,我正在考虑使用 Python 通过 SSH 连接到多个 VM 之一来运行测试。

如有任何帮助或指导,我们将不胜感激。

编辑:Python 不是绝对必要的。另一种解决方案可能只是将测试集分成几个 M 大小的 block ,并通过 SSH 在独立的 VM 中运行每个测试,直到完成所有 M 大小的 block 。我希望有一个工具可以解决这个问题。

最佳答案

据我所知,没有开箱即用或根据您的需求定制解决方案来解决您面临的问题。

看看你的问题,有几个不同的需求很突出:

  • 测试标记
  • 测试执行
  • 测试结果捕获

您需要解决的第一个问题是如何识别和跟踪可以在给定环境中同时执行的测试等。

如果您使用的是 nose (即更好地测试 python),您将能够使用 Attribute selector plugin用各种属性标记测试。

nose 还可以帮助您执行测试,并且在与测试标记相结合时,可以让您并行运行测试等。使用 nose,您应该能够运行外部可执行文件并根据其状态代码进行断言。

您面临的最后一个问题是如何以专有格式捕获测试输出并将其转换为可以被现成可用工具提取的格式。同样,我相信 Nose 可以帮助你。你可以 build 一个 nose plugin这将采用您的专有格式并将其转换为 XUnit 格式并以这种方式报告结果。

考虑到以上所有情况,下面是我将如何处理这种情况:

  • 创建一个基于 Nose 的测试包装类
    • 可以标记
    • 执行程序并捕获结果输出
    • 将该输出翻译成 XUnit
  • 为每个测试创建一个包装器
    • 弄清楚如何使这个过程自动化,因为它会很乏味
  • 构建测试执行工具,其中
    • 启动一个或多个虚拟机
    • 加载并运行测试包装器
    • 获取结果

关于unit-testing - 从不同的可执行文件收集单元测试输出的框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15100911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com