語境驅動測試認為:產品是一種解決方案,它必須解決現實世界中的問題。因此,探索式測試者必須從項目關系人(包括軟件用戶、項目投資人和開發團隊等)的視角考察整個產品,研究顯式規格說明和隱式規格說明,從而發現軟件在概念、需求、設計、實現等層面上的缺陷。值得強調的是,測試人員應該主動探究隱式規格說明,從而拓寬探索的范圍。以下是一些常見的隱式規格說明。
競爭產品。競爭產品不一定是軟件,例如筆記軟件的競爭者就包括紙質筆記本和鉛筆。
相關產品。軟件套裝(如Microsoft Office)中的軟件往往相互補充、相互約束。
同一軟件的已發布版本。向前兼容可能是非常重要的約束。
口頭討論、采訪、閑聊。
電子郵件、會議記錄、采訪記錄。
用戶反饋:電話支持記錄、論壇討論、Beta測試反饋。
技術反饋:軟件提交的崩潰信息、錯誤消息。
第三方評論:雜志文章、博客文章、社交網絡反饋。
技術標準。所有軟件都建立在一系列技術標準之上,某些標準會對測試產生重要影響。
法律法規。法律可能對軟件有強制性約束。
領域專著。測試財會軟件需要學習相關著作,以掌握財會知識。
測試人員經驗。
Cem Kaner擁有法律學位,對語言文字非常敏感。他認為積極閱讀(Active Reading)是探索式測試者需要具備的技能 [Kaner08]。積極閱讀是一個內涵豐富的主題,廣受好評的經典書籍包括《如何閱讀一本書》、《探索需求》和《你的燈亮著嗎?》。
此外,在功能實現之前,可以通過小組討論、頭腦風暴等方式發掘測試策略和測試思路。針對一個開發中的功能,測試人員可以邀請幾個同事,組織一個測試研討會。在會議上,大家自由發言,提出自己的測試策略,通過腦力震蕩相互啟發,從而獲得一批觀點各異、視角不同的測試策略。會后,測試負責人對這些相對粗糙的測試思路進行整理,將完善后的結果寫入測試計劃。
問:如何評估探索式測試的測試效果?
答:評估探索式測試結果的前提是測試記錄。
探索式測試者常常在一個固定的時間窗口內(60~120分鐘),根據預設的測試目標,對軟件進行Z探索式測試。這樣的測試活動被稱為測程(Session)[Bach00]。
測程類似于科學實驗。一次科學實驗大致可以分為以下三個階段。
實驗設計:確定實驗目標??茖W實驗的常見目的是假設檢驗,那么此次的假設是什么?
實驗記錄:執行實驗步驟,并記錄實驗所發現的點點滴滴。
實驗分析:分析實驗數據,總結實驗結果,為下一次實驗提供目標和假設。
相應地,一次測程包含如下三個階段。
測試計劃:明確測試目標。測試是獲得信息的過程,那么此次測試要獲得什么信息?
測試執行:設計并執行測試用例,記錄測試所發現的點點滴滴。
測試分析:分析并總結測試所發現的信息,為下一次測試提供目標。
詳細的實驗記錄是科學實驗的基本要求之一。同理,詳略適當的測試記錄也是測試執行的自然結果,是測試評估的基本要求。通常,測試記錄可以包含如下內容[Wikipedia11a]。
測試目標:本次測試要提供什么信息?
測試范圍:本次測試覆蓋了哪些功能、模塊、用戶情景?
測試策略:本次測試使用了何種測試方法?
缺陷列表。
在測試過程中發現的疑問,它們值得進一步探索。
可以復用的測試資源:被測試軟件配置、測試數據和測試腳本等。
測程的耗時。
測程的時間分配:在測試設計與執行、缺陷調查與報告、測程的啟動與結束和非測試活動上各花費了多少時間。
測試記錄可以轉化為測試備忘錄,供今后的測程參考。測試記錄也可以提煉為測試報告,反映當前項目的進展。更重要的是,測試記錄是測試評審的素材?;跍y試記錄,測試團隊可以開發出符合項目語境的評估方法,對測程進行專家評審和定量度量。這有助于度量探索式測試結果,并提出改進方案。
問:探索式測試只適合測試專家,不適合測試新手?
答:“探索式測試不適合測試新手”是一種似是而非的說法。第一,所有高效的測試都依賴于測試人員的測試技能和行業知識。測試專家能夠準確地選擇測試策略、有效地運用測試方法,因此測試效果更佳。第二,測試新手采用任何測試方法,都需要指導和幫助。這有助于他們充分利用方法的優點,并避免方法的潛在陷阱??梢?,更有意義的問題是:如何幫助測試新手盡快地掌握測試方法,盡快地成長為測試專家?
從個人發展的角度看,探索式測試有助于測試新手快速學習。探索式測試將學習與應用作為相互支持的活動逐步展開,為測試人員的技能提升提供了平滑的學習曲線。此外,并行地進行測試學習、測試設計、測試執行和測試評估為測試人員的成長提供了持續、及時、有效的反饋,這有助于他主動學習和快速調整。
從企業發展的角度看,測試團隊應該積極幫助測試新手成長??梢圆捎玫姆椒òǎ簽樗才殴ぷ鲗?、評審其測試文檔、評審其測試記錄、在測程中安排測試專家與他結對測試、定期進行一對一的會談等。這些活動會消耗測試團隊的人力資源,但是它們是幫助新員工成長最快速、最有效、最廉價的方法。
Peter Drucker指出:知識工人的創造性(Productivity)要求他們被視為企業的資產(Asset)而不是開銷(Cost)[Drucker99]。培養高水平測試人員是測試團隊和測試領導不可回避的職責。
問:有什么工具可以支持探索式測試?
答:本書第5章將討論探索式測試的工具。這里強調兩個基本觀點。
第一,作為一種測試風格,探索式測試可以使用任何開發和測試工具。探索式測試者應該根據語境選擇合適的工具,去完成自己的使命。
第二,軟件測試存在大量的創新空間,測試人員應該勇于開發自己的探索式測試工具。
測試專家James A. Whittaker提出過一種測試工具構建方法[Whittaker01],值得測試人員參考。