10大負面測試用例
負面測試(
negative testing
)是相對於正面測試(
positive testing
)而言的。它們也是測試設計時的兩個非常重要的劃分。簡單點說,正面測試就是測試系統是否完成了它應該完成的工作;而負面測試就是測試系統是否不執行它不應該完成的操作。形象一點,正面測試就象乙個畢恭畢敬的小學生,老師叫我做什麼,我就做什麼;而負面測試就象乙個調皮搗蛋的孩子,你叫我這樣做,我偏不這樣做,而且和你對著幹。開發人員也是最討厭修改此類
bug的。
正面測試主要根據需求,功能說明書,設計文件等相關參考文件來執行測試,而負面測試則主要根據錯誤猜測,逆向思維來測試系統,一定程式上的的依賴測試人員的經驗積累。
執行負面測試時,不單單要測試系統是否處理了使用者的異常操作,還要檢查系統對於這些異常操作是否給予了正確的錯誤提示。它是系統對使用者進行繼續正確操作的指引。
簡言之負面測試的三部曲就是:
1. 檢查程式中的螢幕或頁面是否給出了清晰且充分的提示或約束;
2. 測試系統是否處理了使用者的異常操作;
3. 檢查系統的錯誤提示是否清晰且充分。
以下是steve miller的《top 10 negative test cases》,概括性的提到了一些做負面測試時經常需要注意的測試。
負面測試用例被設計於用軟體未意欲被使用的方式測試軟體,它也應該是測試工作的一部分。以下就是在設計測試工作量時你應該考慮的10大負面測試用例。
1.植入的單引號。大多數基於sql的資料庫系統在使用者儲存包含乙個單引號的資訊時會出現問題,例如john's car。每乙個可以接受文字數字型資料條目的螢幕都要試試輸入包含乙個或多個單引號的文字。
【kiki
補充】其實不只是單引號,基本上測試人員應該測試所有的特殊字元和空
/空格(單純的空格和文字前後的空格)。單引號,逗號,/,
<
,>
(對於web
的應用程式)都是很容易引發錯誤的。在開發早期測試組就可以建議開發組寫乙個通用的函式來處理這些特殊字元,然後在處理使用者的輸入時套用這個函式就可以避免此類錯誤了。
2.必需輸入的資料條目。功能說明書上應該清楚的指出螢幕上必須輸入資料條目的字段。測試螢幕上每乙個被說明為必須輸入的字段以保證它強制要求你在字段中輸入資料。
【kiki
補充】對於強制輸入的字段,在螢幕上最好有些標識以說明其為必須輸入的字段。一般在字段前或後用紅色的
*號表示。測試時必須要檢查有標識的字段是否和功能說明書或其他參考文件一致,錯誤資訊提示是否正確,強制輸入的字段是否真的必須輸入。
3.字段型別測試。功能說明書上應該清楚的指出要求特定資料輸入要求(日期字段,數字字段,**號碼,郵編等等)的字段。測試螢幕上每乙個被指出有特定型別的字段以保證你輸入了基於字段型別的符合正確格式的資料(數字型字段應該不允許字元或特殊字元,日期型的字段應該允許輸入乙個正確的日期等等)
【kiki
補充】其實這裡還有乙個字段格式和字段內容的測試。有些欄位對輸入的格式有要求,這些欄位的格式一般在螢幕上也有相應的提示。所以在測試時需要測試提示的格式是否合理(和功能說明書或其他參考文件相一致)以及系統是否正確識別輸入的格式。有些欄位對字段的內容有限制,如常見的使用者名稱,不能包含特殊字元,首字不能未數字等要求。所以在測試時需要測試提示的格式是否合理(和功能說明書或其他參考文件相一致)還有不符合內容要求的資料輸入時系統是否正確的處理。
4.字段長度測試。功能說明書上應該清楚的指出可以在字段中輸入的字元數(例如,first name必須是50個或更少的字元)。寫測試用例以保證你只可以輸入特定的字元數。防止使用者輸入比允許範圍更多的字元比因使用者已輸入過多的字元而給出的錯誤資訊更加的文雅些。
【kiki
補充】一般對於限制長度的字段,現在開發大多採用限制輸入的方法(設定欄位的長度)來處理。所以測試時需要測試限制的長度是否合理(和功能說明書或其他參考文件相一致),對於沒有限制長度的字段,要測試無窮輸入時是否出錯,有問題報
bug時建議開發人員根據需要限制長度。
5.數字型的邊界測試。對於數字型的字段,測試上下邊界是非常重要的。例如,如果你正在計算某個賬戶的利息時,你永遠不會輸入乙個負的利息數給應該贏取利息的賬戶。因此,你應該嘗試用負數測試。同樣,如果功能說明書上要求欄位在某乙個特定的範圍(如從10~50),你就應該嘗試輸入9或51,它應該給出乙個得體的資訊表示失敗。
6.數字的約束測試。大多數資料庫系統和程式語言允許數字條目被識別為整數或長整數。通常,整數的範圍是從-32,767~32,767,長整數的範圍從-2,147,483,648~2,147,483,647。對於那些沒有特定邊界限制的數字資料條目,用這些限制測試以確保不會出現數字的溢位錯誤。
【kiki
補充】小數型的數字字段同樣也需要格外的測試。一般對於未指出數字型別的字段,嘗試輸入負整數,負小數,
0,正整數,正小數進行測試。
不管是哪種資料庫系統,對於數字一般都有多種數字型別。所以測試人員一定要測試的全面。
7.日期邊界測試。對於日期型的字段,測試上下邊界是很重要的。例如,如果你正在檢查乙個出生日期的字段,很大可能出生日期不能早於150年前。同樣,出生日期應該不是將來的某一天。
【kiki
補充】一般來說,每種資料庫系統的日期都有個範圍,如
sql server
最小日期是
2023年1
月1日,所以如果是輸入型的日期字段同樣也應該測試早於
1753
的日期。
8。日期的有效性。對於日期字段,確保不允許無效的日期是很重要的(04/31/2007是乙個無效的日期)。測試用例也應該檢查閏年(每個第4年和第400年是乙個閏年)。
9。web會話測試。很多的web應用程式依賴瀏覽器的會話來追蹤已登入的使用者,應用程式的設定等等。應用程式的大多數螢幕不被設計為沒有首次登入就可以被執行。應用程式應該確保在開啟應用程式的某一頁面之前會話裡有乙個有效的登入。
10.效能的改變。當發布產品的最新版本時,應該有一套執行於識別螢幕(列出資訊的螢幕,add/update/delete資料的螢幕等等)速度的效能測試。測試包裡應該包括比較先前版本和現有版本效能統計值的測試用例。這個可以幫助識別那些可以證明是隨著對現有版本的**變更而引起的潛在的效能問題。
【kiki
補充】從第一條到第八條是我們在測試欄位時常常需要做的測試,一般的測試人員都不陌生。第九條在測試
web應用程式中會作為檢查應用程式的安全性而做的一項測試。而第十條估計很多公司都不會將它考慮到測試的範疇中,一般最多也就是在測試用例中新增校驗某乙個操作是否在系統允許的響應時間裡,很少去做這樣的比較,除了一些有針對性的效能測試。
十大負面測試用例
負面測試 negative testing 是相對於正面測試 positive testing 而言的。它們也是測試設計時的兩個非常重要的劃分。簡單點說,正面測試就是測試系統是否完成了它應該完成的工作 而負面測試就是測試系統是否不執行它不應該完成的操作。形象一點,正面測試就象乙個畢恭畢敬的小學生,老...
十大負面測試用例
負面測試 negative testing 是相對於正面測試 positive testing 而言的。它們也是測試設計時的兩個非常重要的劃分。簡單點說,正面測試就是測試系統是否完成了它應該完成的 工作 而負面測試就是測試系統是否不執行它不應該完成的操作。形象一點,正面測試就象乙個畢恭畢敬的小學生,...
十大負面測試用例
負面測試 negative testing 是相對於正面測試 positive testing 而言的。它們也是測試設計時的兩個非常重要的劃分。簡單點說,正面測試就是測試系統是否完成了它應該完成的工作 而負面測試就是測試系統是否不執行它不應該完成的操作。形象一點,正面測試就象乙個畢恭畢敬的小學生,老...