首先需要聲明的是,目前我對探索式測試理論和實踐的理解還停留在1到2年前的水平,很多內容都在《探索式測試實踐之路》可以了解到的,但是需要告訴大家的是,雖然國內對ET的理論和實踐進步不大,但是國外一些測試大師對ET的理論和實踐都有很大的提高,包括工具、流程和總體解決方案。由于最近兩年的主要精力不在這個上面,所以對國外這兩年ET的發展了解不多,如果有說的不對的地方,歡迎指出來,也讓我多學習和了解下。
雖然很多人都看了《探索式測試實踐之路》這本書,但是并不是所有人都能理解這里面的來龍去脈,我也在很多場合說明了自己的看法,但是還是會存在一些誤讀,加上崔老師提的關于ET的4個問題,我覺得非常好,很多看過拿本書的人都會或多或少有自己的看法,我趁這個機會,說下自己的看法,不一定正確。
(1)如何選擇探索的深度?
大家都應該知道,探索式測試的探索的涵義吧,基本上就是根據自己所得到的信息去挖掘更多的新的信息,從而判斷系統出來是否正確和合理。但是時間是有限,我們到底要挖潛到什么時候呢?我們做測試也是一樣的道理,測試不可能很全面,什么都想測試到,代碼覆蓋率100%等。但是我們應該要測試到什么程度呢,有哪些判斷依據呢,很多時候就是平衡,我們需要抓住一些平衡,在一定的context范圍內。
我個人是這樣理解的,首先我們必須非常清楚我們的任務具體是什么,了解我們現在做的charter和session到底是什么。然后,大家都知道session有自己的一些特點吧,很關鍵的一個就是 timebox,就是區間,在有限的時間區間內對被測系統就行測試設計和執行層面的探索,當然,這時候又涉及到之前劃分session的原則和合理性,這個不在這里細說。
a. 在timebox內,測試人員對具體的任務進行探索,只要思維不枯竭,應該不存在是否需要繼續探索的疑問。但如果不知道要測試什么了,該怎么辦呢?首先:靜下來,梳理之前得到的信息,整合系統處理邏輯和所有異常流程,再次check是否覆蓋到所有的測試點;第二,使用通用的測試tips提醒,check自己是否考慮到類似的測試場景,比如session tester工具就有這樣的tips;第三,正對被測模塊的分析,check相應的探索式測試方法,進行場景方法層面的思維提醒;最后,和相關人進行交流和溝通,在交流的過程中,會得到別人的啟發,從而看是否存在遺漏的測試場景。一旦存在,立即執行。
b. 假設在測試人員挖掘的信息比較多,測試的非常high,時間過得也快,也發現了一些問題,從而無形中增加提交bug的時間,減少了真正測試的時間,這個時候,測試人員該怎么辦呢。我個人的看法是,首先減少提交bug的時間,采用關鍵字加截圖的方式,快速記錄bug;第二,測試人員會使用工具來進行時間提醒,原來確定的時間到了后,測試人員應該停下來,仔細思考我挖掘的是否足夠,check前幾次異常測試場景是否發現bug,思考開發實現代碼邏輯和被測模塊的整體質量,綜合判斷是否需要繼續探索更新的信息和測試執行;第三,如果確定了繼續探索,需要考慮是否調配其他的session的測試時間,或者是否加班完成它;第四,如果能判斷覆蓋80%以上的代碼覆蓋率,且認可開發的質量,建議測試人員plugin out,去測試其他計劃內的session。最后,對于整合信息并作出分析和判斷,這個過程需要非??焖俸透咝У?,這個可能就是一些經驗的積累,建議大家多去嘗試,然后看看結果,給自己增加信心或者教訓。
(2)如何衡量探索式測試的有效性?
這個問題其實有點大,個人覺得這個和你實踐ET的方式有關,目前來說,大部分人認為ET就是ST的補充,但是補充的效果到底怎么樣呢,很多人可能都沒有去實踐和分析具體的細節。
對于如何衡量ET的效率,我前幾年一直在思考這個問題,但是我真的沒有得出很好的答案,我目前的看法是這樣的:客觀數據 + 主觀感受??陀^數據,主要包括發現Bug的數量和認可的測試思路。主觀感受就是個人在ET執行或設計過程中,對于SUT的探索的過程中的主觀感受,是否真正擴展了你的思維,讓你思考更多你之前沒有思考過的角度。這里說到的bug數量不一定能說服人,因為你不可能一個人針對同一個項目使用ET 或 ST來進行測試,從而比較兩個結果,這個只能是單維度的,是誰用誰知道啊。說ET能提高效率,我采用的是單位時間內發現bug率,大家是否還記得我之前的很多分享都會說這些數據。FreeStyle ET的方式是2.45bug/hour、ET主導&ST輔助的方式是1.5bug/hour、ST主導&ET輔助的方式是1.0bug/hour、普通ST方式是0.46bug/hour。數據僅供參考。
我之前也說過,如果僅僅把ET當做ST的補充,實踐的策略不好的話,會造成一個問題,那就是ET的很多測試執行思路和之前ST做過的很多是重復的,這樣不利于ET的發揮,同時在成本上是劃不來的。我們這邊是允許重復的,不可能做到完完全全的不重復,怎么減少這個重復度,是我們大家需要思考的一個問題,我的看法是,首先從意識上就要區別我們做的ET和ST是不一樣的,測試思路和方法策略都不一樣,但是結果(測試思路列表)可能會存在重復的,但不影響我們的思考的重點是什么,我們會分析和收集ET和ST在測試思維上的區別和測試集合,這些也許會幫助你找到ET設計和執行的重點;最后,多去分析傳統測試設計方法和ET測試方法的區別和背景,了解到深層次的使用方法,做一些基礎的積累,這個也會幫助大家減少這個重復度。
(3)如何避免與標準的測試流程沖突?
這個問題就是標準的流程問題了,對于ET在項目中如何實踐,如何和標準的ST流程融合,書中都有非常詳細的流程說明和注意點。這里個人就說幾個看法,敢于去嘗試新的想法和東西,有時候不是壞事,也許就可能看到不一樣的天空呢,再有,我們可以選擇一些不太重要的項目進行實踐,減低風險。
這里我需要強調的是,無論你使用什么方式去實踐ET,流程中的一些細節需要做到位,比如交叉測試的測試思路和方法,需要充分考慮自己的測試思維以及測試tips的作用。主要流程也許不會有大的區別,都需要做測試設計和測試執行,但是如何去做,會有一些細節的差別,請把這些細節做到位,再說實踐后的效果,否則,很容易做到表面,沒做到本質。
(4)如何避免只有測試精英才能執行探索式測試?
原文轉自:http://blog.sina.com.cn/s/blog_6cf812be0101f0wf.html