測試思想 什麼是軟體測試 摘錄

2022-06-29 13:15:08 字數 4030 閱讀 7976

什麼是軟體測試(摘錄)

by:授客 qq:1033553122

ieee 

標準的定義:使用人工或自動的手段來執行或測定某個系統的過程,其目的在於檢驗;它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別。對軟體測試還有一些不同的定義。

g.j.myers

給出的定義:「程式測試是為了發現錯誤而執行程式的過程」。這個定義被軟體測試業界所認可,並經常被引用。但實際上,這樣的定義還不能完全反映軟體測試的內涵,它仍侷限於「程式測試」。隨後,g.j.myers進一步提出了有關程式測試的3個重要觀點,那就是:

(1)測試是為了證明程式有錯,而不是證明程式無錯誤。

(2)乙個好的測試用例在於它能發現至今未發現的錯誤。

(3)乙個成功的測試是發現了至今未發現的錯誤的測試。

要完整地理解軟體測試,就要從不同方面和視角去辨證地審視軟體測試。概括起來,軟體測試就是貫穿整個軟體開發生命週期、對軟體產品(包括階段性產品)進行驗證和確認的活動過程,其目的是盡快盡早地發現在軟體產品中存在的各種問題—與使用者需求、預先的定義不一致的地方。

1.軟體測試的俠義觀點和廣義觀點

g.j.myers

給出了測試定義—「程式測試是為了發現錯誤而執行程式的過程」,實際上這是乙個狹義的概念,因為他認為測試是執行程式的過程,也就是傳統意義上的測試—在**完成後,通過執行程式來發現程式**或軟體系統中錯誤。但是,這種意義上的測試是不能在**完成之前發現軟體系統需求及設計上的問題的,把需求、發現設計上的問題遺留到後期—最

終在**中體現出來,這樣就可能會造成設計、程式設計的部分或全部返工。需求階段和設計階段的缺陷在開發過程中會產生擴大效應,缺陷的嚴重性隨時間發展越來越

嚴重,其結果會大大增加軟體開發的成本、延長開發的週期等。這種狹義的觀點主要是受軟體開發瀑布模型的影響,而且非常不利於保證軟體質量。

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

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

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

2.軟體測試的辨證觀點

g.j.myers

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

軟體測試究竟是證明所有軟體的功能特性是正確的,還是相反—對軟體系統進行各種試探和攻擊,找出軟體系統中不正常或不工作的地方,就我個人理解,這兩個方面都有一定道理,前者(證明或驗證所有軟體的功能特性是正確的)是從質量保證的角度來思考軟體測試,後者(證明程式有錯)從軟體測試的直接目標和測試效率來思考,兩者應該相輔相成。在後者的思想背景下,可以認為測試不是為了證明所有的功能都能正常工作,恰恰相反,測試就是為了找出那些不能正常工作、不一致性的問題,也就是說,測試的工作就是發現缺陷(detect

bug),即在軟體開發過程中,分析、設計與編碼等工作都是建設性的,唯獨測試帶有「破壞性」,

它想方設法發現軟體所存在的問題。軟體測試就是在這兩者之間獲得平衡,但對於不同的應用領域,兩者的比重是不一樣的。例如,國防、航天、銀行等軟體系統,

承受不了系統的任何一次失效,因為任何失效都完全有可能導致災難性的損失,所以強調前者,以保證非常高的軟體質量。而一般的軟體應用或服務,則可以強調後

者,質量目標設定在「使用者可接受水平」,以降低軟體開發成本,加快軟體發布速度,有利於市場的擴張。

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

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

3.軟體測試的風險觀點

測試被定義為「對軟體系統中潛在的各種風險進行評估的活動」,這就引出軟體測試的風險觀點。軟體測試自身的風險性是大家公認的,測試的覆蓋率不能做到100%;另

外一方面,軟體測試的標準有時不清楚,軟體規格說明書是測試中的乙個標準,但也不是唯一的標準。因為規格說明書本身的內容完全有可能是錯誤的,它所定義的

