摘 要
在银行业竞争加剧,产品推陈出新日益加快的大背景下,敏捷开发越来越受到银行IT部门的关注。测试是IT领域中不可或缺的一环,但在目前银行IT领域内,专门针对敏捷测试开展的研究还不多见。本文首先分析了国内外敏捷测试的研究现状,然后,阐述了银行IT领域中敏捷测试的实施流程,最后,针对敏捷测试实施过程中的关键问题进行了分析,以更好地推动敏捷测试在银行IT领域中的运用。
【关键词】银行IT领域 敏捷测试 及时反馈 持续测试 Scrum
1 引言
随着银行业竞争的日益白热化,快速发布产品并迅速适应客户需求变化成为银行竞争的重中之重,银行传统的科技开发工作模式面临着严峻的考验,敏捷开发具有“快速迭代、适应变化、频繁交付”的特点,逐渐成为银行IT部门关注的焦点。无论是敏捷原则中的“频繁交付”,还是对“可工作软件”的度量,抑或是敏捷开发实践中的“测试驱动开发(TDD)”,“行为驱动开发(BDD)”,都离不开软件测试的支持,测试是科技开发工作当中不可或缺的组成部分。敏捷开发的开展对传统测试模式带来了极大的冲击和挑战,更快的迭代周期要求测试在更短时间内完成,更频繁的变化(需求或设计)要求测试更具有探索性和适应性,更少的文档使得越来越难以依赖文档设计测试。另外,银行业务需求变化频繁、开发规模庞大,采用传统测试模式使测试人员经常面临测试周期短、测试任务量大等情况。因此,开展敏捷测试在银行IT领域中的探索和研究,对于应对敏捷开发的挑战,提高测试工作效率,进而推动业务产品交付效率提升具有至关重要的意义。
目前,业界针对敏捷测试尚无统一定义,但敏捷测试可以理解为是遵循敏捷宣言的一种测试实践:
(1)强调从客户的角度,即从使用系统的用户的角度来测试系统。
(2)重点关注持续迭代地测试新开发的功能,而不再强调传统测试过程中严格的测试阶段。
(3)建议尽早开始测试,一旦系统某个层面可测,比如提供了模块功能,就要开始模块层面的单元测试,同时随着测试深入,持续进行回归测试保证之前测试内容的正确性。简而言之,敏捷测试就是通过持续地对软件质量问题进行及时地反馈,确保软件产品满足用户需求,强调“持续测试”和“及时反馈”。
2 现状分析
软件工程经过数十年的探索,形成了多种经典的软件开发模式,例如瀑布式模型、螺旋式模型等。这些模型使得软件开发从最开始的混乱变得可控。然而,软件本身涉及的业务越来越复杂,传统的软件开发模式已越来越跟不上市场发展的步伐。为了克服传统软件工程中认识和实践的弱点,敏捷方法应运而生。
从2001年敏捷宣言诞生至如今,敏捷过程在全球范围内成为最受欢迎的软件开发模式。敏捷模式已经在互联网、电信等领域得到应用,对软件开发的推广和实践产生了深远的影响。随着敏捷方法理论和实践的不断发展和完善,ThoughtWorks,Google,Microsoft,IBM,Amazon等著名企业也已在大规模软件开发中应用敏捷模式。虽然这些敏捷方法各有侧重,但也有一些共性特点,强调高度迭代,频繁交付以及适应变化,并且都强调测试贯穿整个软件开发生命周期。
2.1 敏捷测试在国外的研究现状
随着敏捷方法的发展,对敏捷测试的研究和讨论也在不断发展。敏捷测试是遵循敏捷宣言的一种测试实践,它强调从客户的角度,即从用户的角度来测试。敏捷测试重点关注迭代地测试新开发的功能,而不再强调传统测试中严格的测试阶段。在驱动开发方面,TDD(测试驱动开发)的提出,保证程序员最开始就把代码写对,也解决了代码可测试性的问题,从而在代码层次上实现缺陷的预防。然而实际应用当中,多数项目周期非常短,没有足够时间实施TDD,多数程序员也不愿意主动去实施TDD,因此,TDD的效果有较大争议。2007年,Lasse Koskela提出ATDD,即验收测试驱动开发,也叫用户故事驱动开发。这种敏捷测试方法强调测试用例应当与整个系统的需求用例保持高度一致。在ATDD的基础上,BDD(行为驱动开发)方法被提出,BDD使用近乎自然语言的方式描述软件的行为过程,可以直接作为软件的需求文档,也可以直接应用到测试中,作为测试的标准文档。
在自动化测试方面,越来越多的敏捷测试自动化框架被推出并受到关注,例如RobotFramework,Thoughtworks Mingle组合Cruise和Twist等,还有一些能够适应ATDD和BDD的测试工具,如Cucumber,RSpec以及JBehave等。为了避免将测试过程过度自动化,造成测试人员对产品功能点的忽视,领域专用语言(DSL)在自动化测试中得到了应用。同时,为了更好地应对自动化测试的盲点,探索式测试成为敏捷测试的研究热点。
2.2 敏捷测试在国内的研究现状
国内专门针对敏捷测试的研究相对较少。周波等人针对敏捷过程中由于快速应对变化导致的测试覆盖充分性与测试进度压力的矛盾冲突,从测试管理的角度,分析了敏捷测试中的组织形式、测试策略和过程管理流程。唐亚男等人对传统测试向敏捷测试的转变进行了研究,但仅对转变过程给出原则性建议。另外,蔡长霞等人研究了基于敏捷理论的自动化测试方法,该文献描述了在GUI层面简单功能的自动化测试,针对更为复杂功能的自动化测试尚未涉及。
2.3 敏捷测试在国内银行业的研究现状
针对国内银行业而言,针对敏捷测试的专项研究较少,研究主要集中于敏捷开发。例如:姚琥等人分别从开发过程定义、开发团队组建、日常管理、文档书写、需求研制、领域驱动涉及模型驱动开发等多个方面对中国农业银行实施敏捷开发的经验进行了总结。杨雷等人就中国工商银行开展敏捷测试提升研发效率的经验进行了梳理概括。刘伟等人分别从结对编程机制,测试资源共享两方面对光大银行的敏捷开发机制进行了阐述。endprint
由上述研究现状可知,目前还存在以下问题:
(1)大多数研究集中于敏捷开发,尤其是在国内银行业中,较少有针对敏捷测试展开专项的系统化的研究。然而无论是敏捷原则中的频繁交付,还是对可工作软件的度量,或是敏捷开发实践中的测试驱动开发(TDD),行为驱动开发(BDD),都离不开测试的支持。因此,针对敏捷测试还有很大的研究空间。
(2)目前,多数研究主要集中在通用的方法论层面,少有针对具体应用领域的研究,敏捷测试在特定领域的最佳实践还未形成。因此,无论是从银行业务迫切发展的需要,还是从目前研究现状的不足而言,开展敏捷测试在银行IT领域中的探索和研究都具有重要的理论价值和应用价值。
3 敏捷测试实施流程
在敏捷的具体实施方法中,Scrum是目前业界最为流行和最为有效的敏捷方法之一。
在敏捷测试的场景下,Scrum可包括三种角色:Scrum Master、团队负责人、测试团队。
(1)Scrum Master主要负责研习Scrum框架及Scrum的实践,通过提供支持和辅导以帮助其他角色正确地实施Scrum,并协助团队消除限制团队生产力的障碍。
(2)团队负责人主要负责掌握测试项目的整体进度、组织测试资源、审核测试项目的交付物等工作。
(3)测试团队则主要负责测试工作的具体实施,迭代增量式地开展测试工作。
在Scrum中,项目一般划分为多个迭代周期,Scrum中将每个迭代周期称为一个Sprint。每个Sprint通常为1-4周。每个Sprint主要包括以下内容:
(1)Sprint计划会议:Sprint开始时,团队负责人与团队交流确认当前Sprint可以完成的任务,并形成当前Sprint的工作计划。
(2)Scrum站立会议(日会):每天15分钟,测试团队成员相互分享工作进展情况,团队负责人对团队整体进度和风险进行把控。
(3)Sprint评审会议:Sprint结束时,测试团队向团队负责人及相关干系人介绍当前Sprint完成的任务,进行演示并收集反馈。
(4)Sprint回顾会议:Sprint结束时,团队通过对刚刚结束的Sprint进行回顾反思,确定继续提高的目标、制定切实可行的措施,并于下一个Sprint中确保执行以实现提升。
4 关键问题分析
在银行IT领域开展敏捷测试时,需要特别关注如下问题:
(1)传统测试如何向敏捷测试过渡。目前,银行科技开发多采用瀑布模式,测试是开发之后的一个环节,整个瀑布模式强调计划性、规范性、注重过程建设和工具的使用,这既有历史原因,也与银行信息系统具有系统规模庞大、系统关联性较强、运行稳定性要求极高等自身特点有关。而敏捷测试遵循“响应变化胜过遵循计划、可工作的软件胜过面面俱到的文档,个体交互胜过过程和工具”等理念。两者在理念上存在差异,因此,传统测试过渡至敏捷测试有一定难度。
(2)引入敏捷测试模式之后,开发与测试如何协作。开发和测试的协作与商业银行科技IT部门的组织架构有关。商业银行科技IT部门的架构各不相同。从测试角度看,可以划分为:有独立的测试组织和无独立的测试组织。从测试组织的职能来看,测试组织所负责的测试活动也不完全相同,有些侧重于系统测试,有些侧重于用户验收测试,有些侧重于测试管理工作。不同的组织架构、不同的测试工作侧重点,对应的敏捷测试实施场景将有所不同,因此,开发和测试如何协作,需根据IT部门的实际情况来确定。
(3)自动化测试在敏捷测试中处于何种地位。自动化测试和敏捷测试的最终目的都是有效提升测试工作效率。但是敏捷测试具有“需求不断变化、交付较为频繁”的特点,而自动化测试在需求较为稳定的回归测试场景下则更加适用,因此,如何实现自动化测试与敏捷测试的有机结合,综合发挥自动化测试和敏捷测试的优势是关键。
(4)敏捷测试如何进行管理。因银行科技开发工作有其自身的特点,不是所有的信息系统开发均适合采用敏捷测试模式,未来极有可能是敏捷测试和传统测试并存的混合测试模式,这对测试管理工作带来了巨大的挑战,因此,如何建立涵盖敏捷测试和传统测试的测试管理体系也是关键。
5 结语
本文从当前银行IT领域测试工作面临的挑战入手,通过分析敏捷测试开展的现状,指出敏捷测试研究的必要性和重要性。然后,描述了银行IT领域敏捷测试的实施流程,最后对敏捷测试在银行科技开发中的若干关键问题进行了讨论,旨在为银行IT领域中实践敏捷测试提供借鉴和参考。
参考文献
[1]李季.敏捷测试实践与相关问题研究,[D].北京交通大学,2010.
[2]Kent Beck,James Grenning,Robert C.Martin et al.Manifesto for Agile Software Development.Agile Alliance,2001.
[3]Jungyub Woo,Nenad Ivezic,Hyunbo Cho.Agile test framework for business-to-business interoperability.April 12,2011,Inf Syst Front(2012)14:789-808.
[4]Eliane Collins,Arilo Dias-Neto, Vicente F.Strategies for Agile Software Testing Automation: An Industrial Experience.IEEE 36th International Conference on Computer Software and Applications Workshops,2012.
[5]张扬,黄厚宽.测试驱动开发及开发实践[J].计算机技术与发展,2006,16(5):74-76.
[6]Lasse Koskela.Test Driven:TDD and Acceptance TDD for Java Developers.USA:Manning Publications,2007.
[7]Dan North.Introducing BDD. Better Software,2006,15(3):103-107.
[8]方敏,张胜等译.探索式软件测试.[M].北京:清华大学出版社,2010.
[9]周波,郭盈.敏捷测试管理探讨[J].信息安全域技术,2011.05:84-86.
[10]唐亚男,王振一.敏捷测试综述[J].硅谷,2011.05:133-134.
[11]蔡长霞,刘建平,刘娟娟.基于敏捷测试的自动化技术分析与实践[J].工业控制计算机,2011.10(24):59-60.
[12]姚琥,吴旭春.敏捷开发模式创新及应用实践[J].金融电子化,2013.04:59-60.
[13]杨雷.敏捷开发提升研发效率[J].金融电子化,2013.04:61.
[14]刘伟,龚荣荣,潘竹.敏捷开发机制分享[J].金融电子化,2013.04:62.
[15]王江平译.敏捷开发的艺术[M].北京:机械工业出版社,2009.
作者简介
曹栋(1983-),男,山西省人。博士学位。现在供职于上海浦东发展银行。研究方向为测试管理。
作者单位
上海浦东发展银行 上海市 200000endprint