论文网
首页 理科毕业电气毕业正文

遥测软件测试用例复用技术研究及应用

  • 投稿张政
  • 更新时间2015-09-11
  • 阅读量727次
  • 评分4
  • 47
  • 0

马贤颖,陈青,司倩然

(北京跟踪与通信技术研究所,北京100094)

摘要:针对传统遥测软件测试模式出现的测试周期长、效率低等问题,对遥测软件共性功能及其测试方法进行了深入分析,建立了基于测试用例复用的软件测试平台。该平台实现了测试数据管理、测试过程管理、可复用测试用例管理、测试文档生成和数据显示与存储等功能,大大减少了设计测试用例、准备测试数据、编制测试文档的时间,极大地提高了测试效率。实际应用表明,该平台设计先进,通用性好,测试效率高,具有一定的工程应用价值。

教育期刊网 http://www.jyqkw.com
关键词 :遥测;测试用例复用;软件测试;测试平台

中图分类号:TN911?34;TP391.9 文献标识码:A 文章编号:1004?373X(2015)16?0029?05

收稿日期:2015?02?12

0 引言

软件测试是软件工程中的重要环节,是保证软件质量的一种有效手段,目的是在软件投入运行之前,尽可能多地发现并排除软件中隐藏的错误。遥测数据作为航天测控系统测控数据中十分重要的一类数据,在评测过程中必须要模拟生成正常的遥测数据和异常的遥测数据,以对被测软件进行功能、性能、接口等方面的测试。传统“一型一套”的测试模式因测试周期长、效率低等原因,已经无法满足日益繁重的测试任务需求。在软件测试过程中,设计测试用例和准备测试数据的工作量占很大的比重,如果在这两方面有突破将能够大大减少测试工作量。

随着技术的不断进步,测试用例复用和自动化测试引起了人们的极大关注。所谓测试用例复用,就是对一个软件的已执行的测试用例,将其不同程度地应用于该软件新的测试中或其他软件的测试中。在遥测软件测试过程中,虽然数据种类繁多,处理方法也复杂多样,但遥测软件却存在共性功能和类似的测试方法,通过对这些功能及其测试方法进行分析,能够提取出可复用测试用例。通过复用,能够避免大量重复性劳动,缩短测试周期,提高效率。另外,测试逐步向高效、通用的方向发展,自动化测试越来越受到重视。文献[1?3]提出的自动化测试系统具有系列化、通用化、标准化等特征,满足了多样化测试需求。文献[4]介绍了用于构建系统测试与评估平台的KD_JMASE。文献[5]介绍了自动化测试工具及其选择方法。但是,这些都不能够满足航天测控系统遥测软件测试的特定需求。目前测控系统还没有集测试过程管理、测试数据管理、可复用测试用例管理、测试文档生成于一体的测试平台。在这种背景下,迫切需要建立一个基于测试用例复用的软件测试仿真平台。

本文对遥测软件共性功能及其测试模式进行了深入分析,给出了可复用测试用例的要素及其设计方法,并建立了基于测试用例复用的软件测试平台,该平台实现了测试过程管理、测试数据管理、可复用测试用例管理、测试文档生成和数据显示与存储等功能,大大减少了编写测试用例、准备测试数据、编制测试文档的时间,极大提高了测试效率。

1 遥测软件共性功能分析

遥测软件一般具有以下4 个共性功能,分别是:遥测数据包格式验证功能、遥测数据处理功能、遥测数据记录功能、遥测数据结果转发功能。

(1)遥测数据格式验证功能:主要是验证遥测数据的格式是否正确,包括数据包格式验证、时间码验证等。尽管遥测数据在数据格式、参数处理方法等方面有较大差异,但其帧结构都是由帧数、长度固定的数据帧组成。以副帧为64、波道长度为128 B的某遥测数据为例,帧结构如图1所示。遥测参数分快变量和慢变量两类:快变量是指每帧的特定波道都只对应1个参数,例如Z1~Z4,Z109;慢变量指不同副帧的特定波道对应不同的参数,例如Z69,Z127~Z128。不管是快变量或慢变量,都有可能包含多个字节。

