[发明专利]C语言嵌入式软件插桩及动态测试覆盖率信息提取方法无效
申请号: | 201110412481.3 | 申请日: | 2011-12-08 |
公开(公告)号: | CN102419731A | 公开(公告)日: | 2012-04-18 |
发明(设计)人: | 侯成杰;董燕;郝伟;吴瑾;郭华;王翼山 | 申请(专利权)人: | 北京控制工程研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 安丽 |
地址: | 10008*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 语言 嵌入式 软件 动态 测试 覆盖率 信息 提取 方法 | ||
技术领域
本发明涉及一种C语言嵌入式软件测试方法,适用于运行在DSP环境的C语言嵌入式软件的动态白盒测试。
背景技术
软件插桩和动态测试覆盖率信息提取技术是动态白盒测试的核心技术,已经被广泛研究,并且有多种测试工具。在航天、航空等对可靠性要求较高的领域,对软件动态白盒测试的覆盖率也提出了较高的指标要求。
目前测试工具所提供的通用插桩方法主要有2种,一种方法是向外部文件输出覆盖率信息,由于嵌入式软件一般不支持文件操作,因此这种方法只适用于非嵌入式软件;另一种方法是在第一种方法基础上进行了修改,把其中的文件输出操作替换为向外部接口的输出操作,这种方法能够适用于嵌入式系统,但是仍然具有插桩原理复杂(在分支点处需根据不同分支类型增加向外部输出表征不同类型分支是否被执行的语句,每个分支点至少包括2条语句),因此导致插桩代码膨胀率较大(一般大于50%),且覆盖率信息提取需要占用硬件资源等缺陷,不能满足于嵌入式软件测试对插桩后代码的低膨胀率、插桩所使用的内存空间尽可能小、覆盖率信息提取过程不受硬件资源限制等诸多要求。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提供了一种针对C语言程序的软件插桩及动态测试覆盖率信息提取方法,能够满足嵌入式系统对软件插桩所提出的低膨胀率、内存空间限制、覆盖率信息提取限制等方面的要求,可应用于运行在DSP环境的嵌入式C语言软件的动态白盒测试。
本发明的技术解决方案是:C语言嵌入式软件插桩及动态测试覆盖率信息提取方法,步骤如下:
(1)把C语言程序看做一个由各分支点组成的数组,每一个分支点均对应数组中的一个元素,并把数组中每个元素定义为两种状态,“1”表示执行过,“0”表示未执行过;其中数组的维数与分支点的数量相同,分支点为C语言程序的各种逻辑分支的第一条语句;
(2)将数组定义在专用存储区进行存储;
(3)在C语言程序各分支点处,增加向定义在专用存储区的分支点信息数组输出该分支点是否被执行信息的操作代码;所述分支点是否被执行信息的操作代码内容为向分支点信息数组中该分支点对应的bit位执行“或”1的操作;
(4)在C语言程序main函数的第一条语句处增加对数组进行初始化的操作代码;
(5)执行增加操作代码以后的C语言程序,执行完毕后从专用存储区提取分支点信息数组,根据分支点信息数组中各元素的状态即可确定C语言程序中各分支点的执行情况,由此得到C语言程序的动态测试覆盖率。
所述的专用存储区为DSP内部RAM的未使用区。
所述的分支点信息数组中每个元素用1bit来表示,将分支点信息数组变为【分支点个数/8+1】个unsigned char类型数值的集合。
本发明与现有技术相比的优点在于:本发明具有对插桩后程序的代码膨胀率小、执行插桩后程序所产生的分支点信息所占存储空间小、覆盖率信息提取方便等特点,为在DSP运行环境下进行C语言嵌入式软件动态测试覆盖率统计提供了简便实用的方法。
(1)插桩模板原理简单,容易实现。本发明所采用的插桩策略基于“把源程序看做分支点集合,分析覆盖率只需要记录所有分支点是否被执行”的思想,基于该思想的插桩模板原理也很简单,且容易实现;
(2)本发明方法只在分支点处增加向分支点信息数组相应bit“或”1的操作(对应1条C语句),没有增加文件操作或者其他复杂的操作,这使得插桩后的代码膨胀率较小(小于30%),从而对插桩后软件执行的性能影响较小;
(3)本发明方法进行插桩所产生的分支点信息数组所占用的存储空间很小(一般小于1K字节),能够适应嵌入式系统内存空间使用受限的情况。
(4)本发明方法所确定的覆盖率信息提取是通过存取内存区进行的,不占用硬件资源,且提取方便。
附图说明
图1为本发明方法的流程图。
具体实施方式
如图1所示,本发明C语言嵌入式软件插桩及动态测试覆盖率信息的提取方法,由软件插桩策略和使用该策略进行软件插桩和动态测试覆盖率信息提取的过程组成。
本发明中的软件插桩过程是指在被测源程序的各个分支点之后加入一些代码,这些代码在软件执行过程中向外部输出这些分支点的覆盖率信息。软件插桩过程可以借助工具和插桩模板自动完成,也可以手动完成。
软件插桩策略
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京控制工程研究所,未经北京控制工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110412481.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:毛笔书法练习器
- 下一篇:虚拟仿真场景多水平动态加载卸载方法