浅议嵌入式软件测试

article/2025/9/14 14:59:08

近年来,随着嵌入式系统的功能和复杂性不断增加,其开发时间和成本也随之不断上升。对于安全关键领域的嵌入式系统和软件来说,其稳定性和可靠性往往需要通过大量的测试和验证来保证。

01.一般软件测试vs嵌入式软件测试

嵌入式软件测试针对嵌入式软件进行,建立在一般软件测试的基础之上,大多数软件的测试方法都可以直接或间接用于嵌入式软件的测试。但由于嵌入式系统专用性强、实时性要求高,嵌入式软件测试与一般软件测试也存在一些不同之处。

▲表1 一般软件测试与嵌入式软件测试的区别

02.嵌入式软件测试要求

根据测试阶段和重点的不同,嵌入式软件测试需要考虑多个层面的因素:

第一层:不同测试阶段的测试需求。嵌入式软件测试通常分为单元测试、软件集成测试、系统测试及验收维护四个阶段。对不同的测试阶段的测试需求分析往往是不同的,采取的测试方法及进行测试的程度也不相同。

测试通常需要满足“需求可追溯”:不同的测试阶段会验证不同的设计/编码是否符合需求,以确保该软件能够实现预期的功能,并且仅构建了所需的功能。需求可分为低层级需求和高层级需求,各行各业存在的功能安全标准即为满足高层级需求的存在,如汽车领域的ISO 26262,测试人员通常会以满足本领域高层级需求的功能安全标准来分析测试需求,并通过简单测试来解释和测试所有未发现的测试案例。

嵌入式软件的开发通常遵循V模型,下图所示的V模型结合了“测试左移”:在未开始编码的需求规格分析阶段,测试人员便可同步开始系统测试及验收维护的测试需求分析。

 ▲图1 嵌入式软件开发过程的V模型

单元测试阶段作为完整测试过程的最初阶段,需要确保各个组件都能够正常工作。在此过程中,测试人员需要对较低级别的需求进行定义,以确保每个功能和功能集都能被正常使用并为系统其余部分提供合适的接口。

第二层:待测软件的特性。不同的嵌入式软件应用背景不同,所要求的特性也不相同,测试的侧重点自然也不同。航空、航天领域的嵌入式软件一般需要具备很强的实时性——飞行控制系统必须快速调整飞机姿态以确保飞行安全性。对航空、航天领域的嵌入式软件进行测试时,需要格外关注输入、运算、输出的时效性。

第三层:测试需求的优先级。根据所测的功能点进行分析、分解,从而得出哪些功能点为主要功能点、哪些为次要功能点。测试需求优先级别的确定,需要测试人员清晰了解核心的功能、特性及测试流程,有利于测试工作有的放矢地展开。

第四层:测试需求的覆盖程度。如果一个软件的需求已经与测试需求存在一对一或一对多的对应关系,可以说测试需求已经覆盖了该功能点,测试需求的覆盖率达到100%,并不意味着测试需求的覆盖程度高。测试需求的覆盖率只计算了显性因素,而隐性因素并未被计算在内。因此,测试人员需要不断了解系统的隐性需求,对测试需求进行补充和优化。

第五层:不同的测试环境。由于执行故障注入、覆盖率分析等测试步骤需要在不同的测试环境中进行,在进行测试需求分析时就需要考虑到相应的搭建、数据准备及接口等变量。

第六层:测试工具的选择。根据测试的要求和测试阶段,选择成熟且可靠的测试工具也非常重要。

03.嵌入式软件测试工具

(一)静态测试工具

单元测试要求在功能和模块级别设置输入和输出参数并进行检查,以确保输入和输出之间的连接正确,并遵循覆盖逻辑。因此,了解功能和模块级别的接口很重要。静态分析工具可以显示这些接口,并连接不同级别的逻辑。

静态分析通过执行源代码分析,在不实际执行代码的情况下模拟系统的运行。静态分析在代码编写后可以立即进行,以帮助开发人员最大程度提高代码的清晰度、可维护性和可测试性。静态分析工具的主要功能包括:

1.代码复杂性分析:了解代码不必要的复杂之处,以便工程师执行合适的简化措施。

2.程序流程分析:绘制程序执行的设计-审查流程图,以确保程序按预期流程执行。

3.预见性运行时错误检测:通过尽可能多的可执行路径对代码执行进行建模,查找潜在的错误,例如数组边界溢出和除零错误。

4.编码标准合规性检测:通常选择编码标准(如C/C++的MISRA代码合规标准)来确保网络与功能安全。编码标准也有助于确保代码遵循最佳编程实践。

(二)全数字仿真平台

在系统级测试阶段,全数字仿真测试平台是目前常用的测试工具之一。 

