软件测试

软件测试可以按测试范围、测试目的、测试对象、测试过程分类

按测试范围分类 按测试目的分类
按测试对象分类 按测试过程分类
其他测试技术
单元测试unit testing
组件测试component testing
集成测试integration testing,string testing
系统测试system testing
验收测试acceptance testing,beta testing
安装测试installation testing
A、正确性测试correctness testing
白盒测试white-box
黑盒测试black-box
B、性能测试performance testing
C、可靠性测试reliability testing
强壮性测试robustness,strong testing
异常处理测试exception handing testing
负载测试stress,load testing
D、安全性测试security testing
单元测试unit testing
组件测试component testing
模块测试module testing
程序测试program testing
系统测试system testing
文档测试documentation testing
需求阶段的测试requirements phase testing
设计阶段的测试design phase testing
程序阶段的测试program phase testing
测试结果的评估evaluating test results
安装测试installation phase testing
验收测试acceptance testing
测试变化:维护testing changes:maintenance
回归测试regression testing
压力测试stress testing
恢复测试recovery testing
安全测试security testing
兼容性测试compatibility testing

软件测试覆盖包括分支覆盖,语句覆盖以及条件覆盖,这是白盒测试中一个很基本的测试概念,但是最近和几位搞了多年测试的朋友谈及此事,大家都搞不大清楚。下面我通过一个例子来深入探讨一下这个问题:

  我们首先来看一下这几些测试覆盖的定义:

  定义一、语句覆盖:它要求被测程序的每一可执行语句在测试中尽可能都检验过;

  定义二、分支覆盖:要求程序中所有判定的分支尽可能得到检验;

  定义三、条件覆盖:当判定式中含有多个条件时,要求每个条件的取值均得到检验;

  从这些定义我们可以很容易理解到语句覆盖是把程序中的所有的语句都给覆盖到;

     分支覆盖是把程序中每个分支都给覆盖到;

   条件覆盖是把判断条件中所有的条件都给覆盖到。

  下面我们通过一个简单的例子来描述一下

 

以下是引用片段:
  0: 
  1:if ((a<150)||(b<200)){ 
  2: for (i=a;i<100;i++) 
  3: { 
  4: println(“A”);} 
  5:}else{ 
  6:println (“B”); 
  7:}

 

  分支覆盖:

  1)在0处设置a=120,b 任意

  将执行1,2,5

  2)在0处设置a=200,b=400

  将执行1,5,6,7

这里所有的分支都走到,也就是说要达到分支覆盖率100%,要设计2组测试用例

 

a b
120 任意
200 400

 

  语句覆盖:

  1)在0处设置a=40,b 任意

  将执行1,2,3,4,5

  2)在0处设置a=200,b=400

  将执行1,5,6,7

  这里所有的语句都走到了,也就是说要达到语句覆盖率100%,要设计2组测试用例

 

a b
40 任意
200 400

 

  而在分支覆盖中语句3,4没有走到

  条件覆盖:

  由于第一个条件是if ((a<150)||(b<200)) 所以需要设计测试用例

 

a b 备注
40 50 全部满足
160 150 a不满足,b满足
40 250 a满足,b不满足
150 250 a,b都不满足

 

  条件覆盖只要求把所有的条件都覆盖就可以了。

  这样一来我们就把这几个概念搞得很清楚了。


 

posted on 2008-12-17 10:08  小顾问  阅读(283)  评论(0)    收藏  举报