測試手段之探索性測試(5)

發表于:2012-06-25來源:新浪博客作者:JerryGao點擊數: 標簽:探索性測試
之前講了些ET在項目時間過程中是怎么來使用Heuristics,這期要說下ET過程在總體上的思考和怎么樣來考慮覆蓋率的問題。 回到之前所說的,當我們拿到自己的任務的時候,知道了自己需要測試哪些模塊,就需要一個策略去進行ET測試,我們可以考慮如下:

  之前講了些ET在項目時間過程中是怎么來使用Heuristics,這期要說下ET過程在總體上的思考和怎么樣來考慮覆蓋率的問題。

  回到之前所說的,當我們拿到自己的任務的時候,知道了自己需要測試哪些模塊,就需要一個策略去進行ET測試,我們可以考慮如下:

  學習這個產品:

  —–思考這個產品存在一些重要的潛在的問題

  —–思考怎么去探索這個產品才能找到這些問題

  ——一般情況下,思考怎么去探索這個產品,思考的方式有這些:

  充分利用自己現有的資源:

  —-包括:用戶,文檔信息,開發人員關系,同事,設備和工具,計劃等

  使用一些不同的技術的混合體:

  —-包括:功能測試,域測試,壓力測試,流程測試,場景測試,用戶測試,風險測試,自動化測試,聲明測試

  利用自己實際能夠做的東西:

  —-包括:自己擅長的,最容易暴露問題的,自己的時間和精力

  另外在做ET過程中,需要不斷的變化我們的測試思路去攻擊SUT,但一般我們會采用哪些方法或思路去變化我們的test idea呢?

  微小的行為:其他的人或不用心的人改變了一點點思路,可能會產生新的test idea。

  隨機性:能夠讓你從那些有選擇性的偏見中走出來

  數據交換:同樣的操作,在不同的數據庫中,或不同的輸入,會得到很不同的結果。

  平臺替換:推測類似的平臺,但卻不支持某種操作

  時間/并發變化:同樣的操作,改變依賴其發生的時間周期或并發的事件時,會得到很不同的結果。

  場景變化:同樣的功能,當我們在一個不同的流程或上下文環境下,會出現截然不同的操作方式。

  狀態污染: 一個復雜的系統,一般會有很多隱藏的變量,通過改變某些操作的順序,級數,類型,會加快程序狀態污染,從而發現隱藏問題。

  敏感度和期望值:不同的測試人員可能對不同的因素,會有不同的敏感,且有看到不同的區域。同一個測試人員在不同的時間可看到不同的東西。

  為了在復雜的系統中快速發現未期望的問題/持續使用才會出現難懂的問題,更多的問題,我們必須De-Focus:

  1.從一個不同的狀態開始(沒有必要清除狀態)

  2.優先進行復雜且有條件的action

  3.從模型的變化中產生test idea

  4.質疑我們的試驗流程和工具

  5.試著去觀察每個東西

  6.寧愿使我們的測試很難通過,也不能太顧忌問題的重現難易程度

  下面從一個模型中來說明怎么開始ET測試,選擇一個有用的,有趣的,容易開始的點:

  這里還是需要詳細說明下:Knowledge,Analysis,Experiment,Testing Story.

  Knowledge: Product Story; Technical Knowledge; Domain Knowledge; General knowledge.

  Analysis: Risk; Coverage; Oracles; Resources/Constraints; Value/Cost; Bugs .

  Experiment: Configure; Operate; Observe; Evaluate.

  Testing Story: Test Plan/Report; Work Products; Status.

  上面說了很多,之前也說過,但細心地就可以發現,我們還沒說Coverage這個關鍵東西。在ET實踐過程中,同樣在理論形成過程中,Coverage永遠是一個很大的問題,很多人都說ET最不能保證的就是Coverage,所以不敢輕易去嘗試。那么ET在Coverage是不是就是這樣不靠譜呢?事實上,不管你采用ST還是ET,對于Coverage都是很難完全保證的,但我們可以在Coverage上做些努力,下面說下ET在Coverage上是怎么考慮的。

  我們說的Coverage一般就是Product coverage,同樣也是這個被測產品的一部分。那么對于Product coverage又包括哪些方面的coverage:

  第一個就是Structure,也就是產品的一個因素,對于這個Structural Coverage,我們到底是測試什么呢?我們到底要cover什么呢?我們要測試的就是這個產品時怎么構成的,我們要cover的就是構成這個產品的部分。我們以打印機產品為例,看看Structural Coverage到底要考慮什么:

  ——打印需要用到的文件

  ——實現打印功能的代碼模塊

  ——在這個模塊里面的代碼語句

  ——在這個模塊里面的代碼分支

  可以看到這個時候我們關注的是產品的內部結構。

  第二個就是Function,也是產品的一個因素,對于這個Functional Coverage,我們到底是測試什么呢?我們到底要cover什么呢?我們要測試的就是這個產品能夠做什么?我們要cover的就是這個產品做得什么樣。同樣以打印機產品為例,看看Functional Coverage到底要考慮什么:

  ——打印,頁設置,打印預覽

  ——打印range,打印復制,zoom

  ——打印所有的,當前頁,或指定的range

  可以看到這個時候我們關注的是產品的功能。

  第三個就是Data,也是產品的一個因素,對于這個Data Coverage,我們到底是測試什么呢?我們到底要cover什么呢?我們要測試的就是這個產品能夠對數據能夠做什么?我們要cover的就是這個產品能夠處理什么樣的數據。同樣以打印機產品為例,看看Data Coverage到底要考慮什么:

  ——打印文檔的類型

  ——文檔里面的元素,文檔的大小和結構

  ——關于怎么打印的數據(比如zoom factor; no. of copies)

  可以看到這個時候我們關注的是產品使用過程中不同的數據處理。

  第四個就是Platform,也是產品的一個因素,對于這個Platform Coverage,我們到底是測試什么呢?我們到底要cover什么呢?我們要測試的就是這個產品依賴什么才能使用?我們要cover的就是這個產品怎么處理不同的依賴的。同樣以打印機產品為例,看看Platform Coverage到底要考慮什么:

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97