McCabe IQ软件质量管理解决方案是美国McCabe Software公司的产品,基于圈复杂度理论体系,为用户提供软件质量度量、软件结构分析、动态结构化测试的全面支持。具有一致性、重复性、客观解释、质量评估、优化测试、分配资源、管理具有危险性的软件等强大功能。能真正保证测试每个独立的路径,可以确定测试过的路径和没测试过的路径。世界上很多重要组织和公司采用McCabe IQ的质量管理套件,对其开发的关键软件进行质量分析和覆盖率测试。工具的底层框架基于优秀的EDG源代码分析器,提供准确的软件复杂度和软件结构分析,以工业标准或者自定义标准衡量软件的质量。
McCabe IQ的功能可以分为质量度量、覆盖率测试、数据流分析、变更分析、冗余代码分析和企业级报告等。
静态质量度量
McCabe IQ能够分析三百多种软件度量质量,包括:
▷ 代码行、注释行统计
▷ 嵌套深度
▷ 数据变量统计
▷ Halstead度量集
▷ McCabe度量集
▷ 面向对象(OO)度量集
McCabe IQ具有质量快照功能,可以把当前的软件质量信息全部存储到它的数据库中,随着软件开发和测试的进行,绘制成质量趋势图。
允许派生度量,以便更加符合用户实际的质量模型,有助于更好的进行质量评价。
McCabe IQ是一个完全图形化的工具,可以提供如下图形报告:
▷ 模块调用关系图:用红黄绿颜色标识软件的结构和复杂程度。
▷ 模块控制流图:有助于了解软件模块的内部流程,发现隐藏的危险路径。
▷ 散点图/KV图/柱状图:综合分析软件整体的质量分布情况。
动态覆盖率分析
McCabe IQ的动态测试不但适合于宿主机系统,也适合于各种嵌入式系统环境下运行。插装方式有多种选择,可以根据实际情况选择最合适的方式。McCabe IQ2分析被测试软件运行时生成的追踪信息,得到覆盖率信息。提供的覆盖率类型有:
▷ 集成覆盖率
▷ 路径覆盖率
▷ 分支覆盖率
▷ 语句覆盖率
▷ 面向对象类覆盖率
▷ 布尔覆盖率(MC/DC)
▷ 数据覆盖率
▷ 调用对覆盖率
覆盖率的信息最直观的查看方式就是在模块调用图上用不同的颜色标识出来,基于McCabe IQ度量的理论,可以提供给用户强大的路径分析路径覆盖率,适合于安全关键软件的严格测试。
数据流分析
McCabe IQ的数据字典模块(McCabe Data)汇总软件的所有数据信息,用户可以自定义数据集,把关心的数据找出来;提供全局数据复杂度和指定数据复杂度,同时可以结合动态测试,综合分析得出数据的覆盖率。
变更分析
McCabe IQ的变更分析模块(McCabe Change)自动发现软件被改动的模块,自动分析这些被修改的模块是否被测试过,同时发现改动模块对整个系统的影响有多大。变更分析模块和数据字典、切片分析等配合使用,结合动态测试的数据可以得出再工程的评估报告。
冗余代码分析
McCabe IQ的冗余分析模块(McCabe Compare)可以根据用户选择的相似性准则分析模块的相似程度,帮助用户合并相似模块,精简系统。
切片分析
McCabe IQ的切片分析模块(McCabe Slice)可以非常直观地显示出在每条路径中,哪些是测试过的,哪些没有测试,同时还可以将测试过的加载进来。用户使用切片的逻辑运算发现被测软件的业务规律。
企业级报告
McCabe IQ的分析结果可以上传到McCabe Server。这是一种C/S结构,团队和企业可以用这种方式得到综合的企业级报告,通过预定义和自定义的报告模板自动生成Word/PDF/HTML等格式的报告。
突出优势
◆ McCabe IQ是McCabe度量理论最好的实践工具,同时提供了大约300多种软件质量度量,完全满足各种需求下的质量模型和质量评价。
◆ 丰富的图形界面,加快用户对软件结构的理解,帮助用户了解整个系统的架构进行测试规划。
◆ 强大的路径分析,基于McCabe圈复杂度的独立路径分析,具有强大的再工程能力,配合变更分析、相似度分析、数据字典功能,帮助用户在遗留工程基础上进行二次开发。
◆ 把代码复杂度和测试结合起来,提出基于结构化测试的理论,被NIST作为测试标准。
◆ 在标准复杂度的基础上可以定制或派生复杂度,也可以自己设计测试路径,作为基本测试路径的补充
◆ 开源的测试库,适合于各种嵌入式测试环境下。
◆ 强大的数据存储和加载的能力,能定期保存分析结果和测试数据,可以生成软件质量趋势和测试进展曲线。
◆ 独有的基于路径的分析能力,能够提供集成和单元测试路径,帮助测试工程师开发测试用例,达到较高的路径覆盖率,而且能提供路径覆盖率的工具。
支持的语言
Ada、C、C++、COBOL、FORTRAN、Java、Model 204、Visual Basic、x86 汇编、VC++.net、VB.net、C#
支持的平台
◆ Windows
◆ Solaris
◆ HPUX
◆ IRIX
◆ AIX