1000部丰满熟女富婆视频,托着奶头喂男人吃奶,厨房挺进朋友人妻,成 人 免费 黄 色 网站无毒下载

首頁 > 文章中心 > 正文

軟件測試方法

前言:本站為你精心整理了軟件測試方法范文,希望能為你的創作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。

軟件測試方法

摘要:開發過程中一次性開發成功或者無錯誤發生的幾率為零,因此在軟件的開發過程中需要不斷的完善,而這個不斷完善修改的過程就是軟件測試的過程。軟件測試也代表了了設計、編碼的最終復審。著重論述了目前軟件工程中普遍存在的一些測試問題,并對其產生的原因進行了詳細的分析。介紹了軟件測試的本質,同時對目前流行的測試方法進行了研究,提出了不同類型的軟件最佳的測試方案。

關鍵詞:軟件可靠性;軟件質量;軟件測試;測試用例



1概述

信息技術的飛速發展,使軟件產品應用到社會的各個領域,軟件產品的質量自然成為人們共同關注的焦點。軟件開發商為了占有市場,必須把產品質量作為企業的重要目標之一,以免在激烈的競爭中被淘汰。用戶為了保證自己業務的順利完成,總是希望選用優質的軟件。質量不佳的軟件產品不僅會使開發商的維護費用和用戶的使用成本大幅增加,還可能產生其他的責任風險,在一些關鍵應用,如民航訂票系統、銀行結算系統、證券交易系統等中使用質量有問題的軟件,還可能造成災難性的后果。

軟件危機曾經是軟件界甚至整個計算機界最熱門的話題,為了解決這個危機,軟件從業人員、專家和學者做出了大量的努力。現在人們已經逐步認識到所謂的軟件危機實際上僅是一種狀況,那就是軟件中有錯誤,正是這些錯誤導致了軟件開發在成本、進度和質量上的失控。有錯是軟件的屬性,而且是無法改變的。因為軟件是由人來完成的,所有由人做的工作都不會是完美無缺的。問題在于應該如何去避免錯誤的產生和消除已經產生的錯誤,使程序中的錯誤密度達到盡可能低的程度。

軟件工程學出現后,軟件開發被視為一項工程,以工程化的方法來進行規劃和管理軟件的開發。事實上,不論采用什么技術和什么方法,軟件中出現錯誤總是難免的。采用新的語言、先進的開發方式、完善的開發過程,可以減少錯誤的引入,但是不可能完全杜絕軟件中的錯誤,這些引入的錯誤需要測試來找出。測試是軟件開發的重要部分。統計表明,在典型的軟件開發項目中,軟件測試工作量往往占軟件開發總工作量的40%以上。而在軟件開發的總成本中用在測試上的開銷要占30%到50%。如果把維護階段也考慮在內,討論整個軟件生存時期時,測試的成本比例也許會有所降低,但實際上維護工作相當于二次開發,仍至多次開發,其中必定還包含有許多測試工作。系統的問題越早發現,改正成本越低,破壞性越小,所以,在系統前要盡量多地把系統問題找出來,其手段就是有計劃、有組織地進行充分的測試。

軟件測試是根據軟件開發各階段的規格說明和程序的內部結構而精心設計一組測試數據,并利用這些測試數據運行程序,以發現程序錯誤的過程。根據測試數據設計方法,軟件測試可分為結構測試和功能測試。在結構測試過程中,測試者對程序的語句、分支和邏輯路徑進行各種覆蓋測試,可以在不同點檢查程序的狀態,以確定實際狀態與預期狀態是否一致。軟件測試的目的是發現錯誤,而不是確認其正確性,而對已進行的測試過程的程度進行評估。

2測試方法

2.1軟件測試實質

軟件測試是一項邏輯性強、且極具條理的工作,也是具有風險性的行為。由于軟件的輸入量、輸出結果、軟件實現途徑都很多,而且軟件產品說明書沒有客觀的標準,導致從不同的角度看,軟件缺陷的標準不同,因而無法對軟件實施完全測試,這樣,就無法通過軟件測試顯示隱藏的軟件缺陷,只能盡量查找軟件缺陷,找到的軟件缺陷越多,說明軟件本身的缺陷就越多,況且還有一些是未發現、不能斷定的缺陷,這就是軟件測試的局限性。軟件測試與軟件開發過程的關系如圖1所示。

圖1軟件測試與軟件開發的關系

所有的軟件測試都有2個關鍵的問題組成:建立能測試應用程序的環境,并在該環境中測試軟件能力。測試員必須理解和重新生成軟件所在的復雜軟件環境,并運用其能力確保正常的測試。

2.2軟件測試手段

從測試是否針對系統的內部結構和具體實現算法的角度來看,可分為白盒測試和黑盒測試。2.2.1黑盒測試

黑盒測試也稱功能測試或數據驅動測試,它是在已知產品所應具有的功能情況下,通過測試來檢測每個功能是否都能正常使用。在測試時,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序接口進行測試,它只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息并且保持外部信息(如:數據庫或文件)的完整性。黑盒法著眼于程序外部結構,不考慮內部邏輯結構,只針對軟件界面和軟件功能進行測試,它主要用于軟件驗收測試。黑盒法是窮舉輸入測試,只有把所有可能的輸入都作為測試情況使用,才能以這種方法查出程序中所有的錯誤。測試情況實際上有無窮多個,人們不僅要測試所有合法的輸入,而且還要對那些不合法但是可能的輸入進行測試。

2.2.2白盒測試

白盒測試也稱結構測試或邏輯驅動測試,它是在已知產品內部工作過程情況下,通過測試來檢測產品內部動作是否按照規格說明書的規定正常進行,按照程序內部的結構測試程序,檢驗程序中的每條通路是否都能按預定要求正確工作,而不顧它的功能。白盒測試的主要方法有邏輯驅動、基路測試等,白盒法是窮舉路徑測試,主要用于軟件驗證。

