圖像

    軟件測試

    在軟件測試分析工作是什麼?

    “關鍵分析域的想法是找到聰明有趣的問題的答案。我們使用模型、數學和其他啟發式…進行深度測試,發現難以捉摸的bug,通常需要一個強有力的分析方法。”- - -域的工作;要求的測試(我以前的博客)

    有更多比分析技術的發展。你可以做很多的項目不是特別分析。我甚至會說,大多數學生已經通過我的測試培訓課程找到分析恐嚇,或者至少不愉快。這就是為什麼我把五個領域的工作和分析工作列表隻是其中的一個領域。不過,這是一個重要的領域…和我個人最喜歡的。這就是為什麼我希望更加深入的檢查測試的分析方麵。

    看到的最簡單的方法分析在行動測試情況詢問和回答一些基本問題的過程:

    • 你到底是什麼測試?所有的事情你可以測試,你測試?
    • 你測試的是什麼數據?什麼數據應該你是測試?
    • 在您測試的產品現在,你如何識別當你看到一個錯誤?如何一個bug存在和嗎看到你嗎?如何它是可見的,但沒有注意到你嗎?
    • 什麼樣的人使用你的產品?誰應該使用它嗎?會如何,改變隨著時間的推移?
    • 什麼改變可以使你的產品設計中,讓它更容易測試?我們有什麼變化,防範,因為他們會讓它困難測試?
    • 如果產品隻是變了,是什麼最好的測試你可以在下一個小時捕捉問題,可能彼此介紹過了嗎?
    • 一個之間的區別是什麼重要的問題,一個不重要的一個?

    沒錯,你可以回答這些問題沒有執行任何特定的分析。你聽到別人你可以記住答案,或者你可以隻給出模糊的答案。但詳細,站得住腳,和負責任的回答需要分析。不夠的表現,分析自己的思想;您還需要能夠解釋給其他人。

    Tricentis提供提供一些協助回答這些問題的工具。我特別欣賞的分析特性Tricentis LiveCompare測試影響分析(TIA)工具,有助於確定哪些測試的子集執行給定的變化,配合一定的風險。不幸的是,並不是常態。大多數測試工具更關注行政或技術方麵的測試過程。就好像這些工具說,“叫醒我,當你決定什麼按鈕推動。我不能幫你設計測試,人類!”

    很快,這將會改變。作為Tricentis技術研究員,我努力形狀工具,幫助測試人員分析更好;工具,幫助測試人員設計測試,而不僅僅是按鈕。這是一個關鍵的一部分,我們稱之為“未來的測試平台。”

    分析的喜悅

    這裏有一個例子的一種類型的測試分析工作,我經常遇到。想象我們正在測試,需要經過一段時間的命令。很多技術符合這一描述:自動售貨機,遙控器,計算器,一個命令行接口,一個操作係統,等。假設我們可以有四個命令的問題,我們可以在任何順序問題。讓我們也假設我們擔心特定命令的次序可能引發失敗。我們需要嚐試每一個序列,盡可能便宜。

    問題:什麼是最短的單一序列的命令,將包括所有可能的組合的三個命令子嗎?

    答:我們可以使用de Bruijn序列!

    就去debruijnsequence.org和使用這些工具來計算:

    001330023011033101200311123332032102131323220221222312113030201000

    這個序列包所有的序列組合成最短的字符串。你自己看。有“121年?“是的。有“330年?“是的。

    如果我們測試一個計算器,我們可以使用每個數字代表一個的四個命令:

    0 = +
    1 = -
    2 = -
    3 =分

    基於上述de Bruijn字符串,這個轉換表,和一個簡單的數字序列,我們可以構建這個表達式:

    1 + 2 + 3-4/5/6 + 7 + 8 * 9/8 + 7-6-5 + 4/3/2-1 + 2 - 3 * 4 + 5 + 6/7-8-9-8 * 7/6/5/4 * 3 + 2/1 * 2 - 3 + 4 * 5-6/7-8/9 * 8/7 * 6 * 5 + 4 * 3 * 2 * 2 * 3 * 4/5-6 * 7-8-9/8 + 7/6 + 5 * 4 + 3 - 2 + 1 + 2 + 3

    當我粘貼到微軟的Windows計算器程序,得到-19.1012。我得到了同樣的結果當我運行Perl程序的計算,和當我運行它在Excel中。

    我的朋友,這是分析測試。

    但詹姆斯…這不是分析。

    什麼?

    不,這隻是應用一些算法。

    我明白你的意思。是的,和其他人一樣,我傾向於注視明亮和閃亮的結果的分析,而不是眼睛背後的實際過程,潛伏和盤旋的分析師。你看到上麵寫的是我這篇文章的初稿。事實上,並不代表真正的行為分析。讓我瀏覽一遍,把更好的關注分析。

    的喜悅分析(第二次)

    這裏有一個例子的一種類型的測試分析工作,我經常遇到。想象我們正在測試,需要經過一段時間的命令。很多技術符合這一描述:自動售貨機,遙控器,計算器,一個命令行接口,一個操作係統,等。假設我們可以有四個命令的問題,我們可以在任何順序問題…

    分析:點菜了嗎?在我看來這個詞立即召喚狀態模型。順序很重要。技術總是敏感的狀態,從明顯的情況下試圖打個電話在你的手機上沒有SIM卡,默默的更微妙的情況下運行在磁盤空間和影響虛擬內存太低。州來來去去,由事件驅動的。一些係統尤其state-intensive,許多相互作用和持久的變量。其他人則受到相對較少的變量的影響。

    一個命令是一個事件,一個事件修改狀態。因此,命令的命令也是一個探索事件如何影響係統與美國生產或影響這些事件。換句話說,當各訂單,用戶可以做一些序列可能會觸發bug,而其他人可能不會。

    這些想法在我腦中閃現“調用的順序。“你還注意到某些詞或概念點亮你的頭腦和觸發一連串的可操作的想法嗎?這是一種形式的分析。你改善這種分析,給自己時間和空間去思考,獲得經驗,為思考創建飼料,並研究一般係統理論,數學,還是廣泛閱讀。

    讓我們還假設我們擔心某個命令的次序可能引發的失敗…

    分析:我們要做的就是嚐試所有的序列。但是等等,這將是不可能的。“所有的序列”是一個無限的想法,而我測試在一個有限的世界。我怎麼使無窮適合我?這讓我想起抽樣策略。使它容易處理的一種方法是限製序列的長度,我試一試。長度沒有限製,我可能會限製到100。這需要我來測試4One hundred.序列,這仍然是不可能的。不過,長度為3是很容易處理的。隻有64人。

    執行所需的分析,我能推斷組合和排列。我建議所有測試人員學習如何做的,或者誰能交朋友。學習的基本的東西(不同分組的事情)和排列組合(不同方式排序的事情)。假設任何命令都可以隨時發布和有四個命令,全數字的排列順序的三個命令是由計算4 * 4 * 4,或64年。

    我也推理對風險。我知道任何給定的長序列通常是不太可能發生比任何給定的短序列。也有例外,因為用戶行為並不是隨機的,但這是一個很好的通用啟發式。因此,如果我覆蓋所有短序列,發現其中的問題,它可能會是一個比一個更重要的錯誤隻發生在十在特定的順序執行特定的命令。

    我選擇了3號,因為它在這個博客很合適。自然測試項目,我會選擇一個長度的4點到6點。

    問題:最短的單一的命令序列,將包括所有可能的組合的三個命令子嗎?
    答:我們可以使用de Bruijn序列!

    分析:我是怎麼認為答案是de Bruijn序列呢?第一步是我必須知道的存在和屬性de Bruijn序列。這是一個問題,因為我從來沒有學過關於他們在大學(我從未完成高中學業,事實上)。那麼,如何?

    零步是我的妻子不能給我買我想要的聖誕節,那麼下一個最好的事情,她給了我關於科學和數學的書。我有無數。十年前,她給了我網、謎題和郵遞員:數學關係的探索。我讀到de Bruijn序列,這都是關於包裝最變化為最短的一組步驟。當然,我立刻尋找方法將它們應用於測試。(我與一切測試。我哥哥曾經質疑我找到一個教訓書店的針織部分的測試。不到一分鍾才發現我用的東西在我的類。)

    在這種情況下,分析部分主要是在之前的學習過程測試設計的時刻。我已經準備好了主意識別特定的模式,並將它們連接到特定的方法。分析在當下,你必須成為分析隨著時間的推移。這是一個持續的發展過程。

    你聰明的感覺怎麼樣?

    分析的本質是學習的過程,來自事物的仔細檢查。導致的理解問題和解決他們的興奮。但是你不會這樣做,除非你感覺分析;換句話說,你認為自己是聰明的嗎?很多人在我們的行業秘密感到愚蠢。

    我很幸運,我成長在鼓勵我的人。我的家裏到處都是書。我母親第一次訂閱我的時候出現科學美國人雜誌,我10歲的時候。我在努力讀的文章,但我對她想證明她的判斷是正確的,我。

    雖然不是每個人都鼓勵。這就是為什麼我最重要的工作是說服學生,他們在我的類可以做分析;,他們可以在它。隻是需要耐心和實踐。

    測試需求分析。它需要測試人員有野心的分析性思維。我的誌向——和Tricentis的野心——是為思維測試人員創建工具。

    * * *

    詹姆斯·巴赫是Tricentis谘詢軟件測試人員和技術研究員。他也是Satisfice的創始人兼首席執行官,Inc .軟件測試。詹姆斯一直在技術領域開發人員,測試人員,測試經理和顧問38年。他是一個測試的上下文驅動的學校的創始人,軟件測試的特許協會成員,快速的創造者軟件測試方法和基於會話的測試管理。他還寫了兩本書:在軟件測試的經驗教訓Buccaneer-Scholar的秘密:如何自我教育和追求的激情會導致一生的成功。更多關於他的作品和在線課程,請參閱https://www.satisfice.com/

    Baidu
    map