2010-03-09 118 views
0

当开发一个软件时,会进行各种类型的测试 - 单元,集成,功能,手册。在我当前的项目(带有sql server的winforms)中,有遗留代码(没有测试),我们确实有很多错误。 我们正尝试使用手动+测试(主要集成)的组合来移除它们如何处理这种情况?

但是,仍然有一些错误可以逃脱。

例如(一个假设的情况) - 如果客户已经购买了一些商品价值为前6个月,应该给他上购买一些折扣,他让曾经6个月有lapsed.His状态应更新为特权。

但是,由于某种原因(代码中的错误)系统没有这样做。我们应该如何处理这种情况?我们是否应该在数据库上运行一个脚本来查找所描述的场景?这种情况的另一个延伸可能是,客户一旦有特权就必须发送礼物,但系统缺少这样做。

想法?

回答

1

“我们是否应该在数据库上运行一个脚本来查找所描述的场景?”

您的意思是“在数据库中放置脚本以纠正问题”,然后

NO。决不。在任何情况下。通过添加特殊的特殊情况逻辑来解决bug是一个非常糟糕的主意。

  1. 当这种特殊的特殊情况逻辑有它自己的错误时,你已经添加了错误代码来尝试纠正错误代码。净亏损。

  2. 当您尝试增强系统时,您有这种特殊的特殊情况下逻辑,没有任何意义。

    a。如果你幸运的话,你可以修复它本应该解决的问题,这将是多余的。现在怎么办?要删除哪个副本?

    b。否则,它会与其他代码相抵触。现在怎么办?哪个是对的?

如果您的意思是“在数据库中放置脚本以帮助查找和调试问题”,那么是的。在短时间内,请使用您的各种工具来查找和修复错误。一旦找到并修复,此脚本将无用,并且必须删除

如果您的意思是“在数据库中编写脚本以测试应用程序”,那么是的。这就是单元测试脚本的用途。使用它们。

创建单元测试比创建放入数据库的脚本要好得多。 单元测试是最好的方法。

+0

“把一个脚本在数据库中,以帮助查找和调试问题” - 是的,这就是我meant.But,再这样的脚本应该是免费的bug(需要测试!) – 2010-03-09 17:43:39

+0

@junky_user:不,不需要没有bug。您可以使用它来查找并修复错误,然后删除它。 – 2010-03-09 18:04:00

0

你应该有一个自动化的测试套件。该测试套件将实现规范要求的所有场景。由于不能等待6个月来测试折扣是否有效,实际实现将被替换为mock实现(示例以java为例,但其他语言也适用相同的原理),例如“模拟”6个月过去了。可以使用断言来使测试自动化。

一旦准备好了整个测试套件,如果所有测试都通过(像以前一样)重构/更改代码,则可以确定没有功能因重构而中断。

相关问题