嵌入式系统由硬件和软件组件紧密组合,其电量、存储器、速度和外部世界连接受限测试嵌入式设备软件需要大量时间、努力和金钱,因为每个设备都独一无二。视具体情况而定,人工测试可能过高耗时,贡献60%开发努力各种嵌入式软件类型、各自的测试需求以及自动化解决方案均在本白皮书中探索
家庭与住宅自动化趋势上升, 医疗升级为智能诊断,数字化解决方案并解决复杂医疗条件, 汽车变得智能化、更娱乐化和更安全, 电信正在搭建智能通信基础设施, 铁路正在提高安全性与安全性。大型复杂制造行业正在采用嵌入式系统,以提高生产率并生产智能产品支持这些趋势,开发嵌入式系统与软件短周期正变得越来越关键,同时满足市场竞争边缘对更先进、无缺陷、可靠和高质量嵌入式系统的需求。
在每个行业和组织内嵌系统和设备以独特方式解决具体问题因此,为判断嵌入式设备或软件解决方案的成功性,重要的是验证可靠性、可靠性和性能(测试过程速度),它包括功能方面和非功能方面,快速、入侵性重复性方式测试时验证系统功能和非功能,最关键缺陷暴露提高系统质量和可靠性本文将检视跨行业使用的不同类型嵌入式软件,以及与嵌入式软件测试相关挑战以及如何自动化提高测试覆盖度并减少时到市场
嵌入式软件创建时运行安装它的具体设备表示对处理和内存的限制直接与设备规范相关

