我们是否应该总是重现错误以验证修复?

web*_*ber 23 testing qa

我们不时会遇到可以通过更改配置,禁用逻辑的某些部分等来修复的生产错误.

我和我的经理争论过,我们应该在本地重现这些错误以确保修复工作,更重要的是,开发人员和QA可以将这些案例的检查作为常规版本的一部分.

我的经理认为是浪费时间,因为解决方案有效,因此无需在本地重现.

那么:我们应该尝试在本地重现以验证修复吗?如果你同意我的话,有关如何向我的经理出售这一点的任何指示?

Lim*_*tem 46

如果你还没有复制这个bug,你的"修复"就好比猜测更好.

  • 换一种方式; 如果你不测试你的修复程序,你怎么知道它实际修复了什么?您可能已经修复了一个错误,但您修复的错误可能与报告的错误不同. (2认同)
  • 如果我能在正确的时间里猜出*,并且让客户以更少的努力更快地进行,我想我会得到比你更多的报酬......你可以不喜欢这个你想要的,有时直觉*支付*这个并不意味着_never_ repro修复,或者确实很少.但总是一个丑陋的词 (2认同)

Dav*_*d Z 18

脱离我的头顶:

  • 您可能无意中引入了修复程序的新错误
  • 您无法100%确定修复程序在没有测试的情况下实际修复了错误(除非在最简单的情况下)


Uri*_*Uri 11

如果它在经济上可行(例如,不是为了重现环境而将一些用户的整个硬盘驱动器复制到本地机器上),我非常相信再现错误.

错误的不幸之处在于,通常只有一种方法可以修复错误,但是有许多方法可以修复错误,许多修复方法实际上是掩盖而不是修复.您可能永远找不到根本原因,因此错误会再次出现,或者稍后会出现另一个看似不同的错误.

如果你能找到一个已经发生的例子(例如,来自同一根本原因的两个不相关的错误),你可能会赢得你的老板.


bed*_*wyr 9

这个bug的性质也有问题:

  1. 可以通过单元测试快速复制缺陷吗?如果是这样,开发修复程序的开发人员应编写所述单元测试,并将其集成到更完整的回归套件中.这确保了未来的工作不会重新引入缺陷.

  2. 可以以编程方式再现缺陷(例如,使用Perl或Python脚本)吗?如果是这样,QA团队应该有一个覆盖它的自动化测试用例,并且可以快速用于验证.

  3. 可以通过一系列逐步说明来复制缺陷吗?如果是这样,QA团队(或最初标记该bug的人)应该提供绝对最少的再现步骤.

这三个原则极大地有助于推动我的测试团队的QA流程.

开发人员最好自己重现缺陷.如果这是不可能的(例如硬件资源的稀缺性),直接与QA(或最初标记该错误的人)合作将是下一个最好的事情.虽然有些缺陷是显而易见的(例如菜单选项中的拼写错误),但其他缺陷可能会产生更大的后果,而这些后果可能会由了解应用程序基础状态的开发人员捕获.

让开发人员重现缺陷以确认它们确实是缺陷也是有帮助的.测试人员虽然不可或缺(作为软件测试人员说话)),但他们往往缺乏对应用程序代码的深入了解,并且可能无法深入理解为什么行为不符合他们的期望(或规范).


Lor*_*tel 6

你不应该在本地重现它的唯一情况是,这是不可行的.也许它需要一个LOT数据,专有数据,硬件的,也许它需要比你有更复杂的设置.

我不得不这样做几次,因为我们无法在内部复制设置.(有些开发工作甚至已经在客户端的系统上完成.)客户从一开始就知道他们超出了我们可以重现的范围,并且这个问题很难解决.


S.L*_*ott 5

测试驱动开发背后的基本原则是您有一个演示某些功能的测试.

在这种情况下,您将创建一个演示该错误的测试.测试失败.

你修复了这个bug.测试通过.和所有其他测试一样.你实际上修复了bug而没有产生其他问题.