1. 程式人生 > >[ 測試思維 ] 轉載:啟發式測試策略模型(HTSM)

[ 測試思維 ] 轉載:啟發式測試策略模型(HTSM)

automatic 列表 efi 同時 探索 很好 min 回歸 定制

啟發式測試策略模型(Heuristic Test Strategy Model,簡稱HTSM)是測試專家James Bach提出的一組幫助測試設計的指南(guideline)。本文將介紹HTSM的內容與應用。

為什麽需要HTSM

根據產品的風險(risk)設計測試是一種常見的測試設計思路。在復雜的現實世界,產品面臨的風險多種多樣,只有全面考慮、周密測試才能避免風險暴露導致的嚴重後果。因此,測試人員需要一個相對完整、可以定制、容易擴展的風險列表或參考模型,來幫助他們發現產品風險。HTSM就是一個結構化的、可定制的參考模型,從測試技術、產品元素、項目過程、質量標準等多個角度啟發測試設計。

HTSM能夠在測試全程提供有益的提示。在制定測試計劃初稿時,它可以幫助測試人員完整地思考產品的方方面面,從而產生系統性的(systematic)測試計劃。在測試過程中,它可以幫助測試人員組合測試想法、深入探索產品,以開發出強有力的測試策略。在回歸測試中,它可以幫助測試人員確定測試範圍,制定測試方案。

HTSM的內容

技術分享

上圖是HTSM的概要描述,測試人員利用質量標準(Quality Criteria)、項目環境(Project Environment)、產品元素(Product Element),指導測試技術(Test Techniques)的選擇與應用,並產生觀察到的質量(Perceived Quality)。

HTSM是層次結構,其頂層元素(質量標準、項目環境、產品元素、測試技術)可以分解為次層元素,而次層元素可進一步分解為第三層元素。本文只概要介紹次層元素,更多的細節請參考James Bach的文檔。

測試技術:生成測試的策略。有效地選擇和實施測試技術,需要綜合分析項目環境、產品元素和質量標準。

  • 功能測試(Function Testing)

  • 域測試(Domain Testing)

  • 壓力測試(Stress Testing)

  • 流測試(Flow Testing)

  • 情景測試(Scenario Testing)

  • 聲明測試(Claims Testing)

  • 用戶測試(User Testing)

  • 風險測試(Risk Testing)

  • 自動測試(Automatic Testing)

項目環境資源、約束和其他影響測試的項目元素。測試總是受到項目環境的約束。在某個團隊運轉良好的策略不一定適合另一個相似的團隊,以往富有成效的方法未必適應當前的項目。有經驗的測試人員會根據當前語境(Context),在約束條件下充分運用資源,以高效地測試。

  • 用戶(Customers):理解產品的用戶
  • 信息(Information):發現測試所需的信息
  • 開發者關系(Developer Relations):與開發者協作加速開發
  • 測試團隊(Test Team):利用團隊的力量支持測試
  • 設備與工具(Equipment & Tools):可利用的硬件、軟件、文檔等
  • 進度(Schedule):項目實施的流程
  • 測試條目(Test Items):測試範圍和重點
  • 交付品(Deliverables):測試的產出

產品元素:需要測試的對象

  • 結構(Structure):產品的物理(physical)元素(如代碼、接口、配置文件、可執行文件等)
  • 功能(Functions):產品的功能
  • 數據(Data):產品所操作的數據
  • 平臺(Platform):產品所依賴的外部元素
  • 操作(Operations):產品將被如何使用
  • 時序(Time):影響產品的時間因素

質量標準之操作性標準(Operational Criteria):面向用戶和運營團隊

  • 能力(Capability)
  • 可靠性(Reliability)
  • 可用性(Usability)
  • 安全性(Security)
  • 可伸縮性(Scalability)
  • 性能(Performance)
  • 可安裝性(Installability)
  • 兼容性(Compatibility)

質量標準之開發標準(Development Criteria):面向開發團隊

  • 可支持性(Supportability)
  • 可測試性(Testability)
  • 可維護性(Maintainability)
  • 可移植性(Portability)
  • 本地化(Localizability)

