前言:中文期刊網精心挑選了軟件測試范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。
軟件測試范文1
關鍵詞:軟件可靠性;軟件質量;軟件測試;測試用例
1概述
信息技術的飛速發展,使軟件產品應用到社會的各個領域,軟件產品的質量自然成為人們共同關注的焦點。軟件開發商為了占有市場,必須把產品質量作為企業的重要目標之一,以免在激烈的競爭中被淘汰。用戶為了保證自己業務的順利完成,總是希望選用優質的軟件。質量不佳的軟件產品不僅會使開發商的維護費用和用戶的使用成本大幅增加,還可能產生其他的責任風險,在一些關鍵應用,如民航訂票系統、銀行結算系統、證券交易系統等中使用質量有問題的軟件,還可能造成災難性的后果。
軟件危機曾經是軟件界甚至整個計算機界最熱門的話題,為了解決這個危機,軟件從業人員、專家和學者做出了大量的努力?,F在人們已經逐步認識到所謂的軟件危機實際上僅是一種狀況,那就是軟件中有錯誤,正是這些錯誤導致了軟件開發在成本、進度和質量上的失控。有錯是軟件的屬性,而且是無法改變的。因為軟件是由人來完成的,所有由人做的工作都不會是完美無缺的。問題在于應該如何去避免錯誤的產生和消除已經產生的錯誤,使程序中的錯誤密度達到盡可能低的程度。
軟件工程學出現后,軟件開發被視為一項工程,以工程化的方法來進行規劃和管理軟件的開發。事實上,不論采用什么技術和什么方法,軟件中出現錯誤總是難免的。采用新的語言、先進的開發方式、完善的開發過程,可以減少錯誤的引入,但是不可能完全杜絕軟件中的錯誤,這些引入的錯誤需要測試來找出。測試是軟件開發的重要部分。統計表明,在典型的軟件開發項目中,軟件測試工作量往往占軟件開發總工作量的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結束語
軟件測試的目的不是為了僅僅找出錯誤,而是通過它發現錯誤、分析錯誤,找到錯誤的分布特征和規律,從而幫助項目管理人員發現當前所采用的軟件開發過程的缺陷,以便改進;同時也能夠通過設計有針對性的檢測方法,改善軟件測試的有效性。即使測試沒有發現任何錯誤,也是十分有價值的,因為完整的測試不僅可以給軟件質量進行一個正確的評價,而且是提高軟件質量的重要方法之一。
參考文獻
軟件測試范文2
關鍵詞:軟件測試;軟件測試技術;自動化測試;測試工具
中圖分類號:TP311.5 文獻標識碼:A
The Status Quo of Software Testing Technology
LI Jing, GUO Xiao-lei
(Software Vocational and Technical College,Kaifeng University,Henan Kaifeng 475004)
Key words: software testing; software testing techniques;automated testin; testing tools
1 軟件測試概述與必要性
軟件是由人來完成的,所有由人做的工作都不會是完美無缺的。問題在于應該如何去避免錯誤的產生和消除已經產生的錯誤,使程序中的錯誤密度達到盡可能低的程度。
隨著軟件規模的增大,軟件的復雜程度也越來越大,與其他系統的接口不斷增多應用越來越廣泛,集成度越來越高,這使得沒有現代軟件開發經驗的人很難理解它。為了盡可能地減少錯誤,軟件測試這一環節必須得到重視。
中國軟件外包市場巨大,國內軟件外包服務多屬于為客戶提供技術和質量服務的中間環節。以占中國軟件外包總量近85%的對日軟件外包來說,業務內容基本都針對測試環節。這就要求我們加強對軟件測試的重視。
質量不佳的軟件產品不僅會使開發商的維護費用和用戶的使用成本大幅增加,還可能產生其他的責任風險,在一些關鍵應用,如民航訂票系統、銀行結算系統、證券交易系統等中使用質量有問題的軟件,還可能造成災難性的后果。這使得軟件測試環節顯得尤為重要。
2 軟件測試技術分析
2.1軟件測試的概念
軟件測試是根據軟件開發各階段的規格說明和程序的內部結構而精心設計一組測試數據,并利用這些測試數據運行程序,以發現程序錯誤的過程。根據測試數據設計方法,軟件測試可分為結構測試和功能測試。在結構測試過程中,測試者對程序的語句、分支和邏輯路徑進行各種覆蓋測試,可以在不同點檢查程序的狀態,以確定實際狀態與預期狀態是否一致。軟件測試的目的是發現錯誤,而不是確認其正確性,而對已進行的測試過程的程度進行評估。
2.2軟件測試的目的
軟件測試的目的是為了保證軟件產品的最終質量,在軟件開發的過程中,對軟件產品進行質量控制。一般來說軟件測試應由獨立的產品評測中心負責,嚴格按照軟件測試流程,制定測試計劃、測試方案、測試規范,實施測試,對測試記錄進行分析,并根據回歸測試情況撰寫測試報告。測試是為了證明程序有錯,而不能保證程序沒有錯誤。
2.3軟件測試的方法和過程
軟件測試的種類可以分為人工測試和基于計算機的測試。而基于計算機的測試又可以分為白盒測試和黑盒測試。原則上講,軟件測試分為靜態測試和動態測試兩類。靜態測試包括代碼審查和靜態分析,動態測試包括白盒測試和黑盒測試。[2]
測試雖然是軟件生存周期的一個獨立階段,但測試工作卻滲透到從分析、設計直到編程的各個階段中,如測試計劃的編寫從分析和設計階段就開始了,而具體的測試工作隨編程工作的不斷深入也在進行中。在實際工作中,測試環節可分為明顯的、同等重要的三個階段:即單元測試、集成測試(又稱構件測試)和系統測試。
2.3.1單元測試
軟件單元定義了一個軟件很底層的塊,用PB開發的客戶機/服務器的軟件系統中,一個窗口、函數、菜單、報表或一個存儲過程都可以作為一個單元進行測試。單元測試是測試的第一步。由開發者自己進行測試最合適,一般采用白盒測試。
2.3.2集成測試
在將所有的單元經過測試以后,接著進行集成測試。集成測試也稱綜合測試,即將已分別通過測試的單元按要求組合起來再進行的測試,以檢查這些單元之間的接口是否存在問題。要求參與的人熟悉單元的內部細節,又要求他們能夠從足夠高的層次上觀察整個系統。集成測試階段是以黑盒法為主,在自底向上集成的早期,白盒法測試占一定的比例,隨著集成測試的不斷深入,這種比例在測試過程中將越來越少,漸漸地,黑盒法測試占據主導地位。
2.3.3系統測試
系統測試是整個測試階段的最后一步,所有的開發和測試在這一點上集中表現為生成一個具有一定功能的軟件系統。該階段主要對系統的準確性及完整性等方面進行測試。主要進行:功能確認測試、運行測試、強度測試、恢復測試、安全性測試等。系統測試的測試人員由測試組成員(或質量保證人員)或測試組成員與用戶共同測試。在整個系統開發完成,即將交付用戶使用前進行。在這一階段,完全采用黑盒法對整個系統進行測試。
3 軟件測試方法與軟件測試工具
3.1軟件測試方法
軟件測試方法是軟件測試技術的一個重要的組成部分,引入自動化測試可以提高軟件質量,節省經費,縮短軟件產品的周期。軟件測試自動化就是通過測試工具或其他手段,按照測試工程師的預定計劃對軟件產品進行自動的測試,它是軟件測試的一個重要組成部分,能夠完成許多手工無法完成或者難以實現的一些測試工作。[3]
3.2軟件測試工具
自動化測試工具可以減少測試工作量,提高測試工作效率。在實際應用中,首先是能夠選擇一個合適的且滿足企業信息系統工程壞境的自動化測試工具,因為不同的測試工具,其面向的測試對象是不一樣的。按照測試工具的主要用途和應用領域將測試軟件做了一個整理歸納,將自動化測試工具分為以下幾類:
3.2.1捕獲錯誤用途
用于捕獲軟件錯誤或程序調試。常用的軟件:一個是開發人員自行編寫的測試工具;另一個是利用所使用的開發工具的調試功能或工具;最后就是購買專業的調試軟件。如:Compuware NuMega推出的一系列的調試軟件。
3.2.2一般用途
一般用途的測試工具在進行測試時,可以適用大部分的軟件。如Sysinternals網站提供的一些免費軟件。
3.2.3GUI自動化用途
這類軟件除了提供在窗口界面中使用外,也有不少是針對瀏覽器窗口開發的自動化測試工具。主要代表:Rational公司的Robot、Compuware的QARun等。
3.2.4專項用途
以專項用途為主的測試工具,就是某種專項測試的軟件。專用代碼測試工具:BoundsChecke、CodeReview、JCheck;白盒測試工具:Logiscope和PRQA、DevPartner、Rational Purify系列等;網絡測試工具:Network Associates提供的Network Sniffer。
3.2.5軟件產品功能、性能測試用途
IBM Rational系列包括多款測試產品,如功能測試工具IBM Rational Manual Tester、IBM Rational Functional Tester和IBM Rational Robot。如性能測試工具:手動測試工具IBM Rational Performance Tester和IBM Rational Robot。(Robot包括功能測試和性能測試)
3.2.6測試管理工具
一般而言,測試管理工具對測試需求、測試計劃、測試用例、測試實施進行管理,并且測 試管理工具還包括對缺陷的跟蹤管理。測試管理工具能讓測試人員、開發人員或其他的IT人員 通過一個中央數據倉庫,在不同地方就能交互信息。主要代表:TestDirector MI的測試管理工具、TrackRecord、Bugzilla、QC(quick center)。
3.2.7測試輔助工具
這些工具本身并不執行測試,例如它們可以生成測試數據,為測試提供數據準備。常用工具:SmartDraw、SDemo。
4 結束語
軟件測試是軟件工程的一個范疇。軟件測試是有計劃、有目的的工程性的活動。軟件測試是使用人工或者自動化的手段來運行或測試某個系統的過程其目的在于檢驗是否滿足某種預期的結果。軟件測試目的是發現錯誤。一個好的測試用例是發現未發現的錯誤。一個經過測試的軟件不能就說是完全正確的。軟件測試是保證軟件質量的一個重要手段。因此,軟件測試應該貫穿與軟件工程的始終。
參考文獻:
[1]王水.軟件工程[M].鄭州:河南科學技術出版社,2008.
軟件測試范文3
關鍵詞:軟件測試;系統測試;線索;壓力測試;性能測試
中圖分類號:TP39文獻標識碼:A文章編號:1007-9599 (2012) 05-0000-02
一、引言
軟件測試作為軟件質量保證的關鍵技術之一,其目的就是能夠有效地發現軟件中的錯誤或缺陷。系統測試是對完整集成后的系統進行測試的階段,用來評價系統對具體需求規格說明的符合性,系統測試是在單元、組件和集成測試階段之后進行的。主要針對軟件系統和其他系統元素(及硬件、數據庫和人機交互信息)組合構成完整的計算機應用系統中所有的元素配合是否合適以及整個系統的功能、性能、執行強度、安全性等是否達到規定標準而進行的測試。
二、系統測試概述
(一)系統測試概念
所謂系統測試是將通過集成測試的軟件系統,作為計算機系統的一個重要組成部分,與計算機硬件、外設、某些支撐軟件的系統等其他系統元素組合在一起所進行的測試,目的在于通過與系統的需求定義作比較,發現軟件與系統定義不符合或矛盾的地方。
(二)系統測試前的準備工作
系統測試前的準備工作主要包括:對系統各種功能的描述;系統要求的數據處理及傳輸的速率;對系統性能的要求;對備份及修復的要求;對兼容性的描述;對配置的描述;對安全方面的要求等。
(三)系統測試的測試數據
系統測試所用的數據必須盡可能地像真實數據一樣精確和有代表性??梢允褂谜鎸崝祿蛘呤褂谜鎸崝祿囊粋€復制,復制數據的質量、精度和數據量必須盡可能地代表真實的數據。
(四)系統測試與確認測試區別
確認測試始于集成測試的結束,那時已測試完單個構件,軟件已組裝成完整的軟件包,且接口錯誤已被發現和改正。在確認測試時,傳統軟件與面向對象軟件的差別已經消失,測試便集中于用戶可見的動作和用戶可識別的系統輸出。
1.確認測試準則
軟件確認是通過一系列表明已符合軟件需求的測試而獲得的。測試計劃和規程都是用于確保滿足所有的功能需求,具有所有的行為特征,達到所有的性能需求,文檔是正確的、可用的。執行每個確認測試用例之后,存在下面兩種可能條件之一:(1)功能或性能特征符合需求規約,因而被接受;(2)發現了與規約的偏差,創建缺陷列表。
2.配置評審
評審的目的是保證所有的軟件配置元素已正確開發、編目,且具有支持軟件生命周期的支持階段的必要細節。
3.α測試與β測試
α測試是由最終用戶在開發者的場所進行。軟件在自然的環境下使用,開發者站在典型用戶的后面觀看,并記錄錯誤和使用問題。α測試在受控的環境下進行。
β測試是最終用戶場所執行。開發者通常不在場,因此,β測試是在不為開發者控制的環境下軟件的現場應用。最終用戶記錄測試過程中遇見的所有問題(現實存在或想象的),并將其定期地報告給開發者。接到β測試的問題報告之后,軟件工程師進行修改,然后準備向最終用戶軟件產品。
二、系統級功能測試技術
(一)線索的概念
線索(thread)的概念很難定義。事實上,一些已經公開的定義都是矛盾、容易產生誤導或錯誤的??梢园丫€索看作是一種不需要形式化定義的原始概念。以下是對線索的多種看法:一般使用的場景;系統級測試用例;激勵/響應對;由系統級輸入序列產生的行為;端口輸入和輸出事件的交替序列;系統狀態機描述中的轉換序列;對象消息和方法執行的交替序列;機器指令序列;源指令序列;MM-路徑序列;原子系統功能序列。
(二)需求規約的基本構造元素
根據一組基本需求規約構造元素,即數據、行動、設備、事件和線索,來討論系統測試。每個系統都可以使用這五種元素表示。
1.數據
主要包括:變量、數據結構、字段、記錄、數據存儲和文件、實體關系模型高層數據描述。
2.行動
以行動為中心建模仍然是需求規約的一種常見形式,這是因為有命令式程序設計語言以行動為中心性質的歷史原因。行動有輸入和輸出,這些輸入和輸出既可以是數據,也可以是端口事件。行動還可以分解為低層活動,例如數據流圖。
3.設備
每個系統都有端口設備,這些端口設備是系統級輸入和輸出(端口事件)的源和目的地。在技術上,端口是I/O設備接入系統的點。
4.事件
事件既有數據方面的一些特征,又有行動方面的一些特征。事件是發生在端口設備上的系統級輸入(或輸出)??梢允请x散的,也可以是連續的(例如溫度、高度或壓力)。端口輸入事件是物理到邏輯的轉換,同樣,端口輸出事件是邏輯到物理的轉換。
5.線索
因為要測試線索,因此測試人員通常不能在數據、事件和行動之間的交互中找出線索。線索本身出現在需求規約中的惟一地方,是使用快速原型法并結合場景記錄器。
(三)線索測試的結構策略及功能策略
結構策略實際上是基于有限狀態機的行為建模中的結構來尋找測試線索的。首先自底向上組織各層次的狀態機,然后尋找線索覆蓋每個狀態機的節點和邊,同時還要找出節點與邊覆蓋指標。
線索測試的功能策略
1.基于事件的線索測試
(1)端口輸入事件覆蓋指標
五個覆蓋指標為覆蓋端口輸入事件提供了一組線索:
(1)PI1:每個端口輸入事件發生。
(2)PI2:端口輸入事件的常見序列發生。
(3)PI3:每個端口輸入事件在所有“相關”數據語境中發生。
(4)PI4:對于給定語境,所有“不合適”的輸入事件發生。
(5)Pl5:對于給定語境,所有可能的輸入事件發生。
(2)端口輸出事件覆蓋指標
根據端口輸出事件定義兩種覆蓋指標:
(1)PO1:每個端口輸出事件發生。
(2)PO2:每個端口輸出事件在每種原因下發生
2.基于端口的線索測試
基于端口的測試是基于事件測試的有用補充。
對于每個端口都要詢問端口上會出現什么事件。然后根據每個端口的事件列表尋找使用輸入端口和輸出端口的線索。有些需求規約技術要求提供這種端口的事件列表。
設備和事件之間的多對多測試應該在兩個方向上進行:基于事件的測試覆蓋從事件到端口的一對多關系,反之,基于端口的測試覆蓋從端口到事件的一對多關系。SATM系統不能使用這種測試,因為SATM不發生在多個端口上。
三、系統測試的主要內容
系統測試一般要完成以下幾種測試:功能測試、性能測試、可靠性、穩定性測試、兼容性測試、恢復性測試、安全性測試、強度測試、面向用戶支持方面的測試、其他限制條件的測試。下面就對常用的系統測試做一個介紹:
(一)壓力測試
壓力測試是指模擬巨大的工作負荷以查看或評估應用程序在峰值或超越最大負載使用情況下如何執行操作。壓力測試有如下特點:可以測試系統的穩定性;一般需要對用戶的使用情況進行模擬。壓力測試的方法包括:并發測試法、增加量級法、重復測試法。
(二)性能測試
性能測試一般需進行:對軟件計算的精度有要求時,設計測試用例;對軟件有時間要求時,設計測試用例;測試為完成功能所處理的數據量;測試程序運行所占用的空間;測試對系統的負載潛力;測試配置項各部分的協調性;測試軟件性能和硬件性能的集成;測試系統對并發事務和并發用戶訪問的處理能力。
(三)恢復性測試
多數基于計算機的系統必須從錯誤中恢復并在一定的時間內重新運行?;謴托詼y試是通過各種方式強制地讓系統發生故障并驗證其能適當恢復的一種系統測試。若恢復是自動的(由系統自身完成),則對重新初始化、檢查點機制、數據恢復和重新啟動都要進行正確性評估。若恢復需要人工干預,則估算平均恢復時間(mean-time-to-repair,MTTR)以確定其是否在可接受的范圍之內。
(四)安全性測試
安全性測試驗證建立在系統內的保護機制是否能夠實際保護系統不受非法入侵。系統的安全必須經受住正面的攻擊,但是也必須能夠經受住側面和背后的攻擊。在安全性測試過程中,測試者扮演試圖攻擊系統的角色。測試者可以試圖通過外部手段獲取密碼;可以通過瓦解任何防守的定制軟件來攻擊系統;可以“制服”系統使其無法對別人提供服務;可以有目的地引發系統錯誤以期在其恢復過程中入侵系統;可以通過瀏覽非保密數據,從中找到進入系統的鑰匙等等。
四、結語
系統測試有助于在其部署中客戶發現缺陷之前,盡可能多滴發現缺陷,在系統測試期間要驗證完整產品的行為,包括設計多個模塊、程序和功能的測試,測試完整產品的行為是很關鍵的,因為很多人錯誤地認為經過單獨測試的組件放到一起后仍能正常運行。
參考文獻:
[1]薛沖沖,陳堅.軟件測試研究[J].計算機系統應用,2011,2
[2]陶幸輝,宋志剛.軟件系統測試類型及測試用例設計[J].科技經濟市場,2011,6
[3]朱家云.淺析軟件測試[J].信息系統工程,2011,4
[4王麗達.論軟件系統的測試[J].經濟研究導刊,2011,14
軟件測試范文4
關鍵詞 軟件測試 軟件生命周期 軟件測試評估
中圖分類號:TP311 文獻標識碼:A
0前言
自從IBM 360操作系統開發的失敗以來,軟件危機便進入人們的視野并備受關注。如今,在軟件產業化發展的大趨勢下,人們對軟件的質量、成本和開發進度的要求也越來越高,質量控制的含義已經超越了傳統意義上的軟件測試的要求及規范。傳統的軟件測試大多是基于代碼運行的,并且常常是在軟件開發的后期才開始進行的。但大量研究表明,設計活動引入的錯誤占軟件開發過程中出現的所有錯誤數量的50%~65%,因此,越來越多的聲音呼吁,要求有一個貫穿于軟件開發各個階段的軟件測試過程。
1軟件測試的發展歷程
按照時間劃分可以把軟件測試的發展史劃分為5個階段,這五個階段分別是面向調試、面向證明、面向查錯、面向評估以及面向預防的測試。1956年之前是面向調試的測試,是軟件測試的第一個階段。早期的開發過程中,由于軟件規模小,軟件測試是為了糾正軟件的故障等同于軟件調試。那時進行軟件測試較晚,測試工作一般是由開發人員進行;面向證明的測試從1957年開始到1978年結束,是軟件測試的第二個階段。此時軟件測試作為一種獨立、客觀地查找軟件缺陷的活動,與調試區分開來。但是該階段的軟件測試雖然作為一門獨立的學科,仍處于作為軟件開發的輔助方法的萌芽階段;軟件測試的第三階段是從1979年開始到1982年結束,稱為面向查錯的測試。在這一時期,軟件人員設計和開發程序的邏輯越來越嚴密,不僅要考慮程序正常狀態下的運行情況,也要考慮程序在各種錯誤操作和數據下的承受能力,軟件測試促進了程序質量的提高。但是這一階段對于軟件測試的理解并不太成熟,往往過分強調找到軟件中的錯誤;軟件測試的第四階段,即面向評估的測試,從1983年開始到1987年結束,該階段的測試是面向評估的測試。在這一時期,軟件測試不僅得到了蓬勃發展,而且軟件測試的目的變得客觀成熟;1988年至今,是軟件測試的第五個階段,即面向預防的測試。這一階段測試是為了度量和提高軟件的質量,對軟件進行工程設計、實施和維護的整個生命周期過程。軟件測試技術的研究取得了很大的突破,不僅出現了很多測試模型,而且也出現了很多商業化的測試工具。
2軟件測試的理論基礎
2.1軟件測試的定義
軟件測試是在軟件生命周期內運用技術手段保證軟件質量的一門學科。其主要內容包括軟件驗證技術、軟件確認技術和軟件測試管理技術這三大部分。軟件測試是根據軟件開發各階段的規格說明和程序的內部結構精心設計一批測試用例(即輸入數據及其預期的輸出結果),并利用這些測試用例運行程序以及發現錯誤的過程,即執行測試步驟。
2.2軟件測試的目的
(1)測試是為了證明程序有錯,而不是證明程序無錯。
(2)一個好的測試用例在于它能發現至今未發現的錯誤。
(3)一個成功的測試是發現了至今未發現的錯誤的測試。
2.3軟件測試的主要方法
隨著軟件測試技術的日臻成熟,軟件測試方法與技術已經發展得較為完善,現今軟件測試的方法很多,以下主要介紹幾種常用的軟件測試方法。
靜態測試不對代碼進行運行,而是借助專業的軟件測試工具評審軟件文檔或程序,度量靜態復雜度,通過分析或檢查源程序的文法、結構、過程、接口等來檢查程序的正確性,借以發現程序的不足之處,降低程序出現錯誤的概率。靜態測試包括代碼審查、靜態結構分析、代碼質量度量等。
動態測試是通過人工或使用工具運行被測程序,檢查運行結果與預期結果的差異,并分析運行效率和健壯性等性能。該方法有三部分組成:構造測試實例、執行程序、分析程序的輸出結果。
黑盒測試是在軟件的功能知道的前提下,通過測試來檢測每個功能是否正常使用,是一種驗證性方法。測試的過程中程序的內部是不可見的,在完全不考慮程序內部結構和內部特性的情況下,測試者在程序接口進行測試,只檢查程序功能是否按照需求規格說明書的規定正常使用,程序是否能適當地接收輸入數據而產生正確的輸出信息,并且保持外部信息的完整性。
白盒測試又稱為結構測試,與黑盒測試不同,它是在知道產品的內部工作過程,檢測產品內部動作是否按照規格說明書的規定正常運行、按照程序內部的結構測試程序,檢驗程序中的每條通路是否都能按預定的要求正確工作。白盒測試的主要方法有邏輯驅動、路徑測試等,主要用于軟件驗證。
灰盒測試介于黑盒測試和白盒測試之間,主要用于測試各個組件之間的邏輯關系是否正確,重點在于測試程序的處理能力和健壯性,相對黑盒測試和白盒測試而言,投入的時間較少,維護量也較小。
3軟件測試的評估
軟件測試評估是在測試結束后對整個測試過程與產品進行評估的過程,主要包括對于測試工作的總結、缺陷數據的分析及測試過程的評估。
由圖1可知,加入了測試評估的測試過程能形成一個完整的測試反饋系統,由此可見測試評估非常的重要。軟件測試評估是對軟件測試工作整體進展狀況的監督和評價,是保證測試完整性和有效性的重要工作。軟件測試評估貫穿于軟件測試的整個過程,軟件測試評估的方法主要包括覆蓋評估和質量評估。
覆蓋評估是對測試完全程度的評估,其建立在測試覆蓋的基礎之上,這通常與測試的定義相關,與完成計劃的程度相關。在測試的過程中,一些關于發現測試缺陷本身狀態的評估會展現出來,除此之外隨著測試工作的推進,測試完成的量會越來越多,所有這些與缺陷相關的測試評估稱為測試質量評估。質量評估是對測試軟件的整體質量狀況的評估,其建立在對測試的過程中發現的軟件缺陷的分析和修復基礎之上。它不斷監控軟件測試過程中總結出來的中間結果,然后通過對這些中間結果的分析又反過來對軟件測試的過程進行指導。
4結語
雖然在近年來,中國的軟件產業得到了飛速地發展,但國內很少開發出世界范圍內通用的軟件,且開發出的軟件在性能和質量上也無法和國外大公司開發的產品相比較。軟件測試作為軟件開發過程中的一個重要環節,長期以來一直滯后于中國軟件產業的發展。軟件測試作為一種保障軟件質量的一種技術,應該貫穿于軟件生命周期的整個過程,通過嚴格的軟件測試可以將軟件中的錯誤減少到可以接受的程度,從而提高軟件的質量。
參考文獻
[1] 秦航,楊強.軟件質量保證與測試[M].北京:清華大學出版社,2012(1).
軟件測試范文5
關鍵詞:軟件測試;軟件工程;軟件質量;可靠性
中圖分類號:TP311
1軟件可靠性分析
1.1軟件可靠性定義
軟件可靠性是指在一定的時間間隔、給定的軟件的運行環境下,程序按照設計要求執行一定的功能的能力。從軟件的可靠性定義可以看出,軟件的可靠性有3個要素:規定的時間、特定的運行環境和規定的軟件完成的任務與功能。
(1)規定的時間
軟件可靠性體現的是運行階段的軟件的性能,所以度量規定的時間的量應當是軟件的運行時間。運行時間包不但包括系統運行后的工作時間,還包括開啟但是空閑的時間。由于在運行軟件時,程序路徑和運行的環境的選取都具有隨機性,軟件的失效是一個隨機事件,因此,軟件的運行時間是一個隨機變量。
(2)規定的環境條件
環境條件是指軟件運行所處的環境。它包括支持軟件系統運行的各種要素,例如,運行軟件的操作系統、支持運行的硬件、其它的支持軟件、輸入的數據格式及范圍等。在不同的環境條件運行同一個軟件,得出的是不同的可靠性。詳細的說,假定其他的因素是理想的,規定的環境條件主要包括支持軟件運行的計算機的配置以及數據的輸入格式等要求。在明確了軟件規定的運行環境下,有利于準確的判斷軟件失效是研制方還是客戶方的責任。
(3)規定的功能
軟件規定的任務和功能也是影響軟件可靠性的一個因素。當完成不同的任務時,會有不同的軟件運行剖面,軟件調用的子模塊,即程序選擇的路徑,就會不同,就可能會得到不同的可靠性。所以明確軟件的任務和功能是準確度量軟件系統的可靠性的一個最重要的先決條件。
1.2軟件可靠性度量
軟件可靠性度量是定量的評價軟件產品具有的可靠性程度。具體是采用統計技術統計出軟件在運行測試期間的失效數據,從而根據數據評估軟件的可靠性??煽啃缘亩x是某種產品在規定的時間和條件下完成某種功能的能力,可靠度是可靠性的概率的度量。
軟件可靠性是軟件的一個固有特性,是衡量軟件在按照設計目標和用戶的要求執行其特定的功能的正確程度。軟件可靠性不僅與軟件本身的缺陷有關,也和系統的輸入和使用有一定的關系。從理論上來講,一個可靠的軟件必須是具有以下四個性質:正確性、一致性、完整性和健壯性。然而在實際中,沒有軟件能夠保證完全正確,也無法準確的度量其精確度。通常情況下,是通過測試軟件系統來估計其可靠性的。
為了進行軟件可靠性評估,首先需要了解軟件的可靠性模型。軟件可靠性一般需要通過建立數學模型和可靠性框圖而進行估算,這些數學模型和可靠性框圖就是軟件的可靠性模型。建立可靠性模型的目的是把較為復雜的可靠性分解為多個簡單的系統的可靠性,從而方便評價復雜系統的可靠性。
1.3軟件可靠性的測試實施
上述工作完成后,就可以進行測試。進行軟件可靠性測試必須按照研制方交付的軟件文檔中與可靠性相關部分的文件、文檔、數據等要求。在用戶文檔、需求說明書和項目合同中規定的配置要求下,必須全部測試程序和數據。
在軟件可靠性測試中,可以考慮輸入比正常的輸入在允許的一定范圍內更惡劣的輸入,即強化輸入。如果在強化輸入下,軟件的運行依然可靠,那說明軟件的強化輸入比正規輸入的情況更可靠。為了獲得更多的軟件可靠性數據,應該增加軟件的累積運行時間,比如,可以采用多臺計算機同時運行軟件。
1.4可靠性數據收集
對軟件進行可靠性評估的依據是軟件的可靠性數據。為了收集軟件的可靠性數據,應該建立一個具有軟件錯誤報告、分析與糾正功能的系統。根據行業標準的規定,編制完成軟件錯誤報告、可靠性數據收集、分析與處理的規則,準確、完整的收集軟件測試階段的可靠性數據。
收集可靠性數據主要包括下面四個方面的數據:失效時間數據、失效間隔時間數據、分組數據和分組時間內的累積失效數。失效時間數據是指軟件在運行過程中發生一次失效而總共經歷的時間。失效間隔時間數據是指軟件測試時某次失效與下一次失效之間的間隔時間。分組數據是指在一個時間段內軟件總共發生幾次失效。分組時間內的累積失效數是指某個區間內的累積失效數。
每一次測試記錄都要包含以下詳細信息:測試時間;測試說明或者計劃;和測試相關的所有的結果;參與測試的人員的詳細信息。
1.5編寫測試報告
軟件測試結束后,下面的工作便是編寫《軟件可靠性測試報告》,總結和歸納軟件測試中的測試項和測試結果。測試報告的內容一般包括下面的幾個方面內容:軟件的標識;軟件測試時的計算機軟件和硬件的配置;測試所使用的文檔;對軟件的說明;程序和數據的測試結果;軟件的測試最終日期。采用規范的管理控制,能夠保證在軟件測試階段獲得真實的可靠性數據,從而能夠客觀的評價軟件的可靠性。
2軟件測試
2.1軟件測試的定義
軟件測試是保證軟件質量的一個關鍵步驟,也是軟件生存期中一個階段。簡單來講,軟件測試就是通過對軟件需求的分析、設計的規格以及編碼進行的最后的審核活動。軟件測試的定義為:使用某種手段通過運行軟件系統來檢查軟件系統是否滿足設計的要求或者是測試結果是否與實際要求的功能相滿足。從定義可以看出,軟件測試的目的是確定軟件是否與設計的需求相滿足。
現在,從客戶的角度來看,軟件測試的目的是希望通過這個測試過程,發現軟件中隱藏的錯誤和缺陷。因此,也可以說,軟件測試是為了發現軟件系統中的錯誤而執行程序的一個過程。為了達到這個目的,需要設計出一批測試用的輸入數據及其預期的輸出結果,通過這些測試用例去測試運行的程序能否輸出預期的結果。
2.2軟件測試的方法
軟件測試方法包括兩類:黑盒測試方法和白盒測試。黑盒測試是在不考慮程序內部結構及其特性的情況下檢查輸入與輸出是否達到預期的結果的測試,所以又稱為功能測試等。而白盒測試則是在已知程序內部結構的情況下而設計測試用例的測試方法,又稱為結構測試等。一般情況下,如果進行的是獨立測試,則適合采用黑盒測試方法,如果進行的是單元測試,則采用白盒測試法。
測試用例是對客觀存在的程序的一種抽象,是對程序中的目標、運動和結果等的一種描述。設計測試用例是對軟件的某種功能而設計出的測試方案,以文檔的形式編制。在設計測試用例時,不僅能夠考慮到普通的情況,還應該考慮到邊界值以及極限值等特殊情況。為了達到測試時發現軟件系統中的隱藏缺陷,所以在選擇輸入輸出數據和測試用例時,必須結合軟件的運行環境,盡可能的選擇出所有具有代表性的測試用例和數據,從而全面的判斷輸入輸出結果與實際設計是否符合。得到軟件測試的數據后,對其進行處理,以此為依據來判斷軟件系統能否滿足設計需求。
3結束語
綜上所述,本文通過對軟件測試與可靠性評估方法進行了分析與研究。根據多年的經驗表明,采用現場試驗的方法是評估軟件可靠性的最好的方法。影響軟件的可靠性的因素有很多,最大的一個因素是關于可靠性的數據不足。所以在實際的軟件測試與可靠性分析時,必須根據豐富的歷史可靠性試驗信息統計來評估全系統的可靠性。
參考文獻:
[1]潘立武,楊健.談應用軟件測試方法[J].福建電腦,2007,7.
軟件測試范文6
1 軟件開發和軟件測試
軟件開發和軟件測試都是軟件工程定義里的重要階段。軟件開發是根據用戶要求建造出軟件系統或者系統中的軟件部分的過程。軟件開發人員主要工作是對用戶需求進行分析,根據需求分析進行系統設計、程序編碼、單元測試和軟件缺陷的修復。
軟件測試是根據軟件開發各階段的規格說明和程序的內部結構而精心設計一批測試用例(包括輸入數據與預期輸出結果),并利用這些測試用例運行軟件,以最少的人力、物力和時間找出軟件中潛在的各種錯誤和缺陷的過程。在軟件投入運行前,軟件測試對軟件需求分析、設計規格說明和編碼最終復審,是軟件質量保證的關鍵步驟。
2 軟件開發和軟件測試的關系
在軟件項目團隊中,軟件開發和軟件測試都是其重要的項目成員,兩者都有共同的目標就是實現用戶需求,保證軟件高品質的交付到用戶手中。有開發就會有測試,開發人員先實現軟件,測試人員對軟件進行測試找出程序錯誤和缺陷,并提交開發進行修復。軟件開發和軟件測試通過這樣互相合作,逐步解除軟件隱藏的程序錯誤和潛在風險,使軟件產品更逼近于用戶需求。
軟件開發和軟件測試的工作交集就是軟件缺陷,在軟件缺陷的定義和處理上往往容易發生意見分歧。在這個時候,作為軟件測試人員,如何處理和應對好和軟件開發的關系,保持高效的團隊協作能力就顯得尤為重要。
3 軟件測試對軟件開發關系的處理方法及技巧
3.1 尊重開發成果
作為測試人員要保持良好的心態,要尊重開發的工作成果。有的測試人員接到開發提交測試的軟件,在開始測試后碰到這樣那樣的問題,有的可能是顯而易見的問題時,就會心生抱怨,甚至言語上抨擊開發人員技術水平低,單元測試沒做好,這樣很容易導致開發人員對測試人員的反感和抵觸,造成兩者關系緊張。其實,你要理解開發人員也是在時間緊,任務重,經過加班加點的情況下開發出來的程序,有錯誤那是肯定的,我們測試人員的職責就是要幫助他們找到軟件里面的 Bug,幫助他們改進軟件質量。所以,測試人員要保持好的心態,理解開發人員的辛勞,盡好測試職責努力幫助他們。
3.2 提交缺陷技巧
日常工作中測試與開發打交道最多的莫過于在軟件缺陷的定義和處理上了。怎樣能夠讓開發人員更樂于接受測試提交的缺陷并改進它,測試人員要注意以下幾點:
3.2.1 換位思考,多站在開發人員的角度想
開發人員將軟件提交測試后,他們最焦急等待的測試結果基本上都是系統邏輯跑不跑得通,數據流轉是否正確。測試人員在這方面就要注意測試技巧和提交Bug的優先順序。測試時優先按業務流程測試整個系統邏輯,把影響系統邏輯的錯誤找出來優先提交給開發人員,這時候的開發人員會很喜歡修改這些問題。測試中碰到一些不影響系統邏輯的Bug我們先暫且記錄下來,待第一批都修改完畢,測試才提交如界面美觀、輸入輸出控制等改進型的Bug,這樣有主次的提交 Bug順序,開發更易于接受。
3.2.2 Bug描述要清晰準確
測試人員發現的BUG是開發人員改進的重要依據,好的Bug描述對于正確的和高效的解決Bug非常重要。測試人員在描述Bug時,語言要簡明準確,杜絕使用“好像、有時、偶爾、幾分鐘、一段時間”等模糊詞語;描述的內容不是越多越好,只要提供有利于開發人員快速定位的必要信息即可。具備一定開發經驗,水平較高的測試人員還能通過錯誤現象,定位程序可能出錯的地方,提出問題查找的方向。
3.2.3 避免提交重復和無效的Bug
測試人員在遇到Bug時,要先進行問題分析,這個問題是獨立出現還是整個系統都普遍存在,如果是普遍問題,只需要提交一個Bug即可。過多的同一問題根源的Bug會令開發人員厭煩。另外,測試人員不但要熟悉業務需求,還要熟悉軟件系統的操作和使用,提交由于操作錯誤而非程序問題引起的Bug,容易導致開發對測試失去信任。如果測試人員在不確定是否Bug的時候,可先向開發人員進行詢問確認。
3.3 注重溝通
(1)測試人員與開發人員最容易產生分歧的就是對缺陷的定義,這時候面對面的討論比在即時通訊工具上數十個來回的爭論來得直接、有效、清晰。討論的時候,測試人員應說說自己的測試方法,讓開發明白你的測試內容和做法都是站在用戶的角度去測試和看待問題。
(2)不要期望所有的Bug都會被開發人員修復,浪費太多的時間去爭論一些不影響系統本質的非關鍵點反而會得不嘗失,應該允許開發人員保持不同的觀點,問題可留待下個版本完善。
(3)平時多與開發人員交流,了解他們負責的模塊和實現方法,這樣有助于自己對系統有更深入的認識,改善測試方法和測試技巧,幫助開發改進軟件質量。
4 總結
軟件測試與軟件開發保持良好的合作關系,能夠使項目團隊具備更高的凝聚力,極大的提升團隊協作能力,是順利、高效的實施軟件項目的有力保障。