探索性測試的18個總結
1)探索性測試與腳本化測試的主要區別:1)探索性測試將更多更高的認知水平的工作放在測試執行,而腳本化測試則更關注測試設計;2)前者更強調測試活動的并行和相互反饋(學習、設計、執行與結果分析等),而后者的測試活動是相對串行的。
2)腳本化測試的主要優點是:1)盡早發現缺陷;2)不同利益相關者參與評審;3)可重用性;4)測試覆蓋率評估。
3)腳本化測試強調測試的盡早介入,如盡早設計測試用例。但是測試人員越早設計測試用例,對測試對象的了解越少,對風險的了解也越少。測試人員對測試對象的了解是一個逐步的過程,腳本化測試需要更多的工作量以應對這個過程(需求的細化和變更等)。
4)提供測試對象的質量信息是測試的一個主要目的。但是不同的人對質量的理解是不一樣的,腳本化測試能預先定義所有利益相關者的質量要求嗎?腳本化測試能預先定義不同缺陷的來源嗎?回答是不能。而這正是探索性測試引入的一個初衷。
5)測試對象的需求是不斷變更的、不同開發人員會犯不同的錯誤、測試環境與組合也是不斷變化的,通過腳本化測試很難及時跟蹤這些問題,即使能也需要考慮時間與成本。探索性測試的及時反饋與不斷修正是一個解決之道。
6)“復現缺陷,并確定復現的具體步驟”、“下棋”、“刑偵現場”、“拼圖游戲”等,其中的思維應該是探索性,還是腳本化?哪個效率更高?
7)組織內引入探索性測試,需要測試人員掌握各種技術與方法、知識、技能與實踐,并以此為支撐,不是每天喊著這個概念就可以成功實施的。這個理念也同樣適用于敏捷開發與測試。車是好車,但是我們的路修好了嗎?
8)不管是文檔化還是存在于測試人員的頭腦中,好的測試設計是什么?好的測試設計應該是隨著測試環境不斷變化的(例如測試組合、測試環境),以不斷擴大測試覆蓋率,并將關注點放在高風險的區域。
9)不同的測試對象和測試目標,需要不同的測試策略和測試技術,而這將得到不同的測試用例、不同的測試文檔與不同的測試結果。
10)探索性測試沒有腳本化特點,并代表它是不做準備的,它也不是隨機的,而是提供更多的選擇。探索性測試同樣需要設計各種支撐性的內容:測試數據、失效模式、模型等。沒有測試計劃文檔,也不代表探索性測試是沒有計劃的。
11)探索性測試如下象棋,其規則很簡單。但是我們在欣賞象棋比賽的時候,不會說:“啊,下象棋的規則真精彩!”相反,我們關注的是隱含在這些規則下選手選擇下一步如何走的技巧與技能,它的技術含量也不在其規則,而在選手的技巧與技能。規則簡單,技巧復雜。
12)探索性測試的學習、設計、執行與結果分析等測試活動是相對并行并且是相互支撐的,了解這個并不代表測試人員掌握了探索性測試。正如嬰兒學會了爬,并不代表就懂得了走、跑與跳等運動技能。
13)探索性測試過程中的一個重要挑戰是如何設計測試用例(盡管不一定是腳本化的,也可能是在測試執行的時候進行測試設計),例如:從測試技術到測試用例、從失效模式到測試用例、從風險列表到測試用例、從測試思想到測試用例。
14)從用戶現場反饋了一個問題:他們在配置某個功能的時候,界面上打印了一些奇怪的信息,然后系統就重啟了。此時測試人員更傾向于采用探索性測試,而面臨的首要挑戰就是“如何從失效模式設計測試用例”,以復現該問題。
15)探索性測試本身不是一種技術,而是一種測試方式或者思維。那么,腳本化測試應該是什么呢?是技術?不是方式或者思維?
16)什么使得測試活動具有探索性測試特點呢?答案在于測試人員的認知投入:測試人員如何應對持續變化的情況。
17)探索性測試不一定會有測試用例文檔的輸出,這并不代表它沒有測試設計。探索性測試的設計不是為了控制,而是為了指導你的測試。
18)探索性測試更強調個人和交互,而不是過程和工具;更強調應對變化而不是遵循計劃;更強調可工作的軟件而不是可理解的文檔;更強調相互合作而不是合同談判;從這個層面而言,探索性測試是敏捷的。