全数字仿真是用数学模型在数字计算机上进行实验和研究的过程。嵌入式软件与支持其运行的硬件有很强的耦合性,而硬件测试环境与软件测试环境相比,灵活性差,对故障产生过程的记录很困难。全数字仿真是综合解决嵌入式软件测试中由环境限制带来的测试困难的有效方案,可通过全数字仿真测试平台进行实现。

全数字仿真测试平台指嵌入式软件在通用计算机环境(相对真实目标系统)中运行测试。利用全数字实时仿真平台,测试人员可以在软件配置项级开展并发式的功能测试及快速的回归测试,加快问题定位和排查故障的效率。

全数字仿真测试通常在宿主机上进行,被包括在基于宿主机的嵌入式软件测试中。基于宿主机的嵌入式软件测试指完全利用宿主机平台上丰富的资源和工具(包括全数字仿真测试平台)来对嵌入式软件进行测试,不需要依赖目标系统的支持,可大大提高被测软件执行的可视性和可控性,以较低的代价、较高的效率发现和定位软件设计中的错误。

此外,在完全脱离目标系统的情况下完成对嵌入式软件的测试工作,可以尽早发现软件设计中的错误,避免了等到软硬件集成时才能寻找和定位问题而存在的风险,减少了软件的测试成本及开发风险。

SkyEye,中文全称天目全数字实时仿真软件,是仿真嵌入式目标系统的虚拟平台,能够完全仿真目标系统中的CPU(Central Processing Unit,中央处理器)、寄存器、内存、外设接口,如图所示:

 ▲图2 SkyEye功能图

开发、测试人员在SkyEye上运行被测软件,可以获得在真实目标系统上运行这些软件的相同效果。在SkyEye上进行软件测试与在真实目标系统上相比,具有以下2个优点:

1.支持检查点分析。通过插入检查点,SkyEye 能够保存软件运行状态,支持运行状态的回放分析,便于软件问题的定位;

2.支持访问目标系统状态。在真实硬件上,测试人员很难对寄存器、状态寄存器进行跟踪和控制,但通过SkyEye,目标系统就像一个白盒,可以清楚看到内部的状态,这对于软硬件问题的排查十分有帮助。

此外,SkyEye还可进行外围设备仿真建模,主要指对目标系统外围器件、接口的建模仿真,包含各种器件(如内存、寄存器、外部定时器、Flash等)和各种标准的通信接口(如RS422、RS232、CAN总线、1553B、1394B、FC总线)。

综上,嵌入式软件进行测试需要测试人员对其与一般软件测试的不同点和特性具备明确认知,并通过需求确认来建立完整的测试流程。只要结合需求、采用正确的测试工具来进行严格测试,便可更高效地开发高质量嵌入式软件。


http://chatgpt.dhexx.cn/article/X8n2hfRm.shtml

相关文章

嵌入式程序设计思路

项目做的多了,深切地体会到架构的重要性。 俗话说,没有好的架构,移植和复用是件很痛苦的事,只能重复的造轮子。特别是嵌入式的代码,如果应用层中间穿插着驱动层的代码,维护起来是一件相当痛苦的事情。 这…

嵌入式应用软件架构设计

要做到嵌入式应用的代码逻辑清晰,且避免重复的造轮子,没有好的应用架构怎么行。 如果没有好的架构,移植将会是一件很痛苦的事情。 如果没有好的架构,复用是最大的难题,没法更大限度的复用原有的代码。 如果没有好的架…

嵌入式软件设计(1)--概述

嵌入式软件的定义及特点 嵌入式系统的定义 嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可裁剪、功能、可靠性、功耗严格要求的专用计算机系统。 其中要说明的几个点是 1. 嵌入式系统是专用系统,而不是通用系统,其往往…

嵌入式软件设计必看书籍

提高C语言编程能力 以上4本书籍可以提高C语言编程能力,深入理解C语言指针用法,深入理解C语言标准。 提高软件架构设计能力 以上2本书籍掌握以下知识: 1、软件设计原则。 2、软件设计模式。 3、软件设计构架。 4、软件设计思维。 提升对RTO…

嵌入式软件架构的设计

嵌入式软件架构的设计 大多数嵌入式程序员学习编程,都是从开发板的附带例程开始。之后工作也会继续参考那些例程,很多编程习惯、方式也会受之影响。 其实开发板式的编程方式与工作中实际需求的并不完全一致。 开发板的通常卖给初学者,注重…

嵌入式软件设计(stm32快速上手)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 有很多的培训机构在培训嵌入式的时候,一上来会讲很多的理论知识。其实这个时候要是能通过实操帮助学员快速入门、快速上手、快速看到效果,或许这才是最重要的。 1、安装mdk软件 类…

举例说明嵌入式框架该如何分层

