软件测试概论之测试覆盖率
学习目标
掌握各种测试覆盖率的含义
能计算各种测试覆盖率
理解覆盖率在白盒测试中所起的作用
课程内容
覆盖率概念
逻辑覆盖率
其它覆盖率
覆盖率概念覆盖率概念
覆盖率是用来度量测试完整性的一个手段。覆盖率是测试技术有效性的一个度量。
覆盖率=(至少被执行一次的item数)/ item的总数
覆盖率大体可以分为两大类:逻辑覆盖和功能覆盖。
测试用例设计不能一味追求覆盖率,因为测试成本随覆盖率的增加而增加
白盒
黑盒
逻辑覆盖率逻辑覆盖主要类型
语句覆盖
判定覆盖
条件覆盖
判定—条件覆盖
路径覆盖
逻辑覆盖率语句覆盖率
语句覆盖(Statement Coverage)的含义是,在测试运行被测程序后,程序中被执行到的可执行语句的比率:
语句覆盖率=(至少被执行一次的语句数量)/(可执行的语句总数)
根据对语句的理解,有两种计算结果:
语句包含所有语句
语句不包括分支语句
一种说法是所有语句;
一种说法是去掉分支语句(如:if-else、switch-case、do-while、for);
还有一种说法是有效语句(声明语句不算)
逻辑覆盖率语句覆盖率
在测试时,首先设计若干个测试用例,然后运行被测程序,是程序中的每个可执行语句至少执行一次
A=2
B=0……………………CASE1
X=3
A=2
B=1……………………CASE2
X=3
CASE1能达到100%语句覆盖
CASE2不能达到100%语句覆盖,
只有75%或者50%
(A>1)AND(B=0)
(A=2)OR(X>1)
X=X/A
X=X+1
F
F
T
T
c
d
b
e
a
设计测试用例,使代码的语句覆盖率达到100%
Case1:a=2,b=0,x=3
Case2:a=1,b=0,x=3
逻辑覆盖率语句覆盖率
即使语句覆盖率达到100%也会有缺陷发现不了,所以覆盖率只是我们度量的手段。
(A>1)AND(B=0)
(A=2)OR(X>1)
X=X/A
X=X+1
F
F
T
T
c
d
b
e
被测程序段流程图
……
if((A>1)&&(B==0))
X=X/A;
if((A==2)&&(X>1))
X=X+1;
……
A=2
B=0 case1
X=3
case1仍然能通过
a
逻辑覆盖率分支覆盖率
分支覆盖(Branch Coverage)也叫判定覆盖(Decision Coverage),它的含义是,在测试时运行被测程序后,程序中所有判断语句的取真分支和取假分支被执行到的比率:
判定覆盖率=(判定结果被评价的次数)/(判定结果的总数)
需要搞清判定(或分支)和判定结果之间的关系;判定结果是判定的具体取值,为真或者为假。
测试覆盖率 来自淘豆网m.daumloan.com转载请标明出处.