APP下载

导航地球站软件接口测试用例设计

2015-09-07杜江刘枫

时间频率学报 2015年4期
关键词:测试用例等价报文

杜江,刘枫

导航地球站软件接口测试用例设计

杜江1,2,3,刘枫1,2

(1.中国科学院 国家授时中心,西安 710600;2.中国科学院 精密导航定位与定时重点实验室,西安 710600;3.中国科学院大学,北京 100049)

以导航地球站软件测试为背景,介绍了导航地球站工作单元结构及软件接口情况,概括了因果分析、等价类划分和边界值分析等3种测试用例设计方法。分析了接口报文包头信息和数据体中控制类信息、状态上报类信息的特点,阐述了各传输模式下测试用例设计方式。最后以某卫星导航地球站的部分接口测试为实例对测试用例设计方法进行了验证。

软件测试;接口测试;测试用例

0 引言

软件测试是软件工程中的重要组成部分,不同工程环境涉及的测试方法和测试理论不同,目前国内外关于软件测试在各行业的应用也作了大量研究和实践。我国神舟十号飞船、嫦娥月球探测、北斗系统[1]等重大航空航天工程中,软件是重要的组成部分。为了保证软件项目在最终系统中正确可靠地运行,软件开发过程中必须充分重视软件的测试,而针对这些测试项目作理论和应用情况总结对以后相关领域研究与实践有较好的指导作用。

在导航地球站中,包含多个组成部分,比如时频工作单元、天线单元、信号处理软件单元等,各个部分又包含复杂的软、硬件,比如监视控制软件、地面发射与接收设备等。导航地球站在运行过程中的数据传输具有时延小、容错率低和稳定性强等特点[1],各工作单元内部或外部之间的大量通信都是通过软件以接口协议实现的,如图1为某卫星导航地球站监视控制软件所在控制管理单元与其他工作单元接口示意图。在该示意图体现的该地球站接口传输过程中,一个普通接口数据包一般包含上百个字节的信息量,而实现该数据包信息传输的软件代码在编码完成后需要经过有效且全面的测试才能保证软件接口如预期那样实现数据的正确和可靠的传输。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等,而代表不同输入情况的测试用例设计则是接口测试的重要环节。

图1 某导航地球站软件接口示意图

文中首先介绍有关软件接口的协议和数据传输的控制方式,概述因果分析、等价类划分和边界值分析等软件测试方法,总结和阐述导航地球站软件接口在各传输方式下的测试用例设计特点和方法,最后以某卫星导航地球站的部分接口测试为实例验证测试用例设计方法。

1 软件接口

被测系统之间的网络通信基于TCP/IP的TCP协议、UDP协议。其中,TCP协议面向连接、可靠但速度和所需开销(时间、资源)受到约束的传输;UDP协议面向非连接、速度快、开销少但可靠性受到限制的传输[2]。该导航地球站对传输速度和响应时间等有较高要求,比如控制管理单元的监视控制软件与外部15个设备或软件存着接口关系,性能指标要求监视控制软件对150个资源工作状态的判定时间小于3s(即轮询一个设备的时间不得超过0.02s),报文处理时间在20ms内完成,因而实际工作中在局域网内采用UDP协议进行接口传输更加合适。

在接口传输协议得以确立的基础上,关于消息如何在接口中进行传输还需要约定一个统一标准,形成系统的接口控制文件。接口控制文件确定目标信息在传输过程中的控制流程和数据内容等,形成如表1所示的接口报文格式。该接口报文格式即软件接口传输时的统一信息形式,包含由协议版本、信源标志、信宿标志、数据类型、数据属性等构成的数据包头部分和由消息内容构成的数据体部分。其中,数据包头描述有关报文传输方式的内容,比如解析过程、反馈机制、存储条件、异常情况等;数据体描述消息的具体内容,包含诸如bit(位,放在字节里)、整型、浮点型、布尔型等类型组成的数据参数,该地球站的数据参数变化范围从10-12~107,长度在1~8字节之间不等。

表1 接口报文格式 byte

该导航地球站的接口控制文件主要制定两大类型的消息内容,一类是接口报文正常传输时的消息内容和针对该内容的报文包头传输控制方式,另一类是接口发生传输活动时所需的信息反馈、异常处理等消息内容。

