一种适用于敏捷开发的新型软件测试模型

2018-06-21 11:46刘方
软件导刊 2018年5期
关键词:软件测试车轮模型

刘方

摘 要:为了在实际项目测试工作中更好地适应敏捷开发模式,探索一种新型软件测试模型。通过梳理传统的几种常用软件测试模型,比较分析各个模型的优缺点,吸取前人的优点并结合实际项目经验和现实需求,设计了一种以需求为驱动、以测试为核心的新型软件测试模型—“车轮”模型。该模型适用于目前最流行的敏捷开发模式,强调全过程测试,能有效提高软件质量和开发效率。

关键词:敏捷开发;软件测试;“车轮”模型;需求驱动;全过程测试

DOI:10.11907/rjdk.172747

中图分类号:TP319

文献标识码:A 文章编号:1672-7800(2018)005-0142-04

Abstract:In order to adapt to agile development mode better in the actual project testing,this paper explores a new kind of software test model. First, this paper has combed the traditional software test models; then, it compares the advantages and disadvantages of every model; finally, the author designs a new software test model, “wheel” model, which is driven by the demand and tested as the core by drawing on the advantages of predecessors and combining actual project experience and real demands. This model is applicable to the most popular agile development mode, and emphasizes the whole process test, which can effectively improve the software quality and development efficiency.

Key Words:agile development;software testing; “wheel” model; demand-driven; whole process test

0 引言

高效的測试工作是保障高质量产品尽快上线的关键。建立一个好的软件测试模型可以极大提高测试效率、减少不必要的工作量、增加测试精准度。本文首先分析常用的软件测试模型,然后结合数年的工作经验,重点讨论一种适应目前最为流行的敏捷开发模式的新型软件测试模型,即需求驱动的软件测试模型——“车轮”模型。

敏捷开发是一种适应性、增量式的开发模式[1],目前被大多数企业采用。其产生的原因是市场的需求瞬息万变,很难实现产品需求的明确、完整收集。在整个敏捷开发过程中需求是不断新增并改进的,需求变更推动整个开发过程的行进。而在敏捷开发中,测试的目的在于验证:第一、需求理解和表达的正确性;第二、设计和表达的正确性;第三、实现的正确性;第四、运行的正确性[2]。这4个阶段中的正确性都以需求为判断基准,测试也以需求为依据,所以需求是整个开发过程的驱动力。

1 常用软件测试模型分析

1.1 V模型

V模型是最早被提出[3]、最具有代表性,也是最为人熟知的一种测试模型,如图1所示。

图1中由左至右描述了开发过程和测试阶段之间的对应关系。V模型的意义在于,它最早提出测试不是开发的事后弥补行为,而是与开发同等重要的过程[4]。但V模型的缺点也很明显,它将测试阶段和设计阶段完全分开[5],认为测试是编码完成后才开始的阶段[6],这种思想无法体现“尽早测试”的原则。于是,需求分析和产品设计阶段产生的错误就只能到最终的测试阶段才能被发现,大大增加了修复错误的代价,延长了开发周期。并且,V模型中各个阶段之间没有交互,一个阶段完成才到下一个阶段,无法循环互动,这和敏捷开发及时沟通响应的要求背道而驰。

1.2 W模型

鉴于V模型的不足,W模型将两个V模型合并,强调测试应该伴随开发的全部过程[4],需求、功能、设计、程序都是测试对象[2],并且测试和开发同步进行,如图2所示。

W模型对V模型的改进,不仅扩大了测试范围,更有利于尽早发现问题,避免了在验收阶段才最终发现需求实现错误或需求不满足的严重错误。但W模型也有其局限性,如仍然将需求、设计、编码视为串行,并且测试和开发活动也保持线性的先后关系,当上一阶段完全结束才能进入下一阶段工作[7]。这样,缺少了关键的回归测试阶段,也无法支持敏捷开发过程的迭代模型。

1.3 X模型

图3是X模型示意图。X 模型是对V模型的一种改进,图左描述的是针对单独程序片段所进行的相互分离的编码和测试,此后通过频繁重复的集成最终成为可执行的程序,然后再对这些可执行程序进行测试。已通过集成测试的成品可以进行封装并提交给用户,也可作为更大规模和范围内集成的一部分。图右多根并行的曲线表示变更可以在各个部分发生,同时还定义了探索性测试,这是不进行事先计划的特殊类型测试,该方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误[8]。但这种探索性测试可能造成人力、物力和财力浪费,对测试员的熟练程度要求比较高[6]。但X模型仍存在一些缺陷:①提出测试设计却没有指明在测试的各个阶段都需要进行测试设计;②没有提及关于需求的确认;③过于关注程序级别的测试,没有抽象成一个系统模型[9]。

1.3 H模型