(1)軟件有產品說明書時,對產品說明書實施測試和審查:由于軟件產品說明書屬于文檔,因此對產品說明書的測試是黑盒測試。在實施測試時要弄清所開發軟件的客戶,并熟悉現有的標準和規范,基于同類軟件測試的經驗進行測試。除了這些,如果時間和條件允許,應該對產品說明書進行審查,按照相關的標準,看產品說明書是否符合要求。這都是通常的一些做法,當然還可以采用其他軟件檢測方法。

(2)由于當前軟件開發有時不是很正規,在沒有產品說明書時應使用試探性測試:首先要分步驟地弄清軟件特性,記錄軟件運行情況,詳細描述軟件功能,然后運用靜態和動態黑盒測試兩種方式來測試軟件,發現軟件缺陷,在這種情況下,可以將一些非法、錯誤和垃圾數據作為輸入數據,以檢驗軟件的輸出結果。測試時可采用反復測試、邊界值測試和不合條件等方法。

(3)對有些軟件實施狀態測試:首先是熟悉軟件的邏輯流程,可能的話,建立狀態轉換圖,盡量清晰地描繪軟件可能的獨立狀態,從一種狀態到另一種狀態所允許的輸入和條件,以及進入或退出某種狀態時的設置條件和輸出結果;如果要測試的軟件規模較大、復雜性較高,那么建立狀態轉換圖將是非常艱巨的任務,這時減少要測試的狀態及狀態的數量,但是必須保證每種狀態都必須測試一次,也可以在狀態測試時選擇那些不常用的分支,因為這是最容易被忽略的。在此基礎上,測試所有的錯誤狀態及返回值,測試隨機狀態轉換。

(4)在前述測試的基礎上,對有些測試實施失敗狀態測試:具體在實施時,指的是幾個時間對某一資源競爭使用,比如:

①兩個不同的程序同時保持或打開同一個文檔。

②共享同一臺外圍設備。

③當軟件處于讀取或者修改狀態時按鍵或者單擊鼠標。

④同時關閉或者啟動同一個軟件的多個實例。

⑤使用不同的程序同時訪問同一個數據庫。

類似這樣的競爭條件還有很多,不一一舉例。

(5)在實際測試時還常用反復、壓迫和重負測試,實施這些測試的目的是考驗軟件在惡劣條件下是否能正常運行和退出,從而驗證軟件的性能。反復測試指的是不斷地執行同樣的操作;壓迫測試是使用軟件在不夠理想的條件下運行,從而觀察軟件對外部資源的要求和依賴程度,借此來測試軟件的性能;重負測試是指盡量提供條件任其發揮,讓軟件處理盡可能大的數據文件,即最大限度地發掘軟件的能力,使之不堪重負,大多數情況下,用時間作為參數實施重負測試,看其在重負情況下能否正常運行。實際測試時,常將三種測試方法結合起來使用。

(6)測試軟件的另一種有效方法就是進行正式審查,其中包括以下幾個方面:確定問題、制定審查規則、準備工作以及編寫報告,進行審查的主要方法就是組織熟悉該類軟件的人員逐一檢查代碼,其中重要的軟件還需要按能力成熟度(CMM)中的要求進行同行評審。

(7)在實際測試中經常采用一種稱之為動態白盒測試的方法,其意義是指利用查看代碼功能和實現方式得到的信息來確定哪些要測試,哪些不需要測試,以及如何開展測試。其中不僅是查看代碼,還包括直接測試和控制軟件。包括以下幾個部分:

①直接測試底層功能、過程、子程序和庫。

②根據軟件運行的實際情況不斷地調整測試用例。

③對軟件中的部分變量和狀態信息進行訪問,確定測試與預期結果是否相符,并強制軟件以正常測試難以實現的方式運行。在具體實施時應分階段地進行測試,即遵循單元測試、集成測試、配置項測試和系統測試的步驟。目前,灰盒測試逐漸為大家認同,灰盒測試綜合了白盒測試和黑盒測試的優點,模糊了兩者的界限,在做法上仍然把軟件當成黑盒來測試,但是通過簡單地查看(不像白盒那樣進行完整地查看)軟件內部工作機制作為補充。現在的網頁制作就很適合灰盒測試。

3結束語

軟件測試的目的不是為了僅僅找出錯誤,而是通過它發現錯誤、分析錯誤,找到錯誤的分布特征和規律,從而幫助項目管理人員發現當前所采用的軟件開發過程的缺陷,以便改進;同時也能夠通過設計有針對性的檢測方法,改善軟件測試的有效性。即使測試沒有發現任何錯誤,也是十分有價值的,因為完整的測試不僅可以給軟件質量進行一個正確的評價,而且是提高軟件質量的重要方法之一。

參考文獻

[1]史濟民.軟件工程原理方法與應用[M].北京:高等教育出版社,2001.

[2]張海藩.軟件工程導論[M].北京:清華大學出版社,1997.

主站蜘蛛池模板: 宁河县| 龙胜| 浦北县| 米脂县| 大洼县| 富源县| 明水县| 界首市| 高邑县| 阳东县| 九龙城区| 申扎县| 哈密市| 镇康县| 沁阳市| 馆陶县| 武强县| 通州市| 龙泉市| 泽库县| 霍林郭勒市| 江阴市| 嵊州市| 无极县| 安仁县| 黄大仙区| 高密市| 永顺县| 宣恩县| 鸡东县| 从江县| 友谊县| 南丰县| 连江县| 安徽省| 锡林浩特市| 荣昌县| 湛江市| 高邑县| 澄迈县| 方山县|