嵌入式软件测试方法(精)
- 格式:docx
- 大小:16.65 KB
- 文档页数:7
嵌入式软件测试规范篇一:嵌入式软件测试和验证嵌入式软件测试和验证一、软件测试1.1定义1993 年 IEEE 对软件测试给出了一个综合的定义:①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;②是对①中所述方法的研究。
它指出软件工程是一种层次化的技术。
科学的测试是贯穿整个产品生命周期中的测试。
要突破原来对测试的理解,着眼于整个软件生存期,特别是着眼于编码以前各开发阶段的测试工作,以保证软件的质量。
1.2软件测试的真正目标软件测试的真正目标是寻找bug。
即使是在交付时间表很紧的情况下,采取一个步骤来想一下从哪里开始着手,这样,测试才会是最有效率的。
但即使在时间非常充足的情况下,也不可能测试出每一个bug,所以必须将测试划分优先级,划分的根据是基于产品目前的状态(新的,修改的或者只是纯漏洞)和对客户的可能影响而进行的最诚实的评估。
避免采用知道软件可以处理的测试数据和操作;测试人员的任务是在测试中扩大软件的边界。
在设计自动化测试时,也要避免“踩灭”失败条件的误区。
测试人员的任务不是创造大量的总是可以干净的成功运行的测试。
测试人员需要去寻找和理解故障条件。
不要浪费时间去想软件产品中是否存在bug。
它肯定有bug,并且不可能全部找出它们。
测试的目的是指望测试人员找出那些最有影响的bug。
必须要做的是,要从消极的角度考虑这些问题。
1.3软件测试的意义1.发现软件错误;2.有效定义和实现软件成分由低层到高层的组装过程;3.验证软件是否满足任务书和系统定义文档所规定的技术要求;4.为软件质量模型的建立提供依据;即软件测试包括“找错”、“组装”、“确认”和“评估”四个层次的作用。
1.4软件测试方法从不同的角度来看,可以将软件测试的方法分为以下几类:根据是否需要运行被测软件的角度,软件测试分为静态测试方法和动态测试方法。
根据在动态测试中是否需要了解被测软件代码结构的角度,又分为白盒测试和黑盒测试。
一、前言随着我国物联网、智能家居等领域的快速发展,嵌入式系统在各个行业中的应用越来越广泛。
嵌入式软件作为嵌入式系统的核心组成部分,其质量直接影响到整个系统的性能和稳定性。
为了提高嵌入式软件的开发和测试水平,本次实训主要针对嵌入式软件的测试方法、流程和工具进行了深入学习和实践。
二、实训目标1. 掌握嵌入式软件测试的基本概念和原则;2. 熟悉嵌入式软件测试的方法和流程;3. 掌握常用的嵌入式软件测试工具;4. 提高嵌入式软件测试的实际操作能力。
三、实训内容1. 嵌入式软件测试概述嵌入式软件测试是指对嵌入式软件进行的一系列验证活动,以确保软件满足设计要求、性能指标和安全规范。
嵌入式软件测试主要包括以下几个方面:(1)功能测试:验证软件是否按照需求规格说明正确实现各项功能;(2)性能测试:评估软件在特定条件下的运行效率;(3)稳定性测试:验证软件在长时间运行过程中是否稳定可靠;(4)安全性测试:检查软件在运行过程中是否存在安全漏洞;(5)兼容性测试:验证软件在不同硬件、操作系统和软件环境下的兼容性。
2. 嵌入式软件测试方法嵌入式软件测试方法主要包括以下几种:(1)黑盒测试:测试人员不需要了解软件内部实现,只关注软件的输入输出;(2)白盒测试:测试人员需要了解软件内部实现,从代码层面进行测试;(3)灰盒测试:测试人员对软件内部实现有一定了解,但不需要深入到代码层面;(4)静态测试:对软件代码进行审查,找出潜在的错误;(5)动态测试:对软件进行实际运行测试,找出运行过程中的问题。
3. 嵌入式软件测试流程嵌入式软件测试流程主要包括以下步骤:(1)需求分析:明确软件需求,确定测试目标;(2)测试计划:制定测试计划,包括测试方法、测试工具、测试人员等;(3)测试用例设计:根据需求分析,设计测试用例;(4)测试执行:按照测试用例进行测试,记录测试结果;(5)缺陷管理:对测试过程中发现的缺陷进行跟踪和管理;(6)测试报告:编写测试报告,总结测试结果。
嵌入式软件测试报告1.引言2.测试目标和范围测试目标是确保嵌入式软件的各个模块在提供正确的功能和性能的同时,具有高度的可靠性和稳定性。
测试范围包括嵌入式软件的所有模块和子系统。
3.测试方法本次测试采用了黑盒测试、白盒测试和灰盒测试的组合方法。
-黑盒测试:对系统功能进行测试,通过输入有效和无效的数据,验证输出是否符合预期。
主要包括界面测试、功能测试和用户场景测试。
-白盒测试:对系统的内部结构和算法进行测试,以揭示隐藏的错误和异常情况。
主要包括语句覆盖、分支覆盖和路径覆盖等测试方法。
-灰盒测试:将黑盒测试和白盒测试相结合,同时验证系统功能和内部结构。
通过用户输入和系统输出,检查系统的状态和中间数据。
4.测试环境测试环境包括嵌入式开发板、经典测试工具、仿真器和调试器等。
具体的测试环境如下:-嵌入式开发板:使用ABC公司的嵌入式开发板作为测试目标。
- 经典测试工具:包括XUnit、Junit等测试工具。
-仿真器和调试器:使用ABC公司提供的仿真器和调试器来调试和分析嵌入式软件。
5.测试计划和进度测试计划是根据项目需求和测试目标制定的,其中包括测试任务、测试资源、测试用例、测试时间和测试评估方法等。
测试进度按照计划进行,包括准备测试环境、设计测试用例、执行测试、分析测试结果和编写测试报告等。
6.测试结果测试结果根据不同测试方法和技术进行分析和评估。
具体的测试结果如下:-黑盒测试:通过有效和无效的数据输入测试了系统的各个功能模块。
测试结果显示系统的功能和界面都正常工作,没有发现明显的错误和异常。
-白盒测试:采用了语句覆盖、分支覆盖和路径覆盖等方法对系统内部结构进行了详细测试。
测试结果显示系统的内部结构和算法都正常工作,覆盖率达到了预期要求。
-灰盒测试:结合了黑盒测试和白盒测试的优点,综合验证了系统的功能和内部结构。
测试结果显示系统在不同输入下都正常工作,没有发现明显的错误和异常。
7.测试总结和建议根据测试结果和评估分析,可以得出以下结论:-系统的功能和界面都正常工作,满足了项目需求和用户期望。
Tessy —嵌入式软件单元测试/ 集成测试工具Tessy是一款专门针对嵌入式软件进行单元/ 集成测试的工具。
它可以对C/C++ 代码进行单元、集成测试,可以自动化搭建测试环境、执行测试、评估测试结果并生成测试报告,其多样化的测试用例导入生成方式和与测试需求关联的特色,使Tessy 在测试组织和测试管理上也发挥了良好的作用。
目前Tessy广泛应用在汽车电子主流客户中。
主要特点在V 模型开发中,Tessy 主要应用在单元测试和集成测试阶段。
单元测试通过运行代码检测出函数中错误,比如算法错误、接口问题等;集成测试则在单元测试的基础上验证单元之间接口的正确性。
基于越早发现bug 开发成本越低的原则,在进行代码功能验证的过程中,按照V 流程右半部分先完成单元测试再进行集成测试的测试顺序更为有效。
另外,Tessy 也可以满足各类标准(如ISO26262、IEC61508、EN 50128/50129 等)对测试的需求,比如Tessy 可以满足ISO26262 中各等级对单元/ 集成测试的要求,当然Tessy 本身也通过了TUV 的认证,证明该软件是安全可靠的,可以在安全相关的软件研发过程中使用。
主要功能•自动生成测试环境、一键执行及评估结果Tessy 可以自动生成驱动程序、桩函数,帮助测试人员提高单元测试效率。
Tessy 支持一键执行测试,并自动对测试结果进行评估,可生成多种形式的报告。
•便捷的测试用例设计方式除软件界面手动设计测试用例外,Tessy 还支持导入导出多种格式的测试用例。
另外,Tessy 集成了分类树编辑器CTE,有效利用等价类划分以及边界值法,辅助设计出更全面更有效的测试用例。
•高度自动化的回归测试Tessy 通过分析源文件自动识别函数及相关接口,在接口发生变更时,支持通过简便的操作进行测试数据复用,保证便捷有效的回归测试。
•测试覆盖度分析Tessy 提供分支覆盖、修正条件/ 判定覆盖MC/DC(Modified Codition/Decision Coverage)、多条件覆盖MCC(Multiple ConditionCoverage) 等多种覆盖度分析。
嵌入式软件测试策略在嵌入式领域目标系统的应用系统日趋复杂,而由于竞争要求产品快速上市,开发技术日新月异,同时硬件发展的日益稳定,而软件故障却日益突出,软件的重要性逐渐引起人们的重视,越来越多的人认识到嵌入式系统的测试势在必行。
提到嵌入式软件测试,首先要简单介绍一些软件工程的一些观点,现在,被普遍接受的软件的定义是:软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括程序(program)、相关数据(data)及其说明文档(document)。
其中程序是按照事先设计的功能和性能要求执行的指令序列;数据是是程序能正常操纵信息的数据结构;文档是与程序开发维护和使用有关的各种图文资料。
对于一般商用软件的测试,嵌入式软件测试有其自身的特点和测试困难。
由于嵌入式系统的自身特点,如实时性(Real-timing),内存不丰富,I / O 通道少,开发工具昂贵,并且与硬件紧密相关CPU种类繁多,等等。
嵌入式软件的开发和测试也就与一般商用软件的开发和测试策略有了很大的不同,可以说嵌入式软件是最难测试的一种软件。
嵌入式软件测试使用有效的测试策略是唯一的出路,它可以使开发的效率最大化,避免目标系统的瓶颈,使用在线仿真器节省昂贵的目标资源。
自从出现高级语言,开发环境与最终运行环境通常都是存在差异的,嵌入式系统更是如此。
开发环境被认为是主机平台,软件运行环境为目标平台。
相应的测试为host-target测试或cross-testing。
讨论嵌入式软件测试首先就会遇到一个问题:为什么不把所有测试都放在目标上进行呢?因为若所有测试都放在目标平台上有很多不利的因素:1)测试软件,可能会造成与开发者争夺时间的瓶颈,避免它只有提供更多的目标环境。
2)目标环境可能还不可行。
3)比起主机平台环境,目标环境通常是不精密的和不方便的。
4)提供给开发者的目标环境和联合开发环境通常是很昂贵的。
5)开发和测试工作可能会妨碍目标环境已存在持续的应用从经济上和开发效率上考虑,软件开发周期中尽可能大的比例在主机系统环境中进行,其中包括测试。
1/ 8 1、引言 随着经济的发展和科技的进步 ,信息技术的发展使人类进入数字时代 ,而伴随 着计算机技术发展起来的嵌入式技术得到了巨大的发展 ,改变了人们的日常。随 着对嵌入式产品对各方面的要求越来越高 ,对嵌入式产品的性能有着决定性影响 的嵌入式软件的测试显得尤为重要。
嵌入式的目的是保证软件满足需求规格说明 ,与非嵌入式软件的测试目的是 一样的。系统失效是系统没有满足 —个或多个正式需求规范中所要求的需求项 , 嵌入式软件有其特殊的失效判定准则。
而且嵌入式软件对可靠性的要求比较高。安全性的缺陷往往会导致灾难性 的后果 ,即使是非安全性系统 ,由于大批量生产也会导致严重的经济损失。这就要 求对嵌入式系统 ,包括嵌入式软件、嵌入式硬件进行严格的测试、确认和验证。
一般来说 ,软件测试有 7 个基本阶段 ,即单元或模块测试、集成测试、外部、 回归测试、统测试、验收测试、安装测试。嵌入式软件测试在 4 个阶段上进行 , 即模块测试、集成测试、系统测试、硬件 /软件集成测试。前 3 个阶段适用于任 何软件的测试 ,硬件/ 软件集成测试阶段是嵌入式软件所特有的 ,目的是验证嵌入 式软件与其所控制的硬件设备能否正确地交互。
2、嵌入式软件测试环境
嵌入式软件测试的测试环境主要有两种 : 1 目标环境测试 : 基于目标的测试测试全面有效 ,但是消耗较多的经费和时 间。
2 宿主环境测试 : 基于宿主的测试代价较小 ,但是有些对环境要求高的功能和 性能宿主机
无法模拟 ,测试无法实现。
目前的趋势是把更多的测试转移到宿主环境中进行 ,把宿主环境测试无法实 现的复杂和独特功能放在目标环境测试。我们的重点是基于宿主环境的测试 ,基 于目标环境的测试作为补充。
文档 在两个环境中可以出现不同的软件缺陷 ,重要的是目标环境和宿主环境的测 试内容有所选择。在宿主环境中 ,可以进行逻辑或界面的测试、以及与硬件无关 的测试。在模拟或宿主环境中的测试消耗时间通常相对较少 ,用调试工具可以更 快地完成调试和测试任务。而与定时问题有关的、中断测试、硬件接口测试只 能在目标环境中进行。在软件测试周期中 ,基于目标的测2/ 8
试是在较晚的 “硬件/ 软 件集成测试 ”阶段开始的 ,如果不更早地在模拟环境中进行白盒测试 ,而是等到 “硬 件/ 软件集成测试 ”阶段进行全部的白盒测试 ,将耗费更多的财力和人力。
3、白盒测试与
白盒测试或基本代码的测试主要任务为检查程序的内部设计 ,或者在开发环 境中进行硬件仿真 ,一般不必在目标硬件上进行。根据源代码的组织结构查找软 件缺陷 ,要求测试人员对软件的结构和功能有详细深入的了解。白盒测试与代码 覆盖率密切相关 ,可以在测试中计算出代码的覆盖率 ,保证测试的充分性。嵌入式 软件测试通常要求有较高的代码覆盖率 ,要选择最重要的代码进行白盒测试。
黑盒测试在某些情况下也称为功能测试。这类测试方法根据软件的用途和 外部特征查找软件缺陷 ,不需要了解程序的内部结构。黑盒测试不依赖代码 ,从实 际使用的角度进行测试。黑盒测试与需求紧密相关 ,
需求规格说明的质量会直接影响测试的结果。在进行嵌入式软件黑盒测试 时,要把系统的预期用途作为重要依据 ,根据需求中对负载、定时、性能的要求 ,判 断软件是否满足这些需求规范。
4、内容
嵌入式软件测试的内容主要为 :软件代码测试、编程规范标准符合性测试、 代码编码规范符合性测试、开发维护文档规范符合性测试、用户文档测试。
其中软件测试服务范围包括:系统级测试、应用测试、中间件测试、BSP及 驱动程序测试、嵌入式硬件设计测试。
文档 其中 ,按照嵌入式软件有无将嵌入式系统分为两大类 :无操作系统的嵌入式软 件、有操作系统的嵌入式软件。
4.1 无操作系统的嵌入式软件
无操作系统的嵌入式软件主要包括 C语言代码、汇编语言代码、Apa代码
C 语言模式软件测试 :硬件设备及宏定义 (编译阶段处理、 API 函数测试、模 块初始化 3/ 8
(包括系统初始化、中间功能件测试、功能模块测试、中断处理测试、 任务调度测试、区域功
能测试、总体功能测试。
汇编语言模式软件测试 :硬件设备及其他宏定义 (编译阶段处理、模块初始化 (包括系统初始化、中间功能件测试、功能模块测试、中断处理测试、区域功能 测试、总体功能测试。
4.2 基于操作系统的嵌入式软件 基于操作系统的嵌入式软件主要包括应用软件测试、系统
软件测试、整体 性能测试。
应用软件测试 :模块初始化 (包括系统初始化、中间功能件测试、功能模块测 试、区域功能测试、总体功能测试。
系统软件测试:硬件设备及其他宏定义(编译阶段处理、API函数测试、模块 初始化 (包括系统初始化、中间功能件测试、功能模块测试、中断处理测试、区 域功能测试、总体功
能测试、标准符合性测试。
其中 ,操作系统的标准符合性测试的标准依据主要包括 :
IEEE POSIX 1003.1-1990(VSX4-PSE 文档 IEEE Std POSIX 1003.1c-1995Threads (pthreads extension (VSTH-PSEIEEE POSIX 1003.13-1998Profile 52(VSPSE52
VSPSE52:2003-A conformance test suite for IEEE Std 1003.13-2003Profile PSE52 整体性能测试 :基于操作系统之上的嵌入式系统整体软件测试 ,主要采用应用 软件测试 ,着重分析性能、内存分配、代码覆盖率、软件执行流程 ,并采用仿真 器、逻辑分析仪的硬件测试工具进行整体性能的测试。
5、嵌入式软件的测试工具
用于辅助嵌入式软件测试的工具很多 ,下面对几类比较有用的有关嵌入式软 件的测试工具加以介绍和分析。
5.1 内存分析工具 4/ 8
在嵌入式系统中 ,内存约束通常是有限的。内存分析工具用来处理在动态内 存分配中存在的缺陷。当动态内存被错误地分配后 ,通常难以再现 ,可能导致的失 效难以追踪 ,使用内存分析工具可以避免这类缺陷进入功能测试阶段。目前有两 类内存分析工具 ——软件和硬件的。基于软件的内存分析工具可能会对代码的 性能造成很大影响 ,从而严重影响实时操作 ;基于硬件的内存分析工具价格昂贵 ,而 且只能在工具所限定的运行环境中使用。
5.2 性能分析工具
在嵌入式系统中 ,程序的性能通常是非常重要的。经常会有这样的要求 ,在特 定时间内处理一个中断 ,或生成具有特定定时要求的一帧。开发人面临的问题是 决定应该对哪一部分代码进行优化来改进性能 ,常常会花大量的时间去优化那些 对性能没有任何影响的代码。性能分析工具会提供有关的数据 ,说明执行时间是 如何消耗的 ,是什么时候消耗的 ,以及每个例程所用的时间。根据这些数据 ,确定哪 些例程消耗部分执行时间 ,从而可以决定如何优化软件 ,获得更好的时间性能。对 于大多数应文档
用来说 ,大部分执行时间用在相对少量的代码上 ,费时的代码估计占所有软件 总量的 5%-20%。性能分析工具不仅能指出哪些例程花费时间 ,而且与调试工具联 合使用可以引导开发人
员查看需要优化的特定函数 ,性能分析工具还可以引导开 发人员发现在系统调用中存在的错误以及程序结构上的缺陷。
5.3GUI测试工具
很多嵌入式应用带有某种形式的图形用户界面进行交互 ,有些系统性能测试 足根掘用户输入响应时间进行的。 GUI 测试工具可以作为脚本工具有开发环境中 运行测试用例 ,其功能包括对操作的记录和回放、抓取屏幕显示供以后分析和比 较、设置和管理测试过程。很多嵌入式设备没有 GUI ,但常常可以对嵌入式设备 进行插装来运行GUI测试脚本,虽然这种方式可能要求对被测代码进行更改,但是 节省了功能测试和回归测试的时间。
5.4 覆盖分析工具
在进行白盒测试时 ,可以使用代码覆盖分析工具追踪哪些代码被执行过。分 析过程可以通过插装来完成 ,插装可以是在测试环境中嵌入硬件 ,也可以是在可执 行代码中加入软件 ,也可以是二者相结合。测试人员对结果数据加以总结 ,确定哪 些代码被执行过 ,哪些代码被巡漏了。覆盖分析工具一般会提供有关功能覆盖、 分支覆盖、条件覆盖的信息。对于嵌入式软件来说 ,代码覆盖分析工具可能侵入 代码的执行 ,影 5/ 8
响实时代码的运行过程。基于硬件的代码覆盖分析工具的侵入程度要小一 些,但是价格一般比较昂贵 ,而且限制被测代码的数量。
6、国内外的嵌入式测试服务
嵌入式软件测试要提供嵌入式软件及硬件的端到端测试服务 ,横跨工具 /设 备、实时操作系统(RTOS开发平台和编程语言。服务内容包括嵌入式软件和硬 件的测试策略和代码级测试 ,以及覆盖分析 ,功能测试,压力测试,代码审查,调试和 代码维护。测试服务覆盖从设备驱动 ,中间件/协议和系统及应用水平测试。主要 文档
解决如通信、汽车电子行业、消费电子及多媒体、工业自动化、网络、存 储、计算机硬件和外设的嵌入式系统测试。
6.1 国外嵌入式软件测试服务
国外的嵌入式软件测试服务有 :黑盒测试、功能测试、单元测试、回归测 试、配置测试、压力测试、 UI 测试、安装测试、模块化测试、集成测试、手动 黑盒测试、负载测试、验收测试。
提供给用户的测试结果主要为 :测试规划、测试用例、验收测试用例、用户 手册、缺陷报告、改进建议等。
6.2 国内嵌入式软件测试服务
国内的嵌入式软件测试服务还处于起步阶段 ,并且主要限于嵌入式应用软 件、工业控制软件 ,测试的主要内容包括 :
1 功能测试
依据ISO/IEC9126-1质量模型,验证系统是否满足明确和隐含要求功能。功能 测试覆盖实用性、准确性、互操作性、互用性、保密安全性、功能依从性。
2 可靠性测试
依据ISO/IEC9126-1质量模型,测试在指定条件使用时,软件产品维持规定的 性能级别的能力。可靠性测试覆盖成熟性、容错性、易恢复性等质量特性。
3 性能测试