[发明专利]一种基于CPU模拟器的嵌入式C语言目标码级单元测试方法有效

专利信息
申请号: 201410381755.0 申请日: 2014-08-05
公开(公告)号: CN104156311B 公开(公告)日: 2017-09-29
发明(设计)人: 郭向英;王小丽;刘璟炜;黄晨;胡智琦 申请(专利权)人: 北京控制工程研究所
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 中国航天科技专利中心11009 代理人: 臧春喜
地址: 100080 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 cpu 模拟器 嵌入式 语言 目标 单元测试 方法
【说明书】:

技术领域

发明涉及一种嵌入式C语言单元测试方法,尤其涉及一种基于CPU模拟器的嵌入式C语言目标码级单元测试方法,属于计算机软件检测技术领域。

背景技术

单元测试目的是完成对软件的最小设计单元进行验证,充分的单元测试对发现软件中的缺陷,以及定位和排除这些缺陷都相对比较容易,所花的成本最小,这是因为单元测试中只包含较少的软件代码,所以软件缺陷比较容易隔离出来,因此对于排除软件缺陷,单元测试是最有效的一类测试。经验表明,单元测试具有不可替代的重要性,这个阶段发现的问题有相当大的一部分是在其后的测试阶段中很难发现的。

对于安全性和可靠性要求较高的嵌入式系统,单元测试是软件开发过程中的重要环节,日益受到软件设计师的重视。C语言目前仍是嵌入式软件开发的主流编程语言。C语言等高级语言编写的程序不能直接在目标系统上运行,其必须经过编译器的编译生成特定处理器的目标码才可以执行。而由于编译器的解释、优化等因素,使得编译器产生的目标码的控制流结构多少会与源代码不一致,二者之间控制流结构的不同在测试过程中会产生较大的差异。因此,仅对高级语言源代码验证并不能保证目标码执行的正确性。

目前,很多安全性和可靠性要求高的软件,都要求进行目标码级的验证。目标码验证确保真正在处理器上执行的代码是正确的,并建议在单元测试阶段就开始进行目标码验证,在开发阶段的早期识别出目标码和源代码结构覆盖的差异/不足,通过设计针对性的测试用例来对目标码进行验证。

针对嵌入式C语言的单元测试方案一般是手工或者利用C语言单元测试工具,如CANTATA、TestBed TBRun、Rational TestRealTime等辅助编写测试C语言函数用的测试驱动程序,然后利用PC机上的x86C语言编译器将测试驱动程序编译成可执行程序,执行该程序后,查看结果和统计C语言级的覆盖率。利用这种方法,被测试的程序实际是编译后的x86处理器上的程序,如果目标机的处理器与x86处理器不同,则测试的程序并不是真实的目标程序。目前,嵌入式系统的中使用的处理器多为TSC695、8051、C3X、PowerPC等不同于x86的处理器。因此,利用上述方法由于实际测试的目标码不同于真实的目标码,测试结果只对C语言源代码级的程序有效,而不能保证对真实的目标码有效。

发明内容

本发明解决的技术问题是:克服现有技术的不足,提供一种基于CPU模拟器的嵌入式C语言目标码级单元测试方法,该方法利用CPU模拟器解决被测的真实目标码在宿主机(通用PC机)上的运行以及目标码覆盖率统计问题。

本发明的技术解决方案是:一种基于CPU模拟器的嵌入式C语言目标码级单元测试方法,步骤如下:

(1)利用C语言单元测试工具生成被测程序的测试驱动程序;

(2)调用与目标处理器对应的嵌入式C语言编译器,将测试驱动程序编译成目标处理器运行的带调试信息的目标码;

(3)调用与目标处理器对应的CPU模拟器软件运行带调试信息的目标码,生成输出端口输出文件、反汇编程序和覆盖率文件;

(4)利用结果及覆盖率分析工具对CPU模拟器软件生成的输出端口输出文件、反汇编程序和覆盖率文件进行分析,获得测试结果和测试覆盖信息。

步骤(1)中测试驱动程序的基本结构包括将被测函数名称赋值给一个全局变量tested_proc_name的句柄、测试用例输入句柄Input_handle、调用被测函数test_proc句柄、测试结果输出句柄Output_handle和调用退出点函数EXIT_POINT句柄。

所述步骤(3)中的CPU模拟器软件为一个命令行程序,包括3个参数:

参数1:为输出信息的地址,为16进制,记为OUT_PORT;

参数2:为目标码的全路径名,记为Target_File;

参数3:为输出结果保存的路径,记为Out_Path;

CPU模拟器软件的工作过程为:

(1)CPU模拟器软件解析带调试信息的目标码,从带调试信息的目标码的路径Target_File中,获得EXIT_POINT函数的地址并记录在Stop_Addr变量中;获得tested_proc_name变量的地址并记录在ProcPointer变量中;

(2)CPU模拟器软件逐条执行Target_File中的目标码指令;

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京控制工程研究所,未经北京控制工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410381755.0/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top