Automated tests 失败的自动测试:如何区分已知的和新引入的bug?
用例:Fitnesse用于网站的自动测试 SUT(正在测试的软件)包含一个已知的bug。比方说,我们希望网页包含“Changes saved successfully”字符串,但由于该错误,该字符串丢失。因此,在Fitnesse中,此测试用例标记为红色 假设,在另一个测试用例中,我们期望web页面包含“用户成功创建”字符串。在最后一次测试执行之前,它工作得很好。所以,现在这个测试用例也被标记为红色 所以,现在我们有两个测试用例的红灯:一个众所周知的bug和一个新发现的bug。问题是它们都被标记为红色。所以当我查看测试结果时,我无法区分哪些是已知的,哪些是新的 当然,我可以比较测试历史并查看两次运行之间的差异(有和没有新创建的bug) 或者,我可能不会执行带有已知bug的测试用例 或者我可以调整它,使这个测试用例始终是绿色的,并在bug修复后更改它 但这一切都很不方便。我想区别两种错误(一种众所周知的错误和一种新的错误),以便:Automated tests 失败的自动测试:如何区分已知的和新引入的bug?,automated-tests,fitnesse,acceptance-testing,Automated Tests,Fitnesse,Acceptance Testing,用例:Fitnesse用于网站的自动测试 SUT(正在测试的软件)包含一个已知的bug。比方说,我们希望网页包含“Changes saved successfully”字符串,但由于该错误,该字符串丢失。因此,在Fitnesse中,此测试用例标记为红色 假设,在另一个测试用例中,我们期望web页面包含“用户成功创建”字符串。在最后一次测试执行之前,它工作得很好。所以,现在这个测试用例也被标记为红色 所以,现在我们有两个测试用例的红灯:一个众所周知的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)将以一种便于事后分析的方式维护历史