Parasoft C / C ++test:嵌入式单元测试实践(四)

原创|使用教程|编辑:龚雪|2015-12-10 14:17:56.000|阅读 465 次

概述:关于Parasoft C / C ++test的嵌入式单元测试实践,本文主要介绍了单元测试的脚本配置,堆和栈设置。

相关链接:

<Parasoft C / C ++test产品详情>

uVision4和ULINKPro的内置测试流程定义对执行流程变量的作用:

名称 默认值 描述
uVision项目 可执行文件的位置 ${uvision:project_executable} 自动扩展到uVision项目构建的产品文职(一般可执行文件)。这个变量是用于替换C++test生成的原始测试可执行文件。
uVision项目的项目文件 ${uvision:project_file} 自动扩展uVision项目文件的位置。这个变量是用于启动uVision和所生成的调试脚本来执行自动测试。在典型情景中, 不应该修改该变量。
uVision IDE可执行文件 Uv4.exe uVision IDE可执行文件的位置。它是执行自动化测试所必须的。如果C++test没有自动检测,需要用户手动指定。
uVision项目目录 ${uvision:project_ directory} 自动扩展到uVision项目目录的位置。这是C++test生成的调试脚本的默认存储位置。
uVision项目目标 ${uvision:project_ target} 自动扩展到uVision项目的当前目标。如果为了测试在uVision中创建了一个特殊的目标,需要手动将其指定为属性值。
可执行出口点 _sys_exit 这个功能名称或地址被看做是测试执行的端点。C++test的默认配置是从_sys_exit可执行文件中调用的最后一个功能。当运行的测试程序将达到_sys_exit功能时,C++test生成的调试脚本将结束执行的测试。
调试脚本模板 ${cpptest:cfg_dir}/ templates/for_recipes/uvision _ulinkPro_itm.tja 调试脚本模板的位置。C++test用其生成调试脚本的最终形式(用于uVision执行自动化测试)。它是可以自定义和修改的。它只包含必须部署和运行测试可执行文件的命令。用于源程序的任何开发环境的特殊初始化,都应该添加到这个模板,在最终调试脚本中打印出来。建议将调试模板文件备份(存储在C++test distribution里),默认由该属性标记并放入项目地址中,便于修改。这个调试脚本模板需要修改执行流程属性:${project_loc}/ uvision_ulinkPro_itm.tja

上文提到,当准备或运行可执行文件时,不标准的项目需要一些额外的工作。这可以通过编辑测试流程定义(test flow definition)来实现。点击“Edit...”,然后再点击“Test execution flow:”下拉菜单。有关编辑“test flow definition”详情,请参考C++test用户指南。

配置uVision项目进行单元测试

除了完成C++test中的配置之外,我们还需要一些工作。通常情况下,我们需要做以下工作:

  • 选择C++test生成的调试脚本路径

C++test使用以下命令行来运行uVision IDE,来自动执行测试可执行文件:

uv4.exe -d <tested project uVision project file> -t <name of the uVision
project target>

“-d”选项可以使uVision在调试模式下运行,并执行调试脚本(为目标<name of the uVision project target> 准备)指定的所有命令。为了确保C++test生成的脚本可以使用,需要项目属性中设置脚本路径,如下图:

这种情况下,C++test生成的调试脚本会在uVision项目位置(默认是C++test生成地址)。

为了方便起见,建议添加附加的uVision项目目标,并将调试脚本的路径只设为该目标。使用同一个项目目标进行测试和开发需要你兼顾开发和测试调试脚本。需要注意的是,如果目标只针对测试,需要在C++test测试配置的测试流程属性(test flow propertie)中指定名称。具体方法在前文中有介绍。

  • 堆和栈内存

单元测试框架会消耗额外的内存,这影响了栈和堆的使用情况。当被测项目设置了免费的堆或堆栈存储器,测试执行可能会由于堆栈/堆不足而导致崩溃。测试框架使用的栈和堆内存的数量取决于很多因素。例如,“工具配置(instrumentation configuration)”、“C++test运行库配置(C++test runtime library configuration)”和“测试案例/存根的代码(code of the test cases and stubs)”。C++test配置中有一些节点可以限制堆栈/堆的消耗。对于简单的项目来说(例如ASR演示程序),我们设置堆栈为0x450,堆为0x900就足够了。

堆和栈内存通常是通过汇编程序启动文件(assembler startup file)进行配置。本例中,为STM32F10x.s。若要修改这些值,,从项目树(project tree)中选择“assembler startup file”,切换到 编辑器窗口,然后选择“配置向导(Configuration Wizard)”选项卡。在配置向导选项卡中,输入栈和堆的值。下图是一个典型的设置:

为确保项目修改后重建,要使汇编程序启动文件生成的对象是最新的。这点很重要,因为C++test要用它构建最终测试可执行文件(C/ C ++源代码生成的对象是由C++test产生的,但汇编文件生成的所有项目是来自源项目)。

购买最新正版授权Parasoft赠送Macbook!"咨询在线客服"

慧都年终盛典火爆开启,一年仅一次的最强促销,破冰钜惠不容错过(12.01~12.31)!!优惠详情点击查看>>



标签:测试C/C++

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

登录慧都网发表评论登录


yuyi 2015-12-10 14:21:00.000
0

干货!赞!


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
Parasoft C/C++test

Parasoft C/C++test – 针对 C/C++ 开发的综合性代码质量保障工具,有效提高开发团队工作效率和软件质量。

在线客服 在线QQ 电话咨询
400-700-1020
反馈
在线客服系统
live chat