全面介绍单元测试(转载)

上一篇 / 下一篇  2007-05-02 21:13:02 / 个人分类:测试技术

51Testing软件测试网r4|XJW7e C

1。要进行充分的单元测试,应专门编写测试代码,并与产品代码隔离。比较简单的办法是为产品工程建立对应的测试工程,为每个类建立对应的测试类,为每个函数(很简单的除外)建立测试函数。

J5zc]dS$BKVq0

;e~k(sI9sQQ!M nG02。测试用例、输入数据及预期输出。

%v v N(}@"?051Testing软件测试网5{vZ|/mE*^

输入数据是测试用例的核心,它是被测试函数所读取的外部数据及这些数据的初始值。外部数据是对于被测试函数来说的,实际上就是除了局部变量以外的其他数据,共分为以下几类:参数、成员变量、全局变量、IO媒体。IO媒体是指文件、数据库或其他储存或传输数据的媒体,例如,被测试函数要从文件或数据库读取数据,那么,文件或数据库中的原始数据也属于输入数据。一个函数无论多复杂,都无非是对这几类数据的读取、计算和写入。51Testing软件测试网E+HH@1O| }

sO)p0H3tvp*vwX0我们应该用一定的规则选择有代表性的数据作为输入数据,主要有三种:正常输入,边界输入,非法输入,每种输入还可以分类,也就是平常说的等价类法,每类取一个数据作为输入数据,如果测试通过,可以肯定同类的其他输入也是可以通过的。下面举例说明:
$e/z1w&L aK |#xg0  正常输入51Testing软件测试网.F'D%Fh.e
  例如字符串的Trim函数,功能是将字符串前后的空格去除,那么正常的输入可以有四类:前面有空格;后面有空格;前后均有空格;前后均无空格。51Testing软件测试网YU l%V"u1Rn f
  边界输入51Testing软件测试网 Y,zI,|2~9i
  上例中空字符串可以看作是边界输入。51Testing软件测试网5Z&F(m.C'p8MC"B
  再如一个表示年龄的参数,它的有效范围是0-100,那么边界输入有两个:0和100。
;W@5nG VA0  非法输入51Testing软件测试网kH uA O
  非法输入是正常取值范围以外的数据,或使代码不能完成正常功能的输入,如上例中表示年龄的参数,小于0或大于100都是非法输入,再如一个进行文件操作的函数,非法输入有这么几类:文件不存在;目录不存在;文件正在被其他程序打开;权限错误。51Testing软件测试网 ZJ _#U*TOx
  如果函数使用了外部数据,则正常输入是肯定会有的,而边界输入和非法输入不是所有函数都有。一般情况下,即使没有设计文档,考虑以上三种输入也可以找出函数的基本功能点。实际上,单元测试与代码编写是“一体两面”的关系,编码时对上述三种输入都是必须考虑的,否则代码的健壮性就会成问题。
h/H.p)^vf B p$UlG03。白盒测试针对程序的逻辑结构设计测试用例,用逻辑覆盖率来衡量测试的完整性。逻辑单位主要有:语句、分支、条件、条件值、条件值组合,路径。51Testing软件测试网i"h/TP%g;t

zZ A/K S1F#SJ)j0经验:发现与条件直接有关的错误主要是逻辑操作符错误,例如:||写成&&,漏了写!什么的,采用分支覆盖与条件覆盖的组合,基本上可以发现这些错误,另一方面,条件值覆盖与条件值组合覆盖往往需要大量的测试用例,因此看来,条件值覆盖和条件值组合覆盖的效费比偏低。本人认为效费比较高且完整性也足够的测试要求是这样的:完成功能测试,完成语句覆盖、条件覆盖、分支覆盖、路径覆盖。实际就是通过使用工具实现,否则人工难以完成,工作量太在。

A.`L3yhyN+g051Testing软件测试网&\ z7{;H w

白盒测试用例的设计,普通方法是画出程序的逻辑结构图如程序流程图或控制流图,根据逻辑结构图设计测试用例,这些是纯粹的白盒测试,推荐一类方法:先完成黑盒测试,然后统计白盒覆盖率,针对未覆盖的逻辑单位设计测试用例覆盖它,例如,先检查是否有语句未覆盖,有的话设计测试用例覆盖它,然后用同样方法完成条件覆盖、分支覆盖和路径覆盖,这样的话,既检验了黑盒测试的完整性,又避免了重复的工作,用较少的时间成本达到非常高的测试完整性。不过,这些工作可不是手工能完成的,必须借助于工具,后面会介绍可以完成这些工作的测试工具51Testing软件测试网Ep$}Si @i&GFB
4。单元测试工具:针对c/c++51Testing软件测试网U.N,Sp l|n1s;|[-V

_ B&WK"d0最后介绍Visual Unit,简称VU,这是国产的单元测试工具,据说申请了多项专利,拥有一批创新的技术,如[自动生成测试代码 快速建立功能测试用例 程序行为一目了然 极高的测试完整性 高效完成白盒覆盖 快速排错 高效调试 详尽的测试报告]。[]内的文字是VU开发商的网页上摘录的,网址是:http://www.unitware.cn。前面所述测试要求:完成功能测试,完成语句覆盖、条件覆盖、分支覆盖、路径覆盖,用VU可以轻松实现,还有一点值得一提:使用VU还能提高编码的效率,总体来说,在完成单元测试的同时,编码调试的时间还能大幅度缩短。工具好不好用,合不合用,要试过才知道,还是自己去开发商的网站看吧,可以下载演示版,还有演示课件。51Testing软件测试网2o P7r*m6OC7T

D P3k|Z4F&cx0备注:本篇是个人剪裁过的,为了个人阅读方便,详细可查看

(iU0]E Z^S051Testing软件测试网kgV{@w/l6YJQ z

http://www.51testing.com/?action_viewnews_itemid_7430.html51Testing软件测试网!yju.S:@7jG

+?Q%k X ~!R:w r0 

"ji%sI"|0x0

TAG:

 

评分:0

我来说两句

Open Toolbar