我们公司正在调查在手动回归测试中使用cobertura代码覆盖率的想法,以找出我们的“相邻功能”。一般的想法是,如果回归测试A命中方法businessLogicFoo(),回归测试B也击中该方法我们可以说回归测试A和B具有'相邻功能'。
我们特别感兴趣的是有效地确定哪些回归测试具有“相邻功能”,以便我们可以安排更好的回归运行(我们有更多的测试时间进行测试 - 所以我们总是最终测试所有回归值的子集测试)。
有没有人曾尝试过这样的事情?使用cobertura或其他一些代码覆盖库?
我的第一个猜测是我们编写一个groovy脚本(我首选的脚本语言)来将cobertura报告导出为XML,然后解析所涵盖的类/方法 - 过滤掉任何多余的类 - 然后找到方法/类之间的交叉点这两份报告。理想情况下,所有控制器都在maven中。但我只是在猜测。
答案 0 :(得分:0)
你的猜测听起来是正确的(虽然我自己使用Ruby :))。 但是,你确定你的哪些测试可能是重复的,那么你当然必须确定测试是否真的是多余的(它们可能只是部分重叠,在这种情况下,将它们组合起来就是答案,而不是废弃它们另一个)。 我不知道除了手动检查所有已识别的命中之外的任何方式。
答案 1 :(得分:0)
我们的Test Coverage工具可以轻松计算测试覆盖矢量的交叉点,联合,补码,设置差异,使您的交叉点无法计算。
您可以将单个测试与其自己的测试覆盖率向量相关联,并计算其与其他测试的交叉点,告诉您两个测试具有多少重叠。如果它们具有小的重叠,则它们与您的表征“相邻”。通常他们会运用一些可能会混淆问题的共享“核心功能”,但是您可以通过执行核心功能的多个测试的交集来计算,并将其减去,以查看它们不共享的内容。
更好的是,如果您修改某些代码,该工具将告诉您哪些测试覆盖率集(例如,哪些测试)受到影响,以及您需要运行哪些代码。更重要的是,这告诉您哪些不需要运行。如果您的测试是手动的, 这应该对减少重新测试工作非常有帮助。