你如何确保第二次同样的bug不会进入产品?

msv*_*cyc 4 testing qa software-quality release-management

我理解简短的答案是通过测试,但你仍然如何进行测试?您是否修改了测试用例以将错误包含在运行的其他测试用例中,或者您只是验证错误跟踪系统中从最旧版本到最新版本的所有错误.

谢谢你的回答.看起来我的问题不明确.我知道我们需要编写错误报告,修复错误并进行修复验证测试.但是,在下一个版本发布期间,测试阶段应该在下一个版本发布期间,我们确保再次重新运行测试以确保没有新的更改重新引入该错误.它是应该进行回归测试还是应该针对该特定项目进行集成测试,还是应该从1.0版开始测试bug跟踪系统中的所有错误?

Joh*_*ers 16

您创建了一个可以重现问题的自动化测试.然后,您可以解决问题,并确保新测试和所有现有测试仍然通过.


这应该是回归测试,并且应尽可能自动化.


GWL*_*osa 9

当您发现错误时,您需要做的第一件事是进行单元测试以演示错误.你知道什么时候修好它,因为测试通过了.你被保护不会退回它,因为那个测试会突然失败.


Tan*_*ena 5

你是什​​么意思说"你被保护不会退回它,因为那个测试会突然失败."?

"单元测试"的意思是它们将作为编译/检查周期的一部分自动运行:您将在编译之后和检查代码之前运行测试.如果单元测试失败,那么您知道某些代码你刚写的将重新创建旧的bug.

编辑:

你怎么能这么肯定,因为你的单元测试通过所有你的错误已经修复.

通常,如果您可以重现错误,则可以进行测试以在代码中复制它.最重要的部分是,一旦你编写了一个测试来检查bug的存在,然后如果你运行测试,并且测试失败,那么你重新引入了bug.关于这个主题的一本好书是"有效地使用遗留代码"

单个错误是否不可能跨越多个单元测试.

当然它可以跨越多个测试.

让我们假设这个bug是"无法保存文件".

我们假设有几种不同的情况可能导致这种情况:

  • 磁盘空间不足,

  • 您正在写的文件被另一个进程打开并锁定,

  • 有权限问题(比如你无法访问目录,或者没有写权限),

  • 或者在保存文件时出现网络错误.

理想情况下,您的测试工具(测试集合)将针对每个测试工具进行单独测试.对于某些测试,您可能需要使用被称为"模拟对象"的东西(当您还没有为组件编写代码时也可以使用它们).