APP下载

基于公共计算环境的系统软件测试方法研究∗

2019-12-26李海浩卢重阳

舰船电子工程 2019年12期
关键词:计算环境测试用例节点

李海浩 费 琪 卢重阳

(1.91404部队 秦皇岛 066000)(2.江苏自动化研究所 连云港 222061)

1 引言

全舰计算环境(Total Ship Computing Environment,TSCE)是美海军提出的新一代水面舰艇舰载系统集成技术[1],是将舰艇各类运算操作、基础数据等集成计算,是美海军新一代舰载一体化信息系统的关键技术[2]。TSCE利用高性能计算机资源,以分布式方式实现各系统间的互联互通,具有标准性、通用性、可裁剪、可移植等特点[3]。随着装备技术体系和国家战略的发展、调整,我军正处于平台中心战向网络中心战转型的重要时期,舰艇装备系统也将逐步从原来结构复杂、接口繁多、系统紧密集成、可扩展能力差、重复建设与投资、紧耦合向全分布、构件化、服务化、开放式的方向发展[4],在借鉴TSCE技术的同时,探索出适应于我军舰艇装备特色的公共计算环境新技术体制。该技术体系下,装备系统是一个结构复杂、功能强大、体系灵活的信息系统,具有面向任务、动态重组等新的特性,给测试技术要求和测试充分性等提出了巨大的挑战。

对公共计算环境结构层次和主要特征介绍的基础上,对该环境下服务组合流程剖面、服务实体测试技术等进行了研究,并提出了基于组合服务测试用例的生成方法,为新一代公共计算环境系统软件设计研制、测试试验等提供理论支撑,促进该环境下系统软件测试的充分性和完整性。

2 公共计算环境的技术分析

公共计算环境的核心内涵就是“集成”,能够快速高效地将功能不同、规模不同、粒度不同的系统软件进行有效集成[5],其框架由底向上分为3个层次,即基础设施、通用服务、功能应用,结构层次如图1所示。

以“一体化网络”和“面向任务、基于服务”等特征为出发点,公共计算环境的结构特征主要有以下几点。

1)资源集中部署、统一管理。基础设施中海量的计算和存储资源进行集中部署,根据各功能系统和通用服务所需资源进行动态分配和调度,优化了资源利用效率。

2)全舰采用统一的结构框架。根据通用服务,全舰系统的结构进行统一设计,各功能系统在通用服务基础和统一结构框架约束下,实现各功能需求和系统间的互联互通,无需再各自部署相关服务,减少了功能系统应用的开发成本。

3)具有较强的可裁剪、可扩展能力。公共计算环境为应用系统提供了“即插即用”式的开发和运行环境,应用功能系统之间相对较为独立,可根据后期需求进行简单、快速的功能裁剪、扩展和螺旋式升级。

3 公共计算环境下系统软件测试技术研究

3.1 基于任务的服务组合流程剖面研究

针对任务的多样性,对系统的使命任务进行分析,形成自顶向下的任务能力框架,采用面向功能域的服务组合方法,将任务涉及的各领域功能进行最小粒度的原子能力划分,验证原子能力对能力框架的覆盖情况,基于原子能力构建面向任务流程剖面,分析基于服务的使命任务。结合一般任务属性,以层次化的任务网络为基础,进行任务剖面构建,具体步骤如下:

1)根据能力选取规则,分析任务能力所需的元活动集合,将元活动组合成任务活动集合,每一个任务子集能够完成指定的能力;

2)根据对象选取规则,获得任务对象集合,给出任务对象所影响的子任务元活动结合;

3)以任务活动集合和任务对象集合为基础,根据规划设定规则,进行正常任务规划、任务不同原因部分失效和完全失效的任务规划;

4)根据任务过程及任务重复与中断集合,结合人工干预,构建任务流程的主题框架;

5)根据编成要素选取规则,综合分析系统编成的改变时机,形成活动编成集合;

6)在任务流程主体框架的基础上,结合人工干预和活动编成集合,将任务流程细化;

7)根据操作人员经验、数据库知识积累和环境要素选取规则,综合元活动执行水平与环境集合的映射关系,分析环境要素对能力实现的影响,给出环境集合,描述环境因素影响任务成功的概率;

8)根据环境集合和任务区域集合,结合人工干预,得到场景集合,给出任务子集的持续时间及环境影响概率分布情况;

9)根据场景集合结合人工干预,在任务流程细化的基础上细化任务环境、子任务的持续时间以及子任务的成功概率,最终得到任务剖面集合。

3.2 服务实体测试技术研究

根据基于公共计算环境的系统架构,服务实体是通用服务层组成的基础,也是实现服务组合的基本单元,基于公共计算环境的系统软件测试相当于传统系统级测试,而对服务实体的测试相当于配置项测试。

图1 公共计算环境的结构层次图

图2 服务实体描述语言概念模型

基于公共计算环境的系统中,服务实体的功能、QoS等属性主要通过服务化描述语言的形式对外暴露给服务请求者[6]。因此,可以根据服务化描述语言进行服务实体的测试。

