第01章軟件測試概述_第1頁
第01章軟件測試概述_第2頁
第01章軟件測試概述_第3頁
第01章軟件測試概述_第4頁
第01章軟件測試概述_第5頁
已閱讀5頁,還剩55頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1章軟件測試概述

軟件測試是軟件工程中的重要部分,是確保軟件質量的重要手段。本章概括地介紹了軟件測試的基本概念,包括軟件測試的原則、分類和工作流程等基本知識。

軟件測試是軟件工程的一個重要部分,是確保軟件工程質量的重要手段。最近幾年來,由于軟件工程的復雜度的不斷增強,更由于軟件的工業化發展趨勢,軟件測試得到廣泛的重視。1.1軟件、軟件危機、軟件工程1.1.1軟件、軟件危機、軟件工程的基本概念計算機軟件:是計算機系統中與硬件相互依存的另一部分,它是包括程序,數據及其相關文檔的完整集合軟件危機:在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題,軟件生產與市場需求出現極不適應的嚴重現象軟件工程:應用計算機科學、數學及管理科學等原理開發軟件的工程

一個軟件產品從形成概念開始,經過開發、測試、使用和維護,直到最后退出使用的全過程稱為軟件生存周期。軟件生存周期根據軟件所處的狀態,以及軟件開發活動的目的和任務,可劃分為若干個階段。一般軟件生存周期包括軟件定義、軟件開發、軟件測試、軟件使用與維護等幾個部分。1.1.2軟件工程的目標及其一般開發過程

1.軟件定義可行性分析的任務是了解用戶的要求及實現環境,從技術、經濟和社會等幾個方面研究并論證軟件系統的可行性。需求分析的任務是確定所要開發軟件的功能需求、性能需求和運行環境約束,編制軟件需求規格說明、軟件系統的確認測試準則。軟件的性能需求包括軟件的適應性、安全性、可靠性、可維護性錯誤處理等。2.軟件開發軟件開發是按照需求規格說明的要求,由抽象到具體,逐步生成軟件的過程。軟件開發一般由設計、實現和測試等階段組成。3.軟件測試軟件需經過嚴密的測試,以發現軟件在整個設計過程中存在的問題并加以糾正。整個測試過程分單元測試、集成測試、系統測試以及驗收測試四個階段進行。測試的方法主要有白盒測試和黑盒測試。4.軟件使用和維護軟件的使用是在軟件通過測試后,將軟件安裝在用戶確定的運行環境中移交給用戶使用。軟件的維護是對軟件系統進行修改或對軟件需求變化做出反應的過程。1.1.3可供選擇的軟件過程模型軟件開發過程中存在各種復雜因素,為了解決由此而帶來的種種問題,軟件開發者們經過多年的摸索,給出了多種實現軟件工程的方式——軟件過程模型,如瀑布過程模型、螺旋過程模型和增量過程模型等。1.瀑布過程模型瀑布過程模型反映了人們早期對軟件工程的認識水平,是人們所熟悉的一種線性思維的體現。瀑布過程模型強調階段的劃分及其順序性、各階段工作及其文檔的完備性,是一種嚴格線性的、按階段順序的、逐步細化的開發模式,如圖1-1所示。圖1-1瀑布過程模型2.螺旋過程模型螺旋過程模型的基本思路是,依據前一個版本的結果構造新的版本,這個不斷重復迭代的過程形成了一個螺旋上升的路徑,如圖1-2所示。圖1-2螺旋過程模型3.增量過程模型有些時候可能會用一種幾乎連續的過程小幅度地推進項目,這就是增量過程模型,如圖1-3所示。圖1-3增量過程模型4.快速原型過程模型

快速原型過程模型首先是快速進行系統分析,

在設計人員和用戶的緊密配合下,快速確定軟件系統的基本要求,盡快實現一個可運行的、功能簡單的原型系統,然后通過對原型系統逐步求精,不斷擴充完善得到最終的軟件系統。

敏捷軟件過程模型是一種迭代式增量軟件開發過程。敏捷開發方法是一種以人為核心、迭代、循序漸進的開發方法。在敏捷開發中,軟件項目的構建被切分成多個子項目,各個子項目的成果都經過測試,具備集成和可運行的特征。換言之,就是把一個大項目分為多個相互聯系,但也可獨立運行的小項目,并分別完成,在此過程中軟件一直處于可使用狀態。

5.敏捷過程模型敏捷方法適用于小塊工作.這些工作位于每次迭代以及迭代結尾發布的工作軟件當中.敏捷方法的主要優勢在于,它能完全適應用戶環境,而且對產品進行持繼迭代.它更注重交付能工作的軟件,而不是實現需求規范中定義的需求.

