嵌入式软件目标码测试分析

上传人:I*** 文档编号:227138455 上传时间:2021-12-19 格式:DOCX 页数:6 大小:142.40KB
返回 下载 相关 举报
嵌入式软件目标码测试分析_第1页
第1页 / 共6页
嵌入式软件目标码测试分析_第2页
第2页 / 共6页
嵌入式软件目标码测试分析_第3页
第3页 / 共6页
嵌入式软件目标码测试分析_第4页
第4页 / 共6页
嵌入式软件目标码测试分析_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《嵌入式软件目标码测试分析》由会员分享,可在线阅读,更多相关《嵌入式软件目标码测试分析(6页珍藏版)》请在金锄头文库上搜索。

1、 嵌入式软件目标码测试分析 王永孟马利东摘要:为了更好的保证软件产品的质量,本文介绍了目标码测试的必要性,测试工具的原理及运用的约束条件。目标码测试需要工具的支持及对实现方法的摸索。关键词:目标码;语句分支覆盖引言航天型号软件的高可靠性、高安全性要求,促使软件在各开发阶段都需要经过完整的测试,如:单元测试、组装测试、配置项测试、系统测试等。随着航天飞行器的发展,航天产品功能越来越多强大,其软件设计越来越复杂,越来越多的软件采用C语言或高级语言编制。随着C语言和其他高级语言编制的软件越来越多,源代码与目标代码差异可能产生的问题的几率就越来越大。编译器不同、编译选项的不同都会产生的不同目标代码。人

2、们开始遇到对目标代码分析不彻底而出现的质量问题,对编译选项认识的不了解而产生的质量问题;越来越多的人开始担心实际运行的目标代码是否会隐藏着潜在的危害,当诱因成熟会对我们的产品带来灾难的后果。所以目标码语句和分支的覆盖率测试被提上了日程。目标码测试可以理解为真实运行在CPU上的二进制代码所对应的汇编代码的执行情况。1目标码测试的必要性首先举个简单的例子。C语言a i = i是一条非常简单的赋值语句,在Keil C51的编译环境下,对编译选项开关“dont use absolute register accesses”进行了简单的对比,产生的汇编指令如下表1所示。通过上表可以看出,要想完全实现所有

3、高级语言源代码和目标码的一一对应是件困难的事情,并且编译选项给目标代码带来的变化也是非常明显。软件测试通过对语句和分支的覆盖率指标从一个方面来评估软件测试的充分性,下面再举一个Keil C51例子说明源代码和目标码测试时语句和分支覆盖率统计的差异。在进行测试时C语言的语句有2条,而汇编会有17条;分支C语言也是2条,而汇编语言就是由4条,JZ和JC语句分别有2个分支。在进行源代码测试时只需要2个测试用例即可完成测试,而目标码测试则需要3个测试用例来完全覆盖分支的各种情况。上面这个例子可看出目标码测试要比源代码测试的难度更大一些。从这两个例子可以看出,源代码通过编译器之后带来的变化,虽然不能得出

4、不进行目标码测试,软件的质量就有问题或是对任务存在影响。但作为测试充分性的考量指标,源代码和目标码的覆盖率指标所反映的内容还是存在一定的差距。对于高级语言编写的可重用模块,如果编译器不同,模块重用就存在了一定的风险。2如何实现目标码测试任何代码的覆盖率测试都离不开工具的支持,除非微小型的软件,花费大量的人力完成统计。目前所了解到的测试工具能够支持目标码测试的也是非常有限,其工作原理如下:测试工具通过对数据线和地址线上进行采集,存储;之后对数据进行分析,得出软件运行的情况。总线上的数据都是二进制的机器代码,而每条汇编语句也对应着一个二进制机器代码。如51汇编语言“MOV A,0x09”对应的目标

5、代码就为“E5 09”;如果数据总线上存在“E5 09”则认为CPU执行了这样一条语句。测试工具原理图如图1所示。其中,采集头与被测环境根据实际情况进行连接,采集设备主系统负责存储和分析。采集设备与被测软件之间没有交互信息,不影响软件的运行情况。根据上述原理完成目标码覆盖率测试会有很多制约因素,比如:CPU是否存在Catch;如果存在CPU就有预取功能,那么如何判别总线上出现的指令是否执行就成了关键问题;需要一套完成的算法来识别出代码执行情况;采集设备的运行速度与CPU运行速度;采集设备的速度一定是被采设备的倍数;现在CPU运行的速度越来越快,高速采集设备在抗干扰等方面要求很高;采集设备需要被

6、测件提供可连接的接口;被测软件是否运行在内部存储区;如果在内部存储区就无法获取被测软件的运行情况;对应不同的汇编语言,测试工具要对应不同的分析软件或分析软件所调用的信息库不同。通过上述方法实现目标码测试只是目前的一种,是否还有更好的方法还有待研究。因为源代码语句和分支覆盖率的统计都是通过插桩的方法实现,目标码是否也可以运用类似的方法来实现?或是有更好的方法。3目标码测试的好处没有提出目标码测试的概念之前,软件测试充分性一般通过源代码的语句和分支覆盖情况进行考量,更严格的还有条件覆盖,条件组合覆盖,路径覆盖等,对于后三种情况只是理论的考量方法实际工作中是很难完成的。为了进一步提高语句和分支覆盖,

7、验证编译器没有对代码带来未知的影响,所以通过目标码语句和分支的覆盖率测试来确保测试的充分性。某型号软件就发生过由于对目标码没有进行彻底分析而造成质量问题的案例,也发生过对编译器选项配置不一致而造成质量问题的情况。随着问题的被发现,对测试的要求越来越高。在不断的积累和探索中,必将会发现更好的方法,使开发和测试人员完全清晰掌握运行在CPU上目标码的任何细节。4结束语目标码测试为提高软件质量,使软件设计师和测试人员更充分掌握运行代码的确切情况是非常有帮助的。但无论是源代码还是目标码的覆盖率测试对工具的依赖是非常大的,没有好的工具支撑是无法完成这项工作的。参考文献:1美Bart Broekman,Edwin Notenboom.嵌入式软件测试.北京:电子工业出版社.2美Parl C.Jorgensen.软件测试(原书第二版).北京:机械工业出版社. -全文完-

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 调研报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号