複製鏈接
請複製以下鏈接發送給好友

軟件測試方法

鎖定
軟件測試是使用人工或自動的手段來運行或測定某個軟件系統的過程,其目的在於檢驗它是否滿足規定的需求或弄清預期結果與實際結果之間的差別。 [1] 
從是否關心軟件內部結構和具體實現的角度劃分,測試方法主要有白盒測試和黑盒測試。白盒測試方法主要有代碼檢查法、靜態結構分析法、靜態質量度量法、邏輯覆蓋法、基本路徑測試法、域測試、符號測試、路徑覆蓋和程序變異。黑盒測試方法主要包括等價類劃分法、邊界值分析法錯誤推測法、因果圖法、判定表驅動法、正交試驗設計法、功能圖法、場景法等。 [1] 
從是否執行程序的角度劃分,測試方法又可分為靜態測試動態測試。靜態測試包括代碼檢查、靜態結構分析、代碼質量度量等。動態測試由3部分組成:構造測試實例、執行程序和分析程序的輸出結果。 [1] 
中文名
軟件測試方法
外文名
Software Testing Method
目    的
測試軟件性能
所屬行業
計算機
作    用
選擇合適的軟件

軟件測試方法軟件簡介

軟件測試方法的目的包括:發現軟件程序中的錯誤、對軟件是否符合設計要求,以及是否符合合同中所要達到的技術要求,進行有關驗證以及評估軟件的質量。最終實現將高質量的軟件系統交給用户的目的。而軟件的基本測試方法主要有靜態測試和動態測試、功能測試、性能測試、黑盒測試和白盒測試等等。 [2] 
軟件測試方法眾多,比較常用到的測試方法有等價類劃分場景法,偶爾會使用到的測試方法有邊界值和判定表,還有包括不經常使用到的正交排列法和測試大綱法。其中等價類劃分、邊界值分析、判定表等屬於黑盒測試方法;只對功能是否可以滿足規定要求進行檢查,主要用於軟件的確認測試階段。白盒測試也叫做結構測試或邏輯驅動測試,是基於覆蓋的全部代碼和路徑、條件的測試,通過測試檢測產品內部性能,檢驗程序中的路徑是否可以按照要求完成工作,但是並不對功能進行測試,主要用於軟件的驗證。 [3] 

軟件測試方法原則

1.儘早不斷測試的原則
應當儘早不斷地進行軟件測試。據統計約60%的錯誤來自設計以前,並且修正一個軟件錯誤所需的費用將隨着軟件生存週期的進展而上升。錯誤發現得越早,修正它所需的費用就越少。 [4] 
2.IPO原則
測試用例由測試輸入數據和與之對應的預期輸出結果這兩部分組成。 [4] 
3.獨立測試原則
(1)獨立測試原則。這是指軟件測試工作由在經濟上和管理上獨立於開發機構的組織進行。程序員應避免檢査自己的程序,程序設計機構也不應測試自己開發的程序。軟件開發者難以客觀、有效地測試自己的軟件,而找出那些因為對需求的誤解而產生的錯誤就更加困難。 [4] 
(2)合法和非合法原則。在設計時,測試用例應當包括合法的輸入條件和不合法的輸入條件。 [4] 
(3)錯誤羣集原則。軟件錯誤呈現羣集現象。經驗表明,某程序段剩餘的錯誤數目與該程序段中已發現的錯誤數目成正比,所以應該對錯誤羣集的程序段進行重點測試。 [4] 
(4)嚴格性原則。嚴格執行測試計劃,排除測試的隨意性。 [4] 
(5)覆蓋原則。應當對每一個測試結果做全面的檢查。 [4] 
(6)定義功能測試原則。檢查程序是否做了要做的事僅是成功的一半,另一半是看程序是否做了不屬於它做的事。 [4] 
(7)迴歸測試原則。應妥善保留測試用例,不僅可以用於迴歸測試,也可以為以後的測試提供參考。 [4] 
(8)錯誤不可避免原則。在測試時不能首先假設程序中沒有錯誤。 [4] 

軟件測試方法分類

