之前講了些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