?

如何設計好的測試用例

2020-02-02 04:00蘇春莉曹新淼
價值工程 2020年3期
關鍵詞:邊界值測試用例軟件測試

蘇春莉 曹新淼

摘要:測試用例是軟件測試必須遵守的準則。本文從測試用例概念談起,介紹了測試用例概念、設計目的、以及所具備的特征,通過舉例說明了常用的測試用例設計方法,最后著重介紹了如何設計好的測試用例。良好的測試用例將大大減少項目執行時間,提高測試效率。

Abstract: Test case is the guideline that software testing must adhere to. This article starts with the concept of test case, introduces the concept, the design purpose and the features of test case. It illustrates the common test case design methods by examples, and finally focuses on how to design good test cases. Good test cases will greatly reduce project execution time and improve testing efficiency.

關鍵詞:軟件測試;測試用例;等價類;邊界值

Key words: software testing;test case;equivalence classes;boundary value

中圖分類號:TP31? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻標識碼:A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文章編號:1006-4311(2020)03-0219-02

0? 引言

軟件測試是軟件生命周期的重要組成部分,與軟件的質量密切相關,是驗證軟件質量特性的重要手段。測試用例作為軟件測試過程的一個重要角色,它是測試執行環節的主要依據,是測試過程必須遵守的準則,更是保證軟件測試質量的關鍵所在。

1? 什么是好的測試用例

測試用例(Test Case)是指對一個特定的軟件產品進行測試任務的描述,是為特定的測試目標而設計的一組數據信息,包括測試輸入、執行條件和預期結果的集合,用以測試軟件或程序的某個方面是否達到用戶的特定需求[1]。

在測試之前,不僅要設計測試用例,還要設計“好的”測試用例。通常,人們認為“發現了軟件缺陷的測試用例就是好的用例”,那么“如果說測試用例發現了缺陷就是好用例,那么在該缺陷被修復后,同樣的用例難道就不是好用例了嗎?”。還有人經常說“發現至今未被發現的軟件缺陷的測試用例就是好用例”,那么:如何評估是否還存在未被發現的缺陷?如果軟件中根本就沒有錯誤了呢?

所以“好的”測試用例一定是一個完備的集合,它能夠覆蓋所有等價類以及各種邊界值,而跟能否發現缺陷無關。

2? 設計測試用例的目的

眾所周知,軟件測試的窮舉往往是不可能的,局限于測試時間和所需的資源。測試用例設計就是將軟件測試的行為活動,作一個科學化的組織歸納。為了提高測試效率,在具體測試過程中,通常是從眾多的可用測試數據中采用不同的方法篩選出典型的和特別的測試數據來進行測試。

設計測試用例主要有以下幾個目的:①在開始實施測試之前,設計好測試用例可以避免盲目測試,以便提高測試效率。②使用測試用例進行測試,使得測試的目的比較明確,重點比較突出,同時減少對軟件功能的漏測現象。③在對不同版本軟件進行重復測試時,測試用例會被再次用到,這時只需修正少部分的測試用例便可展開測試工作,降低工作強度,縮短項目周期。④功能模塊的通用性和復用性使軟件易于開發,而測試用例的通用性和復用性則會使軟件測試易于開展,所以隨著測試的不斷精化其效率不斷攀升[2]。

3? 測試用例具備的特征

測試用例是測試過程中的重要參考依據,設計好的測試用例將大大減少項目執行時間,提高測試效率。好的測試用例具有以下特征:

①整體完備性:“好的”測試用例一定是一個完備的整體,是有效測試用例組成的集合,能夠完全覆蓋測試需求。

②等價類劃分的準確性:指的是對于每個等價類都能保證只要其中一個輸入測試通過,其他輸入也一定測試通過。

③等價類集合的完備性:需要保證所有可能的邊界值和邊界條件都已經正確識別。做到了以上三點,就可以肯定測試是充分且完備的,即做到了完整的測試需求覆蓋。

4? 設計測試用例的方法

測試用例的設計方法比較多,通常有等價類劃分法、邊界值分析法、錯誤推測方法、判定表驅動分析法、場景設計方法、正交實驗設計方法和功能圖法等,但是真正具有實用價值且常用的是前三種方法。

①等價類劃分方法。等價類中任意一個輸入數據對于揭露程序中潛在錯誤都具有同等效果。劃分好等價類后,只要從每個等價類中選取其中的一個值進行測試,就可以代表此等價類的數據進行測試,從而取得較好的測試覆蓋結果。例如:學生信息系統中有一個“考試成績”的輸入項,成績的取值范圍是0~100之間的整數,考試成績及格的分數線是60。為了測試這個輸入項,顯然不可能用0~100的每一個數去測試。在考慮了有效等價類和無效等價類后,設計的測試用例為:

有效等價類 1:0~59之間的任意整數;

有效等價類 2:60~100之間的任意整數;

無效等價類 1:小于0的負數;

無效等價類 2:大于100的整數;

無效等價類 3:0~100之間的任何浮點數;

無效等價類 4:其他任意非數字字符。

②邊界值分析方法。它是對輸入或輸出的邊界值進行測試的一種方法,不是從某等價類中隨便挑一個作為代表,而是使這個等價類的每個邊界都要作為測試條件,同時不僅考慮輸入條件,還要考慮輸出空間產生的測試情況[3]。再看學生信息系統中“考試成績”的例子,選取的邊界值數據應該包括這些邊界值:-1,0,1,59,60,61,99,100,101。

③錯誤推測方法。錯誤推測方法是指基于對被測試軟件系統設計的理解、過往經驗以及個人直覺,推測出軟件可能存在的缺陷,從而有針對性地設計測試用例的方法。錯誤推測法和目前非常流行的“探索式測試方法”的基本思想和理念是不謀而合的,這類方法在目前的敏捷開發模式下的投入產出比很高,因此被廣泛應用。

