




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录 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 1Testbed 功能介绍 1.1 编程规则验证编程规则验证 编程标准验证是高可靠性软件开发不可缺少的软件质量保证方法,使用 LDRA Testbed 自动地验证应用软件是否遵循了所选择的编程规则。编程规则由 软件项目管理者根据自身项目的特点并参考现有的成熟的软件编程标准制定, 如 DERA(欧洲防务标准) ,MISRA(汽车软件标准) ,LDRA Testbed 依据此规则 搜索应用程序,并判断代码是否违反所制定的编程规则。LDRA Testbed 报告所 有违反编程规则的代码并以文本方式或图形反标注的方式显示。测试人员或编 程人员可根据显示的信息对违反编程规则的代码进行修改。 1.2 数据流分析数据流分析 LDRA Testbed 分析软件中全局变量、局域变量及过程参数的使用状况,并 以图形显示、HTML 或 ASCII 文本报告方式表示,清晰地识别出变量使用引起的 软件错误,此种方法既可使用于单元级,亦可使用于集成级、系统级。 通过 Testbed 数据流分析功能,可方便地分析出软件中一些可能的程序欠 缺,如: 1. 没使用的函数参数; 2. 不匹配的参数; 3. 变量未赋初值就引用; 4. 代码中有多余变量; 5. 给值传递参数赋值; 6. 无返回值的函数路径; 7. 函数的实参是全局变量。 1.3 控制流分析控制流分析 控制流分析检查以下内容: 1. 不可达代码; 2. 不合理的循环结构; 3. 存在浮点相等比较; 4. 函数存在多个出口; 5. 函数存在多个入口。 1.4 表达式分析表达式分析 表达式分析检查以下内容: 1. 表达式中的括号使用不当; 2. 数组下标越界; 3. 存在被零除; 4. SWITCH 语句缺少 DEFAULT; 5. CASE 语句缺少 BREAK; 6. 存在混合运算; 7. 对指针进行逻辑比较; 8. 在逻辑表达式中使用赋值操作符。 1.5 接口分析接口分析 接口分析检查以下内容: 1. 实参和形参个数不匹配; 2. 实参和形参类型不匹配; 3. 函数参数定义的结构和调用的结构不一致。 1.6 软件质量度量分析软件质量度量分析 对于软件开发工程师、项目负责人及高级管理者来说,软件质量的管理与 监控是非常困难的且费时。LDRA Testbed 很好地解决了这一问题,使得管理者 很容易地收集正在开发的软件系统的相关信息并判断软件是否满足软件质量标 准要求,从而达到对软件项目的质量跟踪与控制。Testbed 提供数据文件接口, 用户可基于现行软件标准自行定义适合本系统或项目的软件质量模型。 静态分析的软件度量元和相应的说明见表 1: 表 1 软件质量度量元说明 序号度量元指标要求说明 1函数代码行数=20%代码的有效注释率。 3函数参数=7函数参数个数。 4Goto 语句0Goto 语句数。 5圈复杂度=10 控制流图中边的数量与节点数量之间 的差值加 2。 序号度量元指标要求说明 6基本复杂度=4 圈复杂度与流程图中结构化子图的数 量之间的差值;基本复杂度高意味着 非结构化程度高,难以模块化和维护。 7LCSAJ 密度=20 LCSAJ 密度是一个描述软件可维护性 的概念,它是指当改变一行代码时, 对其它线性代码顺序和跳转的影响程 度,值越大说明影响的测试路径相对 越多,因此系统可维护性越低。 8控制流结点数=10 控制流结点数表示流程图中控制流相 交的交点数。 9基本结点数=5 将流程图中的结构化部分简化成一个 点,简化以后流程图的结点数是基本 结点数。 10扇入度量=7调用本函数的上层函数的个数。 11扇出度量=20% 在 Quality Report (HTML) 中的 Global Basic Information 获取可执行代 码行总数与注释行总数 注释行总数/(注释行总 数+可执行代码行总数) 函数代码行数=200函数代码行超过 200 行 函数参数=7函数参数超过 7 个 Goto 语句0使用 goto 语句 圈复杂度=10圈复杂度超过 10 LCSAJ 密度=20 System Results 菜单下选择 Text Results 子菜单中的 Quality Report(HTML) LCSAJ 密度超过 20 2. 查看质量度量报告:点击菜单栏中的 Individual Results/System Results,选择下拉菜单 Text Results 中的 Metrics Report (HTML)。 度量元指标查看位置具体说明 圈复杂度=10Cyclomatic Complexity, 基本复杂度=4 Essential Cyclomatic Complexity 控制流结点数=10Knots 基本结点数=5 Metric Report 中 Complexity Metrics Essential Knots LCSAJ 密度=20 LCSAJ and Unreachability Maximum LCSAJ Density 扇入度量=7Fan In 扇出度量=7 Dataflow Information Fan Out 3. 查看图形化报告:点击菜单栏中的 System Results,选择下拉菜单 Graphical Results 中的 Static Bar Charts。 度量元指标查看位置具体说明 圈复杂度=10Cyclomatic Complexity 基本复杂度=4 Essential Cyclomatic Complexity 控制流结点数=10Knots 基本结点数=5 System Results 菜单下 Graphical Results 子菜 单 中的 Static Bar Charts Essential Knots 以圈复杂度为例:选择 Static Bar Charts 子菜单下的“Essential Cyclomatic Complexity” ,弹出如下所示柱状图,在该界面,将 Graph 菜单下 的 Show Bar Components 选中,可查看函数基本圈复杂度具体信息。 3.2 程序质量度量报告单程序质量度量报告单 表 2 程序质量度量报告单 度量元指标说明 违反 个数 所在软件具体描述 函数代码行 数 =20% 代码的有效注 释率 函数参数=7函数参数个数 Goto 语句0Goto 语句数 圈复杂度=10 控制流图中边 的数量与节点 数量之间的差 值加 2 基本复杂度=4 圈复杂度与流 程图中结构化 子图的数量之 间的差值 LCSAJ 密度=20 LCSAJ 密度是 一个描述软件 可维护性的概 念 控制流结点 数 =10 控制流结点数 表示流程图中 控制流相交的 交点数 基本结点数=5 将流程图中的 结构化部分简 化成一个点, 简化以后流程 图的结点数是 基本结点数。 扇入度量=7 调用本函数的 上层函数的个 数 扇出度量=7 本函数调用下 层函数的个数 3.3 静态分析质量报告单静态分析质量报告单 报告单中列出的审查内容根据测试需求确定,其中部分度量指标在质量度 量报告中会重复出现,此表可以不列出。审查结果根据根据 Quality Report 确 定。 表 3 静态分析质量报告单 审查项目审查项目测试内容测试内容审查结果审查结果 是否存在不可达代码 是 否 是否存在循环条件不可达 是 否 函数是否包含无限循环(无终止条件) 是 否 是否存在无限循环结构 是 否 在循环语句中是否有多个控制变量 是 否 是否存在浮点相等比较 是 否 使用 goto 语句 是 否 函数是否存在多个入口 是 否 控制流分析 函数是否存在多个出口 是 否 数据流分析是否存在标识名重用是 否 是否存在没使用的函数参数 是 否 函数不是所有的路径上都有返回值 是 否 函数的实参是全局变量 是 否 代码中有多余变量 是 否 变量未赋初值就引用 是 否 参数与期望的作用不匹配 是 否 给值传递参数赋值 是 否 标识符超过 31 个字符 是 否 函数定义无相应原型 是 否 存在潜在的无限循环 是 否 指针在使用之前没有进行非空检查 是 否 往没有打开过的文件中写 是 否 文件指针在退出时没有关闭 是 否 表达式中使用 是 否 表达式分析 存在数组下标越界 是 否 存在被零除 是 否 SWITCH 语句是否为空 是 否 SWITCH 语句只含 DEFAULT 情况 是 否 SWITCH 语句缺少 DEFAULT 是 否 CASE 语句缺少 BREAK 是 否 返回类型为 VOID 的函数出现在表达式中 是 否 函数中是否存在 Return 语句为空 是 否 存在混合运算 是 否 对指针进行逻辑比较 是 否 在逻辑表达式中使用赋值操作符 是 否 表达式中使用空函数 是 否 实参和形参个数不匹配(C+无) 是 否 实参和形参类型不匹配 是 否 接口分析 函数参数定义的结构和调用的结构不一致 是 否 循环体缺少括弧 是 否 其它 函数参数列表为空是 否 函数参数列表申明不一致 是 否 基本模块中使用#define 定义 是 否 SWITCH 结构含多个(大于 1)DEFAULT 是 否 函数返回类型不一致 是 否 函数和函数的原型的返回不一致 是 否 函数和函数的原型的形参不一致 是 否 函数参数超过 7 个 是 否 圈复杂度超过 10 是 否 LCSAJ 密度超过 20 是 否 函数代码行超过 200 行 是 否 附录 A:静态分析推荐规则使用说明 审查项目Line级别测试内容对应英文规则 362# Unreachable Code found. 184 M存在不可达代码 # Construct leads to infeasible 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函数存在多个入口# 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 procedure. 数据流分析 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函数定义无相应原型# 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 used in expression. 71M存在数组下标越界# Array bound exceeded. 264M存在被零除# Divide by 0 found. 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. 153M存在混合运算# Use of mixed mode arithmetic. 149M对指针进行逻辑比较# Logical comparison of pointers. 176M在逻辑表达式中使用赋值操作符# Assignment operator in boolean expression. 88M表达式中使用空函数# Void procedure used in expression. 22M实参和形参个数不匹配(C+无)# Number of parameters does not match. 112M实参和形参类型不匹配# Actual and formal parameters inconsistent. 接口分析 151M函数参数定义的结构和调用的结构不一致# Parameter structure mism
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人购房合同解除及终止条件
- 海运货物保险代理服务合同范本
- 专业遴选测试题及答案
- 边城课件课教学设计
- 幼儿园管理家园合作课件
- 消防安全服务培训班通知课件
- 2025至2030中国海藻酸锂行业项目调研及市场前景预测评估报告
- 2025年智能可穿戴设备无人机飞行安全监测技术创新解析
- 2025至2030中国工业真空阀行业项目调研及市场前景预测评估报告
- 2025至2030中国毛绒布料玩具行业发展趋势分析与未来投资战略咨询研究报告
- 2025年芜湖市鸠江区村级后备干部集中招录工作101名考试参考题库及答案解析
- 2025年少先队大队委笔试试卷及答案
- 瑞达利欧原则课件
- 2025一建《建设工程项目管理》冲刺361题
- 抖音账号实名认证承诺函模板
- 第一章 勾股定理 单元测试卷(含部分解析)-2025-2026学年北师大版八年级数学上册
- 2025年四川省高等职业教育单独考试招生语文试卷
- (2025年标准)以捐代购协议书
- 颈部引流管的护理
- 2025至2030中国门诊外科中心行业项目调研及市场前景预测评估报告
- 中医护理拔罐技术应用
评论
0/150
提交评论