李彥威
摘要:敏捷開發(fā)倡導(dǎo)的就是迭代式和增量式的開發(fā)模式,并且強調(diào)測試在開發(fā)過程中的重要性。主要是圍繞以用戶為中心,以客戶需求為導(dǎo)向的開發(fā)過程,這個過程有一個特點就是“隨時有變化”。雖然敏捷開發(fā)引入了靈活性,但其中的重點還是在于客戶滿意度??蛻羰敲艚葸^程的關(guān)鍵環(huán)節(jié)。如果,客戶能夠有所參與,并且客戶了解到開發(fā)對于他們參與的歡迎,那么有助于增加客戶對最終產(chǎn)品和開發(fā)team的信心和滿意度。如果客戶由于其他原因不愿意參與進來,那么選擇傳統(tǒng)的開發(fā)流程更好。敏捷開發(fā)有三個比較明顯的特征:依賴客戶完成,測試驅(qū)動和緊湊的開發(fā)周期。
關(guān)鍵詞:敏捷開發(fā);軟件測試;軟件開發(fā);敏捷測試
前言:
敏捷開發(fā)是針對傳統(tǒng)的瀑布開發(fā)模式的弊端而產(chǎn)生的一種新的開發(fā)模式,目標是提高開發(fā)效率和響應(yīng)能力。敏捷開發(fā)過程中,很多時候測試人員就時常被當成項目無法加快的阻力,一下這邊出一個bug,那邊有個缺陷,所以項目經(jīng)理痛恨測試,程序員們也巴不得測試快快放行,讓程序好好上線,但我們都知道沒有通過測試的軟件是不能硬上線的,測試是把守項目上線最后一關(guān)的,若把關(guān)不到位,可能隨時會導(dǎo)致項目延遲。
一、敏捷開發(fā)的概念及價值觀
(一)什么是敏捷開發(fā)
敏捷開發(fā)以用戶的需求進化為核心,采用迭代、循序漸進的方法進行軟件開發(fā)。在敏捷開發(fā)中,軟件項目在構(gòu)建初期被切分成多個子項目,各個子項目的成果都經(jīng)過測試,具備可視、可集成和可以運行使用的特征。換言之,就是把一個大項目分為多個相互聯(lián)系,但也可獨立運行的小項目,并分別完成,在此過程中軟件一直處于可使用狀態(tài)。
(二)敏捷開發(fā)的價值觀
敏捷其實就是一伙程序員被繁重的過程模型所束縛,為了能跳出來,而聚到一起發(fā)表的一份宣言。其實敏捷開發(fā)就是這一份宣言中強調(diào)的四條價值觀:
(1)個體與交流比流程和工具更有價值
(2)可用的軟件比冗長的文檔更有價值
(3)與客戶的協(xié)作比合同談判更有價值
(4)對變化的響應(yīng)比遵循計劃更有價值
我們要正確認識敏捷,就要從這四條價值觀觸發(fā)。切忌把敏捷當作一種超越了瀑布、V&V;等傳統(tǒng)模型的新模型,只要照著它的流程做就可以。
二、敏捷測試的概念及特點
(一)敏捷測試的概念
敏捷測試就是敏捷開發(fā)中的測試,屬于協(xié)同測試的一種。敏捷測試要求每一個人都要參與到測試的設(shè)計,實現(xiàn)和執(zhí)行中,客戶通過定義用例以及程序樹形參與到定義驗收測試的設(shè)計中來。開發(fā)和測試合作打造可以進行功能自動化的測試配件。敏捷測試需要每一個人的參與,所以對溝通和協(xié)作要求比較高。敏捷測試依賴于自動化測試,因為測試的周期短,時間寶貴,自動化測試比人工測試更可靠。而測試者不僅僅發(fā)現(xiàn)問題并反饋給相應(yīng)的開發(fā),更重要的是通過持續(xù)的測試反饋推動項目前行,幫助開發(fā)修改bug,改變需求設(shè)計以及其他的一般性質(zhì)量提升。
(二)敏捷測試的特點
1強調(diào)從客戶角度進行測試
2重點關(guān)注迭代測試新功能,不強調(diào)測試階段,不強調(diào)單元測試,系統(tǒng)測等測試階段的劃分
3強調(diào)盡早測試,不間斷測試,具備相應(yīng)的條件就開始測試
4強調(diào)持續(xù)反饋,測試發(fā)現(xiàn)的問題,狀況等反應(yīng)給相關(guān)的同事
5預(yù)防缺陷重于發(fā)現(xiàn)缺陷
6開發(fā)和測試是緊密合作的,大家都對軟件有責(zé)任
7計劃隨著進展時常調(diào)整
8所有階段都需要自動化的參與,每個人都需要做,是項目集成的一部分
9團隊合作是無縫合作,沒有嚴格區(qū)分開發(fā)團隊和測試團隊。團隊的相關(guān)角色及時知曉研發(fā)的現(xiàn)狀并及時改正
三、測試人員應(yīng)該如何參與敏捷
敏捷開發(fā)本身沒有對測試人員有明確的定位,從用戶故事、結(jié)對編程、測試驅(qū)動開發(fā)、持續(xù)集成、迭代驗收這些實踐來看,測試人員可以參與用戶故事中關(guān)于定義完成的部分,為了能夠做到持續(xù)集成,測試人員在開發(fā)進行編程的同時,可以進行自動化測試用例的設(shè)計和實現(xiàn),如果有一定編程能力,也可以參與結(jié)對編程。最后也可以主持迭代驗收。但是不管從什么角度講,測試人員要參與敏捷,都需要有比較過硬的技術(shù)才行。
舉個例子,敏捷開發(fā)的迭代節(jié)奏非???,而且持續(xù)集成要求測試必須可以反復(fù)的執(zhí)行,所以測試自動化的要求訴求非常大,但是在敏捷開發(fā)過程中,我們不能采用錄制回放的方式進行自動化測試,錄制回放是回歸測試的做法,必須等待可測軟件編碼已完成,但這種做法對快節(jié)奏的迭代來說太沒效率了,會拖長迭代周期。測試的自動化用例實現(xiàn)必須和被測軟件編碼是同步進行的,這樣才能在持續(xù)集成中每天都有新集成,每天都有測試。不能依賴錄制回放,必須完全手工編程來實現(xiàn)自動化用例,這就需要測試人員有非常好的編碼能力。
綜上所述,測試在項目的早期就必須參加,熟悉需求,并從測試角度提出各種問題,確保產(chǎn)品經(jīng)理、開發(fā)、測試的等角色的關(guān)注點都有備考量到,而測試也會從早期就開始撰寫測試用例,在撰寫過程中如果有發(fā)現(xiàn)任何問題也趁早反饋給產(chǎn)品經(jīng)理、項目經(jīng)理,趁早把問題給理清,這樣做測試才能把自己的角色提升到為質(zhì)量負責(zé)的角色
參考文獻:
[1]楊駿等.關(guān)于敏捷開發(fā)項目中軟件測試方法的研究[J].工程技術(shù),2011,02(05):70-71.
[2]宋易欣.基于看板管理方法的敏捷軟件開發(fā)研究[D].北京郵電大學(xué),2013