嵌入式软件配置项测试技术及策略

2018-05-31 01:52魏雪卉
火控雷达技术 2018年1期
关键词:嵌入式软件功能测试测试用例

魏雪卉

(航空工业雷华电子技术研究所 江苏 无锡 214063)

0 引言

随着嵌入式软件的规模越来越大,嵌入式软件也需要进行系统化测试。由于嵌入式系统开发过程中,软件和硬件始终相互依赖,其开发模式、调试方法都有所不同,因此嵌入式软件不仅遵循软件测试的基本原则,也有其自己的特点[1]。

配置项测试就是其中必不可少的环节。配置项测试可以有效的发现配置项范围内存在的缺陷和问题,同时验证配置项能否实现需求规格说明中的功能、性能、质量属性、约束及安全性等技术要求,检验配置项接口的正确性和互操作性。

配置项测试采用黑盒测试。软件黑盒测试要在软件的接口处进行,利用软件的用途和外部特征查找软件缺陷,对于某些代码段可用白盒测试进行补充[1]。

1 配置项测试技术

嵌入式软件配置项测试时,要把系统预期用途作为重要依据,判断软件是否满足需求规格说明。

以下简单介绍嵌入式软件配置项测试的技术要求和测试类别,并针对不同的测试类型,分析几种基本测试技术。

1.1 配置项测试的技术要求

配置项测试一般要符合以下技术要求[2]:

1)应覆盖需求规格说明所有功能、性能等特性;

2)配置项的每个特性应至少被一个正常测试用例和一个被认可的异常测试用例所覆盖;

3)测试用例的输入应至少包括有效等价类值、无效等价类值和边界数据值;

4)应测试人机交互界面提供的操作和显示界面,包括用非常规操作、误操作、快速操作测试界面的可靠性;

5)应测试运行条件在边界状态和异常状态下,或在人为设定的状态下,配置项的功能和性能;

6)应测试配置项的安全性和数据的安全保密性;

7)应测试配置项的所有外部输入、输出接口及其格式(包括和硬件之间的接口),及要人为设定接口异常值和边界值;

8)应测试配置项的全部存储量、输入/输出通道的吞吐能力和处理时间余量;

9)应对配置项的功能、性能进行强度测试;

10)应测试用于提高配置项的安全性和可靠性的方案,如结构、算法、容错、冗余、中断处理等;

11)对安全性关键的配置项,应对其进行安全性分析,明确每一个危险状态和导致危险的可能原因,并对此进行针对性的测试;

12)对有恢复或重置功能需求的配置项,应测试其恢复或重置功能和平均恢复时间,并且对每一类导致恢复或重置的情况进行测试。

1.2 配置项测试基本技术及适用的测试类别

1.2.1 等价类划分

等价类划分是选择有限子集“代表”所有可能的输入全集,将被测试软件的输入和输出分成许多区域,对于一个区中的任何值,软件的行为是等价的。

设计正常测试用例和异常测试用例时,即激励类型为有效等价类和无效等价类,即使用等价类划分。

其中无效类比有效类更能够发现问题,故无效类应尽量做到全覆盖。

图1 弱等价类划分

图1中,有效等价类取值2个,无效等价类取值1个,取值个数过少,取值范围狭窄,所以测试用例设计非常不充分。

图2 强一般等价类划分

图2中,有效等价类取值4个,无效等价类取值2个,有效类和无效类设置依然不能满足测试充分性,无效类验证不充分。

图3 健壮强等价类划分

图3中,有效等价类和无效等价类做到全覆盖,测试能得到充分验证。

适用的测试类别:

1)功能测试(FN):又称正确性测试,检查软件的功能是否符合需求规格说明[1]。其中包括:

正常功能测试(FN-N):正常条件或正常数据的情况下,对软件功能进行的测试,输入为有效等价类。

异常功能测试(FN-A):验证系统自身异常处理的能力,输入为无效等价类。

2)性能测试(PF):对软件需求规格说明文档中明确或隐含的的性能需求逐项输入有效等价类,验证其性能满足要求;

3)接口测试(IF):输入无效等价类,验证当输入错误接口数据时,软件处理是否出错;

4)安全性、可靠性测试(SAF):设置无效等价类来验证,一般有看门狗检测、数据发送异常、设置其它配置项故障测试报错机制、通信异常检测等手段;

1.2.2 边界值分析

边界区域是错误高发区,如存在边界值,边界值测试是必须的。

应将边界周围的点覆盖,以达到良好的健壮性。

图4 一般边界值分析

图4中,边界点覆盖不充分,缺少“顶点”处的边界值设置。

图5 健壮边界值分析

图5中,边界点覆盖非常充分,每个“顶点”处边界周围也都有覆盖,健壮性好。

适用的测试类别:

1)边界测试(BD):使软件处于边界或端点情况下,观测软件运行是否出错;

2)接口测试(IF):针对软件需求规格说明中外部接口的极限值,利用边界值分析,验证接口接收极限数据时,软件处理是否出错。

