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

發表于:2012-06-21來源:新浪博客作者:JerryGao點擊數: 標簽:探索性測試
之前講了些ET在項目時間過程中是如果來管理的,那么ET tester在拿到自己的任務的時候,自己是怎么來進行ET的呢? 這里我們先考慮2個狀態,一個是ET tester的狀態,哪些狀態呢? (1)這個ET tester的測試經驗怎么樣,豐富還是欠缺?

  之前講了些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在試驗的過程中,如果遇到比較困惑的問題該怎么呢?

  (1)簡化自己的測試用例

  (2)保存當時的狀態

  (3)不斷重復執行自己的action

  (4)返回到一個已確認過的狀態

  (5)優先使用OFAT方式(一次只考慮一個因素)

  (6)做出精確的觀察

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

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