服务实体的描述语言包括服务实体功能描述语言和组合服务流程编排语言,服务实体描述语言的概念模型如图2所示。

作为服务对外提供的描述文件,服务化描述语言和服务都需要作为测试对象进行测试和验证。因此,服务实体测试技术研究主要从静态、动态两方面对服务进行测试。静态测试技术主要研究服务化描述语言中元素结构、取值的正确性,尤其需要验证元数据的应用领域、数据类型、数据精度等属性是否满足特定领域下,数据元素的描述和表示要求。

3.2.1 静态缺陷检测技术

首先,根据XML的语法、格式和服务化描述语言的结构要求设计典型缺陷模式,常见的缺陷模式包括命名空间错误、变量类型错误等。

然后,采用面向对象的思想,将服务化描述语言中的标签元素映射为对象及其属性,从而构造出面向对象的DOM树。

最后,遍历DOM树并逐一与缺陷模式进行匹配。并结合人工审查根据需求规格说明、设计文档验证服务化描述文件中功能描述的正确性、一致性和完整性,静态缺陷检测的流程如图3所示。

3.2.2 动态测试用例设计方法研究

基于服务实体规则的动态测试用例设计如图4所示,测试用例设计过程主要分为六个步骤。

图3 服务化描述语言静态缺陷检测

1)解析服务实体描述语言,获取功能描述的主要元素,如Operation,Message等;

2)根据领域知识,设计系统运行中的时间约束、状态约束、数据约束等规则;

3)根据Operation之间的输入输出关系构造Operation组合流程;

4)针对各类数据以及int、string等基础类型为Message生成测试数据,包括正常值异常值边界值;

5)根据服务的功能描述,匹配出服务运行的上下文约束信息;

6)组合生成测试用例。

测试用例设计中重点研究带约束的服务操作序列,根据业务特性提出时序、服务状态等约束,并将约束规则自动加入服务操作组合,生成带约束的服务操作序列模型,遍历模型生成测试用例。

图4 测试用例设计流程图

4 基于组合服务测试用例生成方法研究

为满足多样化任务需求,根据典型作战任务需求,将多个服务以业务流程执行语言的形式组合成新的组合服务。为了描述复合服务之间各种不同的互动关系,BPEL(业务流程执行语言:Business Process Execution Language)规范了多样化的流程,包括可同时执行多个动作、非同步执行的事件处理器及错误补偿处理等,导致找出所有可能的执行路径非常困难。为实现测试路径的全面覆盖,提出基于流程编排的服务组合测试路径推导技术,主要分为:支持约束的变强度组合测试用例生成技术和组基于BPEL文件的服务组合测试路径遍历技术。

4.1 支持约束的变强度组合测试用例生成技术

支持约束的变强度组合测试用例生成主要是为保证测试的充分性和高效性,分析测试过程中增加约束的可满足性检查,淘汰无效测试,增加对变强度因素交互覆盖情况的评估,改变搜索过程的目标函数,适时调整搜索导向,从而满足不同约束、不同交互强度的组合测试需求。

对要覆盖的变强度因素组合进行分解,得到部分交互强度低的因素组合和其他交互强度高的组合,对于交互强度低的组合,作为组合测试中待覆盖的局部,可以考虑用代数方法来处理,对于代数方法不易处理的情况,可采用搜索来获得覆盖目标因素组合的测试集,对不同部分的结果进行复合,可得到完整的测试用例集,具体流程见图5。

4.2 基于BPEL组合的测试路径遍历技术

服务组合测试路径遍历算法描述如图6所示。

为更清晰地对该算法进行介绍,给模型中的各个子模块编号,共为6部分,编号依次从1到6,测试路径遍历过程和各模块的功能作用如下所示。

1)建立BPEL控制流程图的邻接矩阵,编号为子模块①,在邻接矩阵中写入包含condition的条件信息,用于存储每条路径上服务节点间的状态信息,子模块①为BPEL控制流程图的矩阵不仅有能力描述服务间的连边关系,还有能力描述服务间的状态信息,该状态信息指的是:连边前端服务到连边后端服务的条件信息(例如if语句的condition条件信息)、循环结构的名称与循环条件的信息(比如while语句的condition条件信息),但是该子模块不能描述并行路径的信息,并行路径的信息由子模块③进行描述。

图5 支持约束的变强度组合测试用例生成技术流程

2)根据BPEL控制流程图的邻接矩阵即子模块①生成不考虑并行路径的所有基本服务路径,将其存入默认无并行的路径存储空间中,如图6所示编号为②的子模块,该子模块包含的内容为不考虑并行路径的所有基本服务路径,但是它又包含了并行路径的基本组成路径,这里以一个示例来解释:假设有两条并行路径:(服务节点用字母表示)路径1,a-b-c、a-e-f;路径2,a-b-d、a-e-f。这两条并行路径中每条路径均有两条基本路径在同时执行,总共有三条基本路径a-b-c、a-b-d、a-e-f,这三条基本路径指的就是子模块②中存储的不考虑并行路径的所有基本服务路径,但是它包含的这三条基本路径组成了并行路径1和并行路径2。子模块②的作用:为并行路径的生成(子模块④的建立)提供并行路径的基本组成路径,为子模块⑤中的无并行正常路径提供基本路径。