由以上介紹可知,HTSM由一組指導性詞語(guide word)組成,它們構成一個層次結構,讓測試人員從高層抽象到底層細節對產品和測試進行思考。這些指導性詞匯是測試的指南,其作用不是教導如何具體地測試,而是啟發測試人員的思維,發掘測試對象和測試策略。

下圖摘錄自James Bach的培訓教材Rapid Software Testing,體現了HTSM對於測試設計的意義。

  • 測試設計以風險驅動。測試人員分析質量標準、項目環境、產品元素中的風險,設計有針對性的測試策略。
  • 在測試設計時,質量標準啟發測試先知(Oracles),項目環境啟發測試過程(Procedures),產品元素啟發測試覆蓋(Coverage),觀察到的質量啟發測試報告(Reporting)。
  • 對於測試,HTSM強調測試策略的多樣性(Diversification),平衡代價和收益(Cost vs. Value),利用啟發式方法(Heuristics)充分發揮測試人員的技能(Skill)。

技術分享

定制HTSM

在定制化之前,HTSM對測試人員的幫助很小,因為此時的HTSM是“James Bach的模型”,而不是符合當前語境的模型。HTSM是通用的模型,雖然能夠普遍使用,但是不能快速、高效地指導具體的測試工作。測試人員需要將其“本地化”,才能發揮其威力。

Cem Kaner教授在教程Blank Box Software Testing 中提出利用思維導圖(Mind Map)定制HTSM。他將HTSM作為圖的為中心,將Quality Criteria、Project Environment、Product Elements和Test Techniques作為主幹。

技術分享

在分支上,Cem Kaner添加了他覺得重要的節點。例如,他在Product Elements下增加了Benefits節點和Time節點,使HTSM符合他的工作需要。

技術分享

恰如Cem Kaner所說:“大多數嚴肅對待此模型的人會定制它以符合自己的需要”(Most people who work seriously with this model customize it t meet their needs),測試人員可以也應該修改HTSM,以獲得符合項目語境的模型。

  • 增加節點:增加與當前項目相關的測試技術、測試想法、測試對象和任何測試人員認為有價值的元素。
  • 刪減節點:忽略一些與項目或任務無關的元素。
  • 增加標記、註釋、鏈接等圖元:標記可以突顯重要的元素,註釋可以增加更多的細節,鏈接可以指向更詳細的信息源。

定制HTSM是理解並掌握HTSM的過程。與大多數方法一樣,測試人員需要修改它,加入自己的風格和元素,才能正真掌握它。

測試專家Michael Larsen在XMind.net提供了他制作的HTSM思維導圖,為測試人員制作自己的HTSM提供了很好的基礎。

技術分享

應用HTSM

定制HTSM就是應用HTSM的過程。測試人員遵循HTSM的結構化指南,深入地思考產品、項目與測試,添加自己的想法、評論、標記和啟發式問題。這本身就是極好的測試學習過程。作為學習的結果,定制化的HTSM為進一步地測試設計提供了堅實的基礎。在測試過程中,測試人員會接觸新信息,學習新知識。他應該持續地將新知補充到HTSM中,以叠代地優化測試略模型。從這個角度,HTSM既是測試想法的源頭,也是測試過程的產出。

在測試設計時,測試人員可以逐個檢查HTSM中的每個元素(指導性詞語),閱讀相關標記、註釋和鏈接,以啟發測試思路。他可以自問:

  • 該元素與當前測試任務相關嗎?
  • 針對該元素,產品有什麽風險?可能會有什麽缺陷?
  • 通過什麽測試可以發現這些缺陷?
  • 依據當前的進度和資源,如何實施這些測試?

另一種更有威力的方法是綜合HTSM中的多個元素,開發測試策略。當開發人員用單元測試檢查了組件,測試人員需要在系統層面檢查產品。此時,產品的缺陷往往存在於組件的交互和復雜的流程。綜合產品的多個方面,開發多樣化的測試,以更深入地測試產品,才能夠更好地體現測試人員的價值。一些有幫助的啟發式問題包括:

  • 該元素與哪些元素相關?
  • 元素的組合有沒有揭示出新的風險?
  • 如何設計測試,以同時測試這些元素?
  • 能否讓來自元素A的信息幫助元素B的測試?

[ 測試思維 ] 轉載:啟發式測試策略模型(HTSM)