張 靜,于 琪(南京新聯電子股份有限公司,210005)
?
瀑布開發與敏捷開發中測試與開發的配合
張 靜,于 琪
(南京新聯電子股份有限公司,210005)
摘要:傳統的瀑布開發方式對于如何應對頻繁變化的軟件需求有明顯的不足,部分電力行業或工控行業的軟件開發公司正轉向使用敏捷開發方式。而敏捷開發方式中對測試工作的要求不能從互聯網企業的敏捷開發方式中生搬硬套過來。本文對比了瀑布開發方式中測試與開發的配合流程,提出了適用電力或工控等傳統行業的敏捷開發方式中測試如何與開發配合的建議。
關鍵詞:瀑布開發;敏捷開發;測試與開發配合;測試人員素質要求
電力或工控等傳統行業的軟件開發有其“有明確的國網或行業標準,需求比較固定、變動不頻繁”等特點,而這些特點正是瀑布式開發在傳統行業大行其道的根本原因。
隨著新技術不斷引入電力或通信等傳統行業,以及很多地方用戶對軟件功能提出各種變更性建議,很多傳統行業的軟件開發公司開始嘗試使用敏捷開發方式來管理軟件開發過程。
傳統行業的軟件對質量要求一直遵循“高標準、嚴要求”的質量標準,測試工作作為質量保證的一種手段,不能因為開發方式的變動而被弱化。
因為敏捷開發首先是在互聯網行業興起并被廣泛使用,所以帶有互聯網行業的特點:用戶體驗勝于軟件的正確性。而在傳統行業這種對操作安全性和軟件質量要求更加嚴格的行業,不能簡單地將互聯網行業中的敏捷開發的測試工作內容生搬硬套過來。
由于以上這些情況,本文提出了電力或工控等傳統行業中使用敏捷開發方式適用的測試方法和流程。
該測試方法和流程經過在公司內部一年半的使用過程中,取得了良好的效果:測試工作的壓力從瀑布模型的后期集中爆發變成均衡地釋放,測試發現Bug的有效率也有相應提高。
1.1瀑布式開發模式中測試與開發的配合
瀑布式開發模式中,測試與開發的配合可以歸結為一下幾點內容:
1)及時介入,了解需求。
測試人員在需求了解進度上需要和開發人員保持一致,為保證后面的測試計劃編制打下基礎。
2)并行設計,相互審查,保證設計質量(開發寫設計文檔,測試寫測試用例)
需求評審結束后,開發人員寫開發文檔,測試人員可以結合開發的設計文檔編寫測試用例,編寫的過程也是一個對開發文檔進行評審的過程,同樣,當測試人員寫好用例以后,開發人員也要評審測試用例,以發現用例不完善之處,經過這個環節以后,即可以保證開發的設計文檔被測試理解,也可以保證測試用例是覆蓋設計文檔和需求文檔的。
3)持續集成,回歸測試保證代碼質量
在軟件基線版本出來以后,就可以進行回歸測試,這樣發現的Bug及時提交給開發人員進行Bug修復。在Bug修復后進行新的回歸測試,保證代碼質量的穩定性。為了將這個迭代過程不斷進行下去,開發和測試都需要將持續集成服務器的項目構建作為一件重要的事情看待。
瀑布開發模式中,測試與開發的配合流程如圖1所示:
1.2敏捷開發模式中測試與開發的配合
敏 捷 開 發 有 很 多 類 型:Lean(精 益 )、XP(Extreme Programming,極限編程)、Scrum等。
本文以Scrum這種敏捷方式為例。Scrum的每個迭代周期稱為一個Sprint,一般2或3周。每個Sprint中,都會選擇一些功能(Scrum中稱為“用戶故事”)來完成,與瀑布開發不同的是,這些功能(用戶故事)是包含文檔、開發、測試等內容的一個完整交付。
迭代完成一個個可交付的軟件版本,將設計、開發、測試融入到每個Sprint進行迭代;而不是按階段地進行項目流程劃分。

圖1 瀑布開發中測試與開發的配合流程
這是敏捷開發與瀑布開發模式的區別所在。
敏捷開發方式可以用圖2來表示:

圖2 敏捷開發方式示意圖
按照這種開發方式,傳統軟件工程方法(瀑布式開發)中的回歸測試、系統測試(功能測試、性能測試、安全性測試)等難以被完整地覆蓋到。如何在使用敏捷開發方法的同時,又不降低測試質量是亟待處理的一個問題。
對于這個問題,本文建議將迭代周期(Sprint)區分為2中:Functional Sprint與Hardening Sprint。
1.2.1Functional Sprint
一個開發功能完成,開發人員進行要執行單元測試,測試人員進行:新增功能的功能測試和可接受性測試(“簡單的回歸測試”),此外,可根據需要進行一些安全性測試、壓力測試。
如果測試人員發現Bug,可以放入下一個Sprint,配合流程見圖3所示:

