做好探索性測試,體現你的價值
當筆者還是個軟件測試小白的時候,我的英國測試主管有一天操著他濃重的倫敦口音對我說過:“Vincent,你知道嗎,用例執行這種事情也許很多人都可以做。但是能將你們的測試經驗和思考能力應用到探索性測試中,並將它發揮到極致,才是一種你們價值的最大體現方式。”
主管的這番話在我當時幼小的心靈內留下的深刻的印象,從此以後對於探索性測試我便開始了孜孜不倦的研究。
探索性測試,不但對於一個軟件測試項目而言,是常規測試非常有效而且有益的補充;同時也是我們測試從業人員展示自己的技術和主觀能動性的好平臺。
那麽我們要怎樣去做好探索性測試,盡情的施展自己的測試才能呢?筆者想用這篇文章給大家提供一些方針和思路。
第一:探索性測試的定義
首先從定義上而言,探索性測試(Exploratory Test)是敏捷世界裏的一種重要測試方法,作為一個研究性的工具,它是用戶故事測試和自動化回歸集的重要補充。它是一種經過深思熟慮的測試方式,沒有測試腳本,可以使你的測試超出各種明顯已經測試過的場景。探索測試將學習,測試設計和測試執行整合在一起,形成一種測試方法。
探索性測試重在‘探索’,他強調了我們在測試中的未知因素和我們對被測系統進行主動學習的過程。 探索是人類進步的重要步伐,正因為善於探索,哥倫布才發現了新大陸;正因為用於探索,阿波羅才登上了月球。探索性測試還強調測試設計和測試執行的同時性,這是相對於傳統軟件測試過程中嚴格的“先設計,後執行”來說的。測試人員通過測試來不斷學習被測系統,同時把學習到的關於軟件系統的更多信息通過綜合的整理和分析,創造出更多的關於測試的想法。
我們可以通過下面的圖來闡釋探索性測試:
第二:探索性測試的定義
用語言來總結的話,探索性測試可以定義為由以下過程構成:
- 明確測試範圍
- 識別被測對象的期望功能和需求
- 了解被測對象的基本性狀
- 發現被測對象的潛在不穩定區域
- 創建一個測試綱要並用它來指導測試
這裏我們提到的識別,了解,發現,創建這個過程在探索性測試中可以多次循環,並且並沒有固定的順序限制。 我們可以先腦補出自己想要進行測試的點,然後再對這些點去進行探索;反之當然也可以先對系統進行探索,進而發現潛在的風險對象從而確定測試點。 探索性測試鼓勵創新和發散性思維,在探索性測試中‘跑偏’是被允許的:
當然這種跑偏是受到你的測試目標範圍,以及你當前測試綱領的限制的,否則無限跑偏的話,有限的時間就可能被投入到過於細枝末節的軟件特性方面去了。 所以我們在探索性測試中的發散思維要有一個度,發散到一定程度後還要再收斂回來。例如,當發覺在一個測試的分支路徑上已經花了很長時間也沒有找到問題的答案時,則可以考慮先放棄那個區域的探索了,因為還有一個主線的測試任務在等著你。
第三:探索性測試的常用方法
探索性測試最主要應用到我們測試理論中的設計技術就是“基於經驗的測試”和“錯誤推測法”了。 更具體一點的話,我們可以在測試中應用以下的一些思路:
- 破壞法 - 用常規手段破壞系統的正常運作進程 - 比如在提交表單的過程中刷新頁面中斷提交操作
- 極限法 - 嘗試去接觸到系統處理的極限所在 - 比如在文本處理的控件內嘗試最大輸入的可能性
- 取消法 - 測試系統能不能正確的處理用戶的取消和刪除操作 - 比如在一個手機APP打開某模塊時,按下home鍵後,APP有沒有正確處理?
- 暴力法 - 使用非常規操作,看看軟件會不會發生崩潰或異常 - 比如測試手機輸入鍵盤時,同時按下多個按鍵
- 逆向法 - 通過相反的思維來思考問題,軟件能處理異常情況嗎 - 比如我們通常都會關註一個系統的支付能不能正常工作,那麽當遇到無效支付信息的處理呢?
了解了這些理論和方法,那麽以後遇到你的測試主管發起探索性測試的時候,相信你就可以在團隊中脫穎而出,讓你的同僚們刮目相看了吧!
那麽如果我的測試主管根本就不曾發起探索性測試呢?沒關系,你自己也可以在時間允許的情況下,使用探索性測試的技術,對你所測過的功能進行一次深層次的探索,說不定就能打開新世界的大門呢。
如果你自己就是測試的主管,還沒有意識到探索性測試的功效?接著往下看:
第四:探索性測試的益處
文章開頭我們就提到,探索性測試對於測試團隊是一種非常有益有效的補充,具體而言我們可以總結出以下的益處:
- 探索性測試可以幫助我們定位到隱藏比較深的問題 -常規測試沒有覆蓋到的深度,我們可以在探索性測試裏去一探究竟
- 探索性測試可以為後續測試覆蓋的延申提供思路 - 在探索性測試中我們可以發現常規測試忽視掉的細節,從而指導我們後續對測試用例庫的維護
- 探索性測試可以加深測試人員對被測系統的了解 - 越探索越了解,越了解越想把他測個明白
- 探索性測試可以激發測試人員的積極性 - 每天都在執行用例多無聊,來一次說測就測的旅行吧
探索測試有這麽多好處,但是我們也要註意他的局限性,不要陷入一些常見的誤區,比如:
- 探索性測試就是隨便測試,到處點點
- 探索性測試是要遵循一定章法並符合測試要領的
- 時間不夠,所以幹脆全都做探索性測試,不寫測試用例了
- 盡管探索性測試是一種有效的測試方法,他不能替代最主體的系統測試
- 回歸測試好費勁啊,我們用探索性測試去覆蓋回歸需求吧
- 探索性測試更註重的是思考和學習,不斷發現新的問題,而版本的回歸測試,是對原有的功能的保證,為持續叠代提供質量把關。
好了,關於探索性測試我們就探討到這,下次遇到探索性測試的機會時,去好好發揮你的測試才華吧!
做好探索性測試,體現你的價值