控制系统软件系统级测试问题分析及测试方法研究

2022-04-29 19:25刘军
计算机应用文摘 2022年13期
关键词:软件测试

刘军

关键词 软件测试 软件系统级测试 软件研制 软件联调 系统级测试方法

1引言

随着信息化迅猛发展,大型控制系统已成为典型的软件密集型装备。以某系列软件的测试统计为例,A 版、B 版、C 版的软件规模分别为24 万行、74 万行、270 万行;与A 版软件相比,C 版软件规模增长了11倍。由于软件呈现“规模庞大、结构复杂、一体化综合”的趋势,因此软件缺陷越来越难以发现,软件质量难以保证[1] 。针对现有的问题与困难,经过对某控制系统软件系统级测试的结果和过程进行分析,本文阐述了软件系统级测试对软件研制、软件测试和联调的作用,以及实施软件系统级测试的方法[2] 。

2大型控制系统的特点

目前,控制系统及其软件主要具备以下特点。

(1)控制系统功能复杂,要求具备网络化控制能力以及复杂环境下的控制能力。

(2)外部接口和内部接口繁多,通信多元化,内部结构复杂,软件规模庞大,一般在几十万至几百万行不等。

( 3)信息处理数据量大,速度快。在系统中,各个分系统和数据处理组合之间采用了数字化数据交换模式,并且最快每几秒甚至几毫秒交换一次数据,每次达数百个字节,要求处理的数据量很大。

(4)控制复杂性高,系统包括多个分系统及其组合或设备,有很多状态量和数据量,并且其周期不尽相同,系统软件要对它们进行统一管理,逻辑关系非常复杂。

(5)实时性要求强,各个分系统和数据处理组合之间的数据交换周期是不同的,综控计算机按照统一时序来协调分系统的工作,实现多个设备的同步。一旦在实时性方面出现错误,就会造成整个系统运行错误。

( 6)规模巨大,一般在几十万甚至上百万行,而对于如此巨大的软件系统的需求分析、设计文档内容相对单一,有的软件需求文档的描写力度是平均每个软件需求对应一万行左右的程序。

(7)系统职责分层、数据分布处理,往往将系统划分为分系统、子系统以及配置项等,不同的配置项部署于支持层、传输层、应用层等,处于不同层次的配置项行使的职责不同,支持层、传输层等配置项的功能在系统中对用户不可见,应用层配置项的功能需要经由支持层、传输层的功能协助完成。而从用户使用角度来看,使用功能是由多个软件配置项/ 构件组合共同完成的,单一配置项/ 构件不能实现用户的使用功能,配置项和系统需求的界限不易清晰的区分,分系统和子系统均是独立运行和保障用户使用的一个完整系统。

(8)人机交互多,系统的可用性、易用性必须符合用户的使用习惯和任务需要,受人员影响很大,是使用需求驱动的软件系统。

3大型控制系统软件系统级测试现状

面对以上软件系统的特点,传统的软件配置项测试充分暴露“只见树木、不见森林”的缺陷:测试力度不够,无法验证软件配置项之间的功能协调性和接口协调性。通过调研发现,控制系统软件系统级测试存在以下问题。

(1)大多控制系统软件的测试只针对单个配置项,导致配置项之间互联、互通、互操作,分系统之间的协调匹配没有得到充分验证;大多控制系统软件没有软件系统级的需求分析和设计文档。软件配置项合格性测试完成后进入系统联试,由于缺乏系统级测试和验证依据软件,导致软件验证不充分,使得尽管对软件配置项的功能、性能进行了全面验证,但仍有超过半数的软件质量问题发生在系统联试或系统试验中,严重影响系统的研制进度。

(2)由于缺乏工程可行的系统级测试充分性准则、针对使用过程的描述手段以及海量测试数据的分析手段,即使开展了系统级测试也缺少统一的评价方法与充分性要求。

(3)系统总体单位组织的系统联试,虽然联合系统中所有软件完成了使用流程的系统验证,但验证目的仅针对系统试验要求,无法满足复杂装备软件高可靠的质量需求。

