【问题标题】:TDD, What are your techniques for finding good tests?TDD,你有什么技术可以找到好的测试?
【发布时间】:2009-01-07 00:04:45
【问题描述】:

我正在编写一个简单的 Web 应用程序,使用 Linq to Sql 作为我的数据层,因为我非常喜欢 Linq2Sql。我最近读了一些关于 DDD 和 TDD 的文章,想试一试。

首先让我感到震惊的是,Linq2Sql 和 DDD 并没有很好地配合。我的另一个问题是寻找测试,实际上我发现很难定义好的测试,所以我想问一下,你发现好的测试用例的最佳技术是什么。

【问题讨论】:

    标签: c# linq-to-sql tdd domain-driven-design


    【解决方案1】:

    测试用例发现与其说是科学,不如说是一门艺术。然而,简单的准则包括:

    • 您知道脆弱/脆弱/可能会破坏的代码
    • 关注用户场景(您的用户将要做什么)并查看它将如何影响您的代码(通常这意味着调试它,其他时候进行分析,而其他时候它只是意味着考虑场景) - 您的任何点代码被用户接触,这些是编写测试的最高优先级。
    • 在您自己的开发过程中,您运行的测试会导致您发现错误 - 编写测试以避免代码再次以相同的行为回归。

    有几本关于如何编写测试用例的书籍,但除非您在需要记录测试用例的大型组织工作,否则最好的办法是考虑代码中您不喜欢的所有部分(不是“纯”的)并确保您可以彻底测试这些模块。

    【讨论】:

    • 谢谢,我认为设置最常见的用例应该对我有很大帮助
    【解决方案2】:

    嗯,按照 TDD 的标准解释,测试驱动您的开发。所以,本质上你是从测试开始的。它会失败,您将编写代码直到测试通过。所以它是由你的需求驱动的,但是你去收集那些。您决定您的应用程序/功能需要做什么,编写测试,然后编写代码直到它通过。当然,还有许多其他技术,但这只是对 TDD 世界中的典型想法的简要说明。

    【讨论】:

      【解决方案3】:

      思考。阅读代码。问问自己:例如这个指针在这里永远不能为 NULL 吗?如果在初始化之前调用此方法会发生什么?

      不要做任何假设,例如“此文件将永远存在”。测试。

      想想边缘情况、边界、负值、溢出......

      错误通常按集群分组。当你找到一个时环顾四周。还要在其他位置寻找相同类型的错误。

      【讨论】:

        【解决方案4】:

        将注意力集中在测试的实际目标上:发现错误。

        创造性地想象可能导致您的程序失败的原因。

        您的测试必须找到错误,而不是确认您的程序是否正常。

        【讨论】:

          【解决方案5】:

          我经常为第三方 API 编写测试。这样,当 API 更新时,我就知道我是否会中断。

          【讨论】:

            【解决方案6】:

            我认为这是一个有用的技术:

            Using contracts and boolean queries to improve quality of automatic test generation


            参考:Lisa (Ling) Liu、Bertrand Meyer 和 Bernd Schoeller,使用合同和布尔查询来改进 自动测试生成的质量,在 TAP 的过程中:测试 And Proofs,苏黎世联邦理工学院,2007 年 2 月 5-6 日,编辑。尤里·古列维奇和 Bertrand Meyer,计算机科学讲义,Springer- 出版社,2007 年。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-07-09
              • 1970-01-01
              • 2020-12-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多