王 倩 唐蘭文 吳海燕
(中汽數(shù)據(jù)〈天津〉有限公司,中國 天津 300180)
隨著互聯(lián)網(wǎng)行業(yè)的快速發(fā)展,企業(yè)之間的競爭力日趨激烈,對于快速變化的用戶需求,高質(zhì)量、快速度的項目開發(fā)能力越來越受大家歡迎。而現(xiàn)在的軟件項目,普遍現(xiàn)象是在各種原因背景下開發(fā)過程不斷延期,測試時間不斷壓縮,導致最后測試人員沒有充足的時間去發(fā)現(xiàn)、挖掘業(yè)務邏輯性的bug,更沒有信心交付產(chǎn)品。甚至,有些項目的需求一直未敲定或不斷需求變更,導致開發(fā)修改太多版本,無法交付至測試手中,最后項目時間緊迫、壓縮,約定時間內(nèi)給客戶演示手忙腳亂,成果漏洞百出。為了更好地聚焦研發(fā)產(chǎn)品的商業(yè)價值、有效地應對客戶需求變化的業(yè)務環(huán)境、提高研發(fā)效率和產(chǎn)品質(zhì)量、提升產(chǎn)品的客戶滿意度,在新產(chǎn)品研發(fā)項目的開發(fā)階段、以及軟件產(chǎn)品維護階段引入Scrum敏捷開發(fā)方式。本文嘗試基于Scrum開展敏捷測試應用進行概述。
敏捷開發(fā)方法是一類軟件開發(fā)的泛稱,其核心是測試驅(qū)動開發(fā),整個開發(fā)過程靈活可變。與傳統(tǒng)的瀑布模型開發(fā)模式不同,敏捷開發(fā)是以用戶需求變化為核心,能快速響應用戶需求變化的一種開發(fā)模式,更適應現(xiàn)今快速變化的用戶需求。另外,敏捷測試有更大的優(yōu)勢,主要表現(xiàn)在測試人員和開發(fā)人員面對面溝通,節(jié)省了復現(xiàn)bug、提交bug和關閉bug時間,極大地降低了溝通成本,提高了溝通效率,及早地發(fā)現(xiàn)并解決了需求文檔和代碼問題。并且迭代測試由于功能點越來越多,測試點越來越多,可引入必要的自動化測試,進行模塊復用,減少人力投入,加快項目進度。
Scrum是當前應用中最廣泛的敏捷開發(fā)方法。流程清楚簡單,適用于敏捷測試經(jīng)驗不足的團隊,因此就此概述。
由于Scrum把整個開發(fā)測試團隊比作一個有明確的更高目標,具有高度自主權。緊密地溝通合作,以高度彈性解決各種挑戰(zhàn),確保每天、每個階段都朝向目標有明確的推進的橄欖球隊,所以命名直接來源于英式橄欖球爭球隊形(Scrum)。Scrum流程可以理解為,在一個軟件生命周期中,將整個開發(fā)周期分成若干個小的迭代周期,在每個迭代周期中,存在著三個主要角色(PO、Master和Team)一直貫穿項目的生命線,來把控整個團隊的開發(fā)和測試節(jié)奏,以保障項目順利迭代完成交付。
三個角色:產(chǎn)品負責人 PO(Product Owner)、項目經(jīng)理Master(Scrum Master)和產(chǎn)品研發(fā)團隊Team(Scrum Team);四個會議:Sprint計劃、Sprint驗收、Sprint回顧、每日站立會議;三個輸出:Productbacklog、Sprintbacklog、Sprint燃盡圖。
在敏捷開發(fā)模式中,需求管理是個持續(xù)的過程,PO要負責對納入本項目的需求進行持續(xù)收集、分析、細化,對需求相關文檔(業(yè)務需求列表、軟件需求說明書、Product Backlog)進行即時刷新、歸檔、基線,并完成Product Backlog中Story進行優(yōu)先級排序。項目團隊共同完成Story的估算。Master領導團隊實現(xiàn)Scrum的實踐及價值,排除團隊遇到的困難,確保團隊能勝任工作并保持高生產(chǎn)率,促使團隊中所有的角色及其功能緊密合作。Team由編程、測試、用戶界面設計、資料寫作等全職團隊成員組成,團隊內(nèi)部實現(xiàn)自我組織和管理。
Scrum共分為四個步驟。會前準備階段,產(chǎn)品負責人整理業(yè)務需求,形成 Product Backlog,組織對story進行規(guī)模估計,并確定迭代周期長度。項目開始階段,以Sprint為單位迭代式地完成Sprint Backlog。項目執(zhí)行階段,每個Sprint以迭代計劃開始,通過每日站立會議跟蹤進度和issue。項目結(jié)束階段,每個Sprint完成后,通過Sprint回顧發(fā)現(xiàn)問題和改進點,制定下個Sprint要引入的新的實踐。Sprint結(jié)束時交付可運行的產(chǎn)品。
研發(fā)項目以“立項”開始,以“考核結(jié)項”結(jié)束,在進入迭代開發(fā)之前,需要梳理需求,完成系統(tǒng)架構的設計,以及一些敏捷準備工作。整個Scrum流程,核心更多在于Scrum迭代開發(fā)與測試的環(huán)節(jié)。敏捷測試流程如圖1。
圖1 基于Scrum的敏捷開發(fā)的流程圖
流程中需求開發(fā)節(jié)點至驗收發(fā)布節(jié)點,每個節(jié)點,都需要有相應的文檔輸出,若時間有限,可省去部分文檔的產(chǎn)出,保證迭代結(jié)果符合上線標準即可。具體的輸出文檔如圖2。
圖2 Scrum流程節(jié)點輸出文檔
一個產(chǎn)品的生命周期短則幾個月,長達1年,如果產(chǎn)品負責人起初對項目規(guī)劃模糊不清,后續(xù)團隊運作會出現(xiàn)接二連三的問題,最直觀的一項就是成本問題。第一,外跑業(yè)務的員工不熟悉一個項目開發(fā)過程,承諾客戶短時間交付產(chǎn)品,導致產(chǎn)品研發(fā)團隊,一方面為滿足給客戶按期交付,加班趕工,時間和人力成本過多,最后項目的實際總投入成本遠大于客戶報價。另一方面對于不可實現(xiàn)的需求,反復解釋并反饋給客戶溝通,加大了所有人的時間成本,也降低了客戶對這個產(chǎn)品的滿意度及對團隊人員的期望值。第二,Scrum團隊人員未經(jīng)過專業(yè)培訓,不僅個人性格突出,且不熟悉迭代流程,團隊默契度不高,無形中加大了項目阻力,消耗的成本直線上升。
在阻礙項目進展中,主觀因素也會起很大的作用。首先,可能PO、Master責任心不高,或者PO、Master同時肩負太多項目,無法做到全程監(jiān)控并且推動項目的工作,導致項目運行不暢甚至阻塞。其次,研發(fā)產(chǎn)品團隊沒有足夠的專業(yè)技術知識,無法從用戶角度出發(fā)設計,缺少靈活性,造成項目延期。最后,可能有些公司迭代Team中存在一些從其他公司借來的外援,研發(fā)過程中不好管理外援并且人員流動可能性很大,導致團隊內(nèi)部人員經(jīng)常換新,代碼地雷越埋越多。
為了滿足現(xiàn)今快速變化的用戶需求,敏捷測試的推進勢在必行。測試人員需要快速熟練掌握敏捷測試流程,改變傳統(tǒng)測試的思維,提高自己的敏捷測試能力,才能趕上社會科技發(fā)展的潮流。另外,流程的細節(jié)、文檔的規(guī)范,傳統(tǒng)測試中的一些方法應用到敏捷測試中等,需要深入探討的問題仍然很多。軟件開發(fā)企業(yè)若想在這時代潮流中脫穎而出,就要勇于創(chuàng)新,團隊協(xié)作,找出最適合自己的一套敏捷測試流程和方案。