关注、星标公众号,直达精彩内容 素材来源:https://blog.csdn.net/weixin_46185705/article/details/122536374 整理:技术让梦想更伟大 | 李肖遥 前言 为了能够使得产品得到更好的开发速度与以后更好的迭代和移植,框架分层是很有必…

嵌入式软件架构设计

如何设计一个好的软件架构,如何提高软件的扩展性,移植性,复用性和可读性? 很多做嵌入式开发的朋友经常会遇到这种情况:一个项目软件设计完成了,客户提出了一些新的功能需求。这时侯如果客户新需求不多&…

《嵌入式软件设计方法》--设计原则

设计原则(SOLID) 使用各个原则的首字母组成了一个单词:SOLID。 SRP:Single Responsibility Principle,单一职责原则;OCP:Open Closed Principle,开闭原则;LSP:Liskov Substitution Principle,…

嵌入式软件设计之设计模式

文章目录 前言1.设计模式之适配器模式2.设计模式之单例模式3.设计模式之命令模式4.设计模式之门面模式 前言 在嵌入式软件设计过程中,也会用到一些设计模式,所以说设计模式并不是面向对象语言的专利,下面我通过查资料以及自己的思考总结的几…

2、【已解决】Oracle错误问题(ORA-03113)

在执行一条sql时出现了如下问题: 处理方案网上找了一下日志,说是备份日志满了的原因; 通过以下方法看了下错误日志信息: 1、export TIME_STYLE%Y-%m-%d %H:%M:%S #格式化文件日期,便于查找错误文件 2、sqlplus &qu…

搭建ADG过程中复制报错 RMAN-03009 ORA-03113

搭建ADG过程中复制报错 RMAN-03009 ORA-03113 猜测主备之间网络路由过多导致。。。 开启mrp进程报错 发现数据文件是主库ASM的路径,备库是单机的 switch database to copy; 报错RMAN-6571 report schema;switch database to copy; select name from v$datafile;s…

oracle 启动报错03113,oracle数据库无法启动,总报ora-03113错误

虚机上装的oracle,由于系统突然宕机,导致了以下问题: 问题: 1、监听无法启动: $ lsnrctl start LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 22-NOV-2018 15:27:11 Copyright (c) 1991, 2013, Oracle. Al…

oracle 启动报错03113,Oracle 入门之Oracle启动报错“ORA-03113”

Oracle 入门之Oracle启动报错“ORA-03113” [日期:2010-09-25] 来源:Linux社区 作者:naruto6006 [字体:大 中 小] 早上连接Oracle,发现oracle无法正常工作,无法shutdown immediate方式关闭,shutdown abort方…

linux oracle 03113,Oracle数据库关闭时出现ORA-03113错误

Oracle数据库关闭时,出现ORA-03113错误: SQL> shutdown immediate ORA-03113: end-of-file on communication channel Process ID: 3437 Session ID: 125 Serial number: 5 SQL> startup ORA-24324: service handle not initialized ORA-01041: in…

oracle startup open ora 03113,oracle宕机,startup报错ora03113

一、故障情况 应用无法连接数据库,检查oracle发现已经宕机。 startup 后报错 ORA-03113: end-of-file on communication channel 二、查找原因 查看alter日志 tail -500 /oracle/database/oracle/diag/rdbms/udb/udb1/trace/alter_UDB1.log Unable to create archiv…

ora03113通信通道的文件结尾 会话id 149 序列号 3

ORA-19815: 警告: db_recovery_file_dest_size 字节 已使用100.00%, 尚有 0 字节可用。” 是db_recovery_file_dest_size也叫归档日志空间不足导致 解决方法 第一步,将空间设置大点,另一个就是将多余的文件删除掉即可,那么我们就将这两个办法…

ORA-03113:通信通道的文件结尾

转自--------------http://blog.csdn.net/zwk626542417/article/details/39667999 由来 今天跟往常一样,登陆PL/SQL,确登陆失败,出现一个错误“ORA-01034”和“ORA-27101”如图: 然后就就通过命令提示符去登陆Oracle,去…

ORA-03113:通信通道的文件结尾-完美解决方案

今天发现系统登录和查询数据特别慢,orcl进程占用内存也特别高。打开程序调试用,存储过程调用时报错【ORA-03113:通信通道的文件结尾】 解决方案: oracle 文档中对这个错误这样解释: ORA-03113 错误就是说连接到数据…

ORA-03113: 通信通道的文件结尾

一、报错及错误原因 启动oracle数据库事报错:ORA-03113: 通信通道的文件结尾,报错内容如下图 出现问题后,去查看告警日志文件(D:\app\diag\rdbms\cjyorcl\cjyorcl\trace\alert_cjyorcl.log),日志报错内容如…