使用McCabe IQ提高测试质量的研究
随着软件产业的急速发展,应用软件系统规模不断增大,企业对软件质量的的重视程度越来越高,软件企业对软件测试的投入也逐渐增加。目前的商业环境下,商业应用软件的测试着重考虑如下问题:
(1)效益。怎样确保每个测试都有时间和经济方面的效益。(2)彻底。测试到达怎样的程度可以合理地认为程序已经没有错误了。(3)资源分配。测试资源的分配是否合理,是否聚焦在软件的高危模块上,核心功能部分是否得到足够的测试。
软件测试中,覆盖率分析的方法越来越多地为测试人员使用。覆盖率是软件测试的一项重要指标,通过达到良好的测试覆盖率,可以保证软件测试的质量。
1 McCabe IQ测试工具
McCabe IQ是美国McCabe Software公司的软件质量管理解决方案,McCebe IQ是一款基于McCabe圈复杂度进行质量度量和测试的工具,为用户提供软件质量度量、软件结构分析及动态结构化测试的全面支持。McCabe IQ提供客观的方法评估测试覆盖率,具有一致性、重复性、客观解释、质量评估、优化测试及分配资源等强大功能,能真正保证测试每个独立路径,可以确定测试过的路径和没测试过的路径。
圈复杂度是用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,即合理的预防错误所需测试的最少路径条数[1]。圈复杂度高说明代码质量可能很差,难于测试和维护。根据经验,程序的可能错误和圈复杂度高有着很大关系。圈复杂度显示了在测试一个单元时,为保证软件质量而需要测试的基本路径的最小数目[2]。McCabe IQ建议将圈复杂度不超过10,因为更高的复杂度使测试变得复杂并且可能会发生更多的错误。
2 使用McCabe IQ做覆盖率分析
McCabe IQ的度量基于软件结构数学化的严格分析,这种分析以McCebe图复杂度为基础,明确地确定了高风险区域。McCebe IQ就是一款基于McCabe圈复杂度进行质量度量和测试的工具。McCabe IQ覆盖率分析使用了源代码插装技术,能生成分支和路径覆盖报告。对于给定的程序,所有的可测试路径的数目通常非常巨大,找到一个有意义的可测试路径子集非常重要。被MeCabe IQ标识出的路径虽不能代表程序中所有可能路径,但最小的测试路径子集至少遍历每个一次判定,将使McCabe IQ的“圈复杂度”路径分析技术成为可能。
McCabe IQ可以很方便地做到如下分析:
(1)复杂度分析:McCabe IQ提供了复杂度信息的即时访问,测量不同的源代码特性,标识出相关的复杂度信息和程序不同模块的结构化程度,特别复杂或非结构化代码部分可以在覆盖率报告中突出出来,使得测试工程师更容易识别出有缺陷的代码。
(2)软件变更分析:当一个程序被修改,测试需要聚焦在修改的代码上,以及那些被修改代码影响的代码,McCabe IQ的软件变更分析不但可以标识出变更过的代码,而且还可以标识出被修改所影响的模块。
2.1 McCabe IQ提升功能测试
在功能测试中,McCabe IQ从程序的需求中得到要测试的功能,然后执行测试用例以验证程序是否按照预期运行。功能测试的目的是为了识别缺失的功能、不能正确运行的功能,以及功能缺陷[3]。
2.1.1 功能测试在执行过程中要解决如下问题:
(1)隐含功能的丢失。由于需求定义隐含缺陷,从需求文档得到的功能测试会丢失隐含功能。这样,功能测试很难确保测试的完全性,而且功能测试在功能合并阶段也会导致有问题的行为。
(2)停止测试的时机。在功能测试中,可测试功能组合的数量相当巨大,最糟糕的情况是功能组合的数量将是2的功能需求次幂的形式,显然测试所有的功能组合是不能的。
2.1.2 通过McCabe IQ的覆盖分析可以提升功能测试
(1)McCabe IQ覆盖分析可以指出未测试的分支,并突出为测试的分支,隐含功能和明确的功能需求将同样被突出出来。
(2)McCabe IQ覆盖分析可以识别出高风险模块块,然后使用更为苛刻的路径覆盖进行分析。
使用路径覆盖分析可以遍历所有的关键功能组合,包括隐含的功能和明确的功能。使用图复杂度路径作为危险模块的测试程度的索引,可以追踪记录可累加的分支和路径执行的次数,通过基于累加的分支和圈复杂度覆盖率决定可以接受的测试程度,从而解决以上两个问题。
2.2 McCabe IQ提升单元测试
单元测试是针对软件的最小模块进行正确性检验的测试工作,是代码正确性验证的重要措施。这些最小模块是隔离出来的代码段,称为单元。单元测试的最大挑战在于识别出需要运行的最小的测试的集合,理想情况下,每一个可能路径都要被测试,但是这通常是不可能的。挑战在于分离出路径的子集来提供所有可测试路径的覆盖分析,并且使得路径子集
- 便携应用中如何选择LDO(05-24)
- FIR结构IQ串行处理RRC滤波器(04-18)
- ADI实验室电路:如何在IQ调制器的输出端提供固定功率增益(02-21)
- e2v推出QorIQ版本四核处理器P2041和P3041(12-19)
- 12位串行A/D转换器MAX187的应用(10-06)
- AGC中频放大器设计(下)(10-07)