【问题标题】:What do you need from a test harness?您需要从测试工具中获得什么?
【发布时间】:2015-01-08 00:36:46
【问题描述】:

我是参与Test Anything Protocol (TAP) IETF group 的人之一(如果有兴趣,请随时加入邮件列表)。许多编程语言开始采用 TAP 作为他们的主要测试协议,他们希望从 TAP 中获得比我们目前提供的更多的东西。因此,我们希望从具有 xUnit、TestNG 或任何其他测试框架/方法背景的人那里获得反馈。

基本上,除了简单的通过/失败之外,您还需要测试工具提供哪些信息?举几个例子:

  • 文件名和行号(如果适用)
  • 开始和结束时间
  • 诊断输出,例如您得到的结果与预期值之间的差异。

等等……

【问题讨论】:

    标签: unit-testing testing testng xunit tap


    【解决方案1】:

    绝对是您列表中每个项目的所有内容:

    • 文件名
    • 行号
    • 命名空间/类/函数名
    • 测试覆盖率
    • 开始时间和结束时间
    • 和/或总时间(这对我来说比前两项更有用)
    • 诊断输出,例如 你得到的和 符合您的预期。

    除了我想知道的一组测试之外,我的脑海中没有太多其他内容

    • 组名
    • 总执行时间

    【讨论】:

      【解决方案2】:

      编写测试必须非常非常容易,并且运行它们同样容易。对我来说,这是测试工具最重要的一个特性。如果有人必须启动 GUI 或跳过一堆圈来编写测试,他们不会使用它。

      【讨论】:

      • 看起来 TAP 实际上根本没有解决编写测试的问题,只是如何将测试结果传回其他系统(出于报告目的或类似目的)
      【解决方案3】:

      任意一组标签 - 所以我可以将测试标记为,例如“集成、UI、管理员”。

      (你知道我会要求这个,不是吗:-)

      【讨论】:

      • 嘿,如果我可以要求 Test::Class 中的一堆功能,你可以要求这个 :)
      • 是的,我想把这种东西放在安全带上。我在上次波特兰 Linux 用户组会议上与 Schwern 讨论过这个问题。我想要像 Test::Manifest 这样的东西,但是对于单独的测试。 :)
      【解决方案4】:

      你说的我要补充:

      • 方法/函数/类名
      • 覆盖率计算工具,有例外(不计算这些方法)
      • 最后 N 次运行的结果可用
      • 要求必须存在轻松解析测试结果的方法

      【讨论】:

        【解决方案5】:

        任何类型的诊断输出 - 尤其是在失败时都是至关重要的。如果测试失败,您不希望总是在调试器下重新运行测试以查看发生了什么 - 输出中应该有一些包含。

        我还希望看到关键系统变量(如可用内存或硬盘空间)的前后快照,因为这些也可以提供很好的线索。

        最后,如果您在任何测试中使用随机种子,请将种子写入日志文件,以便在必要时重现测试。

        【讨论】:

        • 这些都不能在框架中完成(它不知道你的测试做了什么,只有当它成功时才知道),但是 TAP 让你能够在编写测试时添加这些信息诊断功能。
        【解决方案6】:

        我希望能够连接和嵌套 TAP 流。

        【讨论】:

        • 我知道这已经讨论过了。我只是不耐烦。 :D
        【解决方案7】:

        能够识别单个测试的唯一 id (uuid, md5sum) - 例如,用于在数据库中插入测试结果或在错误跟踪器中识别它们以使 QA 可以重新运行单个测试测试。

        这还可以在产品的多个修订版本的整个生命周期中跟踪单个测试的行为,从构建到构建。这最终可能会在“历史性”事件(新员工、产品发布、硬件升级)和因此类事件而失败的测试配置文件之间建立更大规模的关联。

        我还认为 TAP 应该通过专用的侧通道发出,而不是与标准输出混合。我不确定这是否在协议定义的范围内。

        【讨论】:

          【解决方案8】:

          我使用TAP作为一组简单C++测试方法的输出协议,已经看到了以下缺点:

          • 测试步骤不能被分组(只有分组到几个测试脚本中;但是为了在我们的软件中运行所有测试,我需要至少一个更高级别的分组,以便单个测试步骤可以通过 like 来标识“数据库连接”->“重新连接测试”->“测试步骤#3”)
          • 查看预期输出和实际输出之间的差异很有用;我要么将差异打印到 stderr(作为注释),要么实际启动图形差异工具
          • 协议和工具必须真正独立于语言。例如,目前我只知道运行测试的 Perl “证明”工具,它仅限于运行 Perl 脚本

          最后,测试输出必须适合作为轻松生成 HTML 报告文件的基础,该报告文件非常简洁地列出了成功的测试,给出了失败测试的详细输出,并可以快速跳转到 IDE 到失败的测试行。

          【讨论】:

            【解决方案9】:
            • 可选的 ascii 彩色输出,绿色表示正常,黄色表示待处理,红色表示错误

            • 待办事项的想法

            • 测试报告末尾的摘要,其中包含将运行各个测试的命令

            • 列表项

              • 出了点问题

              • 测试中的某些内容待处理

            【讨论】:

            • 您所说的“事物处于未决状态”是什么意思?
            【解决方案10】:

            TAP 的扩展思路:

            1..4
            ok 1 - yay
            not ok 2 - boo
            ok 3 - yay #json:{...}
            ok 4 - see my json
            

            能够附加 #json 评论... - 可以被现有代码安全地忽略 - 定义明确的标签可以在 testanything.org 上轻松保留 - 易于生成、解析和读取复杂类型 - yaml 很痛苦

            【讨论】:

              猜你喜欢
              • 2012-07-22
              • 2011-05-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-07-29
              • 1970-01-01
              • 2016-05-22
              • 2019-07-23
              相关资源
              最近更新 更多