軟體測試方法
測試軟體性能的方法
軟體測試方法是指測試軟體的方法。隨著軟體測試技術的不斷發展,測試方法也越來越多樣化,針對性更強;選擇合適的軟體測試方法可以讓我們事半功倍。
軟體測試方法的目的包括:發現軟體程序中的錯誤、對軟體是否符合設計要求以及是否符合合同中所要達到的技術要求進行有關驗證以及評估軟體的質量。最終實現將高質量的軟體系統交給用戶的目的。而軟體的基本測試方法主要有靜態測試和動態測試、功能測試、性能測試、黑盒測試和白盒測試等等。
軟體測試方法眾多,比較常用到的測試方法有等價類劃分、場景法,偶爾會使用到的測試方法有邊界值和判定表,還有包括不經常使用到的正交排列法和測試大綱法。其中等價類劃分、邊界值分析、判定表等屬於黑盒測試方法;只對功能是否可以滿足規定要求進行檢查,主要用於軟體的確認測試階段。白盒測試也叫做結構測試或邏輯驅動測試,是基於覆蓋的全部代碼和路徑、條件的測試,通過測試檢測產品內部性能,檢驗程序中的路徑是否可以按照要求完成工作,但是並不對功能進行測試,主要用於軟體的驗證。
1、單元測試
單元測試主要是對該軟體的模塊進行測試,通過測試以發現該模塊的實際功能出現不符合的情況和編碼錯誤。由於該模塊的規模不大,功能單一,結構較簡單,且測試人員可通過閱讀源程序清楚知道其邏輯結構,首先應通過靜態測試方法,比如靜態分析、代碼審查等,對該模塊的源程序進行分析,按照模塊的程序設計的控制流程圖,以滿足軟體覆蓋率要求的邏輯測試要求。另外,也可採用黑盒測試方法提出一組基本的測試用例,再用白盒測試方法進行驗證。若用黑盒測試方法所產生的測試用例滿足不了軟體的覆蓋要求,可採用白盒法增補出新的測試用例,以滿足所需的覆蓋標準。其所需的覆蓋標準應視模塊的實際具體情況而定。對一些質量要求和可靠性要求較高的模塊,一般要滿足所需條件的組合覆蓋或者路徑覆蓋標準。
2、集成測試
集成測試是軟體測試的第二階段,在這個階段,通常要對已經嚴格按照程序設計要求和標準組裝起來的模塊同時進行測試,明確該程序結構組裝的正確性,發現和介面有關的問題,比如模塊介面的數據是否會在穿越介面時發生丟失;各個模塊之間因某種疏忽而產生不利的影響;將模塊各個子功能組合起來后產生的功能要求達不到預期的功能要求;一些在誤差範圍內且可接受的誤差由於長時間的積累進而到達了不能接受的程度;資料庫因單個模塊發生錯誤造成自身出現錯誤等等。同時因集成測試是界於單元測試和系統測試之間的,所以,集成測試具有承上啟下的作用。因此有關測試人員必須做好集成測試工作。在這一階段,一般採用的是白盒和黑盒結合的方法進行測試,驗證這一階段設計的合理性以及需求功能的實現性。
3、系統測試
一般情況下,系統測試採用黑盒法來進行測試的,以此來檢查該系統是否符合軟體需求。本階段的主要測試內容包括健壯性測試、性能測試、功能測試、安裝或反安裝測試、用戶界面測試、壓力測試、可靠性及安全性測試等。為了有效保證這一階段測試的客觀性,必須由獨立的測試小組來進行相關的系統測試。另外,系統測試過程較為複雜,由於在系統測試階段不斷變更需求造成功能的刪除或增加,從而使程序不斷出現相應的更改,而程序在更改后可能會出現新的問題,或者原本沒有問題的功能由於更改導致出現問題。所以,測試人員必須進行回歸測試。
4、驗收測試
驗收測試是最後一個階段的測試操作,在軟體產品投入正式運行前的所要進行的測試工作。和系統測試相比而言,驗收測試與之的區別就只是測試人員不同,驗收測試則是由用戶來執行這一操作的。驗收測試的主要目標是為向用戶展示所開發出來的軟體符合預定的要求和有關標準,並驗證軟體實際工作的有效性和可靠性,確保用戶能用該軟體順利完成既定的任務和功能。通過了驗收測試,該產品就可進行發布。但是,在實際交付給用戶之後,開發人員是無法預測該軟體用戶在實際運用過程中是如何使用該程序的,所以從用戶的角度出發,測試人員還應進行Alpha測試或Beta測試這兩種情形的測試。Alpha測試是在軟體開發環境下由用戶進行的測試,或者模擬實際操作環境進而進行的測試。Alpha測試主要是對軟體產品的功能、局域化、界面、可使用性以及性能等等方面進行評價。而Beta測試是在實際環境中由多個用戶對其進行測試,並將在測試過程中發現的錯誤有效反饋給軟體開發者。所以在測試過程中用戶必須定期將所遇到的問題反饋給開發者。
軟體測試方法的分類有很多種,以測試過程中程序執行狀態為依據可分為靜態測試(Static Testing,ST)和動態測試(Dynamic Testing,DT);以具體實現演演算法細節和系統內部結構的相關情況為根據可分黑盒測試、白盒測試和灰盒測試三類;從程序執行的方式來分類,可分為人工測試(Manual Testing,MT)和自動化測試(Automatic Testing,AT)。
一、靜態測試和動態測試
(1)靜態測試。靜態測試的含義是被測程序不運行,只依靠分析或檢查源程序的語句、結構、過程等來檢查程序是否有錯誤。即通過對軟體的需求規格說明書、設計說明書以及源程序做結構分析和流程圖分析,從而來找出錯誤。例如不匹配的參數,未定義的變數等。
(2)動態測試。動態測試與靜態測試相對應,其是通過運行被測試程序,對得到的運行結果與預期的結果進行比較分析,同時分析運行效率和健壯性能等。這種方法可簡單分為三個步驟:構造測試實例、執行程序以及分析結果。
二、黑盒測試、白盒測試和灰盒測試
(1)黑盒測試。之所以被稱為黑盒測試是因為可以將被測程序看成是一個無法打開的黑盒,而工作人員在不考慮任何程序內部結構和特性的條件下,根據需求規格說明書設計測試實例,並檢查程序的功能是否能夠按照規範說明準確無誤的運行。其主要是對軟體界面和軟體功能進行測試。對於黑盒測試行為必須加以量化才能夠有效的保證軟體的質量。
(2)白盒測試。其與黑盒測試不同,它主要是藉助程序內部的邏輯和相關信息,通過檢測內部動作是否按照設計規格說明書的設定進行,檢查每一條通路能否正常工作。白盒測試是從程序結構方面出發對測試用例進行設計。其主要用於檢查各個邏輯結構是否合理,對應的模塊獨立路徑是否正常以及內部結構是否有效。常用的白盒測試法有控制流分析、數據流分析、路徑分析、程序變異等,其中邏輯覆蓋法是主要的測試方法。
(3)灰盒測試。灰盒測試則介於黑盒測試和白盒測試之間。灰盒測試除了重視輸出相對於出入的正確性,也看重其內部表現。但是它不可能像白盒測試那樣詳細和完整。它只是簡單的靠一些象徵性的現象或標誌來判斷其內部的運行情況,因此在內部結果出現錯誤,但輸出結果正確的情況下可以採取灰盒測試方法。因為在此情況下灰盒比白盒高效,比黑盒適用性廣的優勢就凸顯出來了。
三、手動測試和自動化測試
自動化測試,顧名思義就是軟體測試的自動化,即在預先設定的條件下運行被測程序,並分析運行結果。總的來說,這種測試方法就是將以人驅動的測試行為轉化為機器執行的一種過程。對於手動測試,其在設計了測試用例之後,需要測試人員根據設計的測試用例一步一步來執行測試得到實際結果,並將其與期望結果進行比對。
軟體測試的目的就是確保軟體的質量、確認軟體以正確的方式做了你所期望的事情,所以他的工作主要是發現軟體的錯誤、有效定義和實現軟體成分由低層到高層的組裝過程、驗證軟體是否滿足任務書和系統定義文檔所規定的技術要求、為軟體質量模型的建立提供依據。軟體的測試不僅是要確保軟體的質量,還要給開發人員提供信息,以方便其為風險評估做相應的準備,重要的是他要貫穿在整個軟體開發的過程中,保證整個軟體開發的過程是高質量的。
軟體測試時在軟體設計及程序編碼之後,在軟體運行之前進行最為合適。考慮到測試人員在軟體開發過程中的尋找Bug、避免軟體開發過程中的缺陷、關注用戶的需求等任務,所以作為軟體開發人員,軟體測試要嵌入在整個軟體開發的過程中,比如在軟體的設計和程序的編碼等階段都得嵌入軟體測試的部分,要時時檢查軟體的可行性,但是作為專業的軟體測試工作,還是在程序編碼之後,軟體運行之前最為合適。