[MSDN]ASP.NET MVC2(12)MVC中的测试驱动开发
说明:本内容来自微软的webcast,讲师为苏鹏。视频没有书方便(想看哪页就看哪页),所以抄录要点和老师语录。
内容介绍
- TDD介绍
- ASP.NET MVC2 各层使用TDD方式
预备知识
- 安装VS2010
- 了解ASP.NET
- 了解TDD基础知识
- 了解设计模式基本概念
为什么需要TDD
TDD的由来
- 它是一种实现代码的方法论而不是一种测试方法。
它是一种开放方法而不是测试方法。
它是用来保证软件代码的架构而不是用来保证质量的。
它能辅助完成保证软件质量的工作。
设计的目标是开放驱动的顺序。
何谓TDD
过程:测试先行+重构+回归测试。
先根据工程用例写测试代码,写一个黑盒测试代码。
测试时检验工程外部接口的使用场景,而非具体的实现细节。
然后才是实现功能的外部接口,在实现的过程中,还要根据需要写一些单元测试。
单元测试不仅仅是实现接口,还包括内部的实现细节。就是白盒测试。
如果发现外部接口设计有问题则需要进行修改和重构。每次代码修改之后,或者增加新功能之前,都需要回归运行已有的所有测试。不仅仅包括先前的测试,还包括所有的单元测试。
测试先行保证了所有的应用场景中,逻辑性和完备型,这是TDD的一大卖点。完成的逻辑性和完备性,不是算法的高效性和优效性。
重构是矫正功能语义的前提下,尽可能安全改进设计和实现。
回归测试,保证任何修改不破坏已有的功能。
特点——优点
提高编码效率
功能完整性和正确性。
为什么需要TDD?
- 代码的质量更可靠
先找到功能点,写测试。
代码就是最好的文档。
TDD的工作方式
- 首先编写单元测试
- 编写代码用于通过测试
- 重构代码
- 迭代
第一步 编写测试代码
倒着来,写单元测试,再写代码。
第二步 编写应用代码
第三步 重构上面的代码
写好一个函数,然后将第一个函数黏贴复制,而不是将第一个函数加几个参数。这样是不对的,加几个参数,提高重用。
第四步 迭代
- 重复上面的工作
编写好的单元测试
- 测试技巧
1 不要越界
- 使代码测试工作帮助函数进行定位
一个测试就测试一个功能,不要测试跨类,跨接口,跨函数。
2 默认单元测试
三个步骤,实例化一个controller;实例化一个viewresult;是否为期望的结果。
3 单元测试要简洁
- 只测试自己写的代码
上面的View()为空,第二个才能测试AboutReturnsAbout
使用TDD的几个好处
-测试目标明确
-测试文档化
-测试安全
-测试提升质量
TDD推荐阅读参考书
- Test Driven Development (理论)
- Test-Driven Development In Microsoft.NET(实践)
ASP.NET MVC 的 TDD
- 测试Routes
- 测试Controller
- 测试 View helpers
- 测试views
Testing Routes
- Moq http://code.google.com/p/moq
Tesing Routes
Routertable 是一个全局变量,是static的。一个单元测试改变会影响另一个测试。
Testing Controllers
Tesing Vivw helpers
Testing Views
- 一般不由TDD进行测试
-
测试CSS在不同的浏览器显示
测试Javascript性能
用户体验,一类用户使用习惯的归纳。
推荐资源
《javascript高效编程》
附:
标题:粗体+斜体+黑色
ppt文字:宋体+黑色
作者语录:斜体+黑色/红色/蓝色
我的心得:@开头