圖3 Functional Sprint測試與開發配合流程
具體的配合方式如圖4所示:

圖4 Functional Sprint測試與開發配合方式
1)當組件基本開發完畢,開發人員將任務單放在自測欄下面。
2)如果準備將該組件提交測試,開發人員將任務單放在測試欄下面。
3)如果組件通過測試,測試人員將任務單放在完成欄下面。這樣一個組件就走完了整個開發流程。
1.2.2Hardening Sprint
Hardening Sprint的周期要比Functional Sprint周期長,一般為4~8周。
這個過程中,開發人員不再開發新功能,主要是修復Bug。測試人員進行的主要是回歸測試+系統測試。
假設Hardening Sprint能夠進行2次系統測試。在進行第一輪系統測試時,封存軟件版本;系統測試結束后,開發人員修復Bug,測試人員進行迭代的回歸測試。影響軟件發布的Bug解決后,測試人員進行第二輪系統測試,并封存軟件版本。
Hardening Sprint測試與開發的配合流程如圖5所示。
不管是采用瀑布開發還是敏捷開發,對測試人員的素質要求是一致的。測試人員的素質框圖如圖6所示:
測試人員所需要具有的關鍵素質或能力可以概括為:
1)理解軟件測試在整個軟件工程中的流程,軟件測試如何與軟件需求、軟件架構設計、軟件開發、軟件驗收和發布等階段進行配合。撰寫測試計劃。
2)對所測試的軟件有較強的業務理解:根據軟件需求和開發功能的要求,拆分出測試原始需求,能夠根據“用戶場景分析”和“功能交互分析”進一步將測試需求分析為測試項。進行測試分析,并撰寫測試方案。
3)熟悉軟件測試的工程方法:能夠利用“功能分解法”、“等價類劃分法”和“邊界值分析法”等工程方法,根據測試項設計出測試用例。
本文分析了瀑布開發與敏捷開發中測試人員如何與開發進行工作配合,以及在兩種開發模式中測試人員的工作內容。并對兩種開發模式中對測試人員的統一素質要求進行了總結。
參考文獻
[1] 曹向志.軟件測試項目實戰:技術、流程與管理[M]. 電子工業出版社, 2010.
Cao Xiang-zhi.Software testing project Combat: technology,process and management[M].Electronic Industry Publishing House, 2010.
[2] Mike Cohn.用戶故事與敏捷方法[M].清華大學出版社,2010.
Mike Cohn.User Stories Applied:For Agile Software Development [M].Tsinghua university press, 2010.
[3] Andrew Pham.Scrum實戰——敏捷軟件項目管理與開發[M]. 清華大學出版社, 2013.
Andrew Pham. Scrum combat -- agile software project management and development[M].Tsinghua university press,2013.
[4] Ken Schwaber. 30天軟件開發:告別瀑布擁抱敏捷[M].人民郵電出版社, 2014.

圖5 Hardening Sprint測試與開發配合流程

圖6 測試人員的素質要求
Ken Schwaber.30 days of software development: Farewell waterfall embrace agile[M].People's Posts and Telecommunications Press,2014.
[5] Patton,R.軟件測試[M].機械工業出版社,2006.
Patton,R.Software testing.[M].Machinery Industry Press,2006.
[6] 楊波.一種軟件測試需求建模及測試用例生成方法[J]. 計算機學報, 2014/03, 37(3):522-538.
Yang Bo.An Approach of Modeling Software Testing Requirements[J].Chinese journal of computers,2014/03,37(3): 522-538.
Test work combined with development in waterfall development model and agile development model
Zhang Jing,Yu Qi
(Nanjing Xinlian electronic Ltd.,210005)
Abstract:Traditional waterfall development method has obvious shortcomings for how to deal with the frequent software development changes.Some software development companies domain in power system or industry control are turning to the use of agile development.However,the requirements for testing in the agile development mode cannot be copied from agile development mode used in Internet companies.This paper compares the test combined with development process used in the waterfall development method,and puts forward the advice on how test cooperate with development in agile that suitable to traditional area such as power or industry .
Keywords:Waterfall development;Agile development;Test coordinate with development;Quality requirements for testers
作者簡介
張靜(1989-),女,工程師,本科,主要從事電力系統自動化方面的測試工作。
于琪(1984-),男,項目經理,碩士,主要從事軟件開發管理工作