测试

TODO 太乱,整理

基本理论

软件测试-理论常识篇
http://www.lai18.com/content/461008.html

使用unity进行测试驱动开发
http://www.lai18.com/content/2335228.html

mock介绍
http://baidutech.blog.51cto.com/4114344/743740/

相关工具

http://blog.csdn.net/jiayanhui2877/article/details/8727193
gcc内建gcov工具代码覆盖率

http://blog.csdn.net/windone0109/article/details/15814653
http://rdc.hundsun.com/portal/article/704.html
覆盖率相关工具

http://www.throwtheswitch.org/build/build-unity
http://www.throwtheswitch.org/build/which

http://www.it1352.com/494486.html

tag:

  • 敏捷开发
  • 单元测试

单元测试和TDD

从测试的颗粒度开始谈单元测试

根据测试的颗粒度划分, 测试可以分为:

  • 单元测试: 白盒地由开发人员自行编写的测试, 看组成模块的各部件工作是否正常.
  • 集成测试(功能测试/系统测试): 灰盒地把各模块放一起联调, 可以很容易检查出模块间接口不匹配的问题.
  • 验收测试: 黑盒地根据用户需求进行测试.

TDD

TDD(Test Driven Development以及Test Driven Design)是一种开发模式, 提倡先写测试用例后实现, 也就是开发人员拿到需求之后, 先设计接口, 确定了怎么使用之后再着手实现.

对于开发人员, TDD带来的最直观的好处是写程序的过程中可以步进地看到程序建立起来, 也就是能得到快速的反馈, 把注意力集中到”实现目标”上而不是纠结与它的实现细节.

同时, TDD促进了解耦, 因为TDD会迫使程序设计成可测试的, 而可测试的程序必须减少耦合.

TDD实践:

  • 建立一个能独立编译的测试用例
  • 根据需求, 设计接口, 写测试用例
  • 以跑通测试用例为目标, 编写实现

我的理解, 对于一整个项目, TDD开发的测试用例可以是一些功能测试(敏捷开发里提到的”验收测试”, 比如最终产品是一些API, 则对API进行测试); 对于项目中的各个模块, 测试用例就是开发人员自己编写的单元测试了.

单元测试的独立性和非入侵性

脱离依赖