【问题标题】:Tools to find code coverage intersections?查找代码覆盖交叉点的工具?
【发布时间】:2011-02-15 15:44:01
【问题描述】:

我们公司正在研究在手动回归测试期间使用 cobertura 代码覆盖率的想法,以找出我们在哪里拥有“相邻功能”。一般的想法是,如果回归测试 A 命中方法 businessLogicFoo(),并且回归测试 B 也命中该方法,我们可以说回归测试 A 和 B 具有“相邻功能”。

我们对有效确定哪些回归测试具有“相邻功能”特别感兴趣,以便我们可以安排更好的回归运行(我们有更多的测试需要测试 - 所以我们最终总是测试所有值得回归的子集测试)。

以前有没有人尝试过这样的事情?使用 cobertura 或其他代码覆盖率库?

我的第一个猜测是我们编写了一个 groovy 脚本(我首选的脚本语言)来将 cobertura 报告导出为 XML,然后解析出所涵盖的类/方法 - 过滤掉任何多余的类 - 然后找到方法/类之间的交叉点两份报告。理想情况下,所有控制都在 Maven 中。但我只是猜测。

【问题讨论】:

  • 您的目标是识别(几乎)重复测试吗?在我的经验中,“有更多的测试时间来测试”是一种非常不寻常的情况。为什么您的测试需要这么长时间才能运行?
  • 我遇到过这样的情况,由于各种原因,一些测试需要很长时间才能运行。测试需要一个生命数据库,运行其中的大量数据,而我们的测试/开发系统运行在严重不足的硬件和网络上。因此,应用程序的完整测试套件可能需要半个多小时(有时在网络/数据库负载高峰期超过 2 小时)才能运行。当然,它很少完全运行,我们通常只运行子集。
  • 很抱歉,这可能不清楚:测试是手动功能测试,不是自动化的,不是单元的。

标签: java groovy maven cobertura


【解决方案1】:

您的猜测听起来很正确(尽管我自己会使用 Ruby :))。 但是,当您确定您的哪些测试可能重复时,您当然必须确定这些测试是否真的是多余的(它们可能只是部分重叠,在这种情况下,将它们组合起来就是答案,而不是废弃一个有利于另一个)。 除了手动检查所有已识别的匹配项之外,我不知道任何方法。

【讨论】:

    【解决方案2】:

    我们的Test Coverage 工具可以轻松计算测试覆盖向量的交集、并集、补集、集差,让您的交集计算起来很简单。

    您可以将单个测试与其自己的测试覆盖向量相关联,并计算其与其他测试的交集,告诉您两个测试有多少重叠。如果它们有很小的重叠,那么它们在你的表征中是“相邻的”。他们通常会使用一些共享的“核心功能”,这可能会混淆问题,但您可以通过将执行该核心功能的多个测试相交来计算这一点,然后将其减去,以查看它们不共享的内容。

    更好的是,如果您修改了一些代码,该工具会告诉您哪些测试覆盖集(例如,哪些测试)受到了影响,因此您需要运行哪些。更重要的是,这告诉您不需要运行哪些。如果您的测试是手动的, 这应该有助于最大限度地减少重新测试的工作量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 2018-10-14
      相关资源
      最近更新 更多