上图显示,嵌入设备软件由以下四大组成构件块 :
固件软件直接写硬件直接与其他设备通信或执行基本任务和函数而无需APIs、操作系统或设备驱动固件由启动加载器、棋盘支持包和硬件抽象层组成
操作系统连同所需设备驱动程序被定义为软件包,使用户能够在嵌入设备上最广义地运行其他应用类型划分为两类:
嵌入式操作系统,如嵌入式Linux系统、YoctoOS系统操作系统Ubuntu核心
实时操作系统,如VxWorks、AzureRTOS、QNX等
计算中中间件指介于用户应用和操作系统之间的软件层层中还被称为嵌入式框架,并用于方便用户应用快速开发,这些应用分布于各种操作系统与平台上,并拥有更精密互操作性能力AndroidiOS应用框架解决电信需要,Qt解决汽车、航空航天、消费者和工业用户接口需要,ROS操作系统解决机器人自动化需要
指操作系统安装并使用中间件和固件执行嵌入系统基本功能的软件基本说来,本应用解决特定域内的具体问题端程序都独一无二,但操作系统与固件从设备到设备可能都是一样的嵌入式用户应用可分类为以下类型:
a.裸机嵌入式程序
最简单类型嵌入程序自成一体而无操作系统所有其他类型都沿袭此类型为了满足嵌入式软件的需要,软件工程团队还必须从零开始设计并搭建测试框架结果是,我们不能使用现成测试工具或框架
b.嵌入式Linux应用
终端用户应用程序没有任何实时需求并运行自定义嵌入式Linux操作系统通用评价板如RaspberryPi、BeagleBone和Jetson等嵌入式Linux设备实例,这些设备运行于各种嵌入式Linux分布式系统,如Yocto、Ubuntu核心和Windriver培训软件开发还有一些现成好的测试工具可定制并扩展以满足应用专用测试需要,例如LAVA
C.嵌入式RTOS软件
终端用户应用有硬软实时确定性重复行为需求时,即开发并部署在实时操作系统上,如AzureRTOS和QNX实时操作系统应用包括航空交通控制系统、指令控制系统、航空公司预订系统、心律起搏器、多媒体网络和机器人
.嵌入式联网软件
嵌入式系统软件主要涉及从模块向模块传输数据或令两个模块互交嵌入式软件为联网提供特殊类别,因为它需要特殊人才集开发和管理自定义网络栈网络栈有几类,包括以太网栈、Wi-Fi栈和蓝牙栈
e.无头嵌入UI软件
无头用户界面软件没有UI设备,但使用Web服务器实现远程访问无头设备远程访问用户移动设备可能会在家庭自动化等行业中占主导地位。未来可少见电冰箱、炉子和洗机大显示器但多用Wi-Fi设备使用Web应用测试工具可轻松测试
f.嵌入式UI软件
GUI(图形用户界面)应用内嵌入用户界面内嵌微处理器和控制器运行嵌入式OS和RTOS,这些产品隐藏在手机、通信设备、汽车引擎、激光打印机和医疗设备等产品中GUI应用建基于Qt、AzureGUIX、PEG等GUI库是应用实例,通常受强权、内存和性能约束其中一些库还提供测试能力,必须适应应用测试
g.移动应用
移动应用程序,又称apps,是智能手机或平板电脑等移动设备运行的软件应用嵌入式设备复杂性隐藏开发者,以便开发者能畅通互操作性快速应用分类为单嵌入式程序类型实例包括开发droidi操作器和iOS设备,如智能手表、电视机、手机、平板机等测试工具对于这些应用类型比较成熟,例如Appium、eumi
企业使用嵌入式技术的例子
微波炉、电冰箱等使用嵌入式软件调节温度嵌入式系统还用于搭建家庭自动化系统,通过无线和有线网络控制光线、室温、安全系统及娱乐系统
嵌入式系统可见诸成像系统,如MRIS(磁共振成像)、CAT扫描机和PET扫描机、电子听波器、听力医疗装置、注入泵等治疗装置、心律机和血压监控器等诊断装置和ECG监控器
安全系统,如反锁制动系统、电车控制系统和电子稳定控制系统都用嵌入式技术开发完成。汽车制造者通过嵌入式系统实施逐行和逐行电路技术
手机、网络开关和数据路由器等设备使用嵌入式技术高速联网能力也可以使用这一技术开发
为确保安全旅行,铁路将嵌入式技术嵌入信号系统通过管理铁路信号和重铁路交通,嵌入式技术减少误差概率
商业平面嵌入系统的例子有机内娱乐系统、温度控制、速度控制、传感器、飞行管理系统、飞行数据记录器和引擎控制
焦点往往是确定式实时操作和保证云连通性应用,如工厂楼层管理、电机和风机
嵌入式软件测试的目的是验证软件功能性非功能性以及无故障集成硬件嵌入式软件测试过程分五级:
开工软件单元测试
软件单元测试包括测试软件单元判断它是否按预期实现过程分离代码段并验证软件开发阶段的精度单位可以是函数、模块、对象、过程或方法
二叉系统单元测试
要测试,必须开发框架信息软件代码实时操作系统,包括通信细节、机制中断控制点协议通过消息队列发送接收消息开发者下一步会看到系统资源来判断系统能否容纳嵌入式系统执行灰盒测试常用于此进程
3级集成测试
集成测试可进一步划分为两类:软件集成测试和软件/硬件集成测试软件组件与硬件组件并发测试也可以使用此测试分析软件与外围设备交互作用嵌入式测试总是在实战环境进行,像软件开发环境多数测试者发现嵌入式测试至关重要,因为综合测试无法在模拟条件下进行
4级系统集成测试
过程期间,全系统都控制在一个单节点内并使用通信协议选择、操作系统事件和消息组合黑灰盒测试组合常用于此进程
5级系统验证测试
也叫验收测试测试者确保嵌入式系统子系统完全实现分析外部实体能否匹配产品功能需求是主要目标外部实体可以是人或设备或两者兼有黑盒测试经常使用
嵌入式软件测试的目的是验证软件功能性非功能性属性和无故障集成硬件有五级测试嵌入式软件进程
软件单元测试包括测试软件单元判断它是否按预期实现过程分离代码段并验证软件开发阶段的精度单位可以是函数、模块、对象、过程或方法
要测试,必须开发框架信息软件代码实时操作系统,包括通信细节、机制中断控制点协议通过消息队列发送接收消息开发者下一步会看到系统资源来判断系统能否容纳嵌入式系统执行灰盒测试常用于此进程
集成测试可进一步划分为两类:软件集成测试和软件/硬件集成测试软件组件与硬件组件并发测试也可以使用此测试分析软件与外围设备交互作用嵌入式测试总是在实战环境进行,像软件开发环境多数测试者发现嵌入式测试至关重要,因为综合测试无法在模拟条件下进行
过程期间,全系统都控制在一个单节点内控制观察组合
通信协议选择、操作系统事件和消息使用黑灰盒测试组合常用于此进程
也叫验收测试测试者确保嵌入式系统子系统完全实现分析外部实体能否匹配产品功能需求是主要目标外部实体可以是人或设备或两者兼有黑盒测试经常使用
网络、移动、云和桌面应用测试自动化成熟度高,市场提供高度复杂解决方案嵌入式软件测试必须朝此方向演进,这一点越来越清晰。这是因为业界主动转向智能化解决方案,如基于人工或认知智能的解决方案换句话说,嵌入式软件测试和自动化还有很长的路要走,嵌入式测试者的生命仍然困难重重,尽管有远程连通性、模拟器、模拟器、模拟器、docker容器和测试解决方案等新技术。
测试嵌入式软件和系统所面临的挑战
开工需要知识
精通功能知识以及机械、环境、电气和软件触发技术知识势在必行。由于嵌入式软件的独特性,它们没有软件测试相同的学习曲线
二叉需要确定论和重复性
很难复制可重复确定性实时测试嵌入软件,因为多半实时确定性
3级无单通信法
并不存在单通信协议或通道可用与嵌入式设备通信并测试这些设备软件这一事实需要多通信协议和通道的知识和适配性
4级硬件依赖和缺少访问
测试嵌入式软件带来数大技术挑战,因为它严重依赖硬件设备极有可能第一个测试阶段无法提供合格的硬件平台,测试者可能不得不在没有硬件平台的情况下进行测试。测试者被迫安顿模拟器和模拟器,这些模拟器不准确表示真设备的真实行为导致误判系统可用性与性能
5级软件对硬件缺陷
检测嵌入式测试系统缺陷高比司空见惯,因为软件和硬件都测试很难判断缺陷主要在于软件或硬件复杂调试在这种情况下,测试组硬件和软件知识至关重要此外,嵌入式软件对硬件变异效果良好,但往往失灵嵌入式测试大阻塞
6级非复制缺陷
更难复制嵌入式测试缺陷,因为可复制软件硬件事件测试者必须高层次分析所有缺陷除查找缺陷源外,收集复制数据也具有挑战性。
7软件更新限制
安全修复、RTOS升级、内核升级和许多其他升级对嵌入系统是必备的测试活动会因这些变化而变得更加复杂建材生产部署需要额外护理处理
八点八分回归测试
迭代开发生命周期包括开发基于提前发布软件或硬件的修订表示测试者或开发者必须执行前开发测试案例并加测试测试者总是执行回归过程 结束每一条纹程或迭代修改通常中断现有测试,修复总是痛苦的任务,在大多数情况下补充测试必须写入选择哪个部分测试是回归测试中关键挑战
内嵌系统选择正确的软件架构证明可测试性,控制每个组件输入物(可能操纵内部状态)并看到输出物(甚至内部状态),上述挑战大都可用
知识类
确定性复用性
通信
硬件依赖度和缺访问
软件对硬件缺陷
固件更新
回归式
非复制缺陷
开工可测试软件架构
使用常用、稳定成熟OTS中间件或开发内部框架封装硬件、平台和操作系统复杂性这将有助于大大减少测试工程师学习曲线,以防OS、硬件、平台或环境变化
二叉提供可注入测试钩
所选中间件或内部开发中间件必须提供测试钩以方便集成与测试装置和对输入输出提供更多控制
3级抽象设备通信
构造便携式设备通信策略,封装所有通信协议和通道并高度可配置和可扩缩
4级采行模块化和可缩放测试架构
要实现迭代开发周期内更大的可复用性和可持续性,必须有模块化和可扩缩测试架构。
5级模拟测试容器化
可配置和虚拟化测试执行环境将有助于在硬件可用性有限的地方进行首次软件测试在一个迭代开发模型中,容器化将方便部署和软件升级
6级赋能远程分布测试
FOTA使用机件远程升级并拥有远程控制多设备能力将提高敏捷性并显著减少回归与执行时间
7赋能CI/CD集成
连续部署测试将有助于实现自动重复测试执行开发工作流程管理
八点八分使用认知智能
认知智能解决方案将帮助测试者建立自愈合测试并进行改变触发器回归分析
9.Gherkin语法创建测试脚本
Gherkin语法用于测试脚本创建嵌入应用将抽取平台依赖性并允许商业分析师或利害相关者用普通英语验证/接受测试
10号测试自动化
非复制性或间歇性缺陷验证需要多次测试并多次持续较长时间使用模块化框架自动测试将简化自动化和串通片段测试过程
为应对上述挑战和解决方案,嵌入式设备测试过程必须自动化测试通过人工测试前过程自动化可以提高效率并减少时间耗结果是组织提前发布产品并大幅降低软件开发成本,这对于组织成功至关重要。
元端测试自动化框架CyFAST设计用直觉测试管理流解决嵌入式测试自动化挑战多利害相关方将如何实现多设备测试执行自动化,下文信息图显示应用
嵌入式测试将受益于机器人框架最先进特征,CyFAST容器分布式测试执行能力将允许多平台并行执行多目标CyFAST提供嵌入式测试库,同时提供便捷易配置测试钩子,可用于快速开发并整合各类嵌入式软件应用测试关键字库库可使用远程服务器运行机器人框架并隔离运行

