首页 一种基于VC_代码测试匹配算法的软件故障诊断方法_李娜

一种基于VC_代码测试匹配算法的软件故障诊断方法_李娜

举报
开通vip

一种基于VC_代码测试匹配算法的软件故障诊断方法_李娜 一种基于 VC+ + 代码测试匹配算法的软件故障诊断方法 李 娜1, 慕晓冬1, 吴 浩2 ( 1. 第二炮兵工程学院 陕西 西安 710025; 2. 第二炮兵政治部 北京 100085) 摘 要: 针对软件纠错性维护问题, 提出了软件故障诊断的概念及一种故障模块匹配算法。软件故障诊断方法是在 VC+ + 代码的静态测试和动态测试相结合的基础上, 运用故障模块匹配算法匹配二者的测试结果, 生成优先诊断模块表, 再 利用路径覆盖的方式生成测试用例 , 针对可疑模块进行进一步的测试诊断, 最后确定故障点。 关...

一种基于VC_代码测试匹配算法的软件故障诊断方法_李娜
一种基于 VC+ + 代码测试匹配算法的软件故障诊断方法 李 娜1, 慕晓冬1, 吴 浩2 ( 1. 第二炮兵 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 学院 陕西 西安 710025; 2. 第二炮兵政治部 北京 100085) 摘 要: 针对软件纠错性维护问题, 提出了软件故障诊断的概念及一种故障模块匹配算法。软件故障诊断方法是在 VC+ + 代码的静态测试和动态测试相结合的基础上, 运用故障模块匹配算法匹配二者的测试结果, 生成优先诊断模块 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf , 再 利用路径覆盖的方式生成测试用例 , 针对可疑模块进行进一步的测试诊断, 最后确定故障点。 关键词: 软件故障诊断; 测试用例; 代码分析; 插桩; 匹配算法 中图分类号: TP311. 53     文献标识码: B     文章编号: 1004 373X ( 2005) 19 050 03 A Method of Software Fault Diagnosis Based on Matching Arithmetic of VC + + Program L I Na1, MU Xiaodong 1, WU Hao2 ( 1. Second Art illery Eng ineering Co lleg e, Xi′an, 710025, China ; 2. Second Artillery Minist ry o f Po lit ics, Beijing , 100085, China) Abstract : This paper pr esent s a concept ion o f softw ar e fault diagno sis ba sed on t he issue of soft war e maint enance, and puts fo r- ward a new met hod o f fault diagnosis matches arithmetic. T his m ethod first tests the so ftw are by the combine m ethod o f sta tic testing and dynamic testing based on VC+ + prog ram . Then matches the testing r esult and creat es a list about t he pr io rity o f diagno sis mod- ule. The test case is gained by the method o f path cover age and the so ftw are is t est ed again. F inally it makes cer tain about the fault po- sition of the soft war e. Keywords: so ftw are fault diagno sis; test case; code analyzing ; instr um ent ation; matching a rit hm etic 收稿日期: 2005 07 14 基金项目: 预研基金项目 ( 413270205)   随着软件复杂度的不断增加, 软件测试过程并不能全 部解决软件缺陷问题, 如何诊断软件使用过程中存在的问 题, 在本文中定义为软件故障诊断。本文试图研究软件故 障诊断的相关方法与理论, 并提出了一些相关的算法。 软件故障诊断主要是一种软件缺陷查找方法, 但不对 软件进行二次开发。首先通过静态代码分析模块和动态插 桩测试模块同时对软件进行基于 VC+ + 代码的静态测试 和动态测试, 生成检测错误信息表, 同时给可疑故障行或 故障模块附以风险级; 之后通过数据匹配算法对前两项测 试结果进行匹配, 生成故障匹配表; 最后测试用例生成模 块, 针对此表生成测试用例, 并通过故障诊断模块对软件 进行再一次的诊断, 从而确定最精确的故障点。其中所用 的数据表都可以通过数据库管理模块进行管理和维护。 1 软件测试方法分析 软件测试的策略、方法和技术是多种多样的, 从是否 需要运行被测程序的角度, 可以把软件测试分为静态测试 和动态测试。 ( 1) 静态测试: VC + + 源程序代码分析 静态测试技术[ 1]是不执行程序代码而寻找程序代码 中可能存在的错误或评估程序代码的过程。其结果可用于 进一步的查错, 并为动态测试用例选取提供指导, 静态测 试可以采用人工和软件工具相结合的方法来进行。 在本软件中首先通过对源程序文件的打开读入, 进行 扫描处理; 再对每个单词进行词法和语法分析, 从中提取出 相关的信息并保存在数据库对应的表中, 如静态检测错误 信息表 ( JE+ “表名”) 等; 最后再根据用户的输出选择分 类, 将代码行与已有类库中的标准类表达形式进行对照, 确 定可疑故障代码行并附以故障风险级。这里着重提到错误 信息表, 是因为在以后的匹配过程中要使用此表。 图 1 静态分析框架 ( 2) 动态测试: 插桩 插桩[ 2]是动态测试中常用的一种技术。他是在程序中 插入一些探针, 当被测程序运行时, 就可以记录程序执行 的路径、状态等信息。基于这些数据信息分析, 可以获得 程序的控制流及数据流信息, 进而得到逻辑覆盖等动态信 息。插桩的前提是不能影响原程序的逻辑结构和功能。 50 自动化技术 李 娜等: 一种基于 VC+ + 代码测试匹配算法的软件故障诊断方法 在本文所述软件中, 为了了解被测程序的执行情况, 确定是否覆盖了指定的路径, 必须对被测程序进行插桩, 以便判断所提供的测试数据是否合适, 是否满足了测试的 准则。严格按照 VC + + 文法, 针对各种语法现象制定相应 的插桩 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 , 以保证所收集信息的完整性和正确性, 最后 同样生成动态检测错误信息表 ( DE+ “表名”)。 ( 3) 结果分析 静态测试可以在开发过程中尽早发现问题, 提高开发 效率、降低成本, 但正是由于这一点他对软件结构缺陷问 题的测试能力较差。 动态测试方法是在程序完成后, 计算机运行被测程 序, 通过输入测试用例, 观察被测程序运行的输出和分析 运行的覆盖情况, 了解软件的内部结构和具体实现算法, 发现程序中的错误。 综合考虑两种方法的特点, 本文论述针对软件在投入 使用后的阶段运用基于 VC+ + 代码的静态和动态相结合 的测试方法, 对软件进行性能维护和缺陷测试, 并确定精 确的故障点。 2 软件故障诊断的具体实现 2. 1 软件故障诊断总体设计 ( 1) 软件故障诊断流程 本软件主要包括 7个功能模块: 静态代码分析模块、 动态插桩测试模块、数据匹配模块、测试用例生成模块、故 障诊断模块、结果输出模块、数据管理模块。 图 2 软件故障诊断流程图 ( 2) 数据库管理 考虑到要对大量的信息进行完整的保存和读取, 采用数 据库来管理数据, 其特点是能有效地进行存储和查询操作。 本软件设计的数据库包括静态数据库和动态数据库, 静态数据库包括故障知识库及软件已有故障库; 动态数据 库包括规则库即测试用例库和信息库, 这两个库都是在测 试软件时动态生成的。他们都可以通过数据管理模块来进 行维护和查询。 2. 2 软件故障诊断具体实现 ( 1) 故障匹配模块 故障点匹配是在软件静态测试和动态测试完成之后 进行的, 前两个模块可以同时测试互不影响, 并在测试后 都各自生成统一格式的错误信息表 (表结构见表 1)。此时 故障匹配模块通过匹配算法将两个表中的数据进行匹配, 初步确定故障位置, 其中静态测试模块确定的是具体的可 疑故障行, 动态测试确定的是可疑故障模块, 故障类型和 风险级别都是同一标准下在初步测试时由测试软件赋予 各可疑代码行或可疑模块的。 表 1 软件初步检测表结构 列 名 静态表 动态表 内 容 类 型 长 度 说 明 Jbh Dbh 编 号 整 形 4 Jlm Dlm 类 名 字符型 20 Jg zlx Dg zlx 故障类型 字符型 20 Jqsh Dqsh 起始行 整 形 8 J jsh Djsh 结束行 整 形 8 J fx jb Dfx jb 风险级别 整 形 1 分为 “1”、 “2”、“3”、“4”四个等级,“4”的风险最高,“1”的风险最低。 匹配算法步骤: � 行匹配: 由于 Jqsh = Jjsh, 所 以如果 Jqsh ≥ Dqsh&&Jqsh≤Djsh, 则此模块为需诊断模块; 否则, 若 Jqsh≤Dqsh 且动态表的下一条记录不为空, 则转入下一 条记录, 重复第一步; 若 Jqsh≥Djsh 或动态表下一条记录 为空, 则静态表转向下一条记录, 动态表回到首记录。 � 确定诊断优先级: 因为两项测试的风险级别是根据 统一标准设定的, 所以诊断优先级就定义为两风险级别之 和, 即 Gyxi= Sfx jb+ Dfxjb。 � 生成故障诊断表: 匹配成功的记录在得到诊断优先 级后, 自动插入故障诊断表 (表结构如表 2) , 并按诊断优 先级降序排列, 以便在后面的工作中优先遍历。起始行与 结束行的值都继承动态表中相应项的值。 表 2 软件故障诊断表结构 列 名 内 容 类 型 长 度 说 明 Gbh 编 号 整型 4 Gyx j 优先级 整型 1 Gqsh 起始行 整型 8 Gjsh 结束行 整型 8 ( 2) 测试用例生成——程序直接执行方法 在软件测试中, 根据测试准则选择适当的测试用例是 软件测试的关键, 他决定了软件测试的效率及所能达到的 目标, 软件故障诊断中也是如此。 程序直接执行方法是一种面向路径的测试数据生成 方式。在被测程序单元中选定一 条路径 P = < n1,⋯, nq > , 然后根据输入域的定义随机地选取测试数据初始 值,经程序多次循环探测执行后,最终确定测试数据, 使其 覆盖路径 P。直接执行的方法为: � 随机输入初始测试数据 X 0, 执行程序。若 P 被覆 盖,则 X 0 为所需的测试数据。 � 如果未覆盖P ,则记P i= < nk1,⋯, nk i> 为X 0上执 行路径所经过的 P的最大子路径, 其中 nk1 = n1, nk2 = n2, 51 《现代电子技术》2005年第 19期总第 210期  � 测试·测量·自动化� ⋯, nki = ni, 1≤ i≤ q。 � P i 下一相邻节点为 nki+ 1,分支冲突出现在分支( nki, nki+ 1) 上。在此点计算分支函数min fun( i + 1) , 调整输入 值 X 0 为 X ,使 min fun( i + 1) 的改变最有利于解决( nki, nki+ 1) 上的分支冲突,最终程序将覆盖边( nki, nki+ 1) ,且覆盖 P i。这样,程序所覆盖的 P 的最大子路径将增长为 P i+ 1 = ( nk,⋯, nk i, nki+ 1)。 � 重复上述操作,直到找到覆盖 P 的测试数据。若找 不到,则 P 为死路径。 ( 3) 故障诊断生成的测试用例包括驱动程序、桩程序、 测试数据和期望的结果[3]。驱动模块在大多数场合称为 “主程序”, 他接收测试数据并将这些数据传递到被测模 块, 被测试模块被调用后, “主程序”发送 “进入 退出”消 息 (如图 3 所示)。 图 3 模块测试的运行环境 在软件故障诊断系统中, 主要是对在初步检查后得到 的可疑模块进行诊断, 所以采用单元测试和综合测试相结 合的方法。单元测试是对模块内所有重要的控制路径设计 测试用例, 以便发现模块内部的错误。单元测试多采用白 盒测试技术, 系统内多个模块可以并行地进行测试; 综合 测试主要是测试每个模块都能单独工作, 但对这些模块集 成在一起之后却不能正常工作的情况, 一般采用增量式集 成方法, 将程序一段一段地扩展, 测试的范围一步一步地 增大, 错误易于定位和纠正, 界面的测试亦可做到完全彻 底。主要方法有自顶向下集成和自底向上集成 2种方法。 3 结 语 本文从介绍的角度描述了一种软件故障诊断的方法, 主要是以对 VC + +静态测试和动态测试相结合的方法, 发 挥了两种方法各自的优点, 避免软件测试的片面性, 并在 此基础上缩小了故障诊断的范围, 提高了诊断的针对性和 诊断的效率。 用本方法对导弹指挥软件进行了故障诊断, 得到了令 人满意的效果。 软件故障诊断软件的开发为软件故障诊断提供了强 有力的支持, 并为实现测试的自动化创造了条件。当然, 本 工具只是一个实验系统, 在很多方面还有待于完善和进一 步研究。希望通过此文与有关的专家共同探讨, 力图使这 一课题的研究有更大突破。 参 考 文 献 [ 1] Bogdan Korel. Automat ed So ftw are Test Data Gener ation [ J] . IEEE T rans. on Softw ar e Eng . , 1990, 16 ( 8) . [ 2] 张克东, 庄燕滨 . 软件工程与软件测试自动化教程 [ M ] . 北京: 电子工业出版社, 2000. [ 3] 张刚, 葛卫民, 王永铭, 等 . 事件驱动面向对象的软件白 盒测试法初探 [ J] . 计算机工程, 2000, 9. 作者简介 李 娜 女, 1981年出生, 硕士研究生。 慕晓冬 男, 教授, 博士生导师。 吴 浩 男, 1981年出生, 助理工程师。 全国信息产业系统办公室主任会议召开 王旭东出席会议并讲话   9月 13 日至 14日, 全国信息产业系统办公室主 任会议在湖南长沙召开。信息产业部部长王旭东出席 会议并讲话。他指出, 要统一认识, 围绕中心, 服务 大局, 认真做好新形势下的办公室工作, 更好地为行 业和基层服务。 王旭东说,办公室工作很重要,担负着上情下达、 下情上报、对外交往、协调内部等繁重工作, 处于协 调机关各部门、连接领导和基层的枢纽地位。要围绕 发展的大局, 调整工作思路, 找准工作定位, 充分发 挥运转枢纽作用和参谋助手作用, 不断提高工作水 平。要努力建设一支高素质的办公室干部队伍, 确保 工作高效、有序运行。 王旭东通报了全国信息产业发展情况和部重点 工作进展情况, 并对做好今后的工作提出了希望和 要求。 会议传达了全国政府系统秘书长办公厅主任会 议精神, 8 个厅局办公室主任在会上作了交流发言。 会议还表彰了 2004 年度全国信息产业部门政务信息 工作先进单位, 江苏省信息产业厅、湖南省信息产业 厅、重庆市信息产业局等 23 个单位受到表彰。 湖南省政府领导以及来自各省、自治区、直辖市 信息产业主管部门、通信管理局、新疆建设兵团信息 产业主管部门、信息产业部机关各司局、部直属单位 办公室主任等参加了会议。 52 自动化技术 李 娜等: 一种基于 VC+ + 代码测试匹配算法的软件故障诊断方法
本文档为【一种基于VC_代码测试匹配算法的软件故障诊断方法_李娜】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_899471
暂无简介~
格式:pdf
大小:182KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2013-06-25
浏览量:16