(2)遥测数据处理功能:主要包括各类遥测处理方法,例如位控时间指令处理、模拟量时间指令处理功能、数字时间指令处理功能、工程参数处理功能等。

(3)遥测数据统计与记盘功能:统计功能负责对各类遥测原码帧进行错帧率与丢帧率统计,对遥测处理结果帧等进行数据统计。记盘功能负责存储各类遥测原码帧和遥测处理结果帧,所存储的遥测原码帧和遥测处理结果帧将分别用于数据查询。

(4)遥测数据处理结果转发功能:将遥测处理结果根据接口约定进行组帧,向其他软件配置项进行结果分发。

2 遥测软件测试模式

遥测软件测试的主要任务是验证遥测软件是否能够满足遥测软件需求规格说明要求的功能需求、性能指标(一般包含数据处理时间要求)、接口需求、安全性需求、可靠性需求和余量需求等。通过对遥测软件的测试内容、测试方法进行分析,发现遥测软件的测试模式可以分为数据发送模式、数据接收模式和人工检查模式共3种:

(1)数据发送模式:通常情况是,数据仿真软件按照接口协议和格式要求模拟遥测软件的其他接口向遥测软件发送各类遥测原码、控制命令等接口数据,遥测软件对接收到的数据进行分析和处理,并根据需求规格说明和接口文件的约定,在界面上显示结果信息或向其他软件配置项发送结果信息。即数据仿真软件给遥测软件发送遥测数据原码帧、控制命令帧等,遥测软件接收到后,对各类参数进行分析和处理,并将处理结果向其他软件配置项分发。

(2)数据接收模式:通常情况是,数据仿真软件捕获遥测软件发出的数据帧,并检查捕获到的数据帧的内容、格式、帧数、帧间隔等是否与接口文件中规定的一致。

(3)人工检查模式:该模式主要通过测试人员的人工检查和操作实施测试,有时也需要数据仿真软件的配合。遥测软件测试时,有一些测试需要测试人员进行手动操作。例如,安装性测试要检查遥测软件的安装过程和卸载过程是否符合要求,必须通过测试人员实际进行安装、卸载操作之后才能验证安装性是否满足需求。又如,人机交互界面测试不仅要检查软件操作与被测软件需求规格说明及用户手册是否一致,还要检查软件对错误命令、错误操作或非法输入数据是否具有容错能力,该测试也必须由测试人员通过界面输入一些正常值、异常值,才能够验证人机交互界面的正确性及其容错能力。

3 可复用测试用例设计

3.1 可复用测试用例要素

测试用例的输入及操作、期望结果与评估标准、前提和约束条件、设计方法是测试用例不可缺少的几个要素。但对于可复用的测试用例而言,这还远远不够。通过对可复用测试用例的适合性进行分析,为了方便地将一个测试用例复用到其他项目,可以对可复用测试用例的以下要素进行详细描述。这些要素从各个不同角度反映了测试用例的特性,为实现可复用测试用例的标准化提供了模板:

(1)测试用例名称:名称应清晰、简洁,并能够准确表达测试用例的功能;

(2)ID:测试用例的ID 在测试用例复用数据库中是惟一的;

(3)版本号:测试用例的版本号,每个测试用例应按照统一的规则设定一个版本号;

(4)测试需求:该测试用例要验证的测试需求,应对测试需求进行详细描述,例如,功能、性能等;

(5)测试阶段:被测软件所处的测试阶段,可以是单元测试、集成测试、配置项测试、系统测试等,测试阶段应可以定制;

(6)测试方法:黑盒测试中的等价类划分、猜错法、因果图、边界值分析法,白盒测试中的语句覆盖、条件覆盖、分支覆盖等;

(7)测试类型:有功能测试、接口测试、性能测试、人机交互界面测试、安全测试、强度测试、安装测试、余量测试等,可选择多项;

(8)应用领域:说明被测软件所属的领域;

(9)系统类型:描述被测软件的系统架构,例如嵌入式软件、非嵌入式软件、B/S、C/S等;

(10)软件编码:描述被测软件的编码语言,例如C,C#等;

(11)测试环境:描述该测试用例执行所必需的软硬件环境;

(12)前提条件:测试用例执行之前必须满足的约束条件,或称之为约束条件;

