1.測試方法
軟件測試方法的分類有很多種,以測試過程中程序執行狀態為依據可分為靜態測試 (Static
Testing,ST) 和動態測試 (Dynamic Testing,DT); 以具體實現算法細節和系統內部結構的相
關情況為根據可分黑盒測試、白盒測試和灰盒測試3類;從程序執行的方式來分類,可分為人
工測試 (Manual Testing,MT) 和自動化測試 (Automatic Testing,AT)。
(1)靜態測試。靜態測試是被測程序不運行,只依靠分析或檢查源程序的語句、結構、過
程等來檢查程序是否有錯誤。即通過對軟件的需求規格說明書、設計說明書以及源程序做結構
分析和流程圖分析,從而來找出錯誤。例如不匹配的參數,未定義的變量等。
(2)動態測試。動態測試與靜態測試相對應,是通過運行被測試程序,對得到的運行結果
與預期的結果進行比較分析,同時分析運行效率和健壯性能等。這種方法可簡單分為3個步驟:
構造測試實例、執行程序以及分析結果。
(3)黑盒測試。黑盒測試將被測程序看成是一個黑盒,工作人員在不考慮任何程序內部結
構和特性的條件下,根據需求規格說明書設計測試實例,并檢查程序的功能是否能夠按照規范
說明準確無誤的運行。其主要是對軟件界面和軟件功能進行測試。對于黑盒測試行為必須加以
量化才能夠有效的保證軟件的質量。
(4)白盒測試。白盒測試主要是借助程序內部的邏輯和相關信息,通過檢測內部動作是否
按照設計規格說明書的設定進行,檢查每一條通路能否正常工作。白盒測試是從程序結構方面
出發對測試用例進行設計。主要用于檢查各個邏輯結構是否合理,對應的模塊獨立路徑是否正
常以及內部結構是否有效。常用的白盒測試法有控制流分析、數據流分析、路徑分析、程序變
異等。根據測試用例的覆蓋程度,分為語句覆蓋、判定覆蓋、分支覆蓋和路徑覆蓋等。
(5)灰盒測試。灰盒測試介于黑盒與白盒測試之間。灰盒測試除了重視輸出相對于輸入的
正確性,也看重其內部的程序邏輯。但是,它不可能像白盒測試那樣詳細和完整。它只是簡單
地靠一些象征性的現象或標志來判斷其內部的運行情況,因此在內部結果出現錯誤,但輸出結
果正確的情況下可以采取灰盒測試方法。因為在此情況下灰盒比白盒高效,比黑盒適用性廣的
優勢就凸顯出來了。
(6)自動化測試。自動化測試就是軟件測試的自動化,即在預先設定的條件下自動運行被
測程序,并分析運行結果。總的來說,這種測試方法就是將以人驅動的測試行為轉化為機器執
行的一種過程。
2.測試階段
從階段上劃分,軟件測試可以分為單元測試、集成測試和系統測試,系統測試中又包含了
多種不同的測試種類,例如功能測試、性能測試、驗收測試、壓力測試等。
1.單元測試
主要是對該軟件的模塊進行測試,通過測試以發現該模塊的功能不符合/不滿足期望的情
況和編碼錯誤。
由于模塊的規模不大,功能單一,結構較簡單,且測試人員可通過閱讀源程序清楚知道其
邏輯結構,首先應通過靜態測試方法,比如靜態分析、代碼審查等,對該模塊的源程序進行分
析,按照模塊的程序設計的控制流程圖,以滿足軟件覆蓋率要求的邏輯測試要求。另外,也可
采用黑盒測試方法提出一組基本的測試用例,再用白盒測試方法進行驗證。若用黑盒測試方法
所產生的測試用例滿足不了軟件的覆蓋要求,可采用白盒法增補出新的測試用例,以滿足所需
的覆蓋標準。其所需的覆蓋標準應視模塊的實際具體情況而定。對一些質量要求和可靠性要求
較高的模塊,一般要滿足所需條件的組合覆蓋或者路徑覆蓋標準。
2.集成測試
集成測試通常要對已經嚴格按照程序設計要求和標準組裝起來的模塊同時進行測試,明確
該程序結構組裝的正確性,發現和接口有關的問題。在這一階段,一般采用白盒測試和黑盒測
試結合的方法進行測試,驗證這一階段設計的合理性以及需求功能的實現性。
3.系統測試
一般情況下,系統測試采用黑盒測試,以此來檢查該系統是否符合軟件需求。本階段的主
要測試內容包括功能測試、性能測試、健壯性測試、安裝或反安裝測試、用戶界面測試、壓力
測試、可靠性及安全性測試等。為了有效保證這一階段測試的客觀性,必須由獨立的測試小組
來進行相關的系統測試。另外,系統測試過程較為復雜,由于在系統測試階段不斷變更需求造
成功能的刪除或增加,從而使程序不斷出現相應的更改,而程序在更改后可能會出現新的問題,
或者原本沒有問題的功能由于更改導致出現問題。所以,測試人員必須進行多輪回歸測試。系
統測試的結束標志是測試工作已滿足測試目標所規定的需求覆蓋率,并且測試所發現的缺陷都
第5章 軟件工程基礎知識 207
已全部歸零。
4.性能測試
性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項
性能指標進行測試。負載測試和壓力測試都屬于性能測試,兩者可以結合進行。通過負載測試,
確定在各種工作負載下系統的性能,目標是測試當負載逐漸增加時,系統各項性能指標的變化
情況。壓力測試是通過確定一個系統的瓶頸或者不能接受的性能點,來獲得系統能提供的最大
服務級別的測試。
5.驗收測試
驗收測試是最后一個階段的測試,是軟件產品投入正式交付前的測試工作。和系統測試相
比,驗收測試是要滿足用戶需求或者與用戶簽訂的合同(包括技術協議、技術協調單以及各個
階段用戶參與的評審意見等)的各項要求,此外系統測試是軟件開發過程中一項工作,而驗收
測試是由用戶對要交付軟件開展的一種測試工作。驗收測試的主要目標是為用戶展示所開發出
來的軟件符合預定的要求和有關標準,并驗證軟件實際工作的有效性和可靠性,確保用戶能用
該軟件順利完成既定的任務和功能。
通過了驗收測試,該產品就可進行發布。但是,在實際交付給用戶之后,開發人員是無法
預測該軟件用戶在實際運用過程中是如何使用該程序的,所以從用戶的角度出發,測試人員還
應進行Alpha測試或Beta測試。 Alpha 測試是在軟件開發環境下由用戶進行的測試,或者模擬
實際操作環境進而進行的測試。 Alpha 測試主要是對軟件產品的功能、局域化、界面、可使用性
以及性能等等方面進行評價。而Beta測試是在實際環境中由多個用戶對其進行測試,并將在測
試過程中發現的錯誤有效反饋給軟件開發者。
6.其他測試
除了上述各種常規的測試種類之外,近年來由于Web應用和 App 應用的大規模興起,也出
現了一些新型的測試種類,例如 A B 測試、 Web測試中的鏈接測試、表單測試等。
(1)AB測試是為Web或 App界面或流程制作兩個 (A/B) 或多個 (A/B/n) 版本,在同一
時間維度,分別讓組成成分相同(相似)的訪客群組(目標人群)隨機的訪問這些版本,收集
各群組的用戶體驗數據和業務數據,最后分析、評估出最好版本,正式采用。
(2)Web測試是軟件測試的一部分,是針對Web 應用的一類測試。由于 Web應用與用戶直
接相關,又通常需要承受長時間的大量操作,因此Web 項目的功能和性能都必須經過可靠的驗
證。通過測試可以盡可能地多發現瀏覽器端和服務器端程序中的錯誤并及時加以修正,以保證
應用的質量。由于Web具有分布、異構、并發和平臺無關的特性,因而它的測試要比普通程序
復雜得多,包含的測試種類也非常多。
(3)鏈接測試。鏈接是Web應用系統的一個主要特征,它是在頁面之間切換和指導用戶去
一些未知地址頁面的主要手段。鏈接測試可分為3個方面。首先,測試所有鏈接是否按指示的
那樣確實鏈接到了該鏈接的頁面;其次,測試所鏈接的頁面是否存在;最后,保證 Web應用系
統上沒有孤立的頁面。
(4)表單測試。當用戶通過表單提交信息的時候,都希望表單能正常工作。如果使用表單
來進行在線注冊,要確保提交按鈕能正常工作,當注冊完成后應返回注冊成功的消息。如果使
用表單收集配送信息,應確保程序能夠正確處理這些數據,最后能讓用戶收到信息。要測試這
些程序,需要驗證服務器是否能正確保存這些數據,而且后臺運行的程序能否正確解釋和使用
這些信息。當用戶使用表單進行用戶注冊、登錄、信息提交等操作時,必須測試提交操作的完
整性,從而校驗提交給服務器的信息的正確性。如果使用默認值,還要檢驗默認值的正確性。
如果表單只能接受指定的某些值,則也要進行測試。
教程也沒說動態測試與白盒測試的關系.
(AI)
動態測試和白盒測試是軟件測試中常用的兩種測試方法,它們之間有一定的關系,但又有著各自獨特的特點。
動態測試是指運行軟件程序并觀察其在不同輸入下的行為,以驗證其正確性和健壯性的測試方法。它主要關注軟件程序的功能是否符合預期,以及是否存在各種錯誤和缺陷。動態測試通常通過黑盒測試和灰盒測試來進行,即只關注軟件的接口和功能,而不考慮軟件的內部實現。
白盒測試是指基于軟件程序的內部結構和代碼來設計測試用例并進行測試的方法。它主要關注軟件程序的內部邏輯是否正確,以及代碼是否符合規范和設計要求。白盒測試通常通過代碼覆蓋率和路徑覆蓋率等指標來評估測試的完整性和質量。
動態測試和白盒測試之間的關系是相互補充的。動態測試主要驗證軟件程序的功能是否正確,而白盒測試主要驗證軟件程序的內部邏輯是否正確。通過結合動態測試和白盒測試,可以全面地檢查軟件程序的功能和代碼質量,提高軟件的質量和可靠性。
總的來說,動態測試和白盒測試是軟件測試中不可或缺的兩種測試方法,它們可以相互結合,提高軟件測試的效果和效率