本書面向軟件測試的實際應(yīng)用,系統(tǒng)闡述了軟件測試所涉及的基礎(chǔ)理論、常用技術(shù)、過程管理和質(zhì)量控制; 重點講解軟件測試中的白盒測試技術(shù)、黑盒測試技術(shù)以及自動化測試技術(shù); 全面剖析了軟件測試從單元測試階段、集成測試階段、系統(tǒng)測試階段以及驗收測試階段等各個不同階段比較成熟的技術(shù)及方法。
本書內(nèi)容豐富,深入淺出,實用性強(qiáng),可作為大中專院校計算機(jī)、軟件工程、測試等相關(guān)專業(yè)師生自學(xué)的教材,也可作為有關(guān)軟件測試的培訓(xùn)教材,對于從事軟件測試工作的相關(guān)技術(shù)人員也有一定的參考價值。
《軟件測試技術(shù)及實戰(zhàn)匯編》采用“項目驅(qū)動”的教學(xué)模式,通過完整的項日案例,系統(tǒng)地介紹軟件測試的原理、方法和技術(shù)。全書圍繞軟件測試的整體流程,詳細(xì)論述了軟件測試基本原理、軟件測試計劃與策略、黑盒測試技術(shù)、白盒測試技術(shù)、單元測試技術(shù)、集成測試技術(shù)、系統(tǒng)測試技術(shù)、驗收測試技術(shù)和軟件測試管理等內(nèi)容。
本書注重理論與實踐相結(jié)合,內(nèi)容詳盡,提供了大量實例,突出應(yīng)用能力的培養(yǎng),將一個實際項目的知識點分解在各章作為案例講解,是一本實用性突出的教材。本書可作為普通高等院校計算機(jī)專業(yè)本、專科生軟件測試課程的教材,也可供軟件測試人員參考使用。
前言
隨著軟件業(yè)的發(fā)展,測試的需求也越來越大,加上測試過程越來越智能化,軟件測試由原來的人工測試向自動化測試方向發(fā)展,不僅可以大大地提高測試效率,還能使測試人員從反復(fù)枯燥的測試工作中解放出來,使得測試人員可以把精力放在系統(tǒng)測試的大局上。相信在未來的軟件業(yè),人工測試將逐漸消失,取而代之的是自動化測試,測試的智能化和測試的效率也將越來越高。軟件產(chǎn)品的質(zhì)量控制與質(zhì)量管理正逐漸成為軟件企業(yè)生存與發(fā)展的核心。
軟件測試課程涉及軟件測試的理論、方法、技術(shù)和工具,是一門實踐性和技巧性很強(qiáng)的課程。本書從理論、方法、技術(shù)和工具方面進(jìn)行了詳盡的闡述。由基礎(chǔ)理論到質(zhì)量控制,到文檔、工具的使用和案例分析,循序漸進(jìn)地介紹軟件測試涉及的各個方面的知識。從基本理論出發(fā),逐步講解軟件測試的各類技術(shù),隨后從測試過程的角度介紹測試各個環(huán)節(jié)涉及的方法和技術(shù),最后介紹有關(guān)軟件質(zhì)量及質(zhì)量保證的知識。
全書共18章,兩個附錄,分4篇。
第一篇軟件測試基礎(chǔ)。共7章,完整地介紹了軟件測試基礎(chǔ)知識概述、軟件測試工作概述、黑盒測試技術(shù)、白盒測試技術(shù)、單元測試和集成測試、系統(tǒng)測試及驗收測試。
第二篇軟件測試質(zhì)量保證。共4章,介紹了軟件過程能力評估和軟件質(zhì)量保證及軟件缺陷和缺陷管理,軟件配置管理等。
第三篇軟件測試工具。共3章,介紹了主流的軟件測試工具,并進(jìn)行對比。
第四篇軟件測試案例。共4章,介紹了4個經(jīng)典案例,完整地介紹了測試的整個過程測試用例和測試方法的設(shè)計。
附錄A軟件測試文檔。介紹測試文檔的寫作、軟件測試所需的常用模板。
附錄B軟件測試習(xí)題及答案。
本書可作為高等院校計算機(jī)軟件及測試相關(guān)專業(yè)軟件測試課程教材,也可以作為軟件測試人員和軟件開發(fā)人員的參考書。
由于編寫的時間倉促,教材中難免有漏洞和疏忽,敬請廣大讀者指正。
編者
2017年5月
目錄
第1篇軟件測試基礎(chǔ)
第1章軟件測試概述
1.1軟件測試的發(fā)展
1.2軟件可靠性
1.3軟件缺陷
1.4軟件測試的定義及原則
1.5軟件測試與軟件開發(fā)
1.5.1需求分析階段
1.5.2設(shè)計階段
1.5.3實現(xiàn)階段
1.5.4測試階段
1.5.5運(yùn)行和維護(hù)階段
課后習(xí)題
第2章軟件測試過程與策略
2.1軟件測試策略概述
2.2軟件測試分類
2.3靜態(tài)測試與動態(tài)測試
2.3.1靜態(tài)測試
2.3.2動態(tài)測試
2.4軟件測試過程模型
2.4.1V模型
2.4.2W模型
2.4.3H模型
2.4.4X模型
2.5測試用例的定義和特征
2.5.1測試用例
2.5.2測試用例的特征
2.5.3測試用例設(shè)計原則
2.5.4測試用例的設(shè)計過程
2.5.5測試用例模板
課后習(xí)題
第3章黑盒測試
3.1等價類劃分法
3.1.1弱一般等價類測試
3.1.2強(qiáng)一般等價類測試
3.1.3弱健壯等價類測試
3.1.4強(qiáng)健壯等價類測試
3.1.5單元實踐
3.2邊界值測試
3.2.1邊界值分析
3.2.2健壯性測試
3.2.3最壞情況測試
3.2.4單元實踐
3.2.5隨機(jī)測試
3.2.6邊界值測試的指導(dǎo)方針
3.3決策表法
3.3.1決策表
3.3.2實例
3.3.3指導(dǎo)方針
3.4因果圖法
3.5場景法
3.6正交實驗法
課后習(xí)題
第4章白盒測試方法
4.1邏輯覆蓋法
4.1.1語句覆蓋法
4.1.2判定覆蓋法
4.1.3條件覆蓋法
4.1.4條件/判定覆蓋法
4.1.5組合覆蓋法
4.1.6路徑覆蓋法
4.1.7實例分析
4.2基本路徑法
4.2.1控制流圖
4.2.2環(huán)形復(fù)雜度
4.2.3獨立路徑
4.2.4實例
4.3循環(huán)測試
4.4Z路徑覆蓋
4.5程序插樁技術(shù)
4.6域測試
4.7符號測試
4.8程序變異測試法
4.9靜態(tài)測試法
4.10最少測試用例數(shù)計算
課后習(xí)題
第5章單元測試和集成測試
5.1單元測試
5.1.1單元測試的定義
5.1.2單元測試的重要性
5.2單元測試的內(nèi)容與方法
5.2.1單元測試的內(nèi)容
5.2.2單元測試的方法
5.3單元測試的過程
5.3.1計劃單元測試
5.3.2設(shè)計單元測試
5.3.3執(zhí)行單元測試
5.3.4評估單元測試
5.3.5實例分析
5.4集成測試
5.4.1集成測試概述
5.4.2集成策略
5.4.3面向?qū)ο蟮募蓽y試
5.4.4集成測試流程
5.4.5實例分析
課后習(xí)題
第6章系統(tǒng)測試
6.1系統(tǒng)測試概述
6.1.1系統(tǒng)測試基礎(chǔ)
6.1.2系統(tǒng)測試策略
6.2功能測試
6.2.1基本概念
6.2.2分析方法
6.2.3功能測試實例
6.3性能測試
6.3.1性能測試基礎(chǔ)
6.3.2性能測試實例
6.4本地化測試
6.4.1本地化測試基礎(chǔ)
6.4.2關(guān)于Java用戶界面本地化實例
6.4.3本地化測試的錯誤分類
6.5可用性測試
6.5.1可用性測試基礎(chǔ)
6.5.2可用性測試方法
6.5.3傳統(tǒng)ATM可用性測試報告
6.6配置測試
6.6.1配置測試基礎(chǔ)
6.6.23D游戲的配置測試
6.7壓力測試
課后習(xí)題
第7章驗收測試
7.1驗收測試概述
7.1.1基本概念
7.1.2驗收測試的總體思路
7.1.3α、β測試簡介
7.2驗收測試的常用策略
7.2.1正式驗收測試
7.2.2非正式驗收測試
7.2.3β測試
7.3驗收測試過程
7.4用戶驗收測試實施
7.5驗收測試實例
課后習(xí)題
第2篇軟件質(zhì)量保證
第8章軟件過程能力評估
8.1軟件能力成熟度模型
8.1.1CMM/CMMI的發(fā)展
8.1.2CMM/CMMI應(yīng)用領(lǐng)域
8.1.3CMM/CMMI基本框架
8.2軟件測試成熟度模型
8.3軟件測試過程改進(jìn)
8.3.1軟件測試過程改進(jìn)的概念
8.3.2組織的規(guī)劃內(nèi)容
8.3.3主要策略
8.3.4軟件測試過程改進(jìn)的具體方法
課后習(xí)題
第9章軟件缺陷及缺陷管理
9.1軟件缺陷
9.1.1軟件缺陷的定義
9.1.2軟件測試中的常用術(shù)語
9.1.3軟件缺陷產(chǎn)生的原因
9.1.4軟件缺陷的屬性
9.1.5軟件缺陷的類型
9.1.6缺陷嚴(yán)重程度
9.1.7軟件缺陷修復(fù)的代價
9.1.8缺陷優(yōu)先級
9.1.9軟件缺陷的生命周期
9.1.10報告軟件缺陷
9.1.11分離和再現(xiàn)軟件缺陷
9.2測試總結(jié)報告
9.3軟件缺陷跟蹤管理
9.4缺陷管理工具
9.4.1常見缺陷管理工具
9.4.2Bugzilla缺陷管理工具
課后習(xí)題
第10章軟件質(zhì)量保證
10.1軟件質(zhì)量
10.1.1軟件質(zhì)量的定義
10.1.2影響軟件質(zhì)量的因素
10.1.3軟件質(zhì)量評價應(yīng)遵守的原則
10.1.4軟件質(zhì)量模型
10.2軟件質(zhì)量保證
10.2.1軟件質(zhì)量保證策略
10.2.2軟件質(zhì)量保證活動
課后習(xí)題
第11章配置管理
11.1配置管理的基本概念
11.2配置管理活動
11.2.1識別配置項
11.2.2基于配置項版本控制
11.2.3變更控制
11.2.4發(fā)布配置狀態(tài)報告
11.2.5配置審計
11.2.6發(fā)布管理
11.3項目經(jīng)理的配置管理流程
11.3.1配備人員
11.3.2配置經(jīng)理
11.4軟件配置管理工具
11.4.1CVS
11.4.2VSS
11.4.3SVN
11.4.4ClearCase
11.5SVN配置管理工具的使用
11.5.1服務(wù)器SVN(Subversion)的安裝和配置
11.5.2基本操作
課后習(xí)題
第3篇軟件測試工具
第12章自動化測試工具
12.1自動化測試
12.2自動化測試工具
12.3自動化測試工具詳細(xì)介紹
12.3.1LoadRunner
12.3.2QTP
12.3.3WinRunnerMercury
12.3.4Rational Robot
12.3.5AdventNet QEngineAdventNet QEngine
12.3.6SilkTest
12.3.7QARun
12.3.8TestPartner
課后習(xí)題
第13章測試框架
13.1JUnit單元測試框架
13.2NUnit單元測試框架
課后習(xí)題
第14章其他測試工具
14.1一般測試工具
14.2主要廠商及產(chǎn)品介紹
14.2.1HP
14.2.2IBM
14.2.3Micro Focus
14.3流行的開源測試工具
14.3.1單元測試工具
14.3.2功能測試工具
14.3.3性能測試工具
14.3.4測試管理工具
課后習(xí)題
第4篇軟件測試案例
第15章成人教務(wù)管理系統(tǒng)
15.1測試計劃
15.2測試項目說明
15.3評價
第16章圖書管理系統(tǒng)
16.1軟件測試計劃
16.1.1引言
16.1.2任務(wù)概述
16.1.3計劃
16.1.4測試項目說明
16.2軟件測試分析報告
16.2.1測試結(jié)果
16.2.2文檔檢查
16.2.3功能性測試定性評價
16.2.4非功能性評價
第17章人事檔案管理系統(tǒng)
17.1實驗環(huán)境
17.2實驗任務(wù)
17.3實驗內(nèi)容與步驟
第18章嵌入式軟件系統(tǒng)——俄羅斯方塊
18.1項目簡介
18.2單元測試設(shè)計
18.2.1靜態(tài)測試: 代碼走查
18.2.2動態(tài)測試
18.2.3驅(qū)動模塊
18.2.4單元測試的Bug列表
附錄A軟件測試文檔
A.1概述
A.2模板
A.2.1測試大綱模板
A.2.2軟件測試計劃模板
A.2.3測試任務(wù)說明書模板
A.2.4測試需求說明書模板
A.2.5單元測試模板
A.2.6代碼檢查模板
A.2.7程序錯誤報告模板
A.2.8程序設(shè)計模板
A.2.9測試用例模板
A.2.10軟件測評模板
A.2.11功能測試模板
A.2.12性能測試模板
A.2.13可靠性測試模板
A.2.14集成測試模板
A.2.15系統(tǒng)測試模板
A.2.16驗收測試模板
A.2.17測試分析報告模板
A.2.18測試總結(jié)模板
A.2.19Web測試模板
A.2.20軟件安全性測試模板
附錄B軟件測試習(xí)題及答案
第一部分軟件測試習(xí)題
第二部分習(xí)題答案
參考文獻(xiàn)
第5章單元測試和集成測試
1. 概述
通過本章的學(xué)習(xí),讀者能夠掌握單元測試和集成測試的定義和內(nèi)容,能夠應(yīng)用所學(xué)的測試用例設(shè)計方法進(jìn)行單元測試和集成測試設(shè)計及執(zhí)行,能夠運(yùn)用適合的方法進(jìn)行單元測試和集成測試。
2. 課程的重點和難點
1) 重點
(1) 單元測試的內(nèi)容;
(2) 單元測試的流程;
(3) 單元測試的方法;
(4) 集成測試的內(nèi)容;
(5) 集成測試的流程;
(6) 集成測試的方法。
2) 難點:
(1) 單元測試方法的應(yīng)用;
(2) 集成測試方法的應(yīng)用。
5.1單元測試
5.1.1單元測試的定義
所謂“單元”,是指:
(1) 具有明確的功能;
(2) 具有明確的規(guī)格定義;
(3) 具有與其他部分明確的接口定義;
(4) 能夠與程序的其他部分清晰地進(jìn)行分區(qū)。
關(guān)于單元測試的幾個關(guān)鍵問題:
(1) 單元測試的定義。
單元測試(unit testing),是指對軟件中的最小可測試單元進(jìn)行檢查和驗證。對于單元測試中單元的含義,一般來說,要根據(jù)實際情況去判定其具體含義,如C語言中單元指一個函數(shù),Java里單元指一個類,圖形化的軟件中可以指一個窗口或一個菜單等。總的來說,單元就是人為規(guī)定的最小的被測功能模塊。單元測試是在軟件開發(fā)過程中要進(jìn)行的最低級別的測試活動,軟件的獨立單元將在與程序的其他部分相隔離的情況下進(jìn)行測試。
(2) 單元測試的對象。
一般認(rèn)為,在結(jié)構(gòu)化程序中,單元測試所說的單元是指函數(shù); 在面向?qū)ο缶幊讨校瑔卧獪y試的單元一般是指類。從實踐來看,以類作為測試單位,復(fù)雜度高,可操作性較差,仍然主張以類中的方法作為單元測試的測試單位,但可以用一個測試類來組織某個類的所有測試函數(shù)。單元測試不應(yīng)過分強(qiáng)調(diào)面向?qū)ο螅驗榫植看a依然是結(jié)構(gòu)化的。單元測試的工作量較大,簡單實用高效才是硬道理。