提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:龚雪|2015-12-11 14:25:51.000|阅读 680 次
概述:关于Parasoft C / C ++test的嵌入式单元测试实践,本文主要介绍了单元测试的结果传输和解决目标局限性
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
配置结果传输需要在C++test runtime library中选择一个合适的通信信道。 MDK-ARM 4.1和ULINKPro运行测试的默认设置是基于指令跟踪宏单元(Instrumentation Trace Macrocell)的通信(是ARM CoreSight debug和跟踪技术的一部分)。在这种模式下,C++test将测试信息直接写入ITM端口,ULINKPro确保数据传输到主机。然后,uVision IDE捕获这些内容并存储到文件中,以便C++test进行分析。
这种开发环境中目标到主机(target-to-host)的通信信道是Parasoft C++test所独有的。它有着出色的频带宽度,并且比传统的UART connections配置起来简单的多。此外,由于是专用信道,因此与测试程序和测试框架生成的通信链路不冲突。C++test已经将ITM预先配置好了,无需再进行配置。
这里需要再次强调文章开头所说的,单元测试并不是一件简单的事情,尤其当同时遇到测试和开发平台限制的时候。开发平台的限制越多,需要做的额外工作就越多。以下就是在目标设备上测试时可能遇到的问题:
嵌入式项目往往是建立在免费的栈和堆内存上的。如果没有可用的堆和栈,那么测试框架将不能继续执行测试了。最坏的情况是,我们可能连一个测试用例都完成不了。最简单的解决方法当然是增加堆和栈的数量。但大多数时候,这是不可能的。一般情况下,我们都选择停止硬件的运作来获得更多的内存。或者重新配置测试框架使内存消耗变少。你若是选择放弃在测试案例中使用外部数据资源,使用DCPPTEST_DATA_SOURCES_ENABLED = 0将限制堆使用。你若是选择测试执行问题的堆栈跟踪报告,使用-DCPPTEST_ STACKTRACE_ENABLED = 0(禁用“stack traces reporting”)将减少内存的消耗。另一种方法是,对测试断言的消息发出设置一个下限值。默认的值为1024b,可以通过-DCPPTEST_MAX_MESSAGE_SIZE=512进行设置,但是值的设定不能超过规定范围。
以下是导致测试可执行文件增大的因素:
C++test运行库是一个辅助例程的集合,并且可以进行配置。我们可以去掉一些功能来减少占用空间。通常,可以禁用运行库的一些非核心功能来减少程序内存消耗。非核心功能的选择要取决于测试和用户的要求。C++test用户手册中,可以通过运行库宏列表进程启用/禁用操作。
通过在C++test中添加原始的源代码,来收集测试过程和控制测试执行的各种信息。为了限制由此所产生的消耗,用户可以禁用或去掉一些功能。设置界面中可以同时进行这两种设置。界面如下图所示。
这些是测试过程中产生的内部代码片段。测试用例/存根的数量会影响测试可执行文件的内存使用。当大量的测试用例(成百甚至上千)同时运行时会产生问题。将这些测试用例分开运行,可以降低维护成本和内存使用。
这主要包括源代码测试和后续C++test运行库的调用。测试执行中添加的粘合代码是可以忽略的。我们不能把执行时间仅仅看做是测试功能/方法的问题。这样想的后果就是,我们只需运行功能,然后等待结果并验证。你也许觉得这样没有什么不好,只是等待的时候久了点。但是,这些问题在集成测试的时候就会暴露出来了。因此,我们不能只是孤立地考虑单个功能,还要看它与其他模块的协作。否则,可能会出现以下的问题。假设代码测试设计要在xxx处停止,但是2*xxx已经执行了。结果,其他的代码无法在规定时间内执行,打破了整个模块的时间相关性,导致了测试失败。这个问题可以这样解决。在前文提到C++test提供了一个用户接口。用户可以指定哪些部分要测试,哪些测试功能要用到。
通信信道的选择主要是由开发平台和目标设备决定的。结果可以通过TCP/IP sockets、RS232进行发送,或存储在文件系统或闪存中。每一种方式都有它自己的优缺点。我们还可以对通信信道进行自定义。用户只需实现以下几个简单的功能:initializeCommunicaiton, sendByte, finalizeCommunication。以下是常见问题:
①通信信道的缓慢导致执行时间的增加(如串行线路的传输速率低下)
②通信信道访问冲突(被测程序有时也需要访问通信信道)
若结果发送缺少通信则返回主机。
多数时候,由于开发环境中通信信道的限制会让我们束手束脚。因此,选择一个好的测试功能是非常重要的。下图中展示了UART和ITM分别发送一个字节所消耗的时间对比。
购买最新正版授权Parasoft赠送Macbook!""
慧都年终盛典火爆开启,一年仅一次的最强促销,破冰钜惠不容错过(12.01~12.31)!!优惠详情点击查看>>
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