本发明专利技术涉及C++Test在无操作系统下的软件仿真方法,属于计算机仿真领域,包括:在C++test中配置工程软件的使用环境;在C++test中调用测试脚本所用到的工程软件的运行时库;在C++test中编译调用程序并调用软件仿真程序;在C++test环境下的工程软件中执行软件仿真程序与测试中间文件进行交互测试;以C++test环境下得到仿真环境下的测试结果和覆盖率统计信息。本方案利用C++test在无硬件仿真环境支持的情况下,进行单元测试静态分析和动态测试的跟踪调试,同时提供测试覆盖率数据支持,减少了硬件需求,缩短了工期,提高了工作效率。
【技术实现步骤摘要】
本专利技术涉及电站控制领域,具体涉及ー种利用C++Test实现无操作系统环境下对测试对象实现软件仿真,从而得到単元测试的静态分析和动态测试的跟踪调试的方法。
技术介绍
目前核电站的应用上,常常需要根据不同的客户要求,安装或増加一些新的设备, 这些设备需要使用相应的软件,此类软件都是在相应的工程软件环境下编写的,软件完成后需要首先进行测试,以验证是否能够驱动相应设备或是否达到驱动要求,但此类实际运行环境比较难以实现,因此就采用仿真的方法来验证和测试软件的正确性。现有技术中,核电站领域都是采用C++Test —类软件来运行wind river prober进行硬件环境下的仿真测试,wind riverprober能够仿真代码在硬件环境下的执行情況,从而查找代码中存在的问题,wind river probe在使用时需要搭建硬件环境(变压器ー个,wind river probe, 板卡),搭建好环境后,然后编译测试对象,加载到仿真环境中,执行编译生成文件,观察仿真器wind river probe指示灯,然后选择刚刚执行过的测试用例,进行跟踪调试,每调试完一个功能项,要重新启动硬件仿真器,执行步骤比较繁琐,静态分析和动态测试都存在这样的问题。而且wind river probe的采购周期长,成本高,很多单位即使有数量也很少,当有多个项目人员需要使用吋,往往就会出现无法同时兼顾的情況,影响工作进度。另一方面,wind riverprobe在进行硬件仿真时,开发人员编写的代码必须已经开发完整,不完整的情况下,很难让测试人员运行在wind riverprober的硬件仿真环境里,如开发人员寄存器没有初始化的情况下,测试人员就无法进行测试,需要重起硬件wind river probe,更改寄存器的值,很不便利。目前多数行业开始采用软件仿真来代替硬件仿真,软件仿真需要的运行环境相对硬件仿真的运行环境要少得多,而且软件仿真可以方便实现测试程序某个部分、某个功能、某个方向的部分输出,而且可以随时中止测试程序,随时提出测试过程中的数据,这些都是硬件仿真所实现不了的。因此需要在C++Test环境下来执行软件仿真程序, 但是由于C++Test本身仅为硬件仿真所开发,其无法直接运行软件仿真程序,因此,如何在核电站领域中克服C++Test不能运行软件仿真程序的问题,是当前需要解决的问题。
技术实现思路
为解决现有技术中,C++Test环境里无法实现软件仿真环境下的测试对象的静态分析和动态测试的跟踪调试的问题,本专利技术提供ー种利用C++Test环境下调入仿真软件实现无操作系统测试软件的静态分析和动态跟踪调试的技术方案,具体方案如下C++Test 在无操作系统下的软件仿真方法,包括如下步骤步骤1、在工程软件中編译测试对象并生成测试脚本,利用测试脚本生成测试中间文件;步骤2、在C++test中利用仿真环境执行测试中间文件;步骤3、以C++test环境下得到仿真环境下的测试结果和覆盖率统计信息;其特征在于所述步骤2包括如下步骤步骤21、在C++test中配置工程软件的使用环境;步骤22、在C++test中调用测试脚本所用到的工程软件的运行时库;步骤23、在C++test中编译调用程序来调用软件仿真程序;步骤23、在C++test环境下的工程软件中执行软件仿真程序与测试中间文件进行交互测试。本专利技术的另ー优选方案所述步骤3得到的测试结果包括中间测试结果或根据需要得到的部分测试結果。本专利技术的另ー优选方案所述步骤23编译调用的软件仿真程序是Windiss软件仿ζΜ^ ο本方案充分解决无硬件仿真环境支持的情况下,进行单元测试静态分析和动态测试的跟踪调试的难题,同时提供测试覆盖率数据支持。使软件仿真直接运行在C++Test环境下,不必等到先做出硬件板卡再进行测试,缩短了エ期,提高了工作效率。达到降低技术难度、克服资源短缺、降低成本的效果。将原嵌入式动态单元测试执行流程3个步骤合并成一个执行步骤,简化了执行过程。将C++Test与wind river probe进行交互的动作,全部替换为调用软件仿真代码,同时加上了编译动态运行时库的操作,以提供测试对象在编译过程中调用的相关库稳健,C++test采用软件仿真程序(windiss)后相对硬件仿真(wind river probe)大约提高工作效率25% .。本专利技术可以节约成本,减少对硬件资源的依赖,通过编代码脚本可以使用测试工具C++Test进行软调试,可以方便进行代码定位。附图说明图1本专利技术执行步骤示意框图。图2本专利技术在C++Test里中配置测试对象执行环境示意图。图3是图2基础上插桩配置示意图。图4是图3基础上运行选项示意图。图5是图4基础上配置调试窗ロ示意图。图6是图5基础上设置断点示意图。图7是图6基础上处理断点示意图。具体实施例方式本方案的无操作系统是指测试对象本身就是可执行的操作系统,没有运行在其它的操作系统环境下,它含有main函数,可无限循环调用。本方案重新编写C++test的脚本命令,将原调用硬件仿真的代码编写成调用软件仿真的代码,采用直接在C++test中调用工程软件的时序库,使软件仿真完全运行在C++test环境下,实现了 C++test环境下对单元测试的静态分析、动态测试的跟踪调试,同时可以提供测试覆盖率数据支持。在实现wind river prober所有功能的情况下,还克服了 wind river prober需要重新启动才能得到单元测试的中间执行結果,随时可以根据需要输出中间某部的测试結果,大大提高了编程人员的工作效率。如图1所示,此为本方案的工作过程如下101 在工程软件中編译测试对象并生成测试脚本,利用测试脚本生成测试中间文件;此为利用相应的工程软件按用户要求编译测试对象,编译好后生成测试脚本,在测试脚本中添加各个桩点生成测试中间文件,添加桩点是为了输出各种效果以验证此段脚本的功能。102 在C++test环境下配置工程软件的使用环境;在C++test环境中为步骤1中所使用的工程软件配置运行环境。103 在C++test中调用测试脚本所用到的工程软件的运行时库;在C++test配置好的工程软件环境中,将当前测试中间文件所用到的工程软件里的运行时库调进来,以支持当前测试中间文件的运行。104 在C++test中编译调用程序并调用软件仿真程序;在C++test环境里,启动配置好的工程软件,同时编写测试脚本,进行测试配置, 调用软件仿真程序的运行环境,利用本方案編制的程序将软件仿真程序调入工程软件中, 与工程软件进行交互,达到而测试目的。105 在C++test环境下的工程软件中执行软件仿真程序与测试中间文件进行交互测试。在C++test环境下的工程软件中启动仿真软件,利用仿真软件运行包含桩点的测试中间文件,同时在屏幕上输出桩点的效果,最终生成可执行文件,在此过程中,C++Test可以随时控制软件仿真的运行过程,以得到想要的結果。106 在C++test中得到工程软件的仿真环境下的测试结果和覆盖率信息;在C++test环境中,随时可以得到仿真软件的测试結果、动态测试的跟踪调试信息及覆盖率信息,特别是能够随时得到中间测试結果,避免了硬件仿真需要重启当前环境才能得到中间结果的繁本文档来自技高网...
【技术保护点】
【技术特征摘要】
【专利技术属性】
技术研发人员:刘军利,张海滨,张宓,孟广国,
申请(专利权)人:北京广利核系统工程有限公司,中国广东核电集团有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。