质量评估宝典
Make by Tony 2006/11
在测试过程中我们通常所采用的测试质量评估手段主要是测试覆盖,其中测试覆盖主要包括语句覆盖、判定覆盖(也称为分支覆盖)、条件覆盖、判定
/条件覆盖、条件组合覆盖等。然而根据我们长期的实践经验表明,就仅仅这几种覆盖标准是远远不够的,其中还存在很多漏洞,导致“聪明”的测试人员偷懒,然而作为一个公司的质量保证人员和测试经理看到这种情况是很悲观的。
最近我使用一个测试工具
VcTester才发现该工具的评估方法还有点先进,至少在目前的状态下能够填补很多评估方面的漏洞,以致引起了我不断的反思,在此我也搬门弄斧的给大家说说。
VcTester的测试质量评估体系不仅仅有我们常规所说的那几种覆盖,
VcTester的测试质量评估体系主要由测试覆盖程度评估和测试设计程度评估两部分组成,另外还包括覆盖率通过标准的自定义机制,下面分别阐述。
一、
测试覆盖程度评估
支持两类测试覆盖率评估,一是位置无关调用覆盖率(
Location-independent call coverage,LICC),二是位置相关调用覆盖率(Location-dependent call coverage,LDCC),关于调用覆盖其实在JAVA领域已有成功的应用,定义如下:
LICC = (已覆盖的不重复的函数调用个数
/ 全部不重复的函数调用个数) * 100%
LDCC = (已覆盖的函数调用个数
/ 全部函数调用个数) * 100%
比如某函数中调用了
3个子函数,其中第1个子函数在该函数定义的两个地方出现,其余2个子函数都只在一处调用。如果这个3个子函数都被调用过,其中第1个子函数只在一个位置调用了,另一个位置尚未调用到。这时,我们计算LICC是“3/3 = 100%”,而LDCC是“3/4 = 75%”。
LICC指标主要用于粗测,确保某模块具备一定的初始稳定度,适合于与其它模块集成,
LICC指标尝试说明新定义的函数是否跑到过,而不关心是否每个地方都跑到。LDCC则在正式测试中使用,比较完整的评估测试程度。
二、
测试设计程度评估
测试设计程度也称用例覆盖度(
Test Case Coverage,TCC),以被测函数在正式测试中使用频度与其函数定义中分支总数之间关系作为依据,定义如下:
TCC = 用例中调用被测函数的总次数
/ 函数定义的分支总数
其中,某函数的分支总数的定义如下:函数分支总数
= 1 + if语句总数 * 2 + while语句总数 * 2 + for语句总数 * 2 ,if语句有TRUE与FALS两个分支,原理上说应该设计两次测试才是完整的,while与for也类似,循环至少进入一次应设计一个用例,一次都不进入也应设计一个用例,所以计算出if、while与for语句总数后要乘以2,但如果一个函数没使用这3个控制语句,也应至少设计一个用例测试它,这是上面公式额外加上1的含义。用例覆盖度通常不作为测试结果的硬性评价指标,而只设置一个下限值,未达标时测试结果应该是一票否决的。设置这个指标可监控不经意测试,即,非测试目调用被测函数而导致代码覆盖率上升,使得覆盖指标虚高。
三、
自定义覆盖率通过标准
在测试过程中对于非测试关注的函数、出错处理函数等不希望成为测试评估的噪声,可定义到“例外列表”,另外还可以定制
LICC、LDCC、TCC评估系数,这种评估体制给评估活动带来很大的灵活性和实用性。
附:VcTester简介
VcTester由
深圳市领测科技有限公司自主研发,专业服务于嵌入式白盒测试领域的测试工具,它遵循第4代白盒测试方法(4GWM,The 4th Generation White-box-testing Methodology),为有效实施针对C语言的单元测试、集成测试与协议测试,提供系统化的测试解决方案。对于VcTester相关信息参见其官方网站
http://www.eztester.com
参考文献:
1. Wayne Chan, 《第4代白盒测试方法概述——理论篇》
2. Wayne Chan, 《第4代白盒测试方法概述——VcTester实践篇》
3. Philip M. Johnson, and Joy M. Agustin, "Keeping the coverage green: Investigating the cost and quality of testing in agile development"
欢迎转载此文,转载时请注明文章来源:文斯测试技术研究中心http://blog.csdn.net/vincetest
本人喜欢的网站:
新浪网
Google新闻
搜狐新闻
雅虎
天极
CSDN新闻
CSDN博客
B周刊
博客中心
DoNews博客
SourceForge
ShareIt
无忧测试
VC在线
共创联盟
华军软件园