罗耀秋,字无介,号馨园主人。湖南浏阳人。好旅游、音乐、垂钓、美食、足球。 微薄:http://weibo.com/luoyaoqiu 微信:luoyaoqiu 邮件:luoyear@163.com

单元可测试性[转]

上一篇 / 下一篇  2006-12-27 20:14:49 / 个人分类:单元测试

1单元的定义

单元是指完成单一(较小)功能的相关数据(数据结构)及对应算法函数集的集合。

功能块的划分并没有标准可依,只要代码行数还比较多,就都可以把一个功能块再拆分为若干子功能块。一般代码量在2002000行的,可以认为是单元;超过2000行的可以认为是模块,需要进行功能块拆分;小于200行的,应该进行功能块聚合。

单元应该只含有单一逻辑。通过收发消息进行耦合的代码,由于同时含有业务逻辑(业务流程)和并发逻辑(操作系统层面的收发消息、信号量、定时器等),一般都划为模块。将2种逻辑解耦后,只含业务逻辑的代码才考虑是否可以简单到成为单元

SDL进程状态机一般都逻辑略嫌复杂,应该划为模块,它的每个进程页才考虑是否可以简单到成为单元。

一个大功能块拆分为多个子功能块时,必然还有大量代码不能划入任何一个子功能块,这些代码则是集成测试时所要关注的内容。单元测试阶段并不要求所有代码都经测试覆盖。

没有返回值、回传参数,也不向外发送消息的函数不可能独立构成单元。

2单元测试的重点

单元测试时关注的核心是数据而不是算法函数。因为功能的完成总是以数据发生变化来表现的。

3单元测试的目的

l        单元测试能发现很多设计、编码中的错误。但是,要发现几乎所有错误,它的工作量将是非常大的。由于单元测试是由开发人员完成的,这样做将会严重影响开发进度。所以,“发现几乎所有错误”的责任在软件工程里一直都是交由独立的测试部门完成的。所以,单元测试不该对黑白盒覆盖率提太高的指标,一般都是用例制。

l        单元测试用来证明代码满足“客户需求”。单元测试的用例应该模拟客户使用这些代码的方式。当单元测试通过的时候,我们就能知道客户的需求被满足了;当我们不知道如何写单元测试代码时,就意味着客户也将不知道如何使用这些单元代码。

l        单元测试用来证明bug已经被修复。当发现bug时,应该先拟制一个新的单元测试用例,它能确保触发bug,修改bug后,再跑这个测试用例,当成功通过过,我们就可以认为bug确实被修复了。

l        单元测试能确保后来对代码的修改没有破坏已有功能。无论修改bug还是追增功能,都很容易导致已有功能被破坏。如果能用自动测试机对已有测试用例自动跑一遍,就可以确保已有功能未遭破坏。

4单元测试的投入

           代码走查、单元测试、模块测试……都可以提高软件质量。但是,软件开发是一个经济学范畴的事情,应该合理安排所有这些步骤的投入。我认为对核心代码走查,对重要代码单元测试,用例制而不要太看重各覆盖率指标。

5单元测试的平台

           单元应该与平台、支撑尽量解耦,在调试方便的windows平台进行。

6单元测试的设计

           介绍单元测试的书有不少,此处推荐《Design by Contract原则与实践》(Richard MitchellJim Mckim)一书。

           于此节选其中一个实例供大家参考。虽然是Eiffel语言写的,但绝对不会影响理解其思想。

7可测试性的提高

           单元测试的可测试性,无法在代码编码完成后再进行提高,是要在设计阶段就要预先考虑的。也就是说,可测试性是设计出来的。

           具体方法,请参看《测试驱动开发》(Kent Beck)。一书之言,恕我无法数言以概。


TAG: 单元测试

 

评分:0

我来说两句

luoyear

luoyear

罗耀秋,字无介,号馨园主人。湖南浏阳人。好旅游、音乐、垂钓、美食、足球。 10多年质量管理,外包管理,培训管理及招募管理经验,对敏捷,CMMI/ISO/TL9000/6Sigma/PMP/PrinceII/测试咨询等有一定的了解。 邮件:luoyear@163.com,微信:luoyaoqiu,新浪微薄:http://weibo.com/luoyaoqiu

日历

« 2024-02-09  
    123
45678910
11121314151617
18192021222324
2526272829  

数据统计

  • 访问量: 202584
  • 日志数: 56
  • 图片数: 3
  • 书签数: 2
  • 建立时间: 2006-12-01
  • 更新时间: 2012-12-07

RSS订阅

Open Toolbar