2 测试用例设计方法

“测试用例”是为某特殊目标而编制的一组测试输入,并补充以执行条件和预期结果。关于软件接口的测试,常用的测试用例设计方法有因果分析法、等价类划分和边界值分析法等[3-4]。其中,因果分析法根据结果来设计原因,突出在结果已知的情况下穷举出所有产生该结果的组合因素,并明确这些因素间的关系。使用因果分析法设计测试用例的好处是当测试输入为多个参数时,一方面可以有效避免设计出一些产生相同结果的测试用例,另一方面该方法考虑因素间的关系,侧重分析关系因素间所有的组合情况[5],相互间存在关系的多个因素共同形成的测试用例可能会产生单个因素得不到的新的运行结果,从而能提高软件测试的充分性。而使用该方法的不足之处在于在设计测试用例前必须事先明确输出结果,这将给一些关于未知结果的测试造成障碍,特别是当关系因素较多时,组合情况考虑的测试用例数量将大大提高[6]。比如对于n个关系参数,即便每个参数只有2个取值,测试用例的数量理论上也将达到2n。

等价类划分和边界值分析主要针对单因素情况,二者相辅相成。等价类划分根据测试需求对测试因素按取值范围进行等价类划分,根据不同情况划分成若干个有效等价类和无效等价类。对于所有的有效数据可以将其划分为若干个有效等价类,无效等价类是指无意义的输入数据构成的集合,测试用例则由有效等价类和无效等价类的代表组成。进行等价类划分的好处是能使得单个参数测试用例取值的数量大大减少,同时还能有效发现某一类错误,而且提高测试的覆盖率。边界值分析建立在等价类划分的基础之上,针对等价类划分法关于边界情况的考虑不足,而系统容易产生异常或错误处往往又在边界,选择边界值作为测试用例常常与等价类划分得到的测试用例互为补充,使用边界值分析必须对所有等价类的每个边界进行测试。等价类划分和边界值分析对于一个参数或一个集合整体的测试用例设计行之有效,但对于参数间存在关系约束的情况,则需要对这些存在关系约束的参数进行范围划分,从而形成新的集合后才能进行用例设计。

在进行导航地球站软件接口测试时,将以上3种方法有效结合起来,充分利用各自的优点进行测试用例设计。

3 接口测试用例

因果分析法中因素间的关系主要概括为互斥关系、独立关系、包含关系、耦合关系和相交关系[7],这里的“因素”可以理解为由一个或多个参数组成的一个集合。正如前面提到的,等价类划分注重因素中参数所在的范围,比如对于连续范围参数n,n1<n<n2,可划分一个该范围内有效等价类和两个范围外无效等价类,对于离散范围参数n∈{n1, n2,...,ni},划定有效等价类{n1, n2,...,ni},无效等价类n∉{n1, n2,...,ni},测试时从每个等价类中选择一个值作为测试用例。边界值分析则对应等价类划分边界的范围,比如参数n的测试用例应该包括 n1, n2,略大于 n2和略小于 n1。由于因果分析法最终还是要转换到单个测试因素上,故下面将以单个因素为中心,结合导航地球站软件接口的特点,充分利用因果分析法中的因果特征和关系特征实现单个因素的等价类划分和边界值分析,进而讨论测试用例取值情况。

导航地球站软件接口众多,各个设备或系统之间的通信大多是双向的,通信内容根据各设备或系统的特点由软件接口控制文件定义,内容格式则由如表1所示的数据包头和数据体两部分组成。各接口的传输报文格式经过统一制定,数据包头部分中各个位置的参数形式和取值范围是一致的,只是在不同传输情况下各个参数具体取值不同;数据体部分的参数是变化的,在不同接口的各种传输情况下各参数类型和取值范围完全不同。在对该地球站软件接口报文测试时,一方面从数据包头和数据体两个角度进行,另一方面在这两个角度下,对软件接口按各个传输类型划分进行测试。结合这两个方面,对各个接口传输情况选择合适的上述测试方法进行测试用例设计。

3.1报文包头测试用例