图4的H模型仅仅演示了整个产品生命周期中的某一次测试“微循环”。图中的“其它流程”可以是任意流程,如:需求分析流程、设计流程、编码流程,甚至是测试流程自身。向上的箭头代表一个测试就绪点,表示“其它流程”在该点处达到了测试条件,此时只要测试准备活动完成,就可以执行测试。概括来说,H模型将软件测试独立于其它流程并贯穿于整个产品生命周期,与其它流程并发的进行,当某个测试时间点就绪时,软件测试即从测试准备阶段进入测试执行阶段[10]。H模型虽然有很强的灵活性,但它并没有提出具体的应用模型[11],其实际运用的指导意义不强。

2 需求驱动软件测试模型——“车轮”模型

2.1 模型设计

为使软件测试能够适应敏捷开发模式,达到测试目的,本文综合上述几种常用测试模型的优点,并结合实践经验和实际需求,设计了一种新型的软件测试模型——“车轮”模型。如图5所示。

“车轮”模型是一种以用户需求和用户反馈为驱动,以测试为核心、用于迭代开发模式的测试模型。由于用户需求和用户反馈是增量式的递交,所以产品开发过程是不断重复循环的。测试渗透在产品开发的全过程中,跟踪每一个环节的输入和输出。在“车轮”模型中,测试直接对需求负责,保证产品在各个阶段都是符合需求的,测试对象是产品生命周期全过程。

“车轮”模型中的测试是一个独立的流程,其中包括:測试管理和测试执行。测试管理是指,对测试计划、测试说明、测试资源、源程序、测试用例、测试环境、测试脚本、测试报告、缺陷单等进行管理,同时对测试人员进行合理分工。测试执行是指,测试人员在分配到任务后,对测试对象进行相应的测试,包括:接口测试、功能测试、集成测试、系统测试、回归测试等。

由于测试在“车轮”模型中处于核心位置,跟踪产品生命周期的全过程,所以对测试人员的要求也较高。测试人员除了能熟练执行接口测试、功能测试、集成测试、系统测试、回归测试等基础测试,还需要具备需求分析、文案编辑能力,同时还需要有一定的编码能力,能理解程序的实现算法。

2.2 模型详述

图5模型中无法详细说明在开发的各个阶段测试对应的具体工作内容,但实际在开发与测试的每一个交互箭头上都包含了许多工作,以下是详细介绍。

(1)需求分析阶段:

①测试需求文档,提出需求缺陷,跟踪缺陷修改情况;

②参加需求评审, 协助制定验收标准;

③根据最终确定的需求文档编写测试计划;

④根据需求文档、业务流程, 设计测试流程。

(2)产品设计阶段:

①对原型进行测试,提出原型缺陷,跟踪缺陷修改情况;

②根据需求文档、业务流程和原型, 设计功能测试用例。

(3)详细设计阶段:

①测试详细设计文档,提出设计缺陷,跟踪缺陷修改情况;

②根据详细设计文档编写接口测试计划,设计接口测试用例和测试脚本;

③根据详细设计文档、数据字典搭建测试环境,准备测试数据。

(4)编码实现阶段:

①对已完成编码的接口进行接口测试;

②集成通过接口测试的接口进行模块测试;

③根据需要选择进行压力测试、性能测试、稳定性测试、兼容性测试、安全性测试、自动化测试;

④跟踪缺陷,不断进行回归测试。

(5)系统集成阶段:

①集成全部模块进行系统测试;

②完成测试报告;

③编写用户手册;

④收集β测试中的用户反馈,对用户反馈进行核查筛选确定系统缺陷,跟踪缺陷修改情况;

⑤协助实施人员完成系统部署和产品上线。

2.3 模型优势

和常用测试模型相比,“车轮”模型有如下优点:

(1)强调测试对象不是代码而是整个产品生命周期,每一个可交付的中间件都需要通过适当的方式进行测试,真正实现了“全过程”测试, 提高了软件测试质量[12]。

(2)由于测试在项目启动初期就参与其中,保证了测试和开发过程的密切衔接,确保能在第一时间发现错误。

(3)现实中的开发不是一种串行的活动,在大多数情况下是交叉进行的,那么相应的测试也不存在严格的先后关系。“车轮”模型适应了这一现实状况,让各阶段的测试(如:接口测试、集成测试、系统测试、回归测试等)跟随开发进度反复触发、循环迭代。

(4)将测试活动完全独立出来,同时采取敏捷方法,及时响应并全程跟踪,完全实现了测试和开发的同步。

(5)体现了客户、产品经理、开发人员以及测试人员之间的交互,当需求发生变更时能够及时调整方案。并且测试结果实时反馈,也保证了测试质量。

2.4 模型应用实施

将“车轮”模型应用到一个社会治理网格化微信公众号的开发项目中,该项目包括公众号前台开发和后台管理平台开发。其中的志愿者模块完全依照“车轮”模型进行全程测试。首先,产品经理与客户沟通需求并完成需求文档后,将需求文档交付给测试人员和开发人员进行评估。在此阶段测试人员会对需求的可行性、合理性及完整性进行测试,并将需求缺陷提交给产品经理。之后产品经理会根据测试提交的缺陷以及开发反馈的意见重新补充并修改需求文档。需求文档定稿后,产品经理、开发人员和测试人员共同参与需求评审会议,制定产品验收标准。

