軟件測試中十大負面測試用例

 負面測試(Negative testing)是相對於正面測試(Positive testing)而言的。它們也是測試設計時的兩個非常重要的劃分。簡單點說,正面測試就是測試系統是否完成了它應該完成的工作;而負面測試就是測試系統是否不執行它不應該完成的操作。形象一點,正面測試就象一個畢恭畢敬的小學生,老師叫我做什麼,我就做什麼;而負面測試就象一個調皮搗蛋的孩子,你叫我這樣做,我偏不這樣做,而且和你對着幹。開發人員也是最討厭修改此類bug的。

  正面測試主要根據需求,功能說明書,設計文檔等相關參考文檔來執行測試,而負面測試則主要根據錯誤猜測,逆向思維來測試系統,一定程序上的的依賴測試人員的經驗積累。

  執行負面測試時,不單單要測試系統是否處理了用戶的異常操作,還要檢查系統對於這些異常操作是否給予了正確的錯誤提示。它是系統對用戶進行繼續正確操作的指引。

  簡言之負面測試的三部曲就是:

  1、檢查程序中的屏幕或頁面是否給出了清晰且充分的提示或約束;

  2、測試系統是否處理了用戶的異常操作;

  3、檢查系統的錯誤提示是否清晰且充分。

  以下是Steve Miller的《Top 10 Negative Test Cases》,概括性的提到了一些做負面測試時經常需要注意的測試。

  負面測試用例被設計於用軟件未意欲被使用的方式測試軟件,它也應該是測試工作的一部分。以下就是在設計測試工作量時你應該考慮的十大負面測試用例。

  1、植入的單引號。大多數基於SQL的數據庫系統在用戶存儲包含一個單引號的信息時會出現問題,例如John's car。每一個可以接受文字數字型數據條目的屏幕都要試試輸入包含一個或多個單引號的文本。

  【補充】其實不只是單引號,基本上測試人員應該測試所有的特殊字符和空/空格(單純的空格和文本前後的空格)。單引號,逗號,/,<,>(對於web的應用程序)都是很容易引發錯誤的。在開發早期測試組就可以建議開發組寫一個通用的函數來處理這些特殊字符,然後在處理用戶的輸入時套用這個函數就可以避免此類錯誤了。

  2、必需輸入的數據條目。功能說明書上應該清楚的指出屏幕上必須輸入數據條目的字段。測試屏幕上每一個被說明爲必須輸入的字段以保證它強制要求你在字段中輸入數據。

  【補充】對於強制輸入的字段,在屏幕上最好有些標識以說明其爲必須輸入的字段。一般在字段前或後用紅色的*號表示。測試時必須要檢查有標識的字段是否和功能說明書或其他參考文檔一致,錯誤信息提示是否正確,強制輸入的字段是否真的必須輸入。

  3、字段類型測試。功能說明書上應該清楚的指出要求特定數據輸入要求(日期字段,數字字段,電話號碼,郵編等等)的字段。測試屏幕上每一個被指出有特定類型的字段以保證你輸入了基於字段類型的符合正確格式的數據(數字型字段應該不允許字符或特殊字符,日期型的字段應該允許輸入一個正確的日期等等)

  【補充】其實這裏還有一個字段格式和字段內容的測試。有些字段對輸入的格式有要求,這些字段的格式一般在屏幕上也有相應的提示。所以在測試時需要測試提示的格式是否合理(和功能說明書或其他參考文檔相一致)以及系統是否正確識別輸入的格式。有些字段對字段的內容有限制,如常見的用戶名,不能包含特殊字符,首字不能未數字等要求。所以在測試時需要測試提示的格式是否合理(和功能說明書或其他參考文檔相一致)還有不符合內容要求的數據輸入時系統是否正確的處理。

  4、字段長度測試。功能說明書上應該清楚的指出可以在字段中輸入的字符數(例如,first name必須是50個或更少的字符)。寫測試用例以保證你只可以輸入特定的字符數。防止用戶輸入比允許範圍更多的字符比因用戶已輸入過多的字符而給出的錯誤信息更加的文雅些。

  【補充】一般對於限制長度的字段,現在開發大多采用限制輸入的方法(設置字段的長度)來處理。所以測試時需要測試限制的長度是否合理(和功能說明書或其他參考文檔相一致),對於沒有限制長度的字段,要測試無窮輸入時是否出錯,有問題報bug時建議開發人員根據需要限制長度。

  5、數字型的邊界測試。對於數字型的字段,測試上下邊界是非常重要的。例如,如果你正在計算某個賬戶的利息時,你永遠不會輸入一個負的利息數給應該贏取利息的賬戶。因此,你應該嘗試用負數測試。同樣,如果功能說明書上要求字段在某一個特定的範圍(如從10~50),你就應該嘗試輸入9或51,它應該給出一個得體的信息表示失敗。

  6、數字的約束測試。大多數數據庫系統和編程語言允許數字條目被識別爲整數或長整數。通常,整數的範圍是從-32,767~32,767,長整數的範圍從-2,147,483,648~2,147,483,647。對於那些沒有特定邊界限制的數字數據條目,用這些限制測試以確保不會出現數字的溢出錯誤。

  【補充】小數型的數字字段同樣也需要格外的測試。一般對於未指出數字類型的字段,嘗試輸入負整數,負小數,0,正整數,正小數進行測試。

  不管是哪種數據庫系統,對於數字一般都有多種數字類型。所以測試人員一定要測試的全面。

  7、日期邊界測試。對於日期型的字段,測試上下邊界是很重要的。例如,如果你正在檢查一個出生日期的字段,很大可能出生日期不能早於150年前。同樣,出生日期應該不是將來的某一天。

  【補充】一般來說,每種數據庫系統的日期都有個範圍,如SQL Server最小日期是1753年1月1日,所以如果是輸入型的日期字段同樣也應該測試早於1753的日期。

  8、日期的有效性。對於日期字段,確保不允許無效的日期是很重要的(04/31/2007是一個無效的日期)。測試用例也應該檢查閏年(每個第4年和第400年是一個閏年)。

  9、web會話測試。很多的web應用程序依賴瀏覽器的會話來追蹤已登錄的用戶,應用程序的設置等等。應用程序的大多數屏幕不被設計爲沒有首次登錄就可以被運行。應用程序應該確保在打開應用程序的某一頁面之前會話裏有一個有效的登錄。

  10、性能的改變。當發佈產品的最新版本時,應該有一套運行於識別屏幕(列出信息的屏幕,add/update/delete數據的屏幕等等)速度的性能測試。測試包裏應該包括比較先前版本和現有版本性能統計值的測試用例。這個可以幫助識別那些可以證明是隨着對現有版本的代碼變更而引起的潛在的性能問題。

  【補充】從第一條到第八條是我們在測試字段時常常需要做的測試,一般的測試人員都不陌生。第九條在測試web應用程序中會作爲檢查應用程序的安全性而做的一項測試。而第十條估計很多公司都不會將它考慮到測試的範疇中,一般最多也就是在測試用例中添加校驗某一個操作是否在系統允許的響應時間裏,很少去做這樣的比較,除了一些有針對性的性能測試。

 

 

轉自:http://softtest.chinaitlab.com/qtjs/807923.html

發佈了33 篇原創文章 · 獲贊 24 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章