对表1描述的报文包头测试是系统接口报文测试的首要任务,目的是检验数据报文是否符合传送预期和测试包含数据体的操作方面的信息。报文包头控制整个数据包在接口中的传输过程,比如数据包在传输时的应答、包丢失、包错误、包存储等处理机制,这些处理机制由报文包头的各个标识位的取值决定,一个标识位包含一个或多个参数,对该部分的测试最终还是体现在各个参数的取值上。报文包头的测试在充分考虑软件接口约定的传输机制情况下进行用例设计,主要涉及等价类划分和边界值分析思想。

1)报文包头等价类

报文包头中各标识位所包含参数的用例取值依据其决定的接口传送协议解析过程或反馈过程。目标软件在接收到数据报文包后,首先针对报文包头从前往后进行顺序解析,根据解析情况采取对应的处理措施。而对数据包头测试的方式就是模拟这个解析过程中涉及的所有传输情况,验证数据报文包是否符合传输预期。这里,对表1所示的数据包头形式下的各个标识位进行测试用例考虑时涉及的等价类划分列举如下:

①对于取离散值的标识位参数,比如“版本标识”包含一个参数,取值范围{1 2 3},, ,测试时将该范围内的值划分为有效等价类,范围外的值划为无效等价类,参数值2和4可作为分别从有效等价类和无效等价类中选取的测试用例;对于类似“信源标志”下的“设备编号”参数的连续取值范围,比如(0 000,5 000),则划分该范围内的取值属于有效等价类,范围外的取值属于无效等价类,参数值1000 和6 000可分别作为从有效等价类和无效等价类中选取的测试用例。

②对于“数据长度”标识位,其参数取值代表数据体的长度,当参数的值与数据体实际长度相符时,该值属于有效等价类,否则属于无效等价类,此时的测试用例取值不仅仅以参数范围来确定,还需要考虑客观传输的条件约束。比如某接口长度参数取值范围(1,2000),数据体实际长度1600,则长度参数的测试在完成本身范围验证后,仅仅取1600时才属于符合客观需求的有效等价类,其他值均属于无效等价类。“发生时间”等标识也有类似特性。

③该地球站中,接口控制文件约定的报文包头各个标识位在程序中的执行顺序为从前往后依次进行,一旦执行过程发现标识参数取值为无效等价类,程序就执行中止,转而执行对应的异常处理程序。针对这一特性的测试用例,等价类的划分可以通过结合因果分析的方式来实现,比如“信宿标识”取有效等价类时,前面“版本标识”和“信源标识”也必然取有效等价类,否则“信宿标识”没有意义;当“信宿标识”取无效等价类时,其后的其他标识位则变得没有意义,需发送出的报文包中对应的测试用例只需用默认值填充即可,这就是指在划分的同时需要考虑因果的条件约束。因此,数据报文包头的测试执行时,应该从前往后测试有效等价类的测试用例,从后往前测试无效等价类的测试用例。

2)报文包头边界值

报文包头控制的接口数据在传输时一些边界值情况是软件测试的重点,这些边界的测试能有效补充前述关于等价类划分选取测试用例的不足。对前述关于报文包头涉及的边界情况特性描述如下:

①单个参数取离散值时,比如“工作单元标识”的参数取值范围{1, 2, 3, 4, 5, 6, 7 },选取边界值取1,7和8作为测试用例,连续范围参数如上述“设备编号”的边界值取0,5000和5001作为测试用例,即选取前述提到的略大、略小于边界值和边界值本身作为测试用例,从而检验软件对这些参数的范围定义是否正确。

②对于“数据长度”这类标识,建立在参数取值和数据体实际长度相等的基础上,同时取参数值和调整数据体实际长度,并使二者同时取值在最小为0和最大为有限值时的有效等价类边界,以及调整参数值和实际长度至略大于最大值时作为边界测试用例,以此检验软件能否处理数据体内容为空和软件接口数据负载时的情况。

③另外,对于“包序列”、“发生时间”等标识为代表的测试,除了考虑如“数据长度”标识其负载情况下的边界测试用例,还要考虑在实际传输时,每次传输的开始和结束情况作为边界的测试用例,以便有效检验接口传输的阶段连贯性。

3.2数据体测试用例