比如,Web界面的GUI功能測試,需要考慮瀏覽器在有緩存和沒有緩存下的表現;對于代碼級的單元測試,需要考慮被測函數的輸入參數為空情況下的內部處理邏輯等。類似這些都是基于曾經遇到的問題而進行的錯誤推測,很大程度上取決于個人能力。

5? 如何設計好的測試用例

在實際的測試實踐中,不同的軟件項目在研發生命周期的各個階段都會有不同的測試類型。對于每一種不同的測試類型,設計的測試用例的關注點和方法論可能會有很大的差異。要設計出好的測試用例,需要做到以下幾點:

①從軟件功能需求出發,全面地、無遺漏地識別出測試需求是至關重要的,這將直接關系到用例的測試覆蓋率。在具體的用例設計時,先搞清楚每一個業務需求所對應的多個軟件功能需求點,然后分析出每個軟件功能需求點對應的多個測試需求點,最后再針對每個測試需求點設計測試用例[4]。

②對于識別出的每個測試需求點,需要綜合運用等價類劃分、邊界值分析和錯誤推測方法來全面地設計測試用例。要綜合運用這三種方法,并針對每個測試需求點的具體情況,進行靈活選擇。

以“用戶登錄”的功能性測試需求為例,首先應該對“用戶名”和“密碼”這兩個輸入項分別進行等價類劃分,列出對應的有效等價類和無效等價類,對于無效等價類的識別可以采用錯誤猜測法,然后基于兩者可能的組合,設計出第一批測試用例。等價類劃分完后,需要補充“用戶名”和“密碼”這兩個輸入項的邊界值的測試用例,比如用戶名為空(NULL)、用戶名長度剛剛大于允許長度等。

③除了功能性需求以外,非功能性需求也是極其關鍵的。什么是非功能性需求呢?從軟件測試的維度來看,非功能性需求主要涉及安全性、性能以及兼容性等三大方面。這些非功能性需求對軟件系統的質量有著舉足輕重的作用。

同樣以“用戶登錄”為例,非功能性的測試用例比如有:1)安全性測試用例:用戶密碼后臺存儲是否加密;用戶密碼在網絡傳輸過程中是否加密;密碼輸入框是否不支持復制和粘貼;用戶名和密碼的輸入框中分別輸入典型的“SQL注入攻擊”字符串,驗證系統的返回頁面等;2)性能壓力測試用例:單用戶登錄的響應時間是否小于3秒;單用戶登錄時,后臺請求數量是否過多;高并發場景下服務端的監控指標是否符合預期;3)兼容性測試用例:不同瀏覽器下,驗證登錄頁面的顯示以及功能正確性;相同瀏覽器的不同版本下,驗證登錄頁面的顯示以及功能正確性;不同移動設備終端的不同瀏覽器下,驗證登錄頁面的顯示以及功能正確性等。

④深入理解被測試軟件的架構,設計出“有的放矢”的測試用例集,去發現系統邊界以及系統集成上的潛在缺陷。作為測試人員,必須對被測系統內部的架構有清楚的認識,比如數據庫連接方式、數據庫的讀寫分離、消息中間件的配置、緩存系統的層級分布、第三方系統的集成等等[5]。

⑤深入理解被測軟件的設計與實現細節、以及內部的處理邏輯。單單根據測試需求點設計的用例,只能覆蓋“表面”的一層,往往會覆蓋不到內部的處理流程、分支處理,而沒有覆蓋到的部分就很可能出現缺陷遺漏。

⑥引入需求覆蓋率和代碼覆蓋率來衡量測試執行的完備性,并以此為依據來找出遺漏的測試點。在具體實踐中,通過代碼覆蓋率指標找出可能的測試遺漏點。同時,切忌不要以開發代碼的實現為依據設計測試用例。因為開發代碼實現的錯誤會導致測試用例也出錯,所以應該根據原始需求設計測試用例。

6? 結語

軟件測試用例設計的質量和效果,直接關系到測試過程的開展、測試效率以及最終的測試結果。設計測試用例是為了更有效地發現缺陷,本文在測試用例概念特征的基礎上,通過舉例介紹了設計測試用例常用的三種方法,著重介紹了如何設計好的測試用例,這對于實際的測試分析與設計具有一定的參考意義。

參考文獻:

[1]朱少民.軟件測試[M].上海:人民郵電出版社,2016.

[2]張倩倩,趙星漢,高湘飛.軟件測試用例設計方法[J].電子技術與軟件工程,2018.

[3]陳能技.軟件測試技術大全[M].北京:人民郵電出版社,2011.

[4]馬均飛,鄭文強.軟件測試設計[M].北京:電子工業出版社,2011.

[5]柳純錄.軟件測評師教程[J].清華大學出版社,2012.

[6]翟燕.探討計算機軟件測試的相關技術應用[J].價值工程,2018,37(06):181-182.

猜你喜歡
邊界值測試用例軟件測試
基于SmartUnit的安全通信系統單元測試用例自動生成
基于OBE的軟件測試課程教學改革探索
巧用洛必達法則速解函數邊界值例讀
EXCEL和VBA實現軟件測試記錄管理
基于混合遺傳算法的回歸測試用例集最小化研究
關于軟件測試技術應用與發展趨勢研究
軟件測試工程化模型及應用研究
極坐標下薄板彎曲問題的重心有理插值法
基于依賴結構的測試用例優先級技術
一類帶有Dirichlet邊界值條件的橢圓型方程正解的存在性
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合