(13)测试输入:对输入参数值的抽象描述或参数化描述,不能设置为具体的数据值;

(14)操作步骤:说明执行该测试用例所需的一系列相关联的操作;

(15)期望结果:说明测试用例(步骤)执行后的期望结果,每一操作步骤都可以有自己的期望结果;

(16)评估标准:描述评判测试用例(步骤)执行结果是否正确的准则,例如:参数数值的精度(小数点后保留6位小数);

(17)附件:对测试用例附加信息的描述,附件的文件格式不限,能够方便测试人员深入理解测试用例即可,可以是文本、图像、模型、与测试用例有关的一些文档等。

3.2 可复用测试用例设计

通过对遥测软件的共性功能和测试模式进行分析,可梳理遥测软件可复用的测试用例,并按照可复用测试用例的要素对每个用例进行测试用例设计。在软件测试时,为了达到测试用例可操作、可复现的目的,一般都要求对测试用例进行详细设计,例如,每一操作步骤的输入数据、操作和参数结果值等信息都要详细描述。这样的测试用例在同一软件进行回归测试时可能会复用到,但在其他情况下进行复用是很困难的。因此,设计可复用测试用例时,要对测试用例进行通用化处理,排除与特定项目、特定参数相关的具体信息,以提高测试用例的可复用度。

下面以遥测数据处理功能中位控时间指令处理子功能为例,来说明可复用测试用例的设计方法。位控时间指令处理子功能主要是完成位控时间指令的解算。位控时间指令处理方法是:处理时通过位运算从信息帧中取出对应比特位,每当这一位发生跳变(1≥0跳变或0→1跳变)并且跳变后状态保持连续多次不变时认为指令出现。位控指令处理方法采用“M 判N”原则,即当跳变前连续M 个采样点中有N1 点满足跳变前状态,跳变后连续M 个采样点中有N2 点满足跳变后状态,则判断指令出现(N1,N2≤M,M,N1,N2 均可配置),采用第一个跳变点时间作为指令值。

该功能可设计以下可复用测试用例。

(1)位控时间指令处理正常功能测试(跳变前后点数都满足)。本用例测试位控时间指令处理正常功能,即在有N1 点满足跳变前状态、有N2 点满足跳变后状态时,遥测软件能否根据“M 判N”原则判出位控时间指令,并采用第一个跳变点时间作为指令值。测试该功能时,由数据仿真软件模拟发送满足要求的遥测数据,即有N1点满足跳变前状态,有N2点满足跳变后状态;由结果捕获软件接收遥测软件发出的位控时间指令处理结果帧,查看位控时间指令处理结果是否与第一个跳变点时间一致。

(2)位控时间指令处理边界测试(跳变前后点数都满足)。本用例测试位控时间指令处理正常功能,即在有N1+1点满足跳变前状态、有N2+1点满足跳变后状态时,遥测软件能否根据“M 判N”原则判出位控时间指令,并采用第一个跳变点时间作为指令值。测试该功能时,由数据仿真软件模拟发送满足要求的遥测数据,即有N1+1点满足跳变前状态,有N2+1点满足跳变后状态;由结果捕获软件接收遥测软件发出的位控时间指令处理结果帧,查看位控时间指令处理结果是否与第一个跳变点时间一致。

(3)位控时间指令处理异常测试(不满足跳变前点数)。本用例测试位控时间指令处理时,如果不满足跳变前状态点数,是否不能解算出该指令。测试该功能时,由数据仿真软件模拟发送不满足跳变前状态点数的遥测数据,即有N1-1点满足跳变前状态,有N2点满足跳变后状态;由结果捕获软件接收遥测软件发出的位控时间指令处理结果帧,查看是否未解算出该指令。

(4)位控时间指令处理异常测试(不满足跳变后点数)。本用例测试位控时间指令处理时,如果不满足跳变后状态点数,是否不能解算出该指令。测试该功能时,由数据仿真软件模拟发送不满足跳变后状态点数的遥测数据,即有N1点满足跳变前状态,有N2-1点满足跳变后状态;由结果捕获软件接收遥测软件发出的位控时间指令处理结果帧,查看是否未解算出该指令。

