設計好的測試用例是一門復雜的藝術。其復雜性有三個原因:
測試用例能幫我們發現信息。不同類型的測試對不同類型的信息有效。
可以從多方面證明測試用例是“好的”。但沒有一個測試用例在任何方面都很優秀。
人們往往會根據某個測試類型來創建測試用例,比如域測試或基于風險的測試。好的域測試與好的基于風險的測試是不同的。
有些大批量產生的錯誤很難解決。很容易發現錯誤發生在一個特定的測試下,但導致錯誤發生的一個必要條件可能在真正失敗之前已經經過了成千上百個測試。解決這些問題的方法就是設計一些比其他測試更有效的測試集合。
探索性測試
探索性測試是“測試人員積極地在設計測試的同時執行這些測試,利用在測試中獲取的信息設計新的更好地測試”(Bach 2003a)。
Bach指出測試是一個跨越純腳本(測試人員根據腳本明確的開展工作)和純探索(測試人員的行為不是預先設計好的,并且除了BUG報告他們沒有必要產生任何測試文檔)的結合體。在這個結合體中任何給定的測試都是投勞的。甚至是由熟練的測試人員執行的杰出的、執行腳本前的測試也是探索性的測試。
“在原型用例中(Bach稱之為“自由的探索性測試”),探索性的測試人員不斷地學習他們正在測試的軟件、產品的市場、產品會失敗的各種情形、產品的弱點(包括在應用歷史中哪里出現過問題以及哪些開發這是解決哪種錯誤的),并用最佳方法測這個軟件。在學習這些的同時,探索性的測試人員也在測這個軟件,報告他們發現的問題,主張解決他們發現的問題,并根據他們學習過程中獲得的信息開發出新的測試!(Tinkham & Kaner,2003)
探索性的測試人員可以使用任何類型的測試--域測試、基于規范的測試、壓力測試、基于風險的測試、其中任何幾個。根本性的問題是不管哪類測試是最好的,只要此時此刻能盡可能地展現測試人員尋找的信息即可。
探索性測試不是純粹自發的。
測試人員需要做深入的研究,比如了解有競爭力的產品、這個或類似產品的失敗歷史、與程序員和用戶交流、閱讀規格說明書、與產品一起工作。
熟練的探索性測試與其他方法以及拙劣的探索性測試的區別是什么,區別是在測試的同時,做探索性測試的人也在忙于工作,學習、計劃以及運行測試。好的測試用例提高了測試人員在尋求信息目標方面的知識。探索性測試很高程度上是目標驅動的,但是在測試人員獲取到新知識時目標很快機會改變。
結論
生成“好的”測試用例沒有簡單的公式或規定可以遵循。即使是多年以來在測試方面感興趣的人也很難做到這一點。軟件測試
我見過很多測試團隊中大多數都堅持使用少數幾類測試,以場景測試為主或以域測試為主,等等。只要他們擅長于他們偏愛的測試類型,他們的測試在某些方面就會變得極好。不幸的是,我們希望的測試類型不是在任何方面都極好的測試。為了讓測試結果多樣化、廣泛化,我們必須有各方面的技術。
致謝
這項研究部分是由EIA-0113539 ITR/SY+PE:“提高軟件測試者的教育”給予的支持。感謝Andy Thinkham,Al Jorgenson,和Pat McGee給以上的稿件的評論。
文章來源于領測軟件測試網 http://www.kjueaiud.com/