《testbed静态测试使用指南v1.1.doc》由会员分享,可在线阅读,更多相关《testbed静态测试使用指南v1.1.doc(20页珍藏版)》请在金锄头文库上搜索。
1、目 录 1Testbed 功能介绍1 1.1编程规则验证1 1.2数据流分析1 1.3控制流分析1 1.4表达式分析2 1.5接口分析2 1.6软件质量度量分析2 2使用 Testbed 进行编码规则的定制和检查2 2.1确定测试需求2 2.2建立测试工程2 2.3定制代码分析规则2 2.4配置 Report 选项.2 2.5分析执行及结果查看2 3结果分析及测试报告编写2 3.1质量度量信息的获取2 3.2程序质量度量报告单2 3.3静态分析质量报告单2 附录 A:静态分析推荐规则使用说明2 Testbed 静态测试使用指南 V1.1 by Min.Wu 1 1Testbed 功能介绍 1.
2、1 编程规则验证编程规则验证 编程标准验证是高可靠性软件开发不可缺少的软件质量保证方法,使用 LDRA Testbed 自动地验证应用软件是否遵循了所选择的编程规则。编程规则 由软件项目管理者根据自身项目的特点并参考现有的成熟的软件编程标准制定, 如 DERA(欧洲防务标准) ,MISRA(汽车软件标准) ,LDRA Testbed 依据此规 则搜索应用程序,并判断代码是否违反所制定的编程规则。LDRA Testbed 报告 所有违反编程规则的代码并以文本方式或图形反标注的方式显示。测试人员或 编程人员可根据显示的信息对违反编程规则的代码进行修改。 1.2 数据流分析数据流分析 LDRA Te
3、stbed 分析软件中全局变量、局域变量及过程参数的使用状况,并 以图形显示、HTML 或 ASCII 文本报告方式表示,清晰地识别出变量使用引起 的软件错误,此种方法既可使用于单元级,亦可使用于集成级、系统级。 通过 Testbed 数据流分析功能,可方便地分析出软件中一些可能的程序欠 缺,如: 1.没使用的函数参数; 2.不匹配的参数; 3.变量未赋初值就引用; 4.代码中有多余变量; 5.给值传递参数赋值; 6.无返回值的函数路径; 7.函数的实参是全局变量。 1.3 控制流分析控制流分析 控制流分析检查以下内容: 1.不可达代码; 2.不合理的循环结构; 3.存在浮点相等比较; 4.函
4、数存在多个出口; 5.函数存在多个入口。 2 1.4 表达式分析表达式分析 表达式分析检查以下内容: 1.表达式中的括号使用不当; 2.数组下标越界; 3.存在被零除; 4.SWITCH 语句缺少 DEFAULT; 5.CASE 语句缺少 BREAK; 6.存在混合运算; 7.对指针进行逻辑比较; 8.在逻辑表达式中使用赋值操作符。 1.5 接口分析接口分析 接口分析检查以下内容: 1.实参和形参个数不匹配; 2.实参和形参类型不匹配; 3.函数参数定义的结构和调用的结构不一致。 1.6 软件质量度量分析软件质量度量分析 对于软件开发工程师、项目负责人及高级管理者来说,软件质量的管理与 监控是
5、非常困难的且费时。LDRA Testbed 很好地解决了这一问题,使得管理者 很容易地收集正在开发的软件系统的相关信息并判断软件是否满足软件质量标 准要求,从而达到对软件项目的质量跟踪与控制。Testbed 提供数据文件接口, 用户可基于现行软件标准自行定义适合本系统或项目的软件质量模型。 静态分析的软件度量元和相应的说明见表 1: 表 1 软件质量度量元说明 序号度量元指标要求说明 1函数代码行数=20%代码的有效注释率。 3函数参数=20% 在 Quality Report (HTML)中 的 Global Basic Information 获取可执行代码行总数与注 释行总数 注释行总数
6、/(注释行总数 +可执行代码行总数) 函数代码行数=20% 代码的有效注 释率 函数参数=7函数参数个数 Goto 语句0Goto 语句数 圈复杂度=10 控制流图中边 的数量与节点 数量之间的差 值加 2 基本复杂度=4 圈复杂度与流 程图中结构化 子图的数量之 间的差值 LCSAJ 密度=20 LCSAJ 密度 是一个描述软 件可维护性的 概念 控制流结点 数 =10 控制流结点数 表示流程图中 控制流相交的 交点数 基本结点数=5 将流程图中的 结构化部分简 化成一个点, 简化以后流程 图的结点数是 基本结点数。 Testbed 静态测试使用指南 V1.1 by Min.Wu 13 扇入
7、度量=7 调用本函数的 上层函数的个 数 扇出度量=7 本函数调用下 层函数的个数 3.3 静态分析质量报告单静态分析质量报告单 报告单中列出的审查内容根据测试需求确定,其中部分度量指标在质量度 量报告中会重复出现,此表可以不列出。审查结果根据根据 Quality Report 确定。 表 3 静态分析质量报告单 审查项目审查项目测试内容测试内容审查结果审查结果 是否存在不可达代码是 否 是否存在循环条件不可达是 否 函数是否包含无限循环(无终止条件)是 否 是否存在无限循环结构是 否 在循环语句中是否有多个控制变量是 否 是否存在浮点相等比较是 否 使用 goto 语句是 否 函数是否存在多
8、个入口是 否 控制流分析 函数是否存在多个出口是 否 是否存在标识名重用是 否 是否存在没使用的函数参数是 否 函数不是所有的路径上都有返回值是 否 函数的实参是全局变量是 否 代码中有多余变量是 否 变量未赋初值就引用是 否 参数与期望的作用不匹配是 否 给值传递参数赋值是 否 数据流分析 标识符超过 31 个字符是 否 14 函数定义无相应原型是 否 存在潜在的无限循环是 否 指针在使用之前没有进行非空检查是 否 往没有打开过的文件中写是 否 文件指针在退出时没有关闭是 否 表达式中使用是 否 存在数组下标越界是 否 存在被零除是 否 SWITCH 语句是否为空是 否 SWITCH 语句只
9、含 DEFAULT 情况是 否 SWITCH 语句缺少 DEFAULT是 否 CASE 语句缺少 BREAK是 否 返回类型为 VOID 的函数出现在表达式中是 否 函数中是否存在 Return 语句为空是 否 存在混合运算是 否 对指针进行逻辑比较是 否 在逻辑表达式中使用赋值操作符是 否 表达式分析 表达式中使用空函数是 否 实参和形参个数不匹配(C+无)是 否 实参和形参类型不匹配是 否 接口分析 函数参数定义的结构和调用的结构不一致是 否 循环体缺少括弧是 否 函数参数列表为空是 否 函数参数列表申明不一致是 否 基本模块中使用#define 定义是 否 SWITCH 结构含多个(大于
10、 1)DEFAULT是 否 函数返回类型不一致是 否 函数和函数的原型的返回不一致是 否 其它 函数和函数的原型的形参不一致是 否 Testbed 静态测试使用指南 V1.1 by Min.Wu 15 函数参数超过 7 个是 否 圈复杂度超过 10是 否 LCSAJ 密度超过 20是 否 函数代码行超过 200 行是 否 Testbed 静态测试使用指南 V1.1 by Min.Wu 1 附录 A:静态分析推荐规则使用说明 审查项目Line级别测试内容对应英文规则 362# Unreachable Code found. 184 M存在不可达代码 # Construct leads to in
11、feasible code. 185C存在循环条件不可达# Infeasible loop condition found. 40M函数包含无限循环(无终止条件)# Procedure contains infinite loop. 27M存在无限循环结构# Infinite loop used. 204M在循环语句中有多个控制变量# More than one control variable for loop. 78M存在浮点相等比较# Equality comparison of floating point. 13M使用 goto 语句# goto detected. 58C函数存在多
12、个入口# Procedure has more than one entry point 控制流分析 59C函数存在多个出口# Procedure has more than one exit point 2M标识名重用# Label name reused. 41M存在没使用的函数参数# Unused procedure parameter. 42M函数不是所有的路径上都有返回值# Function does not return a value on all paths. 数据流分析 43M函数的实参是全局变量# Actual parameter is also global to 2 p
13、rocedure. 44M代码中有多余变量# Variables were declared but never used. 45M变量未赋初值就引用# UR data flow anomalies found. 51M参数与期望的作用不匹配# Parameters do not match expected actions. 54M给值传递参数赋值# Attempt to change parameter passed by value. 12M标识符超过 31 个字符# Identifier exceeds * significant characters. 127M函数定义无相应原型#
14、Procedure definition has no associated prototype. 137M存在潜在的无限循环# Potentially infinite loop found. 361M指针在使用之前没有进行非空检查# Pointer not checked for null before use 380M往没有打开过的文件中写# Attempt to write to unopened file 381M文件指针在退出时没有关闭# File pointer not closed on exit 192M表达式中的括号使用正确: 表达式中使用 # Curly brackets
15、 used in expression. 71M存在数组下标越界# Array bound exceeded. 表达式分析 264M存在被零除# Divide by 0 found. Testbed 静态测试使用指南 V1.1 by Min.Wu 3 82MSWITCH 语句是否为空# Empty switch statement. 83MSWITCH 语句只含 DEFAULT 情况# Switch contains default only. 72MSWITCH 语句缺少 DEFAULT# No default case in switch statement. 84MCASE 语句缺少 BREAK# Switch Case not terminated with break. AV 193 86M返回类型为 VOID 的函数出现在表达式中# Void procedure used in expression. 88M函数中是否存在 Return 语句为空# Function with empty return expression. 15