2018年6月8日,作為第一屆TMMi中國峯會圓桌會議的嘉賓,我參與討論了「如何更好的復用測試資產」這個測試主題,其中分享了我對該話題的一些想法和經驗。現在通過文章的方式將當時講解的內容進行了一些歸納和總結,供大家參考和探討。

測試資產不僅僅包括測試過程中輸出的各個測試文檔,同時包括測試團隊積累的測試經驗、技能和思維等。測試工作中經常會出現下面的場景:你作為測試人員工作幾年之後,在測試經驗、技能和能力方面非常出色,有可能就會開始你的測試管理職位;或者,隨著自己技能和能力的不斷增加,在有更好機會出現時離開當前公司;此時,假如團隊內沒有很好的測試資產復用要求,你這麼多年在測試團隊內積累的經驗和技能等,就會隨著你職位的改變或者跳槽而出現中斷,甚至幾乎沒有任何傳承。因此,測試資產復用對於測試團隊的經驗傳承和持續改進是不可或缺的。

測試資產的復用,套用結構化思維的精髓,同樣是有框架的,其核心是分層次的,即測試過程中必須根據不同目的,對不同層次的測試資產進行復用。主要包括:
  1. 文檔復用
  2. 經驗復用
  3. 思維復用

一、文檔復用

測試貫穿於整個開發生命週期,對於較為正式的測試過程,其每個測試階段都會輸出相應的文檔,這就是最基礎的測試資產。我們以ISTQB的測試過程為例,其生命週期由5個階段組成,分別是:

  • 測試計劃與監控
  • 測試分析與設計
  • 測試實現與執行
  • 測試出口準則評估與報告
  • 測試結束活動

ISTQB初級認證提供的測試過程作為一個重流程的典型,每個階段輸出的文檔輸出參考的是IEEE 829 - 1998文檔標準。當然,測試實踐中我們並不一定會全版套用標準中規定的每個細節,而是根據項目特點、產品特點、質量要求等對標準內容進行裁剪。不管是具體文檔形式輸出,還是存在於個人腦海中的文檔內容,是測試團隊可以復用的第一次層次資產。IEEE 829 - 1998文檔標準包含的文檔類型如下圖所示。

二、經驗復用

測試人員的優秀經驗是開展成功測試的重要組成部分,測試過程中很多缺陷的發現不是在驗證需求是否實現的過程,而是測試人員在相對獨立自主開展探索性測試中發現的。此過程中測試人員假如能構建結構化的測試經驗資產,就可以在測試團隊內有效分享測試思路和經驗,同時可以減少其他測試人員測試相近類型被測對象時走彎路,或者重複測試工作。測試人員的經驗總結,屬於測試團隊可以利用的第二層次資產。有了該層次的測試資產,測試團隊的經驗相對不會隨著測試人員的流動而消失。下面是我在測試工作中實踐的兩個思路:
  1. 全局視角:DTO(Data Test Overview),針對不同項目或者產品中共性的一些功能,例如:通訊產品中通常都會有DHCP功能以獲取IP地址。此時,會針對DHCP功能形成DTO文件。
  • 責任人:完整經歷過該功能測試分析、設計和執行的測試人員,針對該功能的測試人員有豐富的測試經驗;
  • 測試分析與設計:以思維導圖的方式羅列該功能的主要測試點,而非詳細的測試用例。基於結構化思維和發散性思維構建該功能測試點的框架;
  • 測試實現與執行:該功能的測試點羅列更偏向腳本化思路,而測試執行過程中,基於腳本化的測試點基礎之上,結合探索性測試的發散特點,實現腳本化測試和探索性測試的平衡;
  • 優點:結構化與發散性思維的平衡,更方便維護和測試思維的發散;
  • 缺點:測試點的顆粒度選擇問題,在測試團隊內部不容易統一;
  • 局部視角:將產品測試過程中一些共性的測試點進行歸納和總結,以形成缺陷攻擊列表,例如:
    • 強制無效輸出:年月日的測試;
    • 文件保存:文件中出現「」字元;
    • 強制恢復默認值:全局變數和局部變數之間是否能恢復到默認值;
    • 重複創建和刪除條目:重複Enable和Disable,導致內存泄漏,業務不通;
    • 全局變數和局部變數的關係:IGMP總開關和埠開關之間的切換;
    • 測試技術:例如等價類邊界值分析;

    三、思維復用

    除了前面提到的文檔復用和測試經驗復用之外,更重要的是將測試過程中應用的結構化思維、發散性思維和可視化思維形成資產,在測試團隊內共享和傳承。相對而言,測試思維在測試團隊內的復用是更困難的,但是對測試團隊能力的提升也是最有效的。即使大家面對的是同樣的文檔、經驗和測試對象,由於測試人員之間思維方式不同,測試得到的結果都會是截然不同。下面是測試用例為例,說明測試思維在測試工作中的作用。測試用例是測試分析與設計階段的重要輸出,其質量直接影響了後續的測試執行效率和有效性。結構化思維的應用有助於提升測試分析與設計活動的質量,其核心是構建框架,把表象雜亂複雜的測試點/測試用例變得結構而有序。「問題驅動的軟體測試設計」課程體現的就是結構化思維在其中的應用過程 - 自上而下的結構化構建(可以參考下面的框架圖):

    1. 選擇框架:根據測試過程中經常面臨的4大問題入手,搭建了有4個維度組成的框架,分別是基於質量模型、基於領域知識、基於規格說明、重點選擇和測試執行。結構化思維中其屬於搭架子的過程,常見的架子除了基於行業背景知識外,還有時間架、空間架和三角架等;
    2. 分層/分類:對框架中的每個維度或架子進行分層和分類。例如:針對領域知識,包含了功能交互模型和用戶場景模型等。
    3. 繼續細分:根據對測試目標和測試人員能力等因素的考慮,確定測試點的顆粒度,然後根據顆粒度要求繼續對每個維度/架子進行不斷詳細化,直到滿足要求為止;
    4. 檢查框架:分層/分類和細化過程,需要不斷檢查每個層次之間是否滿足MECE原則(相互獨立、完全窮盡,簡單地講就是各個分類之間不重疊不遺漏);

    構建測試資產以及在測試團隊內的分享和傳承,不僅需要測試團隊有這個意識,同時也需要測試流程、技術和工具的支持。同時,不同測試資產之間是相互支撐和反饋的,需要我們持續調整和改進。[本文提到的結構化思維、發散性思維、可視化思維、測試資產等內容,將在後續的文章中陸續推出,敬請關注並歡迎大家與我對文中內容進行探討!]
    推薦閱讀:
    查看原文 >>
    相關文章