导航地球站各工作单元间通过接口报文的数据体部分实现传输控制和状态上报两大类信息。其中,控制信息主要包括系统内功能控制指令、非地面设备报文信息等;状态上报信息包括系统状态信息、系统异常(例如错误告警)信息、传输反馈信息等。

3.2.1控制信息测试用例

1)功能控制指令

功能控制指令的特点主要体现在软件接口所传输的若干个报文参数中,一次功能测试任务受限于设备、线路之间的相互约束关系,使得对应的报文中各个参数间也存在关系约束。在进行该类接口参数测试用例设计时,必须充分考虑参数涉及的关系情况,对各个参数所在字节段按关系进行模块划分,根据划分好的模块各自进行对应的参数测试用例取值。对于一次接口传输任务中因关系不能取值的参数,则需要对该参数用默认值填位。下面以实例1举例描述该类接口测试用例设计情况。

实例1:在如表2所示的某监视控制软件向天线单元发送的数据体长度达72字节的控制指令中,包含着系统总控、变频器1、变频器2、变频器3、模拟器1、模拟器2、模拟器3、功放1、功放2以及天线等设备和单元的控制信息。

表2 控制指令报文组成

在接口发出的包含上述信息的一次控制指令包中,天线伺服、变频器、模拟器和功放之间相互独立,变频器1、变频器2、变频器3之间互斥,变频器内部的各个参数之间相互独立,模拟器和功放情况与变频器相同,总控参数制约着其他所有单元。此时,对于诸如单个参数a∈{0,1}取离散值和b2∈{1147.000,1652.000}取连续值的情况,参数a的有效等价类测试用例取0或1,无效等价类取其他值,参数 b2的有效等价类为(1147.000,1652.000),无效等价类为(0,1147.000),(1652.000,+∞);a不用考虑边界值, b2的边界值为1146.999,1147.000,1652.000,1652.001这4个值。在总控参数a对其他模块的约束关系中,当a取1时,天线伺服和变频器、模拟器、功放中能工作的单元共同构成有效等价类,不能工作的单元构成无效等价类,此时报文内各个参数的用例取值只从有效等价类中选取。当参数a取0时,其后所有工作单元均不工作,在发送的测试报文中,除了参数a之外的其他各个参数的取值从无效等价类中取提前约定的默认值即可。而在变频器、模拟器和功放各个模块内部,比如变频器1内各参数有效时,变频器2和变频器3无效,这样就构成3个集合{变频器1有效,变频器2无效,变频器3无效}、{变频器1无效,变频器2有效,变频器3无效}和{变频器1无效,变频器2无效,变频器3有效}为有效等价类,而除此之外的其他组合如{变频器1有效,变频器2有效,变频器3无效}则为无效等价类,此时模块内参数测试用例的取值建立在该关系基础上。对模拟器和功放的分析类似于以上对变频器的分析。

由以上分析可见,以前面因果分析里的关系约束方式来讨论从集合到个体参数的等价类划分或边界值,进而确定最终测试用例取值的过程是导航地球站软件接口测试的一个特点。

2)非设备报文信息

不同于功能控制指令,非设备报文信息不对应具体的设备或对象,它们仅作为纯数据内容提供给目标进行逻辑演算或其他用途,例如飞行器运行轨道信息、时频参数信息等。通过软件接口传输的该类信息在进行测试用例设计时,各参数取值的范围划分和具体大小主要根据目标公式或系统的逻辑范围划分而确定。

实例2:监视控制软件向工作单元3发送的飞行器轨道预置指令中,包含切比雪夫x分量、y分量、z分量[8]从0~6阶的系数,共18个参数,这些切比雪夫系数参数提供轨道计算公式的具体取值。此时的测试用例取值则需要根据各个参数在公式计算中的预期轨道位置来确定,即通过轨迹结果来反向确定各参数值。比如一阶切比雪夫系数x,y,z这3个分量的取值范围根据轨道位置计算公式确定为从如下组合中取值,(x,y,z)∈{(0.01, 0.02, 0.04),(0.02, 0.01, 0.03),(0.02, 0.01, 0.05),… },则这些组合共同构成的集合形成有效等价类,除此之外的其他组合形成无效等价类。同时,飞行器处于特定位置(比如刚开始飞行、处于最高点、速率最大点时的位置)时的一阶切比雪夫系数x,y,z组合取值构成测试的边界值,比如:(x,y,z)∈{(0.01, 0.02, 0.04),(0.03, 0.06, 0.13),(0.12, 0.11, 0.05)}。

