- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
.net项目开发单元测试与TDD概要1
单元测试与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)