張麗 杜蘭 戴麗麗

摘要 隨著軟件行業的發展,敏捷理念在軟件開發過程中不斷推進和深入實施。采用Scrum方式的特性團隊,在一個迭代中完成功能的開發和驗證過程。系統測試團隊獲取交付功能后,在版本發布前如果仍然使用傳統測試方法,將很難發現深層次問題。探索式測試為系統測試提供了新的思路,那么如何進行探索則成為了一個關鍵性的話題。本文主要結合敏捷測試過程闡述探索式測試的概念和過程。
[關鍵詞]Scrum 敏捷測試 探索式測試
1 引言
目前在采用S crum方式的特性團隊中,測試活動由特性團隊的質量保證(QUALITYASSURANCE,縮寫為QA)人員根據測試設計方案完成。但是短平快的迭代周期降低了測試深度,從而直接影響了發布版本質量。要提高版本質量,系統測試必須要做深入的挖掘性測試。探索式測試(Exploratory Testing,縮寫為ET)為深入測試提供了一種思路。
2 基于Scrum的敏捷測試
敏捷是以用戶的需求為核心,采用迭代、循序漸進的方法進行軟件開發的一種方式。敏捷開發具有快速交付、周期短、并且能夠及時、快速響應客戶需求變動等特點。敏捷測試關注于業務價值和交付滿足客戶需求的軟件。在敏捷測試中,測試人員與技術人員、業務人員進行良好的交流并持續反饋。
Scrum是一種開發創新產品和服務的敏捷方式。Scrum定義的特性團隊是跨職能的多面手團隊,團隊中包括但不限于開發人員和QA,可以在一個迭代中交付有價值的產品的一部分。Scrum項目周期是以一組迭代“Sprints”組成。在每個迭代中,產品的設計、開發和測試全部完成。
然而,采用了Scrum方法后,產品開發周期變短,從原來幾個月發布一個版本到現在幾周交付版本,而用戶需求存在頻繁變動的可能。在特性團隊移交功能到系統測試團隊后,系統產品存在隱含問題的情況。但是由于特性團隊已經完成了功能的測試,如果系統測試還要按照測試方案去常規測試,將很能發現問題。因此在系統測試階段,嘗試引入探索式測試,發現系統深層次的隱含缺陷。
3 探索式測試
3.1 概念
探索式測試是一種自由的軟件測試風格,強調測試人員同時展開測試學習、測試設計、測試執行和測試結果的評估等活動,以持續優化測試工作。因此在探索式測試過程中,要求測試人員一直保持全身投入。
探索式測試是一種軟件測試風格,而不是一種具體的軟件測試技術,它強調基于當前的語境選擇合適的測試技術,而不局限于特定的測試技術。探索式測試更關注的是測試過程中學習的重要性,它的優勢在于測試人員可以并行地實施測試學習、設計、執行和評估。在探索式測試過程中,測試人員不斷學習探索,一次探索結束后,總結前一階段的執行結果,并依此調整下一階段的執行過程。所以在探索式測試過程中,反饋非常重要,依據這些學習反饋,可以更好地進行下一步的測試。也由此,探索式測試可以不斷深入系統,發現深層次問題。
3.2 探索式軟件測試方法
3.2.1 測試方法
實踐中,測試人員執行探索式測試之前,需要充分考慮軟件系統的各個方面,包括質量標準、項目環境、產品元素,基于這些因素,選擇合適的測試技術。要求測試人員對被測系統充分了解,掌握相關領域知識,采用啟發式的方法思考需要探索測試場景。
3.2.2 測試管理
探索式測試,從表面看很像即興測試,但是兩者不同。即興測試是隨性而發的測試,任何人隨時隨地都可以去測,或者說是沒有準備的、隨意地去發現軟件缺陷的過程。對于探索式測試需要使用規范化的機制來對測試工作進行組織和管理,Jon Bach和James Bach提出了基于會話的測試管理(Session-basedtest management,縮寫為SBTM)方法。這個管理方法將測試任務分解成一系列的會話(Sessions),測試人員在一個會話中完成特定任務的設計、執行、記錄和總結,并實時調整下一個會話。
4 基于Scrum的敏捷測試過程中探索式測試方法研究
在實際執行探索式測試過程中,可以按照如流程圖l執行。
探索測試的第一個環節是熟悉功能,做功能點梳理,功能點梳理的結果是劃分出多個會話。劃分完畢后選擇Session進行探索測試,直到完成所有Session的測試,最后要進行任務報告階段,總結本次測試過程和結果,結束探索測試。
首先對需要測試的功能進行分析,梳理功能點。在分析過程中,需要參考用戶需求文檔、開發設計文檔,還需要獲取特性團隊中QA的測試結果和測試總結,分析功能潛在的風險點;經過分析后,劃分出多個Sessions,一個Session是探索式測試工作的基本單位。
每個Session都有具體的任務(Charter),在Charter中描述具體測試主題、測試策略、可能存在的問題、可以使用的資源等。每個Session都需要在一段固定的、不受打擾的時間段內完成,要求測試人員全身心投入,常見的時間可以是九十分鐘,也可以是三個小時。
在一個Sesssion測試結束后,測試人員要輸出會話單(Session Sheet),描述本次測試過程,內容可以包括測試時間、測試項目、測試結果、發現問題等。在完成一天的測試后,測試人員向測試組中的測試領導、測試專家做任務報告,匯報測試的進展與發現,總結當天的測試情況,并進行頭腦風暴,根據這些信息調整下一步的Session、測試時間等。
按照這樣的過程執行,直到完成全部Session的測試。
5 總結
探索式測試是一種測試風格,根據上下文選擇合適的測試技術。本文主要描述了基于會話的測試管理方法在采用Scrum方式后系統測試階段的使用方法和使用過程。通過該過程可以看出,探索式測試更注重測試人員在測試中不斷學習、反饋和調整,因此使用這種方法會在系統測試中發現更深層次的問題。
參考文獻
[1]Kenne th S.Rubin.Scrum精髓[M].北京:清華大學出版社,2014.
[2]史亮,高翔,探索式測試實踐之路[M],北京:電子工業出版社,2012.
[3]余久久,張佑生,軟件探索性測試研究進展[J].實驗室研究與探索,2014, 33 (02): 93-102.
[4]孫常濱,對于電信軟件探索性軟件測試的探討[J],電子技術與軟件工程.2013 (17):97-97.
[5]譚鳳,基于敏捷測試過程的探索性測試方法研究[J],電腦迷,2017 (03):4-5.
[6] James A.Whittaker.探索式軟件測試[M],北京:清華大學出版社,2010.
[7]Elisabeth Hendrickson.探索吧!深入理解探索式軟件測試[M].北京:機械工業出版社.2011.