軟件測試方法的分類有很多種,以測試過程中程序執行狀態為依據可分為靜態測試(Static Testing,ST)和動態測試(Dynamic Testing,DT);以具體實現算法細節和系統內部結構的相關情況為根據可分黑盒測試、白盒測試和灰盒測試三類;從程序執行的方式來分類,可分為人工測試(Manual Testing,MT)和自動化測試(Automatic Testing,AT)。 [5] 
靜態測試和動態測試
(1)靜態測試。靜態測試的含義是被測程序不運行,只依靠分析或檢查源程序的語句、結構、過程等來檢查程序是否有錯誤。即通過對軟件的需求規格説明書、設計説明書以及源程序做結構分析和流程圖分析,從而來找出錯誤。例如不匹配的參數,未定義的變量等。 [5] 
(2)動態測試。動態測試與靜態測試相對應,其是通過運行被測試程序,對得到的運行結果與預期的結果進行比較分析,同時分析運行效率和健壯性能等。這種方法可簡單分為三個步驟:構造測試實例、執行程序以及分析結果。 [5] 
黑盒測試、白盒測試和灰盒測試
軟件測試方法 軟件測試方法
(1)黑盒測試。之所以被稱為黑盒測試是因為可以將被測程序看成是一個無法打開的黑盒,而工作人員在不考慮任何程序內部結構和特性的條件下,根據需求規格説明書設計測試實例,並檢查程序的功能是否能夠按照規範説明準確無誤的運行。其主要是對軟件界面和軟件功能進行測試。對於黑盒測試行為必須加以量化才能夠有效的保證軟件的質量。 [5] 
(2)白盒測試。其與黑盒測試不同,它主要是藉助程序內部的邏輯和相關信息,通過檢測內部動作是否按照設計規格説明書的設定進行,檢查每一條通路能否正常工作。白盒測試是從程序結構方面出發對測試用例進行設計。其主要用於檢查各個邏輯結構是否合理,對應的模塊獨立路徑是否正常以及內部結構是否有效。常用的白盒測試法有控制流分析、數據流分析、路徑分析、程序變異等,其中邏輯覆蓋法是主要的測試方法。 [5] 
(3)灰盒測試。灰盒測試則介於黑盒測試和白盒測試之間。灰盒測試除了重視輸出相對於出入的正確性,也看重其內部表現。但是它不可能像白盒測試那樣詳細和完整。它只是簡單的靠一些象徵性的現象或標誌來判斷其內部的運行情況,因此在內部結果出現錯誤,但輸出結果正確的情況下可以採取灰盒測試方法。因為在此情況下灰盒比白盒高效,比黑盒適用性廣的優勢就凸顯出來了。 [5] 
手動測試和自動化測試
自動化測試,顧名思義就是軟件測試的自動化,即在預先設定的條件下運行被測程序,並分析運行結果。總的來説,這種測試方法就是將以人驅動的測試行為轉化為機器執行的一種過程。對於手動測試,其在設計了測試用例之後,需要測試人員根據設計的測試用例一步一步來執行測試得到實際結果,並將其與期望結果進行比對。 [5] 

軟件測試方法測試

軟件測試方法單元測試

單元測試主要是對該軟件的模塊進行測試,通過測試以發現該模塊的實際功能出現不符合的情況和編碼錯誤。由於該模塊的規模不大,功能單一,結構較簡單,且測試人員可通過閲讀源程序清楚知道其邏輯結構,首先應通過靜態測試方法,比如靜態分析、代碼審查等,對該模塊的源程序進行分析,按照模塊的程序設計的控制流程圖,以滿足軟件覆蓋率要求的邏輯測試要求。另外,也可採用黑盒測試方法提出一組基本的測試用例,再用白盒測試方法進行驗證。若用黑盒測試方法所產生的測試用例滿足不了軟件的覆蓋要求,可採用白盒法增補出新的測試用例,以滿足所需的覆蓋標準。其所需的覆蓋標準應視模塊的實際具體情況而定。對一些質量要求和可靠性要求較高的模塊,一般要滿足所需條件的組合覆蓋或者路徑覆蓋標準。 [2] 

軟件測試方法集成測試

