軟件測試方法和技術,考試重點筆記(河北工程職業技術學院-軟件學院)
——參考書目《軟件測試方法和技術》朱少民(主編),清華大學出版社。
第一章、引論
為什么要進行軟件測試?
-
簡答:為了保證軟件質量。
-
大題:
- 軟件的某些缺陷只有在測試時才會發現;
- 提供對系統質量相關的信息和信息;
- 預防錯誤的發生;
什么是軟件測試?
-
在特定的條件下運行系統或構件,觀察或記錄結果,對系統 的某個方面做出評價;
-
分析某個軟件項以發現現存的和要求的條件之差別(即錯誤) 並評價此軟件項的特性;
軟件測試的定義?
標准觀點來看,可以定義為“驗證”和“有效性確認”活動夠成的整體,即軟件測試V&V。
- “驗證”是檢驗軟件是否已正確地實現了軟件需求規格說明書所定義的系統功能和特性。驗證過程提供證據表明軟件相關產品與所有生命周期活動的要求(如正確性、完整性、一致性、准確性等)一致。相當於以軟件產品設計規格說明書為標准進行軟件測試的活動。
- “有效性確認”是確認所開發的軟件是否滿足用戶真正需求的活動。一切從客戶出發,理解客戶的需求,並對軟件需求定義和設計存疑,以發現需求定義和產品設計中的問題。主要通過各種軟件評審活動來實現,保證讓客戶參加評審和測試活動。
軟件測試4個階段?(軟件測試級別有哪4個?)
單元測試、集成測試、系統測試、驗收測試。
- 單元測試 是對軟件組成單元進行測試。其目的是檢驗軟件基本組成單位的正確性。測試的對象是軟件設計的最小單位:模塊。又稱為模塊測試。
- 集成測試 也稱聯合測試(聯調)、組裝測試,將程序模塊采用適當的集成策略組裝起來,對系統的接口及集成后的功能進行正確性檢測的測試工作。集成主要目的是檢查軟件單位之間的接口是否正確。
- 將軟件系統看成是一個系統的測試。包括對功能、性能以及軟件所運行的軟硬件環境進行測試。時間大部分在系統測試執行階段,包括回歸測試和冒煙測試。
- 驗收測試 是部署軟件之前的最后一個測試操作。它是技術測試的最后一個階段,也稱為交付測試。驗收測試的目的是確保軟件准備就緒,按照項目合同、任務書、雙方約定的驗收依據文檔,向軟件購買者展示該軟件系統滿足原始需求。
第二章、軟件測試的基本概念
軟件缺陷的定義?
- 內部:軟件本身設計問題。
- 外部:不能滿足用戶的需求。
軟件缺陷的產生?
- 技術問題。
- 軟件本身。
- 團隊工作。
靜態測試和動態測試。
根據程序是否運行,測試可以分為靜態測試和動態測試。
靜態測試:
靜態測試包括對軟件產品的需求和設計規格說明書的評審、對程序代碼的審查以及靜態分析等。
動態測試:
動態測試是通過真正運行程序發現錯誤,通過觀察代碼運行過程,來獲取系統行為、變量實時結果、內存、堆棧、線程以及測試覆蓋度等方面的信息,來判斷系統是否存在問題,或者通過有效的測試用例,對應的輸入輸出關系來分析被測程序的運行情況,來發現缺陷。
靜態分析:
人工檢測:
不依靠計算機兒完全靠人工審查或評審軟件。注重:編碼風格、算法的檢查,也可以檢查安全性、國際化和容錯性等代碼問題。
計算機輔助靜態分析:
利用測試工具對被測程序進行特性分析,從程序中提取一些信息,以便檢查程序邏輯的各種缺陷和可疑的程序構造。
軟件(產品)評審。
軟件評審的形式有互為評審(同行評審)、走查(從頭到尾,陪同開發)、會議評審(開會)。
- 文檔評審。
- 技術評審。
- 管理評審。
- 流程評審。
管理評審和流程評審也作為軟件質量保證。
軟件測試是對以下內容評審。
- 需求評審。
- 設計評審。
- 代碼評審。
- 文檔評審。
白盒測試和黑盒測試。
白盒測試:
白盒測試,也稱結構化測試或邏輯驅動測試,也就是已知產品的內部工作過程,清楚最終生成軟件產品的計算機程序結構及其語句,按照程序內部的機構測試程序,檢查所有內部成分是否按照規定正常進行。
白盒測試方法:
- 語句覆蓋。
- 判定覆蓋。
- 條件覆蓋。
- 判定條件覆蓋。
- 條件組合覆蓋。
- 基本路徑覆蓋。
黑盒測試:
黑盒測試方法,也稱數據驅動測試方法,在測試時,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特征的情況下,測試人員針對軟件直接進行測試,檢查系統功能是否按照需求規格說明書的規定正常使用、是否能適當地接收輸入數據而輸出正確的結果等,檢查相應的文檔是否才用了正確的模板、是否滿足規范要求。
黑盒測試方法:
- 等價類划分法。
- 邊界值分析法。
- 判定表方法。
- 因果圖法。
- 正交試驗法。
- 功能圖法。
- 錯誤推測法。
黑盒測試的難點:如何構造一個有效的輸入。
單因素 1.等價類划分 2.邊界值划分
靜態{
多因素 1.因果分析法 2. 決策表 3. 正交試驗法
黑盒方法{
功能圖
動態{
有限狀態機
其他 錯誤推測法
有了黑盒測試為什么還要進行白盒測試?
黑盒測試只能觀察軟件的外部表現,即使軟件的輸入和輸出都是正確的,確並不能表示軟件是正確的。
程序有可能用錯誤的運算方式得出正確的結果,只有白盒測試才能發現真正的原因。
白盒測試能發現程序里面的隱患,像內存泄漏、誤差累計問題。在這方面黑盒測試存在嚴重的不足。
測試用例。
測試用例(Test Case)是為了特定的測試目的而設計的測試條件、測試數據及與之相關的測試規程的一個特定的使用用例或場景。測試用例也可以被稱為有效地發現軟件缺陷的最小測試執行單元。而測試腳本(Test Script)是測試工具執行的一組指令集合,是計算機能自動完成測試用例的執行,也是計算機程序的一種新式。腳本可以通錄制產生,也可以直接用腳本語言編寫腳本。
第三章、軟件測試方法
簡答:
什么是等價類划分法?
等價類划分是把程序的輸入域划分為若干部分,然后從每個部分中選取少數代表性數據作為測試用例。每一類的代表性數據在測試中的作用等價於這一類中的其他值,使用這一方法設計測試用例即為等價類划分法。
每一類的代表性數據在測試中的作用等價於這一類中的其他值,也就是說,如果某一類中的一個例子發現了錯誤,這一類等價類中的其他例子也能發現同樣的錯誤;反之,如果某一類中的一個例子沒有發現錯誤,則這一類中的其他例子也不會查出錯誤(除非等價類中的某些例子屬於另一等價類,因為幾個等價類可能相交的)。使用這一方法設計測試用例,首先必須在分析需求規格說明的基礎上划分等價類,列出等價類表。
6條確定等價類的原則:
- 在輸入條件規定了取值范圍或值的個數的情況下,可以確立一個有效等價類和兩個無效等價類。
- 在輸入條件規定了輸入值的集合或者規定了“必須如何”的條件情況下,可以確定一個有效等價類和一個無效等價類。
- 在輸入條件是一個布爾量的情況下,可以確定一個有效等價類和一個無效等價類。
- 在規定了輸入數據的一組值(假定n個),並且程序要對每一個輸入值分別處理的情況下,可確立n個有效等價類和一個無效等價類。
- 在規定了輸入數據必須遵守的規則的情況下,可確立一個有效等價類(符合規則)和若干個無效等價類(從不同角度違反規則)。
- 在確知已划分的等價類中,各元素在程序處理中的方式不同的情況下,則應再將該等價類進一步地划分為更小的等價類。
等價類划分步驟。
- 為每個等價類規定一個唯一的編號。
- 設計一個新的測試用例,使其盡可能多地覆蓋尚未覆蓋的有效等價類。重復這一步,最后使得所有有效等價類均被測試用例所覆蓋。
- 設計一個新的測試用例,使其只覆蓋一個無效等價類。重復這一步是所有無效等價類均被覆蓋。
環路復雜度計算。
軟件測試的目的。
確保軟件的質量。
-
正向:找軟件不存在錯誤。
-
反向:找軟件有錯誤。
以最少的人力、物力和時間找出軟件中潛在的各種錯誤和缺陷,通過修正各種錯誤和缺陷保障軟件質量,避免軟件發布后由於潛在的軟件錯誤和缺陷造成的隱患所帶來的商業風險。同時利用測試過程中得到的測試結果和測試信息,作為后續項目開發和測試過程改進的重要輸入,避免在將來的項目開發和測試中重復同樣的錯誤;采用更加高效的測試管理手段,提高軟件測試的效率和軟件產品的質量。
基本路徑法的步驟。
-
程序的控制流圖:描述程序控制流的一種圖示方法。
-
程序圈復雜度:McCabe復雜性度量。從程序的環路復雜性可導出程序基本路徑集合中的獨立路徑條數,這是確定程序中每個可執行語句至少執行一次所必須的測試用例數目的上界。
-
導出測試用例:根據圈復雜度和程序結構設計用例數據輸入和預期結果。
-
准備測試用例:確保基本路徑集中的每一條路徑的執行。
什么是非增量測試與增量測試。
增量式集成
增量式集成測試是逐步集成和逐步測試的方法,把可能出現的錯誤分散暴露出來,便於找出問題和修改。
優點:更早地發現模塊間的接口錯誤,有利於錯誤定位;
缺點:需要編寫驅動模塊和樁模塊;
非增量式集成
在對每個單元進行充分測試后,將所有單元全部集成起來,一次性地進行集成測試。
優點:減少測試工作量。
缺點:難以定位和解決問題,可能會發現很多錯誤。
為什么要進行回歸測試。
驗證缺陷得到了正確的修復,同時對系統的變更沒有影響以前的功能。
回歸測試的定義。
- 回歸測試是指重復以前的全部或部分的相同功能測試。
- 新加入測試的模塊,可能對其他模塊產生副作用,因此要進行某些程度的回歸測試。
- 回歸測試的重心,是以關鍵性模塊為核心。
第四章、軟件測試流程和規范
X、V、W、H、模型
X模型
X模型是對V模型的改進, X模型提出針對單獨的程序片段進行相互分離的編碼和測試. 此后通過頻繁的交接, 通過集成, 最終合成為可執行的程序。
V模型
由用戶需求到驗收測試。
W模型
W模型也可以看做是 "雙V模型", 有兩個 V, 一個是研發V, 一個是測試V, 將研發和測試的工作並行了起來, 使研發和測試的工作可以同時進行, 因此解決了V模型的三個缺點。
H模型
H模型中, 軟件測試過程活動完全獨立, 貫穿於整個產品的周期, 與其他流程並發地進行, 某個測試點准備就緒時, 就可以從測試准備階段進行到測試執行階段. 軟件測試可以盡早的進行, 並且可以根據被測物的不同而分層次進行。
軟件測試學派
- 分析學派:分析學派認為軟件測試是嚴格的技術性的,這一派在學術界有很多支持者。
- 標准學派:標准學派認為軟件測試是用於衡量進度的一種方式,強調成本度量和可重復的標准。
- 質量學派:質量學派強調過程,軟件測試人員像警察一樣審判開發人員,又像守門員一樣保證質量。
- 上下文驅動學派:上下文驅動學派強調軟件測試人的作用,尋找利益相關的BUG。
- 敏捷學派:敏捷漣派使用軟件測試來驗證開發是否完成,強調自動化。
第五章、單元測試與集成測試
為何要進行單元測試。
軟件測試的目的之一就是盡可能早地發現軟件中存在的錯誤,從而降低軟件質量成本,測試越早進行越好,單元測試就顯得更重要,也是系統的功能測試的基礎。
靜態測試的標准和規范
- 可靠性。
- 可讀性和維護性。
- 移植性。
代碼評審
- 代碼走查。
- 正式會議審查。
- 走查與會議審查的對比。
- 缺陷檢查表。
JUnit介紹
JUnit 是一個編寫可重復測試的簡單框架。它是單元測試框架的 xUnit 架構的一個實例。
測試步驟:
- 建立一個被JUnit測試的類。
- 建立其對應的JUnit Test 類。
- 針對自動生成的代碼,進行補充修改,使其滿足對特定功能的測試。
- 執行測試。
集成測試定義:
集成測試,也叫組裝測試或聯合測試。
在單元測試的基礎上,將所有模塊按照設計要求(如根據結構圖)組裝成為子系統或系統,進行集成測試。
第六章、系統測試
性能測試
目的:為了驗證系統是否達到用戶提出的性能指標,同時發現系統中存在的性能瓶頸,起到優化系統的目的。
基本概念:通常驗證軟件的性能在正常環境和系統條件下重復使用是否還能滿足性能指標。或者執行同樣任務時新版本不比舊版本慢。一般還檢查系統記憶容量在運行程序時會不會流失(memory leak)。比如,驗證程序保存一個巨大的文件新版本不比舊版本慢。
分為客戶端和服務端。
第七章、驗收測試
驗收測試是部署軟件之前的最后一個測試操作。在軟件產品完成了單元測試、集成測試和系統測試之后,產品發布之前所進行的軟件測試活動。它是技術測試的最后一個階段,也稱為交付測試。驗收測試的目的是確保軟件准備就緒,並且可以讓最終用戶將其用於執行軟件的既定功能和任務。
實施驗收測試的常用策略有三種,它們分別是:
· 正式驗收
· 非正式驗收或 Alpha 測試
· Beta 測試
您選擇的策略通常建立在合同需求、組織和公司標准以及應用領域的基礎上。
第八章、軟件本地化測試
翻譯驗證
檢查軟件內文字標點,是否准確以及有無不符對應國家的法律以及文化習慣。