如何处理这种情况?

时间:2010-03-09 16:50:43

标签: c#-3.0 software-quality

当开发软件时,会进行各种类型的测试 - 单元,集成,功能,手动。在我当前的项目(带有sql server的winforms)中,它有遗留代码(没有测试),我们确实有很多bug 。 我们正尝试使用手动+测试(主要是集成)的组合来删除它们

但是,仍有一些漏洞可以逃脱。

例如(假设情景) - 如果客户在过去6个月内购买了一些价值的商品,那么他应该在6个月过后的购买时给予一些折扣。他的状态应该更新为特权。< / p>

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

思想?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

    一个。如果你很幸运,你修复了应该解决的错误,这将是多余的。现在怎么办?要删除哪个副本?

    湾否则,它将与其他代码相矛盾。现在怎么办?哪个是对的?

  3. 如果您的意思是“将脚本放入数据库以帮助查找和调试问题”,那么是的。在短时间内,使用您可以使用的每个工具来查找和修复错误。找到并修复后,此脚本无用,必须删除。

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

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

答案 1 :(得分:0)

您应该有一个自动化的测试套件。该测试套件将实现规范所需的所有方案。由于人们不能等待六个月来测试折扣是否有效,实际的实现将被mock实现所取代(该示例在java中,但同样的原则适用于其他语言),例如“模拟” 6个月过去了。可以使用断言来自动化测试。

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