以上5種模型只是眾多軟件過程模型中較為典型的,除此之外還有噴泉模型、統一軟件開發過程模型等。介紹軟件過程模型的目的是為了突出軟件工程中軟件過程模型的重要地位,從某種意義上說,不了解軟件過程模型,就不了解軟件工程。1.2軟件缺陷與軟件故障1.什么是軟件缺陷和軟件故障軟件缺陷是存在于軟件(文檔、數據、程序)之中的那些不希望或不可接受的偏差。其結果是軟件運行于某一特定條件時出現軟件故障,這時稱軟件缺陷被激活。軟件故障是指軟件運行過程中出現的一種不希望或不可接受的內部狀態,此時若無適當措施(容錯)加以及時處理,便產生軟件失效。2.軟件缺陷和軟件故障案例(1)“千年蟲”問題(2)阿麗亞娜5型火箭發射失敗(3)“沖擊波”病毒(4)Windows2000中文輸入法漏洞(5)金山詞霸出現的錯誤(6)北京奧運會門票系統故障(7)2009年2月份Google的Gmail故障(8)中國鐵路網上訂票出故障遭質疑

軟件復雜性交流不夠、交流上有誤解或者根本不進行交流程序設計錯誤需求變化時間壓力代碼文檔貧乏軟件開發工具3.軟件產生錯誤的原因1.3軟件質量與質量模型

軟件質量是軟件的生命,它直接影響軟件的使用與維護。通常軟件質量由以下幾方面進行評價。①軟件需求是衡量軟件質量的基礎,不符合需求的軟件就不具備質量。設計的軟件應在功能、性能等方面都符合要求,并能可靠地運行。②軟件結構良好,易讀、易于理解,并易于修改、維護。③軟件系統具有友好的用戶界面,便于用戶使用。④軟件生存周期中各階段文檔齊全、規范,便于配置、管理。

軟件的質量因素很多,如正確性、精確性、可靠性、容錯性、性能、效率、易用性、可理解性、簡潔性、可復用性、可擴充性、兼容性等。軟件質量因素也稱為軟件質量特性,反映了質量的本質。討論一個軟件的質量,問題最終要歸結到定義軟件的質量特性。

面對眾多的質量因素如何取折衷,這實際上就是區分質量因素對軟件質量影響程度輕重的問題,這個問題已經有了解決方案,即軟件質量模型。圖1-4所示為McCall軟件質量模型,質量模型中的質量概念基于11個特性之上,這11個特性分別面向軟件產品的運行、修正、轉移。圖1-4McCall質量模型

圖1-5所示為ISO/IEC9126-1991標準規定的軟件質量度量模型。它由3層組成,其中第1層稱為質量特性,第2層稱為質量子特性,第3層稱為度量。圖1-5ISO軟件質量度量模型

圖1-6所示為新的ISO/IEC9126軟件質量模型,軟件質量包括“內部質量”、“外部質量”和“使用質量”三部分。圖1-6新的ISO/IEC9126軟件質量模型

所謂的內部質量是從內部觀點出發的軟件產品特性的總體,是針對內部質量需求被測量和評價的質量。內部質量特征主要包括:可維護性、靈活性、可移植性、可重用性、可讀性、可測試性、可理解性。

外部質量的定義是:軟件產品在規定條件下使用時滿足需求的程度。外部質量是從外部觀點出發的軟件產品特性的總體,它是當軟件執行時,更典型地是使用外部度量在模擬環境中,用模擬數據測試時,所被測量和評價的質量,即在預定的系統環境中運行時可能達到的質量水平。外部質量特征主要包括:正確性、可用性、效率、可靠性、完整性、適應性、精確性、堅固性。

使用質量的定義是:在規定的使用環境下軟件產品使特定用戶在達到規定目標方面的能力。它是從用戶觀點出發,來看待軟件產品用于特定環境和條件下的質量,反映的是從用戶角度看到的軟件產品在適當系統環境下滿足其需求的程度。使用質量用以下質量特征表述:有效性、生產率、安全性、滿意程度等。1.4軟件測試

1.4.1軟件測試的定義及目的簡單地說,軟件測試就是為了發現錯誤而執行程序的過程。

在IEEE提出的軟件工程標準術語中,軟件測試被定義為:“使用人工和自動手段來運行或測試某個系統的過程,其目的在于檢驗它是否滿足規定的需求或弄清楚預期結果與實際結果之間的差別。”軟件測試是與軟件質量密切聯系在一起的,歸根結底,軟件測試是為了保證軟件質量。

