你需要从测试工具中得到什么?

时间:2008-09-18 10:52:35

标签: unit-testing testing testng xunit tap

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

基本上,除了简单的通过/失败,您需要从测试工具中获得哪些信息?只是给你一些例子:

  • 文件名和行号(如适用)
  • 开始和结束时间
  • 诊断输出,例如你得到的和你期望的差异。

等等......

10 个答案:

答案 0 :(得分:7)

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

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

从我的头脑中,除了我想知道的一组测试之外别无他法

  • 群组名称
  • 总执行时间

答案 1 :(得分:6)

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

答案 2 :(得分:6)

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

(你知道我要问的不是你: - )

答案 3 :(得分:4)

根据你所说的我要加上:

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

答案 4 :(得分:4)

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

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

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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

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

我也在想TAP应该通过专用的侧通道发出,而不是与stdout混合使用。我不确定这是否在协议定义的范围内。

答案 7 :(得分:0)

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

  • 测试步骤不能分组(只有分组到几个测试脚本中;但是为了在我们的软件中运行所有测试,我需要至少一个级别的分组,以便通过类似的方式确定单个测试步骤“DB连接” - >“重新连接测试” - >“测试步骤#3”)
  • 看到预期输出和实际输出之间的差异很有用;我要么将diff打印到stderr(作为注释),要么实际启动图形差异工具
  • 协议和工具必须真正与语言无关。例如,到目前为止,我只知道用于运行测试的Perl“prove”工具,该工具仅限于运行Perl脚本

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

答案 8 :(得分:0)

  • 可选的ascii彩色输出,绿色表示正常,黄色表示挂起,红色表示错误

  • 正在等待事情的想法

  • 在将运行各个测试的命令的测试报告末尾的摘要

  • 列出项目

    • 出了问题

    • 测试中的某些内容正在等待

答案 9 :(得分:0)

TAP的扩展理念:

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

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