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