4 基于测试用例复用的遥测软件测试平台设计

4.1 设计目标

该平台的设计目标主要包括以下4个方面:

(1)测试用例可复用。遥测软件自动化测试仿真平台能够建立通用的遥测软件测试用例集,在对不同遥测软件进行测试用例设计时能够重复使用一些测试用例。在进行测试用例设计时,可从测试用例集中选取全部或部分用例,针对各遥测软件的不同项目特征进行修改、完善。

(2)测试数据可扩展。该平台具有强大的数据仿真功能,当接口传输协议、接口数据格式或遥测原码数据内容等发生改变时,只需简单修改配置信息即可完成新的测试数据的仿真。

(3)辅助各阶段测试设计。界面直观、易操作,测试人员能够根据软件界面的工作向导,按照测试流程完成各阶段的设计工作。

(4)辅助生成测试文档。能够帮助测试人员辅助生成各阶段测试文档,如软件测试计划、软件测试说明、软件测试记录、软件测试报告等。

4.2 体系结构

基于测试用例复用的遥测软件测试平台采用4 层体系结构(如图2所示),分别为:

(1)信息层。信息层提供遥测软件测试平台运行所必须的数据库信息、配置信息等,为了达到测试用例可复用、测试数据可扩展的目的,系统各模块之间的数据交互主要通过访问数据库、配置文件、数据文件等来完成。

(2)数据访问层。数据访问层提供系统管理常用的公共函数,例如数据库访问、文档生成、配置文件读取等。

(3)业务逻辑层。业务逻辑层主要提供共享内存创建功能、消息队列创建及管理功能、进程创建及管理功能等。

(4)表现层。表现层主要为遥测软件测试人员提供直观的、图形化的人机交互界面,例如测试用例集的编辑界面、测试数据的配置界面、各阶段的辅助设计界面等。

4.3 功能设计

根据以上分析,将该系统分为4 个模块:可复用测试用例生成模块、测试数据仿真模块、测试过程管理模块和数据显示与存储模块,功能结构如图3所示。

4.3.1 可复用测试用例生成模块

可复用测试用例生成模块主要是从可复用测试用例集中提取项目所需的测试用例,包括以下功能:

(1)提供可复用测试用例集。测试平台依据软件共性功能,设计可复用测试用例,提供可复用测试用例集。为方便测试用例最终为某特定项目所用,可复用测试用例应提供有关该用例更详细的描述,例如被测软件名称、该软件所属领域、用例要测试哪个功能(功能详细描述)、该用例是对正常功能或异常功能进行测试等。

(2)可复用测试用例提取功能。从可复用测试用例集根据不同检索条件(例如软件名称、适用领域、用例名称、测试类型等)提取所需测试用例,在此基础上进行修改得到某项目的所有测试用例。测试用例采用统一化描述:测试用例名称、标识、测试用例综述、用例初始化条件、前提和约束条件、设计方法(有效类/无效类/边界值)、输入及操作、期望结果与评估标准、实测结果、测试用例终止条件、执行状态(完整执行/未执行/部分执行)、执行结果(通过/未通过)、测试人员、测试时间等。

4.3.2 测试数据仿真模块

测试数据仿真模块负责遥测原码、控制命令等数据的仿真以及结果数据的捕获等,主要包括以下功能:

(1)数据收发属性设置功能。接口传输协议可配置,支持TCP,UDP、串口等协议;接口数据格式可配置,支持PDXP,HDLC 等不同接口;数据区中数据格式、内容可配置,参数类型和参数值可灵活配置;此外,还能够设置收发数据的地址、端口号、发送间隔、发送次数等。

(2)数据接收功能。能够捕获遥测软件发出的数据帧,并对数据进行解析,通过与期望结果进行比对验证遥测参数处理结果是否正确。测试时根据接口文件进行参数配置,按照某数据约定的格式将其对应字段的数值解算出来,并在测试平台界面上显示出来。例如:某遥测参数A 在某结果帧(数据编号151)中偏移量为20,占用4 B,数据类型为Float,可进行如下配置:<Name:A;Pos:20;Type:Float;Data:151>。测试数据仿真模块接收到数据编号为151的数据后,会自动对该字段数据进行解析,并将解算结果显示出来。