1.2.3 正交设计法

在配置项测试中,当输入条件为两个或更多时,且存在组合配对关系时,正交设计法是设计测试用例时必须考虑的方法之一。

正交设计法是基于配对组合的算法,选择满足覆盖要求的配对,列出正交设计表,直观的看到该处理所涉及的所有组合条件,但要筛除效率低下的组合。

适用的测试类别:

功能测试(FN):当输入条件为两个或更多时,且一个功能改变会影响其它功能时,利用正交设计法设置输入不同且大量组合数据,验证功能在多种条件下都能正确实现。

1.2.4 状态转换法

嵌入式软件系统全部或部分表现出基于状态的行为[1],状态转换通过建立导致转换事件的方法来设计测试用例,测试状态之间连续的转换,保证所有转换至少遍历一次,所有的事件至少触发一次。

适用的测试类别:

1)功能测试(FN):存在多个工作状态及子模式时,可以采取这种方法来测试各个工作状态转换是否正确;

2)强度测试(IS):在软件多个工作状态或子模式间任意连续转换,将所有事件不规律进行触发。

1.2.5 随机测试法

在所有输入数据中随机选取输入,可在超长时间范围内测试,这种方能发现长而复杂的操作链产生的问题,而通过有计划的测试发现这些问题很困难。

如测试长时间状态转换是否正常,可以采用随机测试法中经典方法——“猴”测试,进行杂乱无章的操作。如长时间随机输入错误数据,验证软件的可靠性和安全性。

适用的测试类别:

强度测试(IS):验证软件可以正常运行到何种程度,不间断运行软件、大量多次发送错误信息、快速杂乱的输入数据等手段来实现。

1.2.6 插桩测试法

软件插桩是通过修改软件代码,来手动设置发送特定数据、观测特定变量或数组、观测具体数据变化趋势,但插桩语句不能对配置项功能性能造成影响。

适用的测试类别:

1)接口测试(IF):软件接收区插桩设置极限值或错误数据,测试该配置项软件在异常情况下,功能、时序是否正确;

2)功能测试(FN):测试一组数据的变化趋势、具体数值时,利用插桩数组对观测数据进行大量连续的记录;

3)性能测试(PN):测试某个功能的处理性能时,在处理的起点和终点插桩跟踪语句,读出跟踪的总时长即为性能;

4)余量测试(RC):插桩占存储余量20%~30%的数组,达到存储边界的软件运行是否正常;

5)可靠性测试:插桩设置死循环等超时语句,观测软件看门狗能否起效。插桩设置发送多个异常数据,观测软件的容错性。

2 嵌入式软件配置项测试常见问题及测试策略

由于嵌入式软件的特殊性,在测试过程中不仅要融入普通的测试技术,还需要辅助以仪器和特殊策略才能更有效的对功能、性能、接口、安全性进行验证。

以下将嵌入式软件在实际测试中出现的代表性问题及测试策略进行深入分析。

2.1 文档与代码不一致问题

文档类问题主要表现为由于代码员脱离需求规格说明的约束,会出现缺少或增加功能点、功能处理流程改变、接口传送格式描述不清晰、接口数据极限值精确度等信息不清晰。

在进入动态测试前,必须对软件需求规格说明的功能、性能、外部接口、安全性等描述进行文档审查:

1)检查功能点描述是否完整准确,处理过程是否清晰,有明确的输入和输出作为黑盒测试的测试依据;

2)辅助白盒测试方法,利用代码审查,检查逻辑流程图和代码实现是否一致;

3)性能、安全性指标是否清晰;

4)外部接口的数据格式、个数、长度、值域、精确度等接口必要信息是否完整清晰。

通过文档审查,基本可以达到软件配置项测试的入口条件。

2.2 功能、性能类问题

功能性能类问题主要表现为功能实现和需求不符、性能不达标。

2.2.1 信号类、离散量的功能测试策略

此类功能测试首先应了解各个信号对应的硬件管脚,再将硬件输出的信号波形用示波器读出,来验证功能、性能的正确性,有时还需要信号源输入脉冲信号作为激发信号:

1)测试硬件的收发控制功能:采用信号源输入脉冲信号,用示波器观测输出电平波形与信号源输入是否一致,验证收发控制是否正确;

2)测试时分控制功能:采用信号源输入脉冲信号,利用示波器观测时分通道高低电平来判断选通情况,一般选通通道呈现高电平;

3)测试某硬件板信号控制功能:输入单端脉冲信号,用示波器观测输出信号与输入信波形号是否一致,一致则信号控制功能正常。

可利用示波器辅助的功能测试一般有:

1)示波器观测复位信号产生的复位高电平,验证复位功能正确性;

2)示波器测量单片机离散量对应管脚显示高低电平,验证离散量置位的正确性;

3)软件插桩设置该配置项软件运行超时,利用示波器观测超时后是否有复位高电平,验证看门狗能否起效,满足安全性要求;

