王 倩 唐蘭文 吳海燕
(中汽數據〈天津〉有限公司,中國 天津 300180)
隨著互聯網行業的快速發展,企業之間的競爭力日趨激烈,對于快速變化的用戶需求,高質量、快速度的項目開發能力越來越受大家歡迎。而現在的軟件項目,普遍現象是在各種原因背景下開發過程不斷延期,測試時間不斷壓縮,導致最后測試人員沒有充足的時間去發現、挖掘業務邏輯性的bug,更沒有信心交付產品。甚至,有些項目的需求一直未敲定或不斷需求變更,導致開發修改太多版本,無法交付至測試手中,最后項目時間緊迫、壓縮,約定時間內給客戶演示手忙腳亂,成果漏洞百出。為了更好地聚焦研發產品的商業價值、有效地應對客戶需求變化的業務環境、提高研發效率和產品質量、提升產品的客戶滿意度,在新產品研發項目的開發階段、以及軟件產品維護階段引入Scrum敏捷開發方式。本文嘗試基于Scrum開展敏捷測試應用進行概述。
敏捷開發方法是一類軟件開發的泛稱,其核心是測試驅動開發,整個開發過程靈活可變。與傳統的瀑布模型開發模式不同,敏捷開發是以用戶需求變化為核心,能快速響應用戶需求變化的一種開發模式,更適應現今快速變化的用戶需求。另外,敏捷測試有更大的優勢,主要表現在測試人員和開發人員面對面溝通,節省了復現bug、提交bug和關閉bug時間,極大地降低了溝通成本,提高了溝通效率,及早地發現并解決了需求文檔和代碼問題。并且迭代測試由于功能點越來越多,測試點越來越多,可引入必要的自動化測試,進行模塊復用,減少人力投入,加快項目進度。
Scrum是當前應用中最廣泛的敏捷開發方法。流程清楚簡單,適用于敏捷測試經驗不足的團隊,因此就此概述。
由于Scrum把整個開發測試團隊比作一個有明確的更高目標,具有高度自主權。緊密地溝通合作,以高度彈性解決各種挑戰,確保每天、每個階段都朝向目標有明確的推進的橄欖球隊,所以命名直接來源于英式橄欖球爭球隊形(Scrum)。Scrum流程可以理解為,在一個軟件生命周期中,將整個開發周期分成若干個小的迭代周期,在每個迭代周期中,存在著三個主要角色(PO、Master和Team)一直貫穿項目的生命線,來把控整個團隊的開發和測試節奏,以保障項目順利迭代完成交付。
三個角色:產品負責人 PO(Product Owner)、項目經理Master(Scrum Master)和產品研發團隊Team(Scrum Team);四個會議:Sprint計劃、Sprint驗收、Sprint回顧、每日站立會議;三個輸出:Productbacklog、Sprintbacklog、Sprint燃盡圖。
在敏捷開發模式中,需求管理是個持續的過程,PO要負責對納入本項目的需求進行持續收集、分析、細化,對需求相關文檔(業務需求列表、軟件需求說明書、Product Backlog)進行即時刷新、歸檔、基線,并完成Product Backlog中Story進行優先級排序。項目團隊共同完成Story的估算。Master領導團隊實現Scrum的實踐及價值,排除團隊遇到的困難,確保團隊能勝任工作并保持高生產率,促使團隊中所有的角色及其功能緊密合作。Team由編程、測試、用戶界面設計、資料寫作等全職團隊成員組成,團隊內部實現自我組織和管理。
Scrum共分為四個步驟。會前準備階段,產品負責人整理業務需求,形成 Product Backlog,組織對story進行規模估計,并確定迭代周期長度。項目開始階段,以Sprint為單位迭代式地完成Sprint Backlog。項目執行階段,每個Sprint以迭代計劃開始,通過每日站立會議跟蹤進度和issue。項目結束階段,每個Sprint完成后,通過Sprint回顧發現問題和改進點,制定下個Sprint要引入的新的實踐。Sprint結束時交付可運行的產品。
研發項目以“立項”開始,以“考核結項”結束,在進入迭代開發之前,需要梳理需求,完成系統架構的設計,以及一些敏捷準備工作。整個Scrum流程,核心更多在于Scrum迭代開發與測試的環節。敏捷測試流程如圖1。

圖1 基于Scrum的敏捷開發的流程圖
流程中需求開發節點至驗收發布節點,每個節點,都需要有相應的文檔輸出,若時間有限,可省去部分文檔的產出,保證迭代結果符合上線標準即可。具體的輸出文檔如圖2。

圖2 Scrum流程節點輸出文檔
一個產品的生命周期短則幾個月,長達1年,如果產品負責人起初對項目規劃模糊不清,后續團隊運作會出現接二連三的問題,最直觀的一項就是成本問題。第一,外跑業務的員工不熟悉一個項目開發過程,承諾客戶短時間交付產品,導致產品研發團隊,一方面為滿足給客戶按期交付,加班趕工,時間和人力成本過多,最后項目的實際總投入成本遠大于客戶報價。另一方面對于不可實現的需求,反復解釋并反饋給客戶溝通,加大了所有人的時間成本,也降低了客戶對這個產品的滿意度及對團隊人員的期望值。第二,Scrum團隊人員未經過專業培訓,不僅個人性格突出,且不熟悉迭代流程,團隊默契度不高,無形中加大了項目阻力,消耗的成本直線上升。
在阻礙項目進展中,主觀因素也會起很大的作用。首先,可能PO、Master責任心不高,或者PO、Master同時肩負太多項目,無法做到全程監控并且推動項目的工作,導致項目運行不暢甚至阻塞。其次,研發產品團隊沒有足夠的專業技術知識,無法從用戶角度出發設計,缺少靈活性,造成項目延期。最后,可能有些公司迭代Team中存在一些從其他公司借來的外援,研發過程中不好管理外援并且人員流動可能性很大,導致團隊內部人員經常換新,代碼地雷越埋越多。
為了滿足現今快速變化的用戶需求,敏捷測試的推進勢在必行。測試人員需要快速熟練掌握敏捷測試流程,改變傳統測試的思維,提高自己的敏捷測試能力,才能趕上社會科技發展的潮流。另外,流程的細節、文檔的規范,傳統測試中的一些方法應用到敏捷測試中等,需要深入探討的問題仍然很多。軟件開發企業若想在這時代潮流中脫穎而出,就要勇于創新,團隊協作,找出最適合自己的一套敏捷測試流程和方案。