接下来,产品经理根据需求文档完成产品原型的设计后,将原型交付给开发人员和测试人员。在此阶段对原型进行测试,主要包括:界面是否美观;配色是否合理;交互是否友好;操作步骤是否简单;功能是否齐全;使用场景是否全覆盖;逻辑是否合理;操作流程是否顺畅等。测试人员将原型缺陷提交给产品经理后,产品经理会根据测试缺陷以及开发意见对原型进行修改,最终确定原型。

开发人员根据原型进行详细设计阶段,测试人员同时设计编写测试用例。对于需要进行接口测试的部分,测试人员依据开发人员提供的接口说明书设计编写接口测试脚本。在此阶段测试人员还要搭建测试环境,准备测试数据。

由于志愿者模块内还细分了多个小模块,开发人员会将逐个完成的小模块提测给测试人员。测试人员对提测的模块会先进行冒烟测试,确保提测内容的主要功能已通,可以进行后续的全面测试。如在冒烟测试过程中发现阻塞缺陷立即打回给开发人员重新编码。于是整个开发实现过程是一种边开发边测试的状态。当所有小模块全部完成后,开发人员会集中修复测试人员提交的缺陷,而测试人员会不断回归测试已修复的缺陷。

最后测试人员还要再整体进行系统测试、兼容性测试以及并发测试。当已知缺陷全部修复完成后,产品达到验收条件即可上线并交付给客户使用。

2.5 模型应用效果分析

社会治理网格化微信公众号项目中还有一个智慧党建模块,该模块未使用“车轮”模型,而是按照传统测试方法进行测试。与使用“车轮”模型的志愿者模块相比,由于智慧党建模块的测试工作并未在需求制定阶段就介入,而是在编码完成后一次性交付给测试,智慧党建模块在测试后又修改了2次需求,同时开发人员根据修改的需求重构了两次代码。而志愿者模块因为前期对需求及原型都进行了测试,编码工作一次性完成,大大减少了开发时间,提高了产品开发效率。

另外,志愿者模型由于测试全程跟踪,当出现问题时和项目其他人员及时沟通反馈,极大地缩短了处理问题的响应时间。而智慧党建模块的测试工作仍是一种串行模式,当发现问题后再回退到上一阶段,这种问题解决模式浪费了大量时间。

3 结语

本文结合软件测试模型的设计原则,提出了一个新的软件测试模型——“车轮”模型。该模型吸取V模型、W模型、X模型、H模型的优点,同时弥补这些传统模型的不足之处,最大化体现了“尽早测试、全面测试”的原则。模型将测试置于产品开发的核心位置,充分发挥了测试人员的主观能动性,以测试推动开发,有效地减少了软件缺陷,在保证软件质量的同时也缩短了开发时间。并且,模型加强了测试人员和客户、产品经理、开发人员的沟通交流,让测试人员直接对需求负责,完全符合当前流行的敏捷开发模式。下一步将不断优化改进模型,提高模型的通用性,以期有新的突破。

参考文献:

[1] 王科欣.基于敏捷方法的软件测试模型研究[J].软件导刊,2009,8(5):27-28.

[2] 劉超.基于扩展V模型的软件测试[J].玉林师范学院学报:自然科学版,2006,27(5):149-152.

[3] 陈静.软件测试过程模型和管理理念探讨[J].舰船电子对抗,2007,30(4):99-101,107.

[4] 邓璐娟,刁海港.软件测试模型及X模型的改进[J].郑州轻工业学院学报:自然科学版,2011,26(1):91-94.

[5] 周童,方彦军.一种新的软件测试过程模型-“跑道”模型[J].计算机测量与控制,2015,23(10):3347-3349.

[6] 孟祥丰.软件测试模型及其改进方案[J].电子设计工程,2012,20(23):38-40.

[7] 孙文婷.软件测试模型的应用研究及改进[J].电脑知识与技术,2008,4(4):1005-1007.

[8] 曾凡晋.浅议软件测试领域V模型与X模型[J].邢台职业技术学院学报,2009,26(1):72-74.

[9] 陈小勇,尹刚.软件测试模型分析与研究[J].现代计算机.2008(5):22-25.

[10] 吴慧韫,李卓群.基于H模型的软件测试管理应用模型研究[J].计算机工程与设计,2006,27(11):1993-1995.

[11] 张晓雯,徐东.基于工作流的软件测试H模型研究[J].软件导刊,2013,12(2):24-26.

[12] 耿晓伟,刁文涛.基于改进喷泉模型的软件测试的研究[J].信息技术与信息化,2009(3):35-38.

(责任编辑:江 艳)

猜你喜欢
软件测试车轮模型
重要模型『一线三等角』
基于OBE的软件测试课程教学改革探索
重尾非线性自回归模型自加权M-估计的渐近分布
车轮的位置
车轮开启赴爱之旅
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
3D打印中的模型分割与打包
软件测试工程化模型及应用研究
FLUKA几何模型到CAD几何模型转换方法初步研究