軟體測試的定義

2021-08-13 09:42:01 字數 2366 閱讀 5478

關於軟體測試的定義,不同學者有不同的觀點,了解軟體測試的定義,對於日後在工作中是很有幫助的,

首先要明確測試的定義,所謂測試,就是以檢驗產品是否滿足需求為目標。

而軟體測試,自然是為了發現軟體(產品)的缺陷而執行軟體(產品)

比較標準的軟體測試的定義是:在規定的條件下對程式進行操作,以發現錯誤,對軟體質量進行評估。

附註:g.j.myers給出了測試定義—「程式測試是為了發現錯誤而執行程式的過程」,實際上這是乙個狹義的概念,因為他認為測試是執行程式的過程,也就是傳統意義上的測試—在**完成後,通過執行程式來發現程式**或軟體系統中錯誤。但是,這種意義上的測試是不能在**完成之前發現軟體系統需求及設計上的問題的,把需求、發現設計上的問題遺留到後期—最 終在**中體現出來,這樣就可能會造成設計、程式設計的部分或全部返工。需求階段和設計階段的缺陷在開發過程中會產生擴大效應,缺陷的嚴重性隨時間發展越來越 嚴重,其結果會大大增加軟體開發的成本、延長開發的週期等。這種狹義的觀點主要是受軟體開發瀑布模型的影響,而且非常不利於保證軟體質量。

延伸後的軟體測試,被認為是軟體測試的一種廣義概念。這就引出了廣義的軟體測試的兩個概念「靜態測試」和「動態測試」。這樣,靜態測試和動態測試就構成了乙個全過程的、完整的軟體測試,而且靜態測試顯得更為重要。

說明:靜態測試的主要活動是評審,即通過對需求、設計、配置、程式和其他各類文件的審查來檢驗相應的內容是否滿足使用者的需求。由於靜態測試不需要執行程式,所以測試物件是屬於靜態的.

動態測試通過執行程式來發現軟體系統中的問題,在程式執行過程中發現缺陷,它具有動態性。

g.j.myers的第2個觀點是「測試是為了證明程式有錯,而不是證明程式無錯誤」,引出了軟體測試的另外乙個爭論:

軟體測試究竟是證明所有軟體的功能特性是正確的,還是相反—對軟體系統進行各種試探和攻擊,找出軟體系統中不正常或不工作的地方,就我個人理解,這兩個方面都有一定道理,前者(證明或驗證所有軟體的功能特性是正確的)是從質量保證的角度來思考軟體測試,後者(證明程式有錯)從軟體測試的直接目標和測試效率來思考,兩者應該相輔相成。在後者的思想背景下,可以認為測試不是為了證明所有的功能都能正常工作,恰恰相反,測試就是為了找出那些不能正常工作、不一致性的問題,也就是說,測試的工作就是發現缺陷(detect bug ),即在軟體開發過程中,分析、設計與編碼等工作都是建設性的,唯獨測試帶有「破壞性」, 它想方設法發現軟體所存在的問題。軟體測試就是在這兩者之間獲得平衡,但對於不同的應用領域,兩者的比重是不一樣的。例如,國防、航天、銀行等軟體系統, 承受不了系統的任何一次失效,因為任何失效都完全有可能導致災難性的損失,所以強調前者,以保證非常高的軟體質量。而一般的軟體應用或服務,則可以強調後 者,質量目標設定在「使用者可接受水平」,以降低軟體開發成本,加快軟體發布速度,有利於市場的擴張。

(1)驗證軟體是「工作的」,以正向思維方式,針對軟體系統的所有功能點,逐個驗證其正確性。

(2)證明軟體是「不工作的」,以反向思維方式,不斷思考開發人員理解的誤區、不良的習慣、程式**的邊界、無效資料的輸入及系統的弱點.試圖破壞系統、摧毀系統,目標就是發現系統中各種各樣的問題。其代表人物就是上面多次提到的g.j.myers。他強調,乙個成功的測試必須是發現缺陷的測試,不然就沒有價值。

乙個好的測試用例在於它能發現至今未發現的錯誤」, 這體現了軟體測試的經濟學觀點。實際上,軟體測試經濟學問題至今仍是業界關注的問題之一。經濟學的核心就是要盈利,盈利的基礎就是要有乙個清楚的商業性目 標。同樣,商業性目標是否正確,直接決定了企業是否盈利。在多數情況下,軟體測試是在公司內執行的。正是公司的行為目的,決定了軟體測試含義或定義經濟性 的一面。正如對軟體質最的定義不僅僅侷限於「和客戶需求的一致性、適用性」,而且要增加其他的要求—「開發成本控制在預算內、按時發布軟體、系統易於維護」等。

軟體測試也一樣,要盡快盡早地發現更多的缺陷,並督促和幫助開發人員修正缺陷。原因很簡單,缺陷發現得越早,所付出的代價就越低,例如在程式設計階段發現乙個需求定義上的錯誤,其代價將10倍於在需求階段就發現該缺陷的代價。這就是從經濟學的觀點來說明測試進行得越早越好這樣乙個道理。

從標準觀點來看,可以定義為「驗證」和「有效性確認」活動夠成的整體,即軟體測試=v&v

「驗證」是檢驗軟體是否已正確地實現了軟體需求規格說明書所定義的系統功能和特性。驗證過程提供證據表明軟體相關產品與所有生命週期活動的要求(如正確性、完整性、一致性、準確性等)一致。相當於以軟體產品設計規格說明書為標準進行軟體測試的活動。

「有效性確認」是確認所開發的軟體是否滿足使用者真正需求的活動。一切從客戶出發,理解客戶的需求,並對軟體需求定義和設計存疑,以發現需求定義和產品設計中的問題。主要通過各種軟體評審活動來實現,保證讓客戶參加評審和測試活動。

當然,軟體測試的物件是產品(包括階段性產品,如市場需求說明書、產品規格說明書、技術設計文件、資料字典、程式包、使用者文件等),而質量保證和管理的物件集中於軟體開發的標準、流程和方法等上。

軟體測試 軟體測試的定義 軟體測試的目的

軟體測試的定義 軟體測試已有了行業標準 ieee ansi 1983年ieee提出的軟體工程術語中給軟體測試下的定義是 使用人工或自動的手段來執行或測定某個軟體系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。這個定義明確指出 軟體測試的目的是為了檢驗軟體系統是否滿足...

軟體測試的定義 測試分類

軟體 系統軟體和應用軟體 程式 資料 文件 軟體測試的原則 1.測試應該盡早介入 2.所有的測試都應追溯到使用者需求 3.程式設計師應該避免檢查自己的程式,除了單元測試 4.設計測試用例時應考慮到合法 不合法的輸入以及各種邊界條件,特殊情況下要製造極端狀態和意外狀態 5.二八原則 行規 6.對錯誤結...

軟體測試的定義 一

軟體測試是在軟體投入正式執行前對需求分析 設計和編碼的結果進行複查的活動 軟體測試是根據開發各階段的需求 設計文件和 精心設計一批用例,利用這些測試用例去執行程式,以及發現程式錯誤的過程。問題 測試與除錯的區別?目的不同 測試是發現錯誤 除錯是改正 修正錯誤。過程不同 測試活動是有序 可重複的活動,...