基于Scrum敏捷开发的航空装备软件测试方法

2020-06-10 07:40焦永强尚颖李高显刘皓洁王可意
电子技术与软件工程 2020年4期
关键词:测试人员测试方法航空

焦永强 尚颖 李高显 刘皓洁 王可意

(1.中国航空综合技术研究所 北京市 100028 2.北京化工大学 北京市 100029)

随着航空装备日益发展,航空装备的规模越来越大,对软件的依赖程度也越来越高。针对航空装备软件需求变化快、周期短的特点,为实现在短时间内对需求变化的快速响应,并对软件开发不断进行迭代,急需一种能够在短周期内提升软件研制效率的开发模式——敏捷开发。 Scrum框架是一种流行且高效的敏捷方法。随着敏捷开发在航空装备软件研发中的应用,如何保证敏捷开发模式下的软件质量是一个备受关注的重要问题。

本文结合Scrum敏捷开发在航空装备软件的应用,提出一种基于Scrum敏捷开发的测试方法,旨在加快产品交付速度和确保产品稳定性,以保证软件质量,为工程实践过程中敏捷测试部分提供参考。

1 Scrum敏捷开发

随着信息化和网络化的发展,航空装备已经发展成为软件密集型系统,软件负责完成航空装备的大部分功能,软件在航空装备中扮演着越来越重要的角色。资料显示美国的F-22战斗机软件实现的功能已经达到80%以上,航空装备软件的规模和重要度与日俱增。

由于航空装备软件整体规模大、系统结构复杂,需求变更和需求改进多、研制周期短、使用周期长、配套单位多,各单位承担的软件多以嵌入式小规模软件为主。而嵌入式软件又属于测试难度较大的类型,故采用敏捷开发的方法来改善这一状况。

1.1 Scrum敏捷开发方法

敏捷方法强调对需求变更的快速响应和快速展现对应的软件模型,敏捷开发主要具备四个特征。如表1所列。

Scrum是目前最为流行且有效的敏捷方法,该方法将软件开发过程分解为多个2周到4周的短周期迭代,每一个迭代称为一个Sprint。Scrum方法使用列表或计划(简称backlog)进行产品需求管理,由产品经理定义Product backlog,并设置需求优先级,按照优先级顺序来实现需求;开发team按照优先级评估工作量,选择Sprint backlog。

针对每个Sprint,项目工作流程包括Sprint计划会议,确定Sprint backlog,制定Sprint计划;每天召开日会(Daily meeting),交流项目进展情况;项目工作的完成情况使用Sprint Burn down(Sprint燃尽图)统计表示,即用剩余工作量描述工作完成情况;Sprint结束时召开Sprint评审会议(Sprint review meeting),测试人员向负责人及团队其他成员演示当前Sprint开发的功能,评审通过后发布(release)系统可运行版本;同时召开Sprint回顾会议,总结此次Sprint中的工作情况。常见的Scrum开发模型如图1所示。

使用Scrum开发航空装备软件能够较好地适应需求变更,提高研发的效率,缩短研制周期,降低成本。Scrum团队强调全职能,可促进团队高效协同,提高项目整体效率。

1.2 基于Scrum敏捷开发的软件测试方法

基于Scrum框架进行项目开发中,测试、验收是关键的环节,且没有明确定义及规范。在不同的开发项目中,测试、验收的设计与安排可能大不相同,主要体现在测试、验收人员的深入程度、人员数量、人员专业程度、被测系统类型、项目的重要程度、项目周期的长短等因素上。

依照Scrum定义, 每次Sprint结束应产生一个可部署的系统版本,因此Sprint的完成标志是得到这个通过验收测试的版本,但是根据实际经验来看基于Scrum的很多项目难以达到这种水平。

测试验收工作深入到每次Sprint中可有效解决这个问题,因此对测试环节提出较高要求,不但需要高效地对每次的增量累加进行验证测试,而且需要依据测试结果不断反馈产品问题,以确保在尽可能短的周期频繁交付可运行的软件产品,并使整体工作符合敏捷特征。

软件敏捷测试活动主要针对软件开发过程中的子活动目标,测试活动主要包括:

(1)测试提前介入:将测试纳入需求或任务的完成准则,充分考虑需求的可测试性,根据需求设计测试用例或者测试代码,并使测试代码和产品代码共同演化,相互促进;

(2)持续集成:以固定的节奏以及规定的集成规则和顺序,确保第一时间发现并修复代码中的缺陷,并保持backlog与代码的一致性;

(3)验收测试:确保每个迭代及每次发布完成的产品均具备可交付性。

2 航空装备软件敏捷测试方法与流程

针对航空装备软件敏捷测试的问题,基于软件敏捷测试的原则,设计一套在航空装备软件敏捷开发过程中应用的测试方法和测试流程。

2.1 测试原则

基于需求的软件敏捷测试过程覆盖需求确认、需求评审、业务逻辑、功能、性能、稳定性等多种测试类型,因此需确定测试原则,从而提升测试效率。具体的测试原则如下:

首先,在Scrum团队中安排测试角色,测试提前介入,在了解项目开发内容的同时跟进每次Sprint迭代的增量,在后期验收测试阶段,减少学习成本。

其次,测试人员同时需要参与项目的验收工作,在实际开发过程中,由于不精确的Sprint Backlog描述,以及开发人员和测试人员对Sprint Backlog理解分歧,采用测试人员参与验收工作,能及早澄清验收标准并加快验收进度。同时可实现在每个Sprint过程结束时,得到高质量的可部署版本。

再次,测试人员应该在Sprint初始阶段完成测试准备工作,包括需求文档评审,编写测试规范,准备测试用例及测试环境等;并要求与开发人员同步作业,以确保完成开发功能后,以最短时间开展测试计划,从而缩短整个团队运转周期。