軟件測試是一個找錯的過程。軟件測試的過程亦是程序運行的過程。程序運行需要數據,為測試設計的數據稱為測試用例。測試用例的設計原則是盡可能暴露程序中的錯誤。

軟件是由人來完成的,所有由人做的工作都不會是完美無缺的。軟件開發是個很復雜的過程,期間很容易產生錯誤。無論是軟件從業人員、專家和學者做了多大的努力,軟件錯誤仍然存在。因而大家也得到了一種共識:軟件中殘存著錯誤,這是軟件的一種屬性,是無法改變的。所以通常說軟件測試的目的就是為了發現盡可能多的缺陷,并期望通過改錯來把缺陷統統消滅,以期提高軟件的質量。一個成功的測試用例在于發現了至今尚未發現的缺陷。

軟件測試的目的是以最少的人力、物力和時間找出軟件中潛在的各種錯誤和缺陷,通過修正各種錯誤和缺陷提高軟件質量,回避軟件發布后由于潛在的軟件缺陷和錯誤造成的隱患所帶來的商業風險。1.4.2軟件測試的原則

(1)盡早測試

(2)

全面測試

(3)全過程測試

(4)

獨立的、迭代的測試

(5)Pareto原則

(6)對測試出的錯誤結果一定要有一個確認的過程。(7)制訂嚴格的測試計劃。制訂嚴格的測試計劃,并把測試時間安排得盡量寬松,不要希望在極短的時間內完成一個高水平的測試。(8)完全測試是不可能的,測試需要終止。(9)注意回歸測試的關聯性。(10)妥善保存一切測試過程文檔。1.4.3軟件測試模型

軟件測試過程模型是對測試過程一種抽象,用于定義軟件測試的流程和方法。隨著測試過程管理的發展,軟件測試專家通過實踐總結出了很多很好的測試過程模型。這些模型將測試活動進行了抽象,并與開發活動有機的進行了結合,是測試過程管理的重要參考依據。1.V模型V模型是最具有代表意義的測試模型,反映出了測試活動與分析設計活動的關系。

V模型指出,單元和集成測試應檢測程序的執行是否滿足軟件設計的要求;系統測試應檢測系統功能、性能的質量特性是否達到系統要求的指標;驗收測試確定軟件的實現是否滿足用戶需要或合同的要求。圖1-7軟件測試V模型2.W模型W模型由兩個V字型模型組成,分別代表測試與開發過程。

W模型強調:測試伴隨著整個軟件開發周期,而且測試的對象不僅僅是程序,需求、設計等同樣要測試,也就是說,測試與開發是同步進行的。圖1-8軟件測試W模型3.H模型H模型將測試活動完全獨立出來,形成了一個完全獨立的流程,將測試準備活動和測試執行活動清晰地體現出來。

H模型揭示了軟件測試是一個獨立的流程,貫穿產品整個生命周期,與其他流程并發地進行。圖1-9軟件測試H模型4.其他模型

除上述幾種常見模型外,還流傳著其他幾種模型,例如X模型、前置測試模型等。

X模型提出針對單獨的程序片段進行相互分離的編碼和測試,此后通過頻繁的交接,通過集成最綜合成為可執行的程序。前置測試模型體現了開發與測試的結合,要求對每一個交付內容進行測試。1.4.4軟件測試的分類1.按測試方式分類靜態測試動態測試2.按測試方法分類白盒測試黑盒測試3.按測試過程分類單元測試集成測試系統測試驗收測試4.按測試目的分類功能測試健壯性測試接口測試性能測試強度測試壓力測試用戶界面測試安全測試可靠性測試安裝/反安裝測試文檔測試恢復測試兼容性測試1.4.5軟件測試流程

軟件測試流程就是指從軟件測試開始到軟件測試結束經過的一系列準備、執行、分析的過程。軟件測試工作一般要通過制訂測試計劃、設計測試、測試準備和測試環境的建立、執行測試、評估測試和總結測試工作等幾個階段來完成。圖1-10軟件測試流程測試流程1.測試計劃2.測試設計3.測試準備和測試環境的建立4.執行測試5.測試評估6.測試總結1.4.6軟件測試發展歷程和趨勢軟件測試是伴隨著軟件的產生而產生的,有了軟件的生成和運行就必然有軟件測試。在早期的軟件開發過程中,測試的含義比較窄,將測試等同于“調試”,目的是糾正軟件中已經知道的故障,常常由軟件開發人員自己完成這部分工作。對測試的投入極少,測試介入得也晚,常常是等到形成代碼,產品已經基本完成時才進行測試。

直到1957年,軟件測試才開始與調試區別開來,成為一種發現軟件缺陷的活動。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論