軟件測試中負面測試的完整指南
譯文【51CTO.com快譯】軟件測試至關重要,因為可以測試開發的應用程序是否正常工作。而軟件測試人員可以實施各種類型的測試。
盡管種類眾多,但所有測試都屬于兩種分類之一:正面測試和負面測試。這兩種測試同樣重要,而正面測試比負面測試更受歡迎。
本文將介紹軟件測試中的負面測試,測試人員為什么會避免實施負面測試;還介紹如何在實踐中執行負面測試以及將出現哪些負面測試場景,并分析正面測試和負面測試之間的區別,最后探討了負面測試的好處。
什么是負面測試?
軟件測試是檢查應用程序的基本功能是否按照其設計正常工作的過程。與此同時,它驗證應用程序是否具備處理問題和無效輸入的能力。
負面測試是指軟件測試的負面方法,也稱為故障測試或錯誤路徑測試。它旨在通過設計測試用例來發現應用程序的負面特征,它揭示了應用程序如何響應無效數據,并將預期輸出與錯誤輸出進行比較。
為什么測試人員避免進行負面測試?
盡管很有用,但負面測試似乎在軟件測試人員中名聲不佳。許多軟件測試人員不愿進行負面測試,因為他們認為這可能會不必要地延遲軟件或應用程序的發布。
有些測試人員認為負面測試是一種浪費時間和資源的行為,他們認為最好將時間和精力投入到正面測試中。
缺乏有關的技能和知識也阻礙了測試人員實施負面測試。因此并非每個人都完全了解該軟件的工作原理及其局限性。
盡管負面測試的名字是負面的,但會帶來積極的結果。由于以下原因,它應該是軟件測試策略的重要組成部分:
- 企業責任
軟件開發商需要向客戶提供優秀的軟件產品。負面測試與正面測試相結合對于確保應用程序的穩定性是必要的。雖然軟件開發商可能無法完全保證應用程序沒有錯誤,但至少可以通過負面測試盡量減少失敗。
- 客戶滿意度
客戶將軟件項目委托給軟件開發商,因為相信他們有能力創建出色的軟件。如果涉及在線股票、電子商務和其他敏感的商業交易,高質量的軟件就顯得尤為重要。
如果軟件開發商的目標是獲得客戶滿意度,負面測試至關重要。盡管如此,由客戶決定是否愿意投資執行負面測試所需的額外費用。
如何在實踐中進行負面測試
以下是用來對軟件應用程序執行負面測試的一些技術和實踐:
- 邊界值分析
這一方法涉及為邊界限制之外的值編寫測試用例。例如,如果測試的文本字段接受1到100個字符范圍內的數據,則邊界限制為1到100。
- 等價分區
這是一種測試軟件程序功能的技術。它需要將輸入值分組到不同的分區中。可以在每個分區中測試一些輸入值。
- 錯誤猜測
這一過程查明觸發故障或錯誤消息的特定條件。如果可能,應該嘗試在不會發生系統崩潰的情況下識別和糾正問題。但在某些情況下,如果錯誤情況沒有被立即關注和解決,錯誤的結果可能會導致極端的“下游”故障。
- 清單
這是一種基本但至關重要的方法,用于記錄計劃測試的錯誤情況。軟件測試的清單通常與錯誤猜測一起使用。
- 反模式
如果有設計模式,反模式就是它們的對立面。如果前者是解決問題的最佳方式,那么后者則是行不通的解決方案。反模式是負面測試的理想來源。
- 探索性測試
這一技術用于在測試進行時增加測試人員對應用程序的了解。它可以與其他測試同時進行。探索性測試可以讓他們清楚地了解應用程序的哪些方面有效,哪些方面無效。
- 小規模測試自動化
這是一種揭示內存錯誤、代碼缺陷和其他問題的方法,這些問題在生產使用中偶爾會暴露出來。它需要執行相同的動作數千次才能看到它對程序的影響。
- 模糊測試
這一過程涉及隨機數據的輸入,這可能會導致意外故障、崩潰和問題。與其他負面測試用例不同,模糊測試沒有預設的預期結果。它只是對由于任意輸入而可能發生的情況的觀察。
- 狀態轉換測試
這是一種用于發現應用程序中的缺陷的技術。它源于這樣一種概念,即軟件只能在一個時間點以一種特定的狀態存在。例如在出現問題之前,程序被認為處于正常運行狀態。
負面測試場景
執行負面測試的目的是查明應用程序在不同情況下可能出現的故障。以下是一些可能意外發生錯誤和崩潰的潛在情況:
- 填充必填字段
某些軟件和網頁展示了需要用戶填寫的字段。可以設計一個測試,將必填字段留空,以便評估應用程序對此場景的響應。
- 數據與字段類型的對應關系
大多數數字表單和對話框都能夠以某種形式接收數據,例如文本、數字、日期和時間。可以進行測試,將錯誤的數據類型輸入到控件中,以查看應用程序在這種情況下的反應。
- 允許的數據界限和限制
一些軟件程序包含的輸入字段只接收特定數字或文本范圍內的數據。測試人員可以設計一個輸入值低于或高于特定字段邊界的測試。
- 允許的字符數
有些網頁和應用程序的字段只允許用戶輸入有限數量的字符。測試人員可以選擇概念化測試,其中在字段中輸入的字符多于通常允許的字符數。
- 網絡會話測試
某些Web瀏覽器要求用戶在加載網頁之前先登錄。測試人員可以執行測試,嘗試在不事先登錄的情況下在應用程序中打開網頁。
- 合理的數據
某些程序和網頁具有合理限制的字段。測試人員可以進行負面測試,在該字段中輸入無效數據。
正面測試和負面測試之間的區別
與負面測試相反,正面測試是一種軟件測試,可以確保應用程序在正常情況下正常工作。下表概述了正面測試和負面測試之間的主要區別:
負面測試的好處
正面測試有其優勢,但負面測試也有其重要的優勢。以下是負面測試軟件應用程序的一些好處:
- 負面測試有助于識別Bug的錯誤處理
它可以避免因錯誤處理Bug而導致的應用程序故障。它可以幫助確認軟件代碼是否停止管理已經編程的用例。它還可以防止客戶端無法訪問修復Bug所需數據的情況。
- 它有助于識別安全方面可能存在的薄弱環節
負面測試允許確保客戶無法訪問計劃中的個人帳戶,以防不允許這樣做。它使測試人員能夠在必要時阻止一組用戶使用應用程序的專門功能。
- 它有助于維護干凈的數據庫
如果一個程序的數據庫只包含有效數據,它就會處于良好狀態。負面測試可以增加應用程序只存儲和顯示有效信息的可能性。
原文標題:A Complete Guide to Negative Testing in Software Testing,作者:Vakul Gotra
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】