摘 要
在銀行業競爭加劇,產品推陳出新日益加快的大背景下,敏捷開發越來越受到銀行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-),男,山西省人。博士學位?,F在供職于上海浦東發展銀行。研究方向為測試管理。
作者單位
上海浦東發展銀行 上海市 200000endprint