- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
.net项目开发-单元测试与TDD
单元测试与TDD项目开发 .net项目组 李文建 nextmyth@ 1、单元测试 单元测试(unit testing),是指对软件中的最小 可测试单元进行检查和验证。 单元测试(模块测试)是开发者编写的一小段代码, 用于检验被测代码的一个很小的、很明确的功能是否 正确。 单元测试是由程序员自己来完成,最终受益的也是 程序员自己。 1.1、单元测试示例 Microsoft.VisualStudio.TestTools.UnitTesting 1.2、Mock单元测试 举个例子:在开发一个网店系统时,想集中精力 开发业务逻辑部分,而不想在数据层上花费太多 时间,这时,可以通过Mock对象来模拟数据层, 而不必去为数据连接等去做太多的事,而又可以 使业务测试可以进行下去。 Mock框架:NMock,PhinoMocks,FakeItEasy,Moq C#单元测试:Moq框架 1.3、Mock框架--Moq 让Mocking以一种自然的方式与现有单元测试 进行集成,使它更加简单、直观 Moq的目标就是为了帮助那些编写测试代码, 但却不使用Mocking框架的开发人员。 设计原则以极低的门槛来获取良好的重构能力。 1.4、单元测试重要性 提高软件质量,降低开发成本的必由之路。 单元测试的成本效率大约是集成测试的两倍,是系统测试 的三倍(Capers Jones,McGraw-Hill 1991) Bug发现的越晚,修改它所需的费用就越高 对于中大项目而言尤其重要,如果没有进行单元测试。当 BUG暴露出来的时候难于调试,大幅度提高后期测试和维护 成本。 2、TDD(测试驱动开发) Test-Driven Development TDD的原理是在开发功能代码之前,先编写单元测试 用例代码,测试代码确定需要编写什么产品代码。 基本思路 就是通过测试来推动整个开发的进行,但测试驱动开发 并不只是单纯的测试工作,而是把需求分析,设计, 质量控制量化的过程。 2.1、TDD示例 2.2、TDD的基本过程 1. 明确当前要完成的功能。可以记录成一个TODO列表。 2. 快速完成针对此功能的测试用例编写。 3. 测试代码编译通过。 4. 编写对应的功能代码。 5. 测试通过。 6. 对代码进行重构,并保证测试通过。 7. 循环完成所有功能的开发。 2.3、TODO列表 验证工具类:ValidateUtils 方法: //验证是否为邮箱,是返回true,否返回false public static bool VerifyEmail(string email) //验证密码格式,符合返回true,否返回false public static bool VerifyPassWord(string password) //删除list中重复的数据 public static Listint getSortList(Listint list) 2.4、TDD优缺点 优点:在任意一个开发节点都可以拿出一个可以 使用,含少量bug并具一定功能和能够发布的产品。 缺点:增加代码量。测试代码是系统代码的两倍或 更多,但是同时节省了调试程序及挑错事件。 理解的不一致问题 在开始开发新特性前,由业务分析人员,测试人员, 开发人员进行一次讨论,就验收条件达成一致并形成 记录,然后测试人员和开发人员分头去写测试和实现。 2.5、什么时候需要TDD 软件开发是复杂性非常高的工作,开发过程中要 考虑很多东西,很多问题都是因为复杂性太大。 极限编程提出了一个非常好的思路就是小步前进。 把所有的规模大、复杂性高的工作,分解成小的 任务来完成。 每个功能:测试代码-功能代码-测试-重构的循环。 通过分解降低整个系统开发的复杂性。 谢谢!
文档评论(0)