之前講了些ET在項目時間過程中是如果來管理的,那么ET tester在拿到自己的任務的時候,自己是怎么來進行ET的呢?
這里我們先考慮2個狀態,一個是ET tester的狀態,哪些狀態呢?
(1)這個ET tester的測試經驗怎么樣,豐富還是欠缺?
(2)這個ET tester 對AUT的行業經驗怎么樣,熟悉還是了解?
(3)這個ET tester對AUT本身的功能需求了解怎么樣,熟悉還是了解?
不管上面的狀態怎么樣,在壓力下,ET tester采用正確的方法進行ET,往往會取得好的效果的。
那么我們就來分析下ET的一些思維變化吧:
首先這個ET tester要非常清楚自己的狀態,也就是自己所擁有的Knowledge,具體包括這些:
(1) 該產品的知識
(2) 測試技術相關的知識
(3) 該產品所在的行業知識
(4) 基本的計算機基本知識
為啥要去check這些知識呢?這樣為了方便我們在做ET的時候,能夠快速和有方法的確定發現的問題是否是個Bug。
國外有很多這方面的總結,怎么去找到這些證據去確定發現的問題是不是個Bug,這些東西就叫Oracle,使用這個方法來找到:the HICCUPPS(F) heuristic:
(1) History: 目前所做的產品的版本是否與過去的版本是一致的。
(2) Image:這個產品是否與項目組織所想要的image是一致的。
(3) Comparable Products:這個產品是否與相類似的產品是一致的。
(4) Claims:這個產品是否與重要的人所說的那樣是一致的。
(5) User’s Expectations: 這個產品是否與用戶所想要的是一致的。
(6) Product:這個產品的每個元素是否與同個產品里面的可比較的元素一致。
(7) Purpose: 這個產品是否與其目的(明確的或含糊的)一致。
(8) Statues: 這個產品是否與可適用的法律一致。
(9) Familiarity: 這個產品與任何通用的問題的形式是不一致的。
盡管我們有很多方式去壯大我們的oracles,但這需要很多成本的,所以我們在做ET 過程中,會遇到:
(1)沒有oracle可以使我們提前確定這肯定是個正確或錯誤的結果。
(2)沒有一個單獨的oracle可以說明某個功能在所有時間或所有情況下都是正確工作的。
(3)有些功能看上去是正常工作的,但事實上在某些情況下會失敗而且會使得所有的oracles都是不對的。
可以看到我們在積累我們的oracles時,肯定會遇到很多oracle問題,我們該如何來解決呢?
(1)忽略這個問題(也許這個信息的價值從成本角度考慮不值得)
(2)簡單化這個問題(需要可測試性,從需求源頭開始)
(3)轉移這個問題(并列測試,從類似問題下手)
這里面很多人都可以看到那就是我們怎么去做測試,怎么快速的產出test idea。
ET的特點是我們做測試的時候,沒有測試用例指導,學習SUT,和測試設計和測試執行在同一段時間內完成。那怎么去做測試執行呢?我們拿到開發提交的系統后,Lead分配給我們的任務后,該從哪里下手呢?
ET大師James Bach說過,執行ET就像對一個人進行面試一樣,那這樣就少不了要問問題,該怎么問問題?通過面試者的回答怎樣快速提出更好的問題?顯然這里面也需要一定的能力,包括如下:
(1)提出有用的問題
(2)觀察什么事情在發生
(3)描述自己能夠感覺到的東西
(4)對于自己的所知進行批判性的思考
(5)組織和管理業務上的規則
(6)能夠設計假設和進行試驗
(7)盡管已經知道了仍然進行思考
(8)分析其他人的思考方式
(9)根據因果關系進行推導
好了,現在ET tester都對自己的knowledge有所了解了,接下來就是對于自己的任務,哪個UC,哪個模塊進行分析了,怎么分析,分析啥呢?
(1)風險
(2)覆蓋率
(3)Oracles
(4)資源或限制
(5)價值或成本
(6)Bugs
這些分析都做好了,那我們就可以開始進行測試了,也就是對我們的SUT進行試驗,就像“question<—>answer”的循環一樣。
那我們是怎么來進行試驗的,具體包括如下幾個過程:
(1)配置
—安裝產品
—為測試執行準備測試數據和工具
—確認產品是個足夠干凈的起始狀態
—根據自己的任務準備一個有激發性的問題
(2)操作
—通過問題對產品進行試探性的輸入來使用這個產品
—使用正確的數據和正確的業務順序來完成正確功能的練習
(3)觀察
—收集關于這個產品是如何工作(正確或錯誤的輸入)的信息來評價產品是否如此工作
(4)評估
—應用之前得到的oracles來發現bugs
之前也說過了,我們的ET是學習和測試設計和測試執行是同一時間完成的,那么我們的測試就是Testing to learn。這邊有幾個步驟:
(1)形成一個關于產品功能的模型
(2)去了解這個產品是想實現什么樣的功能
(3)列出那些你需要測試的產品的因素
(4)查看那些一致性的關系且嘗試多個不一樣的oracle
(5)產生測試數據
(6)考慮其可測試性和嘗試不同的有用的工具
(7)嘗試多種不同的方法去試驗
(8)報告你所發現的bug
ET tester在試驗的過程中,如果遇到比較困惑的問題該怎么呢?
(2)保存當時的狀態
(3)不斷重復執行自己的action
(4)返回到一個已確認過的狀態
(5)優先使用OFAT方式(一次只考慮一個因素)
(6)做出精確的觀察
原文轉自:http://www.anti-gravitydesign.com