國內特性不是使用者所需要的。所以,我們常常強調軟體測試人員應該站在客戶的角度去進行測試,除了發現程式中的錯誤,還要發現需求定義的錯誤、設計規格說明

書的缺陷。但是,測試在大多數時間/情況下是由工程師完成的,而不是客戶自己來做,所以又怎麼能保證工程師和客戶想得一樣呢?

有人把開發比作打靶,目標明確,就是按照設計規格說明書去實現系統的功能。而把測試比作撈魚,目標不明確,自己判斷哪些地方魚多,就去哪些地方撈:如果只撈大魚(嚴重缺陷),網眼就可以大些、撒網區域相對比較集中(測試點集中在主要功能上)。如果想把大大小小的魚都撈上來,網眼就要小,普遍撒網,不放過任何一塊區域(測試點遍及所有功能)。

在「風險」觀點的框架下,軟體測試可以被看作是乙個動態的監控過程,對軟體開發全過程進行檢測,隨時發現不健康的徵兆,發現問題、報告問題,並重新評估新的風險,設定新的監控基準,不斷地持續下去,包括回歸測試。這時,軟體測試完全可以看作是軟體質量控制的過程。

對應這種觀點,產生基於風險的測試策略,首先評估測試的風險,每個功能出問題的概率有多大?根據pareto原則(也叫80/20原則),哪些功能是使用者最常用的功能(約佔20%)?如果某個功能出問題,其對使用者的影響又有多大?然後根據風險大小確定測試的優先順序。優先順序高的功能特性,測試優先得到執行。一般來講,針對使用者最常用的這20%功能(優先順序高)的測試會得到完全地、充分地執行,而低優先順序功能的測試(使用者不常用的功能,約佔80%

)就可能由於時間或經費的限制,降低測試的要求、減少測試工作最,這樣做風險性並不是很大。

4.軟體測試的經濟學觀點

乙個好的測試用例在於它能發現至今未發現的錯誤」,

這體現了軟體測試的經濟學觀點。實際上,軟體測試經濟學問題至今仍是業界關注的問題之一。經濟學的核心就是要盈利,盈利的基礎就是要有乙個清楚的商業性目

標。同樣,商業性目標是否正確,直接決定了企業是否盈利。在多數情況下,軟體測試是在公司內執行的。正是公司的行為目的,決定了軟體測試含義或定義經濟性

的一面。正如對軟體質最的定義不僅僅侷限於「和客戶需求的一致性、適用性」,而且要增加其他的要求—「開發成本控制在預算內、按時發布軟體、系統易於維護」等。

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

5.軟體測試的標準觀點

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

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

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

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

什麼是軟體測試(摘錄)

ieee 標準的定義 使用人工或自動的手段來執行或測定某個系統的過程,其目的在於檢驗它是否滿足規定的需求或是弄清預期結果與實際結果之間的差別。g.j.myers 給出的定義 程式測試是為了發現錯誤而執行程式的過程 這個定義被軟體測試業界所認可,並經常被引用。但實際上,這樣的定義還不能完全反映軟體測試...

軟體測試 1 什麼是軟體測試?

軟體測試 qa 的定義無比簡單 所謂軟體測試,就是乙個或者一系列過程,確保軟體可以完成了該完成的功能,不執行不該有的操作。身為開發,恐怕沒有幾個人會樂於常常和測試打交道。原因很簡單,無非就是測試會站在乙個第三者的角度上將一些你寫的 中一些 他認為的 漏洞揪出來,而且像討債一樣催著你趕快fix。而很多...

軟體測試(1) 什麼是軟體測試?

本篇博文主要討論以下幾個問題 1 為什麼要開展軟體檢測活動?2 什麼是軟體測試?3 如何理解軟體測試?4 軟體測試和開發的關係?5 軟體測試和質量保證的關係?首先舉兩個例子,2002年7月,首都機場由於軟體缺陷影響通訊傳輸,造成航班無法起飛,大批遊客滯留機場。還有,2008年北京奧運會官方 第二階段...