我正在编写一个简单的 Web 应用程序,使用 Linq to Sql 作为我的数据层,因为我非常喜欢 Linq2Sql。我最近读了一些关于 DDD 和 TDD 的文章,想试一试。
首先让我感到震惊的是,Linq2Sql 和 DDD 并没有很好。我的另一个问题是寻找测试,我实际上发现很难定义好的测试所以我想问,你发现好的测试用例的最佳技术是什么。
我正在编写一个简单的 Web 应用程序,使用 Linq to Sql 作为我的数据层,因为我非常喜欢 Linq2Sql。我最近读了一些关于 DDD 和 TDD 的文章,想试一试。
首先让我感到震惊的是,Linq2Sql 和 DDD 并没有很好。我的另一个问题是寻找测试,我实际上发现很难定义好的测试所以我想问,你发现好的测试用例的最佳技术是什么。
好吧,按照 TDD 的标准解释,测试驱动你的开发。所以,本质上你是从测试开始的。它会失败,您将编写代码直到测试通过。所以它是由你的需求驱动的,但是你去收集那些。你决定你的应用程序/功能需要做什么,编写测试,然后编码直到它通过。当然,还有许多其他技术,但这只是对 TDD 世界中典型想法的简要说明。
测试用例发现更像是一门艺术而不是一门科学。然而,简单的指导方针包括:
有几本关于如何编写测试用例的书,但除非你在一个需要记录测试用例的大型组织中工作,否则最好的办法是考虑代码中你不喜欢的所有部分(即't "pure") 并确保您可以彻底测试这些模块。
想想。阅读代码。问问自己:例如,这个指针在这里永远不会是 NULL 吗?如果在初始化之前调用此方法会发生什么?
不要做出诸如“此文件将永远存在”之类的假设。测试。
想想边缘情况、边界、负值、溢出......
错误通常按集群分组。当你找到一个时环顾四周。还要在其他位置寻找相同类型的错误。
把你的注意力放在测试的实际目标上:发现错误。
创造性地想象可能导致您的程序失败的原因。
您的测试必须找到错误,而不是确认您的程序是否正常。
我经常为第三方 API 编写测试。这样,当 API 更新时,我就知道我是否会中断。
我认为这是一个有用的技术:
参考资料:Lisa (Ling) Liu、Bertrand Meyer 和 Bernd Schoeller,使用合同和布尔查询来提高自动测试生成的质量,在TAP:测试和证明的过程中,苏黎世联邦理工学院,2007 年 2 月 5-6 日,编辑。Yuri Gurevich 和 Bertrand Meyer,计算机科学讲义,Springer-Verlag,2007。