3)读取边的信息,提取flow=true的所有边,将并行分支的标志节点信息存入特定的集合中,如图6所示子模块③。子模块③的实现方式为数组,子模块③内容为标志并行的所有节点,步骤2)中提到的例子,两条并行路径(服务节点用字母表示)路径1,a-b-c、a-e-f;路径2,a-b-d、a-e-f的并行开始节点为服务节点a,不存在并行结束的节点,即并行路径不会合并到一个节点上,这时子模块存储的内容即为节点a。子模块③的作用为结合模块②提供的所有的基本路径生成模块④的并行路径处理集——特定flow节点下的非并行分支路径。

4)利用2)中默认的无并行的路径(子模块②)以及3)中的并行分支标志节点集合(子模块③)生成多个特定flow节点下非并行分支路径集合(子模块④)。子模块④中存储了多个块结构,图6子模块④显示了有两个块结构,每个块结构对应了子模块③中提供的节点集合中的一个节点,这种对应关系因为在块结构的内容中存在所以不需要单独标记,该块结构的内容为对应flow=true当前节点的组成并行路径的基本路径的集合,例如并行路径的(服务节点用字母表示)路径1,a-b-c、a-e-f;路径2,a-b-d、a-e-f,块结构1中第一个特定flow节点下的非并行分支路径存储的为基本路径a-b-c、a-b-d,第二个特定flow节点下的非并行分支路径存储的为基本路径a-e-f,块结构内的多组特定flow节点下的非并行分支路径集合组合即可得到所有的并行路径并写入子模块⑤。这个例子中就是通过组合a-b-c、a-b-d和a-e-f生成路径1,a-b-c、a-e-f;路径2,a-b-d、a-e-f存入模块⑤。另外在一条路径上存在多个并行节点开始节点,即一条路径上依次存在多个并行路径时,首先确定并行开始节点和并行结束节点,然后从每个路径开始节点到路径结束节点之间的路径生成一个块结构,块结构内路径重组形成针对每个块结构的并行路径,然后用同样的原理将整个的模块④看成最大的块结构继续进行路径重组生成并行路径,最后将块与块之间的单路径加入形成本次并行处理的路径。

图6 基于BPEL组合的测试路径搜索算法

针对并行嵌套的情况,即并行结构中如果还有并行结构时,会出现累乘的现象,累乘现象是指先找到并行嵌套结构的最内层并行结构,利用上述块结构处理后得到最内层的路径,然后再将包含最内层的当前外层并行结构作为当前处理的并行结构,这时需要考虑最内层生成的路径,同样需要一个块结构来处理当前层并行结构,最内层的路径与当前层其他路径相乘得到新的复杂的并行路径,如果层级到达一定的程度,累乘的结果会越来越复杂,最终造成路径的组合爆炸。因此本方法将并行嵌套进行简化处理。不考虑并行嵌套导致路径组合爆炸的问题。

5)对这些集合按照一定的规则提取元素进行组合,生成并行的服务组合路径(子模块⑤);组合的思想在4)中已经详细写出。同时从默认无并行的路径存储空间(子模块②)中提取没有并行属性的路径写入服务组合路径(子模块⑤)。两种路径结合起来就是总的服务组合路径。

6)读取1)中BPEL控制流程图邻接矩阵(子模块①)中的condition,在输出中的路径(子模块⑥)中写入当前服务组合路径的条件,写入的方法为遍历子模块⑤中的路径,同时读取子模块①的邻接矩阵,如果路径上的连边有条件,对应的子模块①的邻接矩阵元素condition不为空,则将条件写入子模块⑥的路径中。

5 结语

公共计算环境为全舰各功能设备提供了开放、通用、标准的研发和运行集成环境[7],便于各功能系统的有效组织运行,为全舰减员增效提供技术保障,能够更好地支撑全舰装备的后续改造升级,促进装备的通用化、模块化、系列化的发展[8]。针对公共计算环境的特点,探索研究了该环境下系统软件的测试技术和用例生成方法,对装备试验鉴定和系统软件测评工作具有一定的借鉴意义。

猜你喜欢

计算环境测试用例节点
云计算环境下网络安全等级保护的实现途径
基于图连通支配集的子图匹配优化算法
基于LDA模型的测试用例复用方法*
结合概率路由的机会网络自私节点检测算法
面向复杂网络的节点相似性度量*
采用贪婪启发式的异构WSNs 部分覆盖算法*
基于路径关键状态变量的测试用例约简
分布式计算环境下网络数据加密技术研究
软件测试中的测试用例及复用研究
串行SCSI技术