已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Testbed 静态测试使用指南 V1.1 by Min.Wu i 目 录 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.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.函数存在多个入口。 Testbed 静态测试使用指南 V1.1 by Min.Wu 2 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。 Testbed 静态测试使用指南 V1.1 by Min.Wu 3 序号度量元指标要求说明 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)。 Testbed 静态测试使用指南 V1.1 by Min.Wu 11 度量元指标查看位置具体说明 圈复杂度=10Cyclomatic Complexity, 基本复杂度=4Essential Cyclomatic Complexity 控制流结点数=10Knots 基本结点数=5 Metric Report 中 Complexity Metrics Essential Knots LCSAJ 密度=20LCSAJ and UnreachabilityMaximum LCSAJ Density 扇入度量=7Fan In 扇出度量=7 Dataflow Information Fan Out 3. 查看图形化报告:点击菜单栏中的 System Results,选择下拉菜单 Graphical Results 中的 Static Bar Charts。 度量元指标查看位置具体说明 圈复杂度=10Cyclomatic Complexity 基本复杂度=4Essential Cyclomatic Complexity 控制流结点数=10Knots 基本结点数=5 System Results 菜单下 Graphical Results 子菜单 中的 Static Bar Charts Essential Knots 以圈复杂度为例:选择 Static Bar Charts 子菜单下的“Essential Cyclomatic Complexity” ,弹出如下所示柱状图,在该界面,将 Graph 菜单下的 Show Bar Components 选中,可查看函数基本圈复杂度具体信息。 Testbed 静态测试使用指南 V1.1 by Min.Wu 12 3.2 程序质量度量报告单程序质量度量报告单 表 2 程序质量度量报告单 度量元指标说明 违反 个数 所在软件具体描述 函数代码行 数 =20% 代码的有效注 释率 函数参数=7函数参数个数 Goto 语句0Goto 语句数 圈复杂度=10 控制流图中边 的数量与节点 数量之间的差 值加 2 基本复杂度=4 圈复杂度与流 程图中结构化 子图的数量之 间的差值 LCSAJ 密度=20 LCSAJ 密度 是一个描述软 件可维护性的 概念 控制流结点 数 =10 控制流结点数 表示流程图中 控制流相交的 交点数 基本结点数=5 将流程图中的 结构化部分简 化成一个点, 简化以后流程 图的结点数是 基本结点数。 Testbed 静态测试使用指南 V1.1 by Min.Wu 13 扇入度量=7 调用本函数的 上层函数的个 数 扇出度量=7 本函数调用下 层函数的个数 3.3 静态分析质量报告单静态分析质量报告单 报告单中列出的审查内容根据测试需求确定,其中部分度量指标在质量度 量报告中会重复出现,此表可以不列出。审查结果根据根据 Quality Report 确定。 表 3 静态分析质量报告单 审查项目审查项目测试内容测试内容审查结果审查结果 是否存在不可达代码是 否 是否存在循环条件不可达是 否 函数是否包含无限循环(无终止条件)是 否 是否存在无限循环结构是 否 在循环语句中是否有多个控制变量是 否 是否存在浮点相等比较是 否 使用 goto 语句是 否 函数是否存在多个入口是 否 控制流分析 函数是否存在多个出口是 否 是否存在标识名重用是 否 是否存在没使用的函数参数是 否 函数不是所有的路径上都有返回值是 否 函数的实参是全局变量是 否 代码中有多余变量是 否 变量未赋初值就引用是 否 参数与期望的作用不匹配是 否 给值传递参数赋值是 否 数据流分析 标识符超过 31 个字符是 否 Testbed 静态测试使用指南 V1.1 by Min.Wu 14 函数定义无相应原型是 否 存在潜在的无限循环是 否 指针在使用之前没有进行非空检查是 否 往没有打开过的文件中写是 否 文件指针在退出时没有关闭是 否 表达式中使用是 否 存在数组下标越界是 否 存在被零除是 否 SWITCH 语句是否为空是 否 SWITCH 语句只含 DEFAULT 情况是 否 SWITCH 语句缺少 DEFAULT是 否 CASE 语句缺少 BREAK是 否 返回类型为 VOID 的函数出现在表达式中是 否 函数中是否存在 Return 语句为空是 否 存在混合运算是 否 对指针进行逻辑比较是 否 在逻辑表达式中使用赋值操作符是 否 表达式分析 表达式中使用空函数是 否 实参和形参个数不匹配(C+无)是 否 实参和形参类型不匹配是 否 接口分析 函数参数定义的结构和调用的结构不一致是 否 循环体缺少括弧是 否 函数参数列表为空是 否 函数参数列表申明不一致是 否 基本模块中使用#define 定义是 否 SWITCH 结构含多个(大于 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 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 Testbed 静态测试使用指南 V1.1 by Min.Wu 2 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. 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. 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 mi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人工智能服务合同协议2025年合同三篇
- 中级职称答辩题库及答案
- 2025年教学科研咨询师招聘面试参考题库及答案
- 2025年保安招聘面试参考题库及答案
- 2025年应急管理专员人员招聘面试题库及参考答案
- 2025年公关策划师招聘面试参考题库及答案
- 2025年创新产品经理招聘面试题库及参考答案
- 2025年厨师招聘面试参考题库及答案
- 2025年商务主管招聘面试参考题库及答案
- 2025年消费品销售代表招聘面试参考题库及答案
- 人防工程安全培训内容课件
- 软组织适应性-洞察及研究
- 2025秋苏教版(2024)小学科学二年级上册(全册)课时练习及答案(附目录)
- 加班及调休管理规范操作手册
- GIS产品现场试验项目及试验记录指导
- 医学实验室的发展规划
- 废旧材料玩教具制作讲座
- 建工地产2025年经济工作务虚会讲话稿
- 合作研究协议及知识产权归属约定
- 科级领导干部任前廉政法规知识考试题(附答案)
- 数字经济专业考研真题及答案解析和试卷分析
评论
0/150
提交评论