(3)数据发送功能:支持String,Byte,Char,Int16,UInt16,Int32,UInt32,Int64,UInt64,单精度浮点数,双精度浮点数,循环变量,各类日期时间表示法等数据格式设置,能够满足遥测软件测试所需的仿真数据要求。该平台主要提供2种数据发送方式:一是读取特定格式的遥测数据文件,例如txt文件、16进制文件等,将该文件中的数据按照设置的发送频率发送出去。二是根据配置文件的配置信息,通过实时计算得出下一帧的数据内容并将其发送。另外,该平台还针对遥测软件测试常见的异常模式,例如长帧、短帧、重帧、丢帧、数据非法等情况,增加了异常模式仿真功能。

4.3.3 测试过程管理模块

测试过程管理模块负责整个测试过程的辅助设计与管理,主要包括以下功能:

(1)测试辅助设计功能:将软件评测过程分为测试需求分析、测试策划、测试设计、测试执行、回归测试、测试总结等6个阶段,能够辅助测试人员按照测试流程完成各阶段的设计工作,例如:能够辅助记录测试结果,并对测试执行情况和测试结果数据进行统计和分析;能够对测试出的软件问题进行分级、分类;当测试出软件问题时,能够辅助生成回归测试用例等。

(2)评测项目管理功能:能够辅助测试人员完成项目的启动、策划、监控、需求管理、配置管理、质量保证和风险分析等。能够通过测试需求的双向追踪矩阵来实现测试需求项和测试用例集之间的跟踪管理。

(3)测试文档辅助生成功能:在测试完成之后,手工编制测试文档费时费力且很难保证文档之间的一致性,为此,按照工程规范制订了各类测试文档的文档模板,并通过对Word底层对象进行编程,实现按照文档模板将文档内容输出到Word文件中。该功能能够辅助生成软件测试计划、软件测试说明、软件测试记录、软件问题报告、软件测试报告等测试技术文档,以及项目管理计划、配置管理计划、质量保证计划等管理文档。

4.3.4 数据显示与存储模块

数据显示与存储模块负责遥测数据的显示与存储、数据查询等,主要包括以下功能:

(1)遥测参数显示功能:能够将遥测参数原码及结果信息在界面上显示;

(2)遥测数据存储功能:能够将接收和发送的数据存储到数据库或本地文件;

(3)数据查询功能:能够根据数据发送或接收的时间区间、数据信息类别码、接口传输协议等进行查询;

(4)日志记录功能:日志保存了测试过程中与操作有关的信息,可以按等级、类型、日期等对日志进行查看。

5 结语

该仿真平台已经成功运用于遥测软件测试中,可扩展性好、测试效率高,大大缩短了测试周期。与传统测试模式相比,该平台实现了测试数据、可复用测试用例和测试过程的一体化管理,能够辅助测试人员生成测试数据,并按照测试流程完成各阶段的设计工作,降低了对测试人员的技术要求,减少测试过程中重复编程、重复编写测试用例和编制测试文档的工作量。此外,该平台对被测软件的接口具有很大的灵活性,对数据收发类软件测试具有很好的借鉴意义。

教育期刊网 http://www.jyqkw.com
参考文献

[1] 赵瑞峰,董房,陆洋,等.卫星通用自动化测试系统体系结构研究[J].信息技术,2011(4):65?68.

[2] 王晓明,戴居峰.嫦娥一号卫星控制分系统地面测试系统设计[J].航天器工程,2008,17(2):94?98.

[3] 田雪咏,常天庆,张雷,等.一类通用的装甲装备自动测试系统体系结构[J].计算机测量与控制,2011,19(7):1647?1649.

[4] 彭丹华,栾磊,李革.KD_JMASE 在武器系统仿真测试与评估中的应用[J].系统仿真学报,2011,7(23):310?314.

[5] 邓青华.软件自动化测试工具研究[J].软件导刊,2011,10(1):57?59.

[6] 文昌辞,王昭顺.软件测试自动化静态分析研究[J].计算机工程与设计,2005(4):987?989.

作者简介:马贤颖(1982—),女,北京人,工程师。研究方向为软件工程、软件测试。