現在對于探索性測試,大家很多的看法都存在一點誤區,都認為探索性測試不會控制和管理測試進度,大家在網上可以找到很多關于探索性測試的介紹,很少介紹到探索性測試應用在項目過程中式任何管理的,沒有涉及到核心,那么很多人都關心這個ET到底在項目中怎么來做呢?還有一個就是之前說了ET(探索性測試,后續統稱為ET)很難去控制和管理整個進度,那到底有沒有什么好的辦法去管理ET呢?下面我們就去看看國外是怎么做的吧。
首先要說的是這些問題在ET發展過程中,ET的那些大師們已經想好了怎么在項目實踐過程中應用ET,也有一些比較成熟的解決辦法。
1.1 實踐中ST和ET的使用模型
這里需要說明的是怎么應用ET在項目過程中,可以從不同的維度去考慮:
一個是ET和ST的結合方式,和測試人員具體做ET還是ST或都做無關
另一個是team的組成方式,從測試的專業性角度去分隔開ET tester和ST tester
看下面的模型更易理解:
(備注:ST就是Scripted based Testing, 就是我們目前所做的基于測試用例進行測試的測試方法; Tester A是專門做ST Team的ST測試人員,Tester B是專門做ET Team的ET測試人員)
從模型的演變過程可以看到,其實我們最終目標是沒有ST tester和ET tester之分的,所有人都是標準的ET tester。國外ET的大師們確實帶了好幾個ET team,在項目測試過程中已經達到了模型四的境界,可想ET是可以主導整個項目測試的,其進度控制和質量管理都在實踐中有了自己方法。
1.2 ET team的管理方式
在ET team里面又存在2個不同的管理方式:Delegation和Participation,這個區分的角度是從ET team lead在整個項目ET過程中的作用來看的。
Delegation:
(1) Test lead指定需要測試的charters, 不參與具體測試任務
(2) ET tester完成這些charters并且report back
(3) 對于一些問題和測試報告召開定期會議
Participation:
(1) Test lead在項目測試過程中與ET tester一樣,參與某些測試任務
(2) Lead可以實時的根據測試質量情況制定最后的測試策略
(3) Lead可以持續的了解他所想要的了解的team的任何情況
這里還可以讓大家知道的是相比較單個人進行ET測試,在一個ET team中大家工作在一起,在同一時間對于同一個SUT(Software Under Test)進行ET,經常會出現很多更好的測試idea。 所有還有一種組合ET team的方式是讓測試人員組成一對且讓他們在同一臺計算機上進行測試。另一種就是其中一個測試人員進行測試,傍邊有多個測試人員觀察且做記錄,通過問測試執行人員不同的問題產出更多的測試idea,這里有一個好處就是測試執行人員不必擔心發現的bug難以重現,因為傍邊的測試人員會做記錄和分析,這樣測試執行人員可以不必分心去繼續自己的測試。還有一個好處就是如果一旦這個測試人員思維過于開闊,去測試很多非當前需要測試的模塊時,傍邊的測試人員可以給予及時提醒。但其缺點就是更多資源消耗在同一個功能模塊上,成本上有待商榷。
1.3 ET過程中的任務
下面我們說說具體的ET tester是怎么完成這些Charters的,還有怎么管理和控制他們完成的這些Charters。Charter的定義:ET過程中使用到的一個非常清晰地任務列表,指出了要測試什么,怎么測試(強調策略,不是詳細測試步驟),要尋找什么樣的bug,有哪些風險,要去檢查什么文檔等。
在測試執行之前,ET lead和Senior ET tester參與制定所有的charters,并根據實際情況從charters中分離出所有需要測試的sessions(一個基本的測試工作單元,一般對應1-2個UC)。這里我們可以看到ET tester所有進行的ET是基于session的,那么我們使用的管理方法就叫Session-Based Test Management(Jon Bach的首創)。
這里需要說下制定這些session的一些基本的原則:
(1) 這些Session必須是chartered(與測試任務綁定的)
(2) 這些Session必須是uninterrupted(獨立的功能,且執行時不受外界的干擾)
(3) 這些Session必須是reviewable(其Session sheet可以被第三方review)
(4) 每個Session一般不超過90 min, 其大致范圍從45 min(short session)到120 min(Long session)
首先我們來分解下ET過程中,大概花的時間的分配:
(Opportunity 指的是Opportunity testing,就是執行其他的session的功能)
這里每個ET tester完成一個Session過后,必須記錄session sheet,下面是主要的因素:
(1) Session Charter (charter名稱,和session名稱)
(2) Tester name(s)
(3) Data and time started
(4) TBS metrics (包括3個方面的effort統計:測試設計和執行,bug分析和報告,session setup)
(5) Data files
(6) Test notes(ET 過程中的隨時記錄的一些東西,比如test ideas, risk list 等)
(7) Issues(ET 過程中的問題和疑惑)
(8) Bugs
1.4 ET中管理Session
下面我們繼續ET在項目中的管理(這里說的是上述的模型三或四),大致如下在:
Lead針對SUT做出Charters和Sessions
Lead針對所有sessions和資源來做出Test plan和測試策略(包含對SUT的攻擊策略)
設計階段ET tester對于自己負責的sessions進行test idea development
設計階段ET tester還需要對自己負責的session所對應的oracles(可以準確任務這個問題是個bug的所有信息,包括文檔) 進行梳理
測試執行的時候ET tester根據之前的test idea list來進行測試,根據SUT本身的response并采用Heuristics的方法產出更多的test idea(這部分的test idea 不是必要記錄下來)
原文轉自:http://www.anti-gravitydesign.com