最后,测试阶段除使用自动化脚本和DevOps工具来提升测试效率之外,在人工测试阶段,测试人员可对Scrum team 中成员予以测试指导,协同作业,提高team 自测效率。

2.2 测试方法

航空装备软件按照运行环境分为宿主机和目标机,项目初始阶段对应敏捷方法中Sprint 0或初次迭代,在此阶段测试人员根据宿主机或目标机设置测试环境,进行初始需求和体系结构设计,同时了解项目需要遵循的验收标准。测试人员完成的上述Sprint0准备工作能够在项目进行阶段减少风险。

航空装备软件多为嵌入式软件,对运行及反应时间有严格要求,并且目标机与宿主机之间存在差异,需要在制定测试计划、验收标准时,针对软件实现详细的中断分析,并对运行时间及资源占用情况进行判断。

由于航空装备软件需要在海、陆、空等不同外部环境下运行,条件较为恶劣,所以在软件设计过程中不仅仅对性能和可靠性有严格要求,同时要求软件具备一定容错性。容错性测试包括但不限于网络故障、系统断电、服务器失去信号等,因此需要明确测试策略并根据具体应用场景设计测试用例。

考虑以上因素,提出一种航空装备软件敏捷开发过程的测试方法,将测试工作划分为项目启动、持续集成、同步测试、验收测试、提交与验证和迭代回顾等六个环节,并细化各环节敏捷测试工作细则。

(1)项目启动环节主要工作:

图1:Scrum开发模型

图2:敏捷测试流程

1.测试提前介入。测试人员了解项目早期需求,参与功能评审,同项目Scrum成员合作规划项目Sprint,并根据相关验收标准制定机载软件验收计划;

2.设置测试环境与体系结构。由于机载软件一般是限制在宿主机上进行测试,为了确保测试的可靠性,需要考虑目标机与宿主机间的差异,评估其偏差并确定验收标准;

3.为项目测试制定详细测试计划说明书。需覆盖各种测试类型,以及实时性和容错性等非功能需求。

(2)持续集成环节主要工作:

1.构建测试系统,包括编译代码及初始化测试数据库;

2.构建并运行回归测试套件,根据项目实际规模构建套件;

3.执行静态分析,检查代码潜在缺陷或不规范问题。实际中可采用自动化测试工具缩短时间。

(3)同步测试环节主要工作:

1.在开发未开始或完全结束前设计测试用例,包括功能、性能、稳定性、兼容性等内容,并与研发人员共同评审,确保测试需求被正确理解;

2.在开发阶段完成后,使用①中测试用例检测需求是否满足;

3.测试人员提供测试结果,开发人员依据测试结果对现有的代码进行重构。

(4)验收测试环节,测试人员通过测试每次Sprint产品,依据验收标准判断是否符合用户预期需求及部署要求。针对存在容错需求的sprint,在此阶段应提前安排容错测试。

(5)提交与验证环节,通过开展验收会议,测试工程师对产品进行演示,项目产品负责人、产品经理、Scrum Master负责对产品验收。针对验收结果,为确保交付达标的Sprint,针对未通过的backlog可采用从当前Sprint中删除,并加入到下次Sprint的backlog中。

(6)迭代回顾环节,每次Sprint迭代完成后需要进行总结回顾,以促使当前项目质量特性在下一个版本中能够继续保持与延续。

2.3 测试流程

基于Scrum的敏捷开发框架,结合本文定义的测试原则及方法,明确敏捷开发过程中的测试流程,如图2所示。

基于敏捷开发特性,结合航空装备软件规模大、系统结构复杂等特点,改进基于Scrum敏捷开发过程的软件测试方法,该方法强调测试同步验收和持续集成的思想,弱化开发团队中人员身份标识,使测试人员可全程参与项目生命周期各阶段。从项目整体的角度出发,基于敏捷测试方法有以下两点优势:

(1)减少项目中学习成本,由于人员功能标识弱化,开发人员和测试人员会协同工作,开发人员参与测试计划、用例评审及部分测试执行工作;测试人员参与需求评审、指导开发自测,可帮助操作人员更好地理解需求,在项目的进展上面思路保持一致。

(2)可通过每个sprint来合理设置工作量,提高软件产品的可视性和质量。相对普通的迭代开发,若迭代任务量大、开发新特性多,将导致测试周期长,并且可能引发质量问题;若每次迭代的任务量过少会导致整体进度过慢。因此结合sprint时间盒的限制要求,合理地设置Sprint工作量可以规避上述风险。

3 总结

本文结合航空装备软件的特点,提出基于Scrum敏捷开发的软件测试方法和流程,解决航空装备软件研制过程中需求变化多、周期短等问题,在保证提高软件研制效率和对用户需求的快速响应能力的同时,降低软件研制成本,使软件研制与装备研制能够更好的协调一致。

航空装备软件项目开展过程中可根据软件工程化的实际情况形成适用于具体情况的本地化敏捷测试方法,并在工程实践中有效、充分的应用,对提升我国航空装备软件的研制效率有重要意义。该方法应在航空装备软件研制过程中广泛推广和实施。

猜你喜欢
测试人员测试方法航空
基于泊松对相关的伪随机数发生器的统计测试方法
“闪电航空”来啦
“闪电航空”来啦
基于云计算的软件自动化测试方法
DLD-100C型雷达测试方法和应用
高校分析测试中心测试队伍建设方案初探
对改良的三种最小抑菌浓度测试方法的探讨
达美航空的重生之路
一战航空百年回眸
犯罪心理测试人员素质要求分析