当前位置:首页 > 测试测量 > 测试测量
[导读]前言目前在嵌入式领域,目标系统的应用系统日趋复杂,而由于竞争要求产品快速上市,开发技术日新月异,同时硬件发展的日益稳定,造成了软件故障日益突出。由此,软件的重要性越来越引起人们的重视,人们认识到嵌入式

前言

目前在嵌入式领域,目标系统的应用系统日趋复杂,而由于竞争要求产品快速上市,开发技术日新月异,同时硬件发展的日益稳定,造成了软件故障日益突出。由此,软件的重要性越来越引起人们的重视,人们认识到嵌入式系统的测试势在必行。

由于嵌入式系统的自身特点,如实时性、内存不丰富、I/O通道少、开发工具昂贵、并且与硬件紧密相关,CPU种类繁多等等。嵌入式软件的开发和测试也就与一般商用软件的开发和测试策略有了很大的不同,可以说嵌入式软件是最难测试的一种软件。

嵌入式软件测试使用有效的测试策略是唯一的出路,它可以使开发的效率最大化,避免目标系统的瓶颈。自从出现高级语言,开发环境与最终运行环境通常都是存在差异的,嵌入式系统更是如此。开发环境被认为是主机平台,软件运行环境为目标平台。相应的测试为主机-目标测试或交叉测试。

讨论嵌入式软件测试首先就会遇到一个问题:为什么不把所有测试都放在目标上进行呢?因为若所有测试都放在目标平台上有很多不利的因素:例如测试软件可能会造成与开发者争夺时间的瓶颈;目标环境还不具备;比起主机平台环境,目标环境通常是不精密的和不方便的等等。

从经济上和开发效率上考虑,在开发周期中软件应该尽可能多地工作在主机系统环境中,其中包括测试。

确定主机-目标(Host-target)测试环境后,开发测试人员又会遇到以下的问题:例如多少开发人员会卷入测试工作;多少软件应该测试,花费多长时间测试;在主机环境和目标环境有哪些软件工具,价格如何等等。

任何人或组织在测试嵌入式软件时都应深入考虑以上问题,结合自身实际情况选定合理测试策略和方案。

嵌入式软件测试或叫交叉测试(Cross-test),测试内容包括:1.单元测试;2.集成测试;3.确认测试;4.系统测试。

使用有效的交叉测试策略可极大地提高嵌入式软件开发测试的水平和效率,下文给出各个阶段的嵌入式软件测试方案。

静态测试

静态测试不利用计算机运行被测程序,目的是度量程序静态复杂度,检查软件是否符合编程标准。

1)静态测试工具McCabe QA

McCabe QA是美国McCabe&Association公司的产品。它利用著名学者McCabe的软件结构化测试理论,即使用V(G)圈复杂度=模块内部独立线性路径数来度量软件的复杂度。

McCabe最大的特点就是可视化,以独特的图形技术表示代码。软件通过分析源码,得到整个软件系统的结构图,同时得到了各种基于工业标准评估代码复杂性,包括V(g)、EV(g)、DV(g)、Halstead等数十种静态复杂度度量。用不同的颜色表示软件模块的复杂性,测试人员的测试重点放在质量差的模块上;提供各种质量模型深入评价软件质量,纪录软件质量波动曲线和版本变化趋势分析,从而控制软件修改不同阶段的质量。在单元级McCabe 显示模块的流程图,并且相对应地标出代码的位置,视图与代码相互对应,可很快找出问题所在。分析最终得到可定制的符合工业标准的综合报告。

2) 代码规则检查工具QAC/C++

QAC/QAC++是用于代码规则检查的自动化工具。代码审查主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面。发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。

动态测试

动态测试时软件必须运行。动态测试方法分为黑盒法和白盒法。为了较快得到测试效果,通常先进行功能测试,达到所有功能后,为确定软件的可靠性进行必要的覆盖测试。

在软件开发的不同时期进行动态测试,测试又分为单元测试、集成测试、确认测试、系统测试。

单元测试

单元测试方案之一采用IPL公司的Cantata++测试工具,它能够满足开发者进行高效的单元测试和集成测试要求,能够提高测试效率,具有一整套包含测试、覆盖率分析和静态分析的功能。Cantata++含有以下几个主要部分:

CTH测试功能库,Cantata++通过CTH提供的测试函数执行测试,提供测试所需用例的输入输出,并检查输出结果是否符合要求,给出合格/不合格的确切结果。打桩、封装和动态分析的执行也是利用CTH。

Cantata++主程序包括测试脚本自动生成器和管理器。测试脚本生成工具通过分析源代码得到参数和数据信息,连同自动产生的Stub打桩函数和Wrap封装函数,自动生成到测试脚本中。测试脚本完全使用C或C++语言构成,可重用。通过使用测试脚本管理器可以自动完成测试用例定义到测试脚本的转换。对于熟练的用户,可以直接利用CTH提供的库函数,直接编写C或C++语言的测试脚本。

完全支持白盒测试和黑盒测试技术,通过脚本检查所有标准的和用户定义的类型,对期望和不期望的异常进行检查;重用继承类和模板实例的测试用例;为所有预期结果和实际结果的检查进行详细的测试分析。支持覆盖率分析,提供从语句覆盖级到MC/DC (DO-178B A)标准的度量。