4)在处理流程起始插桩设置高低电平变化,示波器观测对应管脚上的信号高低电平变化,计算高低电平间隔时间即可验证性能;

5)切换不同工作状态,示波器连接硬件管脚测量脉冲宽度,可间接验证该工作状态下的采样率、工作频率是否正确。

2.2.2 串口通信、线性调频信号的功能测试策略

此类功能测试需借助频谱仪观测输出频率、带宽、波形等信息:

1)测试模块是否工作正常,可通过频谱仪测试该模块输出频率是否正确;

2)用频谱仪测试输出连续波频率,验证模块产生连续波信号功能是否正常;

3)用频谱仪测试输出带宽,验证模块产生线性调频信号功能是否正常;

4)设置正确串口通信命令和错误通信命令,用频谱仪观测模块的信号频率,验证串口通信是否正常;

5)不同工作状态下,频谱仪测试工作频率是否设置正确;

6)通过串口多次大量发送错误指令,利用频谱仪监控输出波形是否稳定,可以直观验证该模块的健壮性。

2.2.3 变量值、时序类、趋势类、处理时间类的测试策略

当需要观测软件的具体变量数据、处理时序、数据趋势、数据幅度等信息,可借助该嵌入式软件专用的调试工具实现:

1)测试软件控制信息、状态信息及波形,在调试工具中直接输入变量地址,查看该地址中控制参数、波形数值是否正确;

2)需要观测一组数据的变化趋势时,可软件插桩对数据进行连续记录,利用调试工具对记录数据画图,选择需要观测的数据长度、数据步进后,可清晰看到数据变化趋势、变化范围,验证了该功能是否达到预期效果;

3)测试软件处理时序是否正确,软件插桩跟踪语句在处理流程的起始处,调试工具即可画出各个处理模块的调用时序图;

4)测试软件处理的吞吐时间、响应时间等性能时,将关心的处理流程用插桩跟踪语句,调试工具可测量处理时长,即可分析处理时间性能能否达标。

2.3 异常值、边界值未作保护类问题

这类测试需要插桩输入无效类输入和边界类数据,用调试工具监控变量数值、时序图、运行情况,验证该软件是否进行了异常保护,防止了时序混乱和死机等严重错误的发生。

1)设置单个或多个条件参数组合后达到临界值时,观测软件能否正常运行;

2)软件插桩让该模块重要参数发生错误,观测软件的健壮性,是否出现死机或功能失效;

3)接口测试中着重观测异常值、边界值是否做了保护,插桩使软件接收边界值或异常值,观测软件能否正常运行。

2.4 安全性、可靠性问题

很多嵌入式软件在正常的情况下比较稳定,但将软件置于“恶劣环境”后还能否正常运行、无功能失效,是软件安全性和可靠性的关注重点:

1)对于存在多个工作状态的嵌入式软件,可人工快速、无序、5~8小时的不间断切换和操作;

2)软件插桩组合设置重要参数为异常/边界值后,再次进行无序快速的操作,观测软件能否正常运行;

3)软件插桩占存储空间20%~30%(看具体要求,但至少要20%)的数组,程序加载后,控制嵌入式软件进入最饱和状态,观测软件功能运行是否正常;

4)控制嵌入式软件进入最饱和工作状态,读出每个工作状态下的处理时间,和预计处理时间相比,观测能否留出20%~30%的时间余量;

5)设置配置项硬件故障,观测该配置项能否向系统上报故障信息。

4 结束语

本文深入分析了在嵌入式软件配置项测试过程中,在熟练运用基本测试技术的基础上,根据软件运行环境的特点,采用了对应的调试工具和丰富的辅助手段,制定有效的测试策略,设计充足的正常测试用例、边界和异常测试用例、强度测试用例、安全性测试用例,就可达到良好的配置项测试效果,大幅度提高发现软件缺陷的概率,对以后测试工作者有一定的指导意义。

参考文献:

[1] 康一梅,张永革,李志军,胡江,武伟.嵌入式软件测试[M].北京:机械工业出版社,2008.

[2] 朱少民.软件测试方法和技术[M].北京:清华大学出版社,2005.

[3] GJB/Z141-2004[S].军用软件测试指南.中国人民解放军总装备部,2004.

[4] 石磊,林晓欲.KTFlow在嵌入式软件测试过程管理中的应用[J].微处理机,2012(6):44-50.

[5] 王象刚.软件测试过程管理工具的设计与实现[J].SOFTWARE.2014.35(2) :96-97.

猜你喜欢
嵌入式软件功能测试测试用例
某内花键等速传动轴八功能测试夹具设计
基于LDA模型的测试用例复用方法*
嵌入式软件测试数据传输稳定性检测方式分析
浅析嵌入式软件技术的现状与发展动向
软件测试中的测试用例及复用研究
嵌入式软件在计算机软件开发过程中的运用
测试工时受限的测试策略研究