虽然我国在2004 年发布的军用软件测试指南中明确提出了系统测试的内容和技术要求[3] ,但是并未针对大型复杂装备软件给出具体的指南。因此,本文通过结合项目调研和工程实践,尝试提出大型控制系统软件系统级测试方法。

4大型控制系统软件系统测试发现的问题

调研多个已进行软件系统级测试或系统试验的大型控制系统,对系统软件系统级测试或系统试验发现的软件问题进行分析,发现出现问题的原因如下。

(1)系统级测试特点决定的:单个软件配置项执行没有问题,但作为系统执行时就有问题,此类问题为典型的系统级问题,配置项无法发现。

(2)模型设计缺陷。

(3)设计师对系统的认知与设计总体相比存在差异。

(4)设计师无系统概念,想方设法提高软件指标但却与系统指标无法协调,导致对其他软件产生不良影响。

(5)测试人员认识提高,测试用例设计足够复杂,激活潜在的软件缺陷。

5软件系統级测试问题分析对于软件研制的启发

5.1软件系统级测试之于软件测试的启示

针对大型控制系统软件系统级测试现状,测评机构应该开展软件系统级测评,并制定一套行之有效的系统级测试技术规范和实施管理流程。但基于提高软件质量的要求,只在软件验收阶段进行系统级测试又显得不够,那在软件研制过程中是否可以实施系统级测试? 而软件研制过程中各软件状态不定、测试周期短,导致无法完全进行系统级测试。鉴于此,应从软件测试的思路和方法进行改进:测试设计时应多从使用者的角度进行设计,而不应只对软件进行覆盖性测试;需对软件任务剖面进行分析,构造任务应用场景;充分考虑与软件有关的所有硬件和设备对软件的影响;测试用例设计应增加针对饱和或满负荷情况下的设计且用例应尽量复杂;测试执行时耦合度高的软件应协同测试。

5.2软件系统级测试之于软件研制的启示

分析软件系统级测试或系统试验问题产生的原因,不难发现如果在软件研制过程中采取一定措施,相关问题在一定程度上是可以避免的。对此,在软件研制过程中应采取以下措施。

(1)重视软件系统需求分析与系统设计

系统需求是介于用户需求和软件需求之间的重要桥梁,是满足用户需求的重要保障,更是系统级测试的唯一依据。在系统软件需求类文档中,应明确系统软件用途,重点描述系统软件的任务使命、系统能力(覆盖技术指标)、软硬件环境要求、系统/ 分系统软件体系结构设计等(即系统的任务流、功能流、信息流)。

存在工作状态转换的,在需求类文档中,应详细说明系统软件所包含的各种工作状态、转换方式,必要时给出状态转换图,以说明转换条件、转换点。对于各种工作方式,应清楚描述对应的能力需求组,以及参与实现的软件,推荐使用表格进行说明。

在需求类文档中,在对系统能力需求展开描述时,建议从系统/ 分系统的角度出发,对每一组能力需求进行详细描述,建议给出工作流程图、数据流图,文字描述实现路径,说明软件参与的操作以及执行过程中的重点数据判读要求、数据执行周期要求(处理时间分布情况),应列出研制总要求中与软件相关的所有技术指标,并进行有效分解。

在需求类文档中,应详细描述整个系统软件的内/ 外部接口通信内容,应详细描述切实可行的安全性需求与措施。

(2)加强使用总体与设计总体、设计总体与设计师的沟通

软件研制中设计总体、设计师应定期与使用总体进行沟通,这才能保证系统贴近用户使用;设计总体和设计师定期沟通能够消除彼此理解上的一些差异,同时形成头脑风暴,完善模型设计,提高软件质量。

5.3软件系统级测试之于软件系统联调的启示

软件系统联调一般是依据试验任务对软件系统的主要功能和流程进行验证,缺乏充分性。软件系统级测试是以测试的角度对软件系统的所有设计分支进行测试,功能覆盖全面。在对系统级测试结果分析中,发现如果系统联调能够充分测试,那某些问题本可以很早就能发现。鉴于此,应该在软件系统联调中采取以下措施,以提高软件的可靠性。