集成测试

集成测试是软件的单元测试完成后进行的。Cantata++同样支持集成测试方法,进行调用序列,传递参数的检查。并且提供独特的封装功能,完成硬件错误注入的测试。提供Wrap技术,相对于打桩函数stub,封装函数,Wrap技术有以下优势:

1) 在被测模块中采用模拟的误码,避免真实代码的执行。模拟硬件问题,进行逆向测试。

2) 可以校验集成调用的执行过程Call 序列,允许测试者控制被测软件的外部环境,以及检查调用其成员函数的执行是否正确(包括参数、执行的顺序)。

3) 允许真实调用某些成员函数,而封装另一些函数的调用,控制其输入和返回参数。

另一款集成测试工具是McCabe Test。正如前一部分提到的,它可很直观地从整体上把握软件的结构,生成集成测试计划,通过插装被测试软件,得到被插装后的源代码。运行目标编译器,最后测量覆盖率,产生覆盖率报告。

通过被测试软件的结构图,直观地评估“测了多少”,深入得到代码级,以图形的方式标示已测代码和未测代码。支持MC / DC覆盖分析,满足DO178B-A标准。McCabe QA 与McCabe TEST等组件组成McCabe IQ工具包,构成了一整套完整的白盒测试方案。

确认测试和系统测试

包括恢复测试、安全测试、强度测试、性能测试,已超出了本文讨论的范畴,本文暂不详述。

结语

嵌入式软件通常在主机环境执行多数的测试,只是在最终确定测试结果和最后的系统测试才移植到目标环境,这样可以避免发生访问目标系统资源上的瓶颈,也可以减少在昂贵资源如在线仿真器上的费用。另外,若目标系统的硬件由于某种原因而不能使用时,最后的确认测试可以推迟直到目标硬件可用,这为嵌入式软件的开发测试提供了弹性。

设计软件的可移植性是成功进行交叉测试的先决条件,它通常可以提高软件的质量,并且对软件的维护大有益处。本文提到的测试工具,都可以通过各自的方式提供测试在主机与目标之间的移植,从而使嵌入式软件的测试得以方便地执行。

使用有效的测试策略可极大地提高嵌入式软件开发测试水平和效率,提高嵌入式软件的质量并降低成本。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

随着嵌入式计算设备基础硬件性能的提升,在通信、工业制造、交通运输等领域,嵌入式系统逐渐承担起更加综合化和关键的任务,这也导致嵌入式软件在结构愈加复杂的同时,其安全性问题也越来越受到重视。堆栈是嵌入式软件中的重要存储结构,...

关键字: 嵌入式软件 堆栈

嵌入式开发是一种专门针对特定硬件平台设计和实现软件系统的工程实践,它涵盖了从需求分析、系统设计、编程实现、调试测试直到产品部署及维护的全过程。本文将深入探讨嵌入式开发的主要阶段,分解其流程并阐述每个步骤的关键要点,以便于...

关键字: 嵌入式开发 嵌入式软件

如今,汽车已经不再是一个简单的交通工具,而是一种智能化的移动终端。通过集成各种先进的传感器、控制器和执行器,汽车可以实现对环境的感知、分析和决策,实现自动驾驶、智能导航、车辆间通信、互联网连接等功能。这些功能不仅提高了驾...

关键字: HMI 驾驶舱 嵌入式软件

为增进大家对嵌入式的认识,本文将对嵌入式软件方向的分类以及嵌入式的应用予以介绍。

关键字: 嵌入式 指数 嵌入式软件

基于商汤科技自研大语言模型的智能编程助手——代码小浣熊Raccoon,即日起全面开放公测。它功能覆盖软件需求分析、架构设计、代码编写、软件测试等环节,满足用户代码编写、数据分析、编程学习等各类需求。

关键字: 大语言模型 代码编写 软件测试

DevEco Testing Hypium通过提供以上测试能力集,有效解决测试开发常见痛点、提升脚本开发效率及开发体验,让HarmonyOS NEXT自动化测试效率有效提升30%。

关键字: 软件测试 HarmonyOS

在这篇文章中,小编将为大家带来嵌入式软件及其作用的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 嵌入式 嵌入式软件

嵌入式软件测试是针对嵌入式系统中的软件进行验证和验证的过程。嵌入式系统是集成在其他设备或系统中的计算机系统,例如汽车、医疗设备、家电等。为确保嵌入式软件的质量和可靠性,进行适当的测试是至关重要的。嵌入式软件测试是确保嵌入...

关键字: 嵌入式软件 计算机 硬件

嵌入式软件开发已经成为现代科技领域中不可或缺的一部分。从智能手机到家用电器,从汽车到医疗设备,嵌入式软件无处不在。然而,嵌入式软件的开发具有挑战性,因为它需要满足高度的性能、稳定性和可靠性要求。为了确保嵌入式软件的成功开...

关键字: 嵌入式软件 智能手机 家用电器

在嵌入式软件开发中,利用完整的应用跟踪,可为开发人员分析其产品行为提供无限的可能性。通过对应用程序的全面了解,他们可以跟踪每一条指令,看看他们的应用程序是否按照预期运行,或者是否出现错误或漏洞。那么,如何才能最大化地利用...

关键字: RISC-V 嵌入式软件
关闭
关闭