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

原创|使用教程|编辑:龚雪|2015-12-08 13:42:50.000|阅读 631 次

概述:关于Parasoft C / C ++test的嵌入式单元测试实践,本文主要介绍了单元测试的准备工作。

相关链接:

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

大家观点

既然单元测试是如此重要,那为什么不是每一个项目都做了呢?可能是因为即使是简单的测试案例也需要一定的工作量。

回想一下前文讲到的简单的例子。首先,函数的自变量不一定是简单类型。它们也可能是复杂的,所以需要初始化以便于测试。第二,被测功能不一定返回简单类型,也可能是外部变量。最后,“foo”函数可能调用另外一个“goo”。这就好比,硬件传感器/文件/数据库/网络接口/ USB端口接收GUI的用户输入,这会因为分离而不能正常运作。

要为这个特别的“foo”准备一个有用的单元测试用例需要大量的工作。要使所测试功能的所有变量初始化正确,存根/驱动器不可以调用函数(例如“goo”),也不能只能后置条件校验,等等。最后是准备一个美观的报告展示测试执行结果,还有执行过程中涉及的线/陈述或分支。这些资料需要一直保存。

你会觉得这些工作量很大,而且事实上也是。这就是有些软件项目没有进行单元测试的最主要的原因。

嵌入式单元测试实践

在嵌入式软件开发的背景下,单元测试是一个更大的挑战。一方面,它很简单,因为只使用C语言——当使用C ++时,它仅是其中一个简化的子集。另一方面,单元测试用例需要部署在目标板上,或在模拟器上。代码要和所有的测试用例、测试数据一起转移到目标板上,然后执行。最后,试验结果必须收集并传送回主机,以方便进行分析。这些准备工作增加了嵌入式软件进行单元测试的花费。本文我们不使用这样的方法,而是探讨一种更实用的方法。

被测系统

让我们考虑简化的ASR (Acceleration Slip Regulation) 系统,它运行在Keil评估板MVBSTM32E上。必须强调的是,我们提出这样的系统是为了说明一个概念:ASR不是真实存在的软件。

在示例系统中,前轮有两个速度探测监视器。如果一个轮子开始旋转而另一个减慢,则系统假定车轮打滑。接着,系统启动前轮刹车,以便扭矩直接通过前轮轴降低速度。ASR系统工作的真实详情,请参考维基百科en.wikipedia.org

简化的ASR由MDK-ARM建成并通过ULINK Pro部署。它附着在一个汽车模型上运行。该汽车模型装有速度传感器板,并可以模拟滑移条件。如下图。

汽车模型

想了解这些系统是如何工作的,请点击视屏观看

你们注意到视屏中,当一个车轮上升时,它就失去了抓地力并获得整个扭矩。你可以看到系统如何启动车轮的刹车,使扭矩传递到另一个轮子上。

为了准备ASR的单元测试,我们需要:

  • 将uVision项目导入C++test
  • 配置里面的C++test项目
  • 配置结果传输
  • 处理目标边界
  • 准备测试套件和示范性测试用例
  • 部署并收集结果

完成了这些步骤,我们就可以开始测试的具体工作了。

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

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



标签:测试C/C++

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

登录慧都网发表评论登录


慧都网友 2015-12-08 14:14:54.000
0

收藏


慧都网友 2015-12-08 14:10:46.000
0

有视屏讲解


慧都网友 2015-12-08 14:09:33.000
0

函数的自变量不一定是简单类型


为你推荐

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

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

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