3.2.2状态上报类信息测试用例

1)系统状态上报信息

系统状态上报信息是指各工作单元通过传输接口将自身运行状态即时上报给目标平台,该类报文信息较长,一般一次性传输本单元系统内所有工作状态。在进行测试用例取值时,需要一方面对工作状态情况进行划分,不同情况各自对应一组测试用例,另一方面还要充分考虑接口传输时相邻报文间时延、因果等关系。相比功能控制指令测试,工作状态测试时主要由设备实际运行产生接口报文参数的取值,即通过对设备进行操作和设置来生成测试用例。状态上报类信息具有整体针对性,对于可同时运行和设置的设备,一次上报的接口报文数据包能同时反映多个被测目标的工作状态,产生的测试用例以此检验通过接口的被测对象的状态信息到达目标平台后是否能得到及时而正确的处理。

实例3:在天线单元向监视控制软件发送的状态信息的若干个字节中,也包含系统变频器状态、模拟器状态、功放以及天线状态等信息,不同的是由设备产生的接口信息可以在测试时省去考虑接口传输时参数间的关系约束,因为这些约束在对设备的操作过程中就自动产生。在进行该类型的接口报文测试时,首先要考虑设备刚启动时产生的接口上报信息测试用例,这有助于得到设备在上次运行结束时保持的一些信息可能对于本次运行起初的一些影响情况,同样道理,在设备运行结束时,也要产生对应接口上报信息的测试用例,这两段数据报文信息属于边界值划分的一种。

同时,监视控制软件界面上得到的关于天线的状态信息主要根据天线设备的转动情况进行显示。面对天线可变方位范围(-320°,320°)、俯仰范围(0°,90.000°),在测试天线状态的用例设计过程中,由于天线方位和天线俯仰的实际运行位置是允许0.005°范围误差的,对天线的方位和俯仰运行状态测试可以划分有效等价类范围(-320.005,320.005)和(0,90.005),调试天线运行到这个范围内的其中一个值即为选出的测试用例;同时,天线运行边界是测试的重点,天线的边界变成一个范围而不是某一个值,将天线调试到边界状态,观察上传的参数值有利于测试天线的稳定性能,如判断天线边界是否稳定在方位范围-320.005°~-319.995°和319.995°~320.005°,俯仰范围0°~0.005°和89.995°~90.005°内。

2)系统异常信息

系统异常信息包括设备故障异常、环境异常、运行数据异常等,该类信息的测试主要通过用因果分析里由结果设计原因的方式对应设计测试用例。首先由专家和软件开发人员预先评估和统计系统可能存在的若干故障以及导致这些故障的原因,测试人员根据这些故障调试、配置系统运行需要的测试用例。此时的测试用例并不是某个具体参数或参数集合的取值,而是由一些硬件链路故障、设备损坏或一些异常动作组成,此类测试用例的设计也应该注意遵循对故障类型进行划分、注意故障条件边界、分析故障因素间关系等这些原则。

4 测试用例实现

在运行测试用例前,按照软件测试需求标准,明确测试用例名称、标识、追踪关系、执行综述、前提约束、测试步骤、期望结果与评估标准、终止条件等,建立测试用例统计表,然后在有关专家、软件开发人员等进行严格评审后方能进行用例的执行工作[9]。我们就以上几种情况中选取了以某监视控制软件为对象,由天线单元向监视控制软件发送状态上报信息的一组报文,如图2所示。

图2 天线单元状态上报信息报文

图2所示报文包含87个参数,其中框选范围内的各个数值表示的是变频器设备各模块内的45个参数,长度共56个字节,其测试用例设计情况如表3所示。此外,表3中还包含第3节所述报文包头以及监视控制软件向天线单元发送的某类功能控制指令和某类非设备报文信息的测试用例设计情况。

表3 各类报文参数测试用例设计情况