(1)软件系统联调应转变思想:系统联调不应只为试验任务服务,而是以提高软件系统可靠性为目的。

( 2)组织软件系统联调的人员应了解软件测试,以软件测试的角度结合软件系统联调的特点,综合考虑制定联调方案。

(3)软件系统联调依据试验任务制定联调方案时,应尽可能充分考虑系统功能,提高测试的充分性。

(4)软件系统联调应多考虑异常分支、异常情况,验证系统可靠性。

(5)必要时,软件系统联调应请测试人员参与。

6大型控制系统软件系统级测试方法研究

针对大型控制系统软件研制特点以及系统测试或系统试验发现的问题,本文开展了研究,建议大型控制系统软件系统级测试应从以下两方面进行研究。

6.1面向使用过程的系统级测试用例生成技术

大型控制系统使用环境复杂,使用过程综合程度高,软件系统级高精度、抗干扰、快速反应性能的考核需要在系统级集成测试环境下开展。面对复杂软件系统,测试用例是一个与被测软件的交互执行过程相对应的、由输入控制点及其输入指令或数据等要素组成的多元组的序列。大型控制系统作为复杂大系统,对于装备软件系统级测试用例的描述应包括使用环境情景想定、使用过程描述、测试激励数据三个层次。系统级测试用例的描述示意图如图1所示。

(1)使用环境情景想定

控制系统装备软件系统级测试用例的前置条件需要想定符合实际使用过程的情景,涵盖系统要求的各个性能指标、系统功能、任务剖面等。

(2)基于UML 顺序图的使用过程描述

UML 顺序图可以用来描述控制系统中不同对象之间的动态交互,显示使用过程中涉及对象间的消息传递关系。而消息是由系统特征状态构成的,课题研究应用UML 顺序图依照由系统特征状态构造的任务剖面描述控制系统的测试场景,将输入、输出及约束条件合理组合生成覆盖该场景的测试流程,以提高测试的充分性。

(3)针对GUI 的测试激励数据生成

大型控制系统包括嵌入式软件和GUI 软件,针对嵌入式软件,通常采用数据文件形式的测试用例,包括时间驱动和事件响应两类用例激励方式,目前已经较好地解决了这类软件的用例生成和用例加载问题。

6.2软件系统级验证技术

(1)系统级形式化验证

将组成控制系统的各分系统作为对象,构建状态图,应用形式化语言描述上层设计的软件模型规格,研究形式化方法验证系统行为的正确性和完备性。状态图用于对系统模型元素的动态行为进行建模,它描述一个实体基于事件反应的动态行为,显示该实体如何根据当前所处的状态对不同的事件做出不同的反应。形成状态机模型后,根据定义验证规则使用CTL 语句对模型進行仿真验证。

(2)系统级协议分析

调研发现,近年的系统试验所暴露出的软件问题,诱因已经不是单一软件配置项处理的特殊数据或异常数据,而是在系统/ 子系统内、系统/ 子系统外流转的数据流在实际使用过程中发生的特例,也许基于本系统,它是有效数据,但由于它到来的时序特殊、与其他数据产生了叠加、软件集成后与整系统硬件未良好匹配等因素,导致其触发软件缺陷,因此需要通过系统地分析、审查接口通信的协议,发现设备之间接口通信方面可能存在的隐患,以进一步提高软件接口以及系统的可靠性。协议分析技术包括接口设计与实现审查、通信设计与实现审查两部分。

7结束语

目前,针对大型控制系统开展系统级测试验证一直是行业研究的热点。本文基于理论研究成果,结合多个控制系统软件系统级测试的工程实践积累,研究出了一套实施系统级测试验证的技术与方法,通过试点开展多个控制系统软件测试验证工作,后续将继续深入研究系统级测试技术,以完善系统级测试流程规范,为系统软件顺利完成每一次试验努力。

猜你喜欢
软件测试
软件测试方向人才培养“1+X”融合研究
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
基于MBD模型自动生成测试用例的软件测试方法
计算机软件测试方法的研究
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
一种航空机载软件测试项目的进度改进模型
军用软件测试文档生成设计与实现
软件测试工程化模型及应用研究