0

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

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

例如(假设场景) - 如果客户在过去 6 个月内购买了一些有价值的商品,那么一旦 6 个月过去了,他应该在购买时获得一些折扣。他的状态应该更新为特权。

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

想法?

4

2 回答 2

1

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

你的意思是“在数据库中放置一个脚本来纠正问题”,那么没有

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

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

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

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

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

如果您的意思是“在数据库中放置一个脚本以帮助查找和调试问题”,那么可以。在短时间内,使用您可以使用的所有工具来查找和修复错误。一旦找到并修复,这个脚本就没有用了,必须删除。

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

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

于 2010-03-09T17:14:06.623 回答
0

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

一旦您准备好整个测试套件,如果所有测试在(就像以前一样)重构/更改代码之后通过,则可以确定没有因重构而破坏任何功能。

于 2010-03-09T17:12:09.653 回答