由于嵌入式测试难度大,各组织努力以高效、成本效益高和即时方式并充分测试覆盖提供高质量嵌入式软件或嵌入式解决方案嵌入式软件设计成抽象OS、平台、硬件和通信接口,以便有效确定测试自动化,测试可提高测试性测试自动化框架模块性高可扩缩性对几类嵌入应用的分布测试至关重要认知智能和测试环境容器化将大大减少嵌入式软件测试中的回归努力,特别是在迭代开发模型中
Bushan Mahajan高级解决方案架构师Cyient, 拥有丰富的医疗设备设计开发经验开发医疗装置框架时, Bushan已精通最佳实践并避免陷阱Cyfast关键支持技术驱动干扰器实现自动化
Cyient公司(Estd:1991,NSE:CYIENT)是一家领先的全球工程技术解决方案公司设计建设维护伙伴 面向世界领先组织我们利用数字技术、先进分析能力以及我们域知识技术知识解决复杂商务问题
以最适合组织文化需求的方式 与客户结为扩展团队产业焦点包括航空航天防御、保健、电信、铁路运输、半导体、地理空间、工业和能源我们致力于与利益攸关方一起设计明天,并成为一个文化兼容并包、社会负责任和环境上可持续的组织。
详情请访问
m.josiken.com
