Automated tests 失败的自动测试:如何区分已知的和新引入的bug?

Automated tests 失败的自动测试:如何区分已知的和新引入的bug?,automated-tests,fitnesse,acceptance-testing,Automated Tests,Fitnesse,Acceptance Testing,用例:Fitnesse用于网站的自动测试 SUT(正在测试的软件)包含一个已知的bug。比方说,我们希望网页包含“Changes saved successfully”字符串,但由于该错误,该字符串丢失。因此,在Fitnesse中,此测试用例标记为红色 假设,在另一个测试用例中,我们期望web页面包含“用户成功创建”字符串。在最后一次测试执行之前,它工作得很好。所以,现在这个测试用例也被标记为红色 所以,现在我们有两个测试用例的红灯:一个众所周知的bug和一个新发现的bug。问题是它们都被标记为

用例:Fitnesse用于网站的自动测试

SUT(正在测试的软件)包含一个已知的bug。比方说,我们希望网页包含“Changes saved successfully”字符串,但由于该错误,该字符串丢失。因此,在Fitnesse中,此测试用例标记为红色

假设,在另一个测试用例中,我们期望web页面包含“用户成功创建”字符串。在最后一次测试执行之前,它工作得很好。所以,现在这个测试用例也被标记为红色

所以,现在我们有两个测试用例的红灯:一个众所周知的bug和一个新发现的bug。问题是它们都被标记为红色。所以当我查看测试结果时,我无法区分哪些是已知的,哪些是新的

当然,我可以比较测试历史并查看两次运行之间的差异(有和没有新创建的bug)

或者,我可能不会执行带有已知bug的测试用例

或者我可以调整它,使这个测试用例始终是绿色的,并在bug修复后更改它

但这一切都很不方便。我想区别两种错误(一种众所周知的错误和一种新的错误),以便:

  • 通过查看测试结果,我可以很容易地说:这是一个新的bug,而那些是旧的bug。例如:无bug-绿色,已知bug-黄色,新bug-红色

  • 当bug修复后,很容易更改测试用例


  • 一般来说,验收测试的最佳策略是什么,特别是适合性是什么?

    据我所知,除了手头有一份已知问题的清单外,没有简单的方法来区分“新”错误和预期错误。如果您使用命名约定,可以快速列出已知将失败的测试,然后可以快速扫描哪些错误不在该列表中,即它们是需要查看的新错误。

    这实际上是多个问题。我将把重点放在我认为做FITNESE测试的一个好的实践上。

    我建议您在Hudson这样的CI系统中运行测试。CI系统擅长跟踪每次运行的情况


    要做到这一点,你需要哈德逊能追踪的格式的结果。您可以使用XSL将FitNesse Suite运行的结果转换为Junit样式的报告,然后利用Hudson跟踪Junit结果的能力。这将为您提供趋势和图表。它还可以让你看到任何失败的年代。以下是我的方法:

    这里有一个微妙的区别:您谈论的是跟踪测试状态,而不仅仅是它是否是一个已知的bug。好的CI系统可以帮助您通过历史记录跟踪测试的状态,并让您知道它何时更改状态。(昨天通过,今天失败。)好的CI系统还可以解决错误的故障,这样它们就不会弄乱您的历史。(我特别想到了我在其中所做的团队城市。)


    另一个问题是测试失败时出现bug。正如Barry提到的,命名约定会有所帮助。我还使用了测试框架元数据,通过在测试属性或属性中标记描述来帮助识别现有的bug。

    当我们记录一个确认的bug时,我们在测试源代码的failing语句中添加一个
    #warning
    ,以指示bug编号和一个(非常)简短的失败行为描述。如果我们不希望bug很快得到修复(例如,在几天内),我们将测试隔离到一组预期失败的测试中。我们定期检查这些测试的历史记录,以确保它们没有开发出新的故障模式,并在错误修复后将它们移出隔离区

    正如吉姆·霍姆斯(Jim Holmes)所说,一个好的CI系统(我们也使用JetBrains的TeamCity)将以一种便于事后分析的方式维护历史