【问题标题】:How to handle such scenarios?如何处理这样的场景?
【发布时间】:2010-03-09 16:50:42
【问题描述】:

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

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

例如(假设场景)- 如果客户在过去 6 个月内购买了一些有价值的商品,则应在 6 个月过去后为其购买的商品提供一些折扣。他的状态应更新为特权。

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

想法?

【问题讨论】:

    标签: c#-3.0 software-quality


    【解决方案1】:

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

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

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

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

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

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

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

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

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

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

    【讨论】:

    • “在数据库中放置一个脚本以帮助查找和调试问题” - 是的,这就是我的意思。但是,这样的脚本应该没有错误(需要测试!)
    • @junky_user:不,它不需要没有错误。您使用它一天来查找并修复错误,然后将其删除。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-14
      • 2012-02-28
      • 2017-01-20
      • 2018-07-27
      • 2014-05-07
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多