表3中,接口报文包头的参数个数里有一个值为保留位,“信源标识”系统参数、工作单元参数、设备变化参数3者组合的有效等价类3个,无效等价类8个,边界值12个;功能控制指令和非设备报文信息每个参数取4个边界值,2个无效等价类;状态上报信息包含10组上变频器、下变频器、模拟器的上报状态,这里对于变化范围只有0或1两个取值,边界值个数取1,无效等价类为0。

由于软件接口一次传输一组报文,各接口参数在每次接口传输时所选测试用例的执行效率是实际测试工作中需要注意的问题:①报文包头关于控制类的参数按解析过程选择测试用例,从前往后依次测试有效等价类中选择的值和边界值,从后往前依次测试无效等价类和边界值,根据前后参数存在的逻辑约束关系划分,该过程在有限次数内可以完成,全部测试通过才可进行数据体测试。②功能控制指令类和状态上报类参数根据各功能模块选择测试用例。属于不同模块的参数测试用例取值互不影响,可以在同一次报文传输中同时发送;属于同一模块内的各个参数根据组合情况划分出等价类和边界值后分组进行发送,实际报文发送次数要以在可控范围内为前提。

5 总结

通过介绍导航地球站软件接口特点和关于测试用例设计的因果分析、等价类划分以及边界值分析这3种方法,概括了导航地球站内工作单元接口数据包中各参数类型在几种接口传输情形下结合用例分析方法的取值情况,设计了系统软件接口控制类和状态上报两大类接口信息特点下的测试用例。将该分类原则和选取方法应用到实际传输接口而进行验证,测试结果证明几种接口测试用例设计方法能有效用于导航地球站接口软件测试,使单个接口测试的次数在可控范围内,符合实际需求。

[1]卡普兰.GPS原理与应用[M].寇艳红,译.2版.北京:电子工业出版社,2007:3-7.

[2]谢希仁.计算机网络[M].北京:电子工业出版社,2008:180-220.

[3]赵斌.软件测试技术经典教程[M].上海:科学出版社,2011.

[4]普雷斯曼.软件工程实践者的研究方法[D].郑人杰,译.北京:机械工业出版社,2007:36-46.

[5]COHEN D,DALAL S,FREDMAN ML,et al.TheAETG system:anapproachtotesting basedoncombinatorial design[J].IEEE Transactions.onsoftwareengineering,1997,23(7):437-44.

[6]MYERS G J.TheArtofSoftwareTesting[M].2nded.Boston:Wiley,2004:33-70.

[7]王红园,郭勇飞,姬琪.面向需求覆盖的航天软件测试用例优化方法[J].光学精密工程,2014,22(1):228-234.

[8]刘根友.高精度GPS定位及地壳形变分析若干问题的研究[D].武汉:中国科学院测量与地球物理研究所,2004.

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

Test case design for software interface of GNSS Earth station

DU Jiang1,2,3,LIU Feng1,2
(1.National Time Service Center,ChineseAcademy of Sciences,Xi′an 710600,China;2.Key Laboratory of Precision Navigation and Timing Technology,National Time Service Center,ChineseAcademy of Sciences,Xi′an 710600,China;3.University of ChineseAcademy of Sciences,Beijing 100049,China)

With a view to the software test,the structure and interface of GNSS earth station are introduced and three kinds of test case design methods including causal analysis,equivalence partition and boundary analysis are generalized.The characteristics of interface message including head information,control information and statement reports are analyzed,and the test case design methods for various transmission modes are expounded.The test case design methods have been verified through the test for a part of the interfaces of a navigation station.

software test;interface test;test case

TN965

A

1674-0637(2015)04-0235-08

10.13875/j.issn.1674-0637.2015-04-0235-08

2015-03-25

中国科学院“西部之光”人才培养计划资助项目(中国科学院人字〔2014〕91号);国家自然科学基金资助项目(11073022)

杜江,男,硕士,主要从事星导航系统软件测试研究。

猜你喜欢

测试用例等价报文
基于J1939 协议多包报文的时序研究及应用
等价转化
基于SmartUnit的安全通信系统单元测试用例自动生成
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
基于混合遗传算法的回归测试用例集最小化研究
n次自然数幂和的一个等价无穷大
ATS与列车通信报文分析
收敛的非线性迭代数列xn+1=g(xn)的等价数列
基于依赖结构的测试用例优先级技术