集成測試是軟件測試的第二階段,在這個階段,通常要對已經嚴格按照程序設計要求和標準組裝起來的模塊同時進行測試,明確該程序結構組裝的正確性,發現和接口有關的問題,比如模塊接口的數據是否會在穿越接口時發生丟失;各個模塊之間因某種疏忽而產生不利的影響;將模塊各個子功能組合起來後產生的功能要求達不到預期的功能要求;一些在誤差範圍內且可接受的誤差由於長時間的積累進而到達了不能接受的程度;數據庫因單個模塊發生錯誤造成自身出現錯誤等等。同時因集成測試是界於單元測試和系統測試之間的,所以,集成測試具有承上啓下的作用。因此有關測試人員必須做好集成測試工作。在這一階段,一般採用的是白盒和黑盒結合的方法進行測試,驗證這一階段設計的合理性以及需求功能的實現性。 [2] 

軟件測試方法系統測試

一般情況下,系統測試採用黑盒法來進行測試的,以此來檢查該系統是否符合軟件需求。本階段的主要測試內容包括健壯性測試、性能測試、功能測試、安裝或反安裝測試、用户界面測試、壓力測試、可靠性及安全性測試等。為了有效保證這一階段測試的客觀性,必須由獨立的測試小組來進行相關的系統測試。另外,系統測試過程較為複雜,由於在系統測試階段不斷變更需求造成功能的刪除或增加,從而使程序不斷出現相應的更改,而程序在更改後可能會出現新的問題,或者原本沒有問題的功能由於更改導致出現問題。所以,測試人員必須進行迴歸測試。 [2] 

軟件測試方法驗收測試

驗收測試是最後一個階段的測試操作,在軟件產品投入正式運行前的所要進行的測試工作。和系統測試相比而言,驗收測試與之的區別就只是測試人員不同,驗收測試則是由用户來執行這一操作的。驗收測試的主要目標是為向用户展示所開發出來的軟件符合預定的要求和有關標準,並驗證軟件實際工作的有效性和可靠性,確保用户能用該軟件順利完成既定的任務和功能。通過了驗收測試,該產品就可進行發佈。但是,在實際交付給用户之後,開發人員是無法預測該軟件用户在實際運用過程中是如何使用該程序的,所以從用户的角度出發,測試人員還應進行Alpha測試Beta測試這兩種情形的測試。Alpha測試是在軟件開發環境下由用户進行的測試,或者模擬實際操作環境進而進行的測試。Alpha測試主要是對軟件產品的功能、局域化、界面、可使用性以及性能等等方面進行評價。而Beta測試是在實際環境中由多個用户對其進行測試,並將在測試過程中發現的錯誤有效反饋給軟件開發者。所以在測試過程中用户必須定期將所遇到的問題反饋給開發者。 [2] 

軟件測試方法重要性

軟件測試的目的就是確保軟件的質量、確認軟件以正確的方式做了你所期望的事情,所以他的工作主要是發現軟件的錯誤、有效定義和實現軟件成分由低層到高層的組裝過程、驗證軟件是否滿足任務書和系統定義文檔所規定的技術要求、為軟件質量模型的建立提供依據。軟件的測試不僅是要確保軟件的質量,還要給開發人員提供信息,以方便其為風險評估做相應的準備,重要的是他要貫穿在整個軟件開發的過程中,保證整個軟件開發的過程是高質量的。 [6] 
軟件測試時在軟件設計及程序編碼之後,在軟件運行之前進行最為合適。考慮到測試人員在軟件開發過程中的尋找Bug、避免軟件開發過程中的缺陷、關注用户的需求等任務,所以作為軟件開發人員,軟件測試要嵌入在整個軟件開發的過程中,比如在軟件的設計和程序的編碼等階段都得嵌入軟件測試的部分,要時時檢查軟件的可行性,但是作為專業的軟件測試工作,還是在程序編碼之後,軟件運行之前最為合適。 [6] 
參考資料
  • 1.    張濤主編;張濤,馬春燕,鄭煒,楊帆,王海鵬,成靜編.軟件技術基礎實驗教程:西北工業大學出版社,2015.01:第111頁
  • 2.    肖文濤.軟件測試方法的應用分析[J].數碼世界,2017,(11):94.
  • 3.    韓韜.軟件測試策略和測試方法的應用[J].信息記錄材料,2018,19(11):97-98.
  • 4.    陳明編著.軟件工程學教程:北京理工大學出版社,2013.08:第223頁
  • 5.    劉宇軒.軟件測試方法研究[J].科技風,2018,(4):53.
  • 6.    馬振華.談軟件工程中軟件測試的重要性及方法[J].電腦迷,2018,(5):112.