現(xiàn)在,國內(nèi)許多高校的計算機(jī)科學(xué)與技術(shù)、軟件工程及其相關(guān)專業(yè)紛紛開設(shè)軟件質(zhì)量保證和軟件測試相關(guān)課程,以培養(yǎng)更多的軟件人才。為了適應(yīng)當(dāng)前教學(xué)的需要,編者查閱了大量國內(nèi)外有關(guān)軟件質(zhì)量和測試方面的著作和文獻(xiàn),并結(jié)合自己多年的從業(yè)和教學(xué)經(jīng)驗編寫了本書。本書的特點是技術(shù)介紹全面,實踐和理論并重,實例多。
本書著重介紹軟件質(zhì)量和測試及管理技術(shù)理論中*重要、*精華的部分,注重知識點的融會貫通;而不是面面俱到,沒有重點和特色。本書中既有整體框架,又有重點理論和技術(shù)。
全書分兩篇,共12章。*篇軟件質(zhì)量包括第1~5章: 第1章軟件質(zhì)量概述,第2章軟件質(zhì)量度量和配置管理,第3章軟件質(zhì)量標(biāo)準(zhǔn),第4章軟件全面質(zhì)量管理,第5章軟件評審;第二篇軟件測試包括第6~12章:第6章軟件測試基礎(chǔ),第7章白盒測試,第8章黑盒測試,第9章集成測試,第10章系統(tǒng)測試,第11章軟件測試自動化,第12章軟件測試管理。
本書可以作為高校計算機(jī)科學(xué)與技術(shù)專業(yè)、軟件工程專業(yè)及其相關(guān)專業(yè)本科生或研究生的教材,也可以作為軟件開發(fā)人員、軟件質(zhì)量保證人員和軟件測試人員的參考書,還適合廣大計算機(jī)用戶閱讀。本書封面貼有清華大學(xué)出版社防偽標(biāo)簽,無標(biāo)簽者不得銷售。
本書重點介紹軟件質(zhì)量和軟件測試技術(shù)中*精華內(nèi)容,注重知識點的融會貫通。本書適應(yīng)教學(xué)需求,同時兼顧軟件質(zhì)量保證和軟件測試技術(shù)。本書可以作為高校計算機(jī)科學(xué)與技術(shù)專業(yè)、軟件工程專業(yè)的教學(xué)用書,也可以作為軟件開發(fā)和軟件測試人員的參考用書。
前言
隨著信息技術(shù)的發(fā)展,軟件已經(jīng)滲透到人們生活的各個領(lǐng)域,成為人們生活中不可缺少的一部分。伴隨軟件的廣泛使用,人們對軟件質(zhì)量的要求越來越高;同時由于軟件系統(tǒng)變得越來越復(fù)雜,如何提高軟件質(zhì)量是廣大計算機(jī)技術(shù)人員所關(guān)注的,這使軟件開發(fā)人員和軟件測試人員面臨著巨大挑戰(zhàn)。
軟件質(zhì)量和測試行業(yè)的理論、技術(shù)、管理和工具等都在不斷更新和發(fā)展。與此同時,軟件質(zhì)量管理和軟件測試方面的書籍也涌現(xiàn)出來,但將二者很好的結(jié)合的書籍卻十分有限。本書是供此專業(yè)領(lǐng)域的學(xué)生以及軟件質(zhì)量管理人員和軟件測試人員學(xué)習(xí)的一本很好的專業(yè)用書。本書力爭做到二者兼顧: 一是兼顧了相關(guān)技術(shù)和理論知識的介紹;二是兼顧了實踐的培養(yǎng)和自動化工具的使用。另外,本書對軟件開發(fā)各個階段的軟件質(zhì)量保證活動的理論、方法和應(yīng)用等進(jìn)行了詳細(xì)的闡述,同時對軟件測試的方法、測試工具和軟件測試的全過程等內(nèi)容進(jìn)行了全面的介紹。
本書分兩篇,第一篇軟件質(zhì)量部分的主要內(nèi)容如下。
第1章軟件質(zhì)量概述,首先介紹了軟件和軟件工程,接著重點闡述了軟件質(zhì)量的含義以及軟件質(zhì)量保證和軟件質(zhì)量模型,最后介紹了軟件缺陷的含義、產(chǎn)生的原因,軟件缺陷的嚴(yán)重性、優(yōu)先級、構(gòu)成、預(yù)防和修復(fù)等。
第2章軟件質(zhì)量度量和配置管理,分別講述了軟件質(zhì)量度量和軟件配置管理的含義、內(nèi)容和常見問題。
第3章軟件質(zhì)量標(biāo)準(zhǔn),首先概述了軟件質(zhì)量標(biāo)準(zhǔn),其次詳細(xì)講述了CMM和CMMI的含義、基本內(nèi)容和二者的區(qū)別等內(nèi)容,然后介紹了ISO 9000軟件質(zhì)量標(biāo)準(zhǔn),最后介紹了其他質(zhì)量標(biāo)準(zhǔn)。
第4章軟件全面質(zhì)量管理,講述了軟件全面質(zhì)量管理的含義、步驟和評審、軟件全面質(zhì)量管理中的團(tuán)隊和質(zhì)量控制。
第5章軟件評審,介紹了軟件評審的含義和主要內(nèi)容,以及軟件評審的幾個階段:需求評審、概要設(shè)計評審、詳細(xì)設(shè)計評審、測試評審等內(nèi)容,然后介紹了如何避免進(jìn)入評審誤區(qū),最后講述了軟件評審中的角色和職能。
第二篇軟件測試部分的主要內(nèi)容如下。
第6章軟件測試基礎(chǔ),從軟件開發(fā)的過程入手,通過介紹軟件缺陷造成的重大損失和災(zāi)難,闡述了軟件測試的定義、軟件測試的過程,介紹了軟件測試的原則與誤區(qū),以及軟件測試的發(fā)展等。第7章白盒測試,介紹了白盒測試的基本概念,詳細(xì)闡述了邏輯驅(qū)動覆蓋測試的幾種覆蓋標(biāo)準(zhǔn): 語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、路徑覆蓋和修訂的條件/判定覆蓋等白盒測試的方法,還介紹了其他幾種白盒測試方法和代碼檢查方法。
第8章黑盒測試,介紹黑盒測試的基本概念,常用的黑盒測試方法,包括等價類劃分、邊界值分析法、因果圖法、決策表法、正交實驗設(shè)計法,以及其他黑盒測試方法等。
第9章集成測試,介紹了集成測試的概念、方法,集成測試用例設(shè)計,集成測試過程等。
第10章系統(tǒng)測試,詳細(xì)闡述了系統(tǒng)測試方法,包括性能測試、壓力測試、容量測試、健壯性測試、安全性測試、可靠性測試、兼容性測試、可用性測試、安裝性測試、容錯性測試、冒煙測試、GUI軟件測試、文檔測試、網(wǎng)站測試、恢復(fù)測試、協(xié)議測試、驗收測試等。
第11章軟件測試自動化,介紹了軟件測試自動化基礎(chǔ),包括軟件測試自動化的含義和軟件測試自動化的特點,以及軟件測試自動化的實施和軟件測試自動化工具的選擇與比較,比較詳細(xì)地介紹了幾款國內(nèi)外著名的測試工具,即LoadRunner、WinRunner和AutoRunner。
第12章軟件測試管理,介紹了如何建立軟件測試管理、軟件測試管理的基本內(nèi)容和常用的軟件測試管理工具等。
本書由傅兵撰寫和統(tǒng)稿,韓冬、韓秉霖也參與了編寫。
在本書編寫過程中,參閱了很多國內(nèi)外同行的著作和論文等文獻(xiàn)資料,在此對這些資料的作者表示衷心的感謝。同時也感謝清華大學(xué)出版社給予的幫助和支持。
由于編者的水平有限,加之時間倉促,書中難免存在疏漏之處,希望專家、同行和廣大讀者批評指正。
編者
2017年7月前言
隨著信息技術(shù)的發(fā)展,軟件已經(jīng)滲透到人們生活的各個領(lǐng)域,成為人們生活中不可缺少的一部分。伴隨軟件的廣泛使用,人們對軟件質(zhì)量的要求越來越高;同時由于軟件系統(tǒng)變得越來越復(fù)雜,如何提高軟件質(zhì)量是廣大計算機(jī)技術(shù)人員所關(guān)注的,這使軟件開發(fā)人員和軟件測試人員面臨著巨大挑戰(zhàn)。
軟件質(zhì)量和測試行業(yè)的理論、技術(shù)、管理和工具等都在不斷更新和發(fā)展。與此同時,軟件質(zhì)量管理和軟件測試方面的書籍也涌現(xiàn)出來,但將二者很好的結(jié)合的書籍卻十分有限。本書是供此專業(yè)領(lǐng)域的學(xué)生以及軟件質(zhì)量管理人員和軟件測試人員學(xué)習(xí)的一本很好的專業(yè)用書。本書力爭做到二者兼顧: 一是兼顧了相關(guān)技術(shù)和理論知識的介紹;二是兼顧了實踐的培養(yǎng)和自動化工具的使用。另外,本書對軟件開發(fā)各個階段的軟件質(zhì)量保證活動的理論、方法和應(yīng)用等進(jìn)行了詳細(xì)的闡述,同時對軟件測試的方法、測試工具和軟件測試的全過程等內(nèi)容進(jìn)行了全面的介紹。
本書分兩篇,第一篇軟件質(zhì)量部分的主要內(nèi)容如下。
第1章軟件質(zhì)量概述,首先介紹了軟件和軟件工程,接著重點闡述了軟件質(zhì)量的含義以及軟件質(zhì)量保證和軟件質(zhì)量模型,最后介紹了軟件缺陷的含義、產(chǎn)生的原因,軟件缺陷的嚴(yán)重性、優(yōu)先級、構(gòu)成、預(yù)防和修復(fù)等。
第2章軟件質(zhì)量度量和配置管理,分別講述了軟件質(zhì)量度量和軟件配置管理的含義、內(nèi)容和常見問題。
第3章軟件質(zhì)量標(biāo)準(zhǔn),首先概述了軟件質(zhì)量標(biāo)準(zhǔn),其次詳細(xì)講述了CMM和CMMI的含義、基本內(nèi)容和二者的區(qū)別等內(nèi)容,然后介紹了ISO 9000軟件質(zhì)量標(biāo)準(zhǔn),最后介紹了其他質(zhì)量標(biāo)準(zhǔn)。
第4章軟件全面質(zhì)量管理,講述了軟件全面質(zhì)量管理的含義、步驟和評審、軟件全面質(zhì)量管理中的團(tuán)隊和質(zhì)量控制。
第5章軟件評審,介紹了軟件評審的含義和主要內(nèi)容,以及軟件評審的幾個階段:需求評審、概要設(shè)計評審、詳細(xì)設(shè)計評審、測試評審等內(nèi)容,然后介紹了如何避免進(jìn)入評審誤區(qū),最后講述了軟件評審中的角色和職能。
第二篇軟件測試部分的主要內(nèi)容如下。
第6章軟件測試基礎(chǔ),從軟件開發(fā)的過程入手,通過介紹軟件缺陷造成的重大損失和災(zāi)難,闡述了軟件測試的定義、軟件測試的過程,介紹了軟件測試的原則與誤區(qū),以及軟件測試的發(fā)展等。第7章白盒測試,介紹了白盒測試的基本概念,詳細(xì)闡述了邏輯驅(qū)動覆蓋測試的幾種覆蓋標(biāo)準(zhǔn): 語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋、路徑覆蓋和修訂的條件/判定覆蓋等白盒測試的方法,還介紹了其他幾種白盒測試方法和代碼檢查方法。
第8章黑盒測試,介紹黑盒測試的基本概念,常用的黑盒測試方法,包括等價類劃分、邊界值分析法、因果圖法、決策表法、正交實驗設(shè)計法,以及其他黑盒測試方法等。
第9章集成測試,介紹了集成測試的概念、方法,集成測試用例設(shè)計,集成測試過程等。
第10章系統(tǒng)測試,詳細(xì)闡述了系統(tǒng)測試方法,包括性能測試、壓力測試、容量測試、健壯性測試、安全性測試、可靠性測試、兼容性測試、可用性測試、安裝性測試、容錯性測試、冒煙測試、GUI軟件測試、文檔測試、網(wǎng)站測試、恢復(fù)測試、協(xié)議測試、驗收測試等。
第11章軟件測試自動化,介紹了軟件測試自動化基礎(chǔ),包括軟件測試自動化的含義和軟件測試自動化的特點,以及軟件測試自動化的實施和軟件測試自動化工具的選擇與比較,比較詳細(xì)地介紹了幾款國內(nèi)外著名的測試工具,即LoadRunner、WinRunner和AutoRunner。
第12章軟件測試管理,介紹了如何建立軟件測試管理、軟件測試管理的基本內(nèi)容和常用的軟件測試管理工具等。
本書由傅兵撰寫和統(tǒng)稿,韓冬、韓秉霖也參與了編寫。
在本書編寫過程中,參閱了很多國內(nèi)外同行的著作和論文等文獻(xiàn)資料,在此對這些資料的作者表示衷心的感謝。同時也感謝清華大學(xué)出版社給予的幫助和支持。
由于編者的水平有限,加之時間倉促,書中難免存在疏漏之處,希望專家、同行和廣大讀者批評指正。
編者
2017年7月
目錄
第一篇軟
件 質(zhì) 量第1章軟件質(zhì)量概述/3
1.1軟件開發(fā)過程/3
1.1.1計算機(jī)軟件/3
1.1.2軟件開發(fā)過程/5
1.1.3軟件開發(fā)過程模型/7
1.2軟件質(zhì)量/10
1.2.1軟件質(zhì)量概述/10
1.2.2軟件質(zhì)量保證/13
1.2.3軟件質(zhì)量模型/17
1.3軟件缺陷/21
1.3.1軟件缺陷簡介/21
1.3.2軟件缺陷產(chǎn)生的原因/21
1.3.3軟件缺陷的嚴(yán)重性和優(yōu)先級/23
1.3.4軟件缺陷構(gòu)成/26
1.3.5軟件缺陷的預(yù)防和修復(fù)/28
1.4思考題/30第2章軟件質(zhì)量度量和配置管理/31
2.1軟件質(zhì)量度量/31
2.1.1軟件質(zhì)量度量概述/31
2.1.2軟件質(zhì)量度量過程中常見的問題/35
2.2軟件配置管理/36
2.2.1軟件配置管理的概述/36
2.2.2配置管理的主要內(nèi)容/38
2.3思考題/42第3章軟件質(zhì)量標(biāo)準(zhǔn)/43
3.1軟件質(zhì)量標(biāo)準(zhǔn)概述/43
3.1.1國際標(biāo)準(zhǔn)/43
3.1.2國家標(biāo)準(zhǔn)/44
3.1.3行業(yè)標(biāo)準(zhǔn)/45
3.1.4企業(yè)標(biāo)準(zhǔn)/45
3.1.5項目規(guī)范/45
3.2CMM/46
3.2.1CMM的含義/46
3.2.2CMM的五個級別/47
3.2.3國內(nèi)軟件企業(yè)參與實施CMM/48
3.3CMMI/49
3.3.1CMMI的含義/49
3.3.2CMMI的基本內(nèi)容/50
3.3.3CMM與CMMI的區(qū)別/51
3.4ISO 9000軟件質(zhì)量標(biāo)準(zhǔn)/52
3.4.1ISO 9000的主要內(nèi)容/52
3.4.2ISO 9000和CMM/CMMI的關(guān)系/53
3.5其他質(zhì)量標(biāo)準(zhǔn)/53
3.5.1IEEE質(zhì)量標(biāo)準(zhǔn)/53
3.5.2SPICE/54
3.5.3ISO/IEC/54
3.6思考題/55第4章軟件全面質(zhì)量管理/56
4.1軟件全面質(zhì)量管理概述/56
4.1.1質(zhì)量管理和全面質(zhì)量管理/56
4.1.2軟件全面質(zhì)量管理的含義/58
4.2軟件全面質(zhì)量管理的步驟和評審/59
4.2.1軟件全面質(zhì)量管理的步驟/59
4.2.2軟件全面質(zhì)量管理中的評審/60
4.3軟件全面質(zhì)量管理中的團(tuán)隊和質(zhì)量控制/60
4.3.1軟件全面質(zhì)量管理中的團(tuán)隊/60
4.3.2軟件全面質(zhì)量管理中的質(zhì)量控制/61
4.4思考題/62第5章軟件評審/63
5.1軟件評審概述/63
5.2軟件評審的主要內(nèi)容/64
5.2.1軟件評審的目標(biāo)/64
5.2.2軟件評審的過程/64
5.2.3軟件評審的原則/64
5.2.4軟件評審的特點/65
5.3軟件評審的階段/65
5.3.1需求評審/65
5.3.2概要設(shè)計評審/68
5.3.3詳細(xì)設(shè)計評審/68
5.3.4數(shù)據(jù)庫設(shè)計評審/68
5.3.5測試評審/68
5.4避免進(jìn)入評審誤區(qū)/69
5.5軟件評審中的角色和職能/70
5.6思考題/71
第二篇軟
件 測 試
第6章軟件測試基礎(chǔ)/75
6.1軟件測試的必要性/75
6.2軟件測試概述/80
6.2.1軟件測試模型/81
6.2.2軟件測試用例/83
6.2.3軟件測試技術(shù)方法/86
6.2.4軟件測試的復(fù)雜性與經(jīng)濟(jì)性/87
6.3軟件測試過程/88
6.3.1單元測試/89
6.3.2集成測試/89
6.3.3確認(rèn)測試/90
6.3.4系統(tǒng)測試/90
6.3.5驗收測試/91
6.4軟件測試的原則與誤區(qū)/91
6.4.1軟件測試的原則/91
6.4.2軟件測試的誤區(qū)/93
6.5軟件測試的發(fā)展/96
6.5.1軟件測試的發(fā)展歷程/96
6.5.2我國軟件測試的發(fā)展歷程/97
6.5.3軟件測試外包/99
6.6軟件測試工作/99
6.6.1軟件測試工程師/100
6.6.2軟件測試工作特點/101
6.7思考題/104第7章白盒測試/105
7.1白盒測試概述/105
7.1.1白盒測試的含義/105
7.1.2靜態(tài)測試和動態(tài)測試/106
7.1.3軟件測試與軟件調(diào)試的區(qū)別/107
7.2邏輯驅(qū)動覆蓋測試/107
7.3其他幾種白盒測試/114
7.3.1程序插裝測試/114
7.3.2程序變異測試/115
7.3.3循環(huán)語句測試/115
7.4代碼檢查/117
7.4.1桌前檢查和代碼走查/117
7.4.2代碼評審和同行評審/118
7.4.3基于缺陷模式測試/119
7.5思考題/127第8章黑盒測試/129
8.1黑盒測試概述/129
8.1.1黑盒測試的含義/129
8.1.2白盒測試和黑盒測試的比較/130
8.2等價類劃分法/132
8.2.1等價類的含義/133
8.2.2劃分等價類的方法/133
8.2.3設(shè)計測試用例/133
8.2.4等價類劃分法測試實例/134
8.3邊界值分析法/138
8.3.1選擇邊界值測試的原則/139
8.3.2幾種邊界值分析法/139
8.3.3邊界值分析法應(yīng)用實例/142
8.4因果圖法/144
8.4.1什么是因果圖法/144
8.4.2因果圖法應(yīng)用實例/146
8.5判斷表法/148
8.5.1什么是判斷表/148
8.5.2判斷表法應(yīng)用實例/149
8.6正交實驗設(shè)計法/152
8.6.1什么是正交實驗設(shè)計法/153
8.6.2正交實驗法設(shè)計測試用例/154
8.6.3正交實驗設(shè)計法應(yīng)用實例/155
8.7其他黑盒測試方法/160
8.7.1故障猜測法/160
8.7.2狀態(tài)圖法/161
8.7.3隨機(jī)數(shù)據(jù)法/161
8.8黑盒測試方法的比較與選擇/162
8.9思考題/163第9章集成測試/165
9.1集成測試概述/165
9.1.1集成測試的必要性/165
9.1.2集成測試的含義/166
9.1.3單元測試、集成測試和系統(tǒng)測試
間的區(qū)別/167
9.1.4集成測試與開發(fā)的關(guān)系/168
9.1.5集成測試的層次與原則/168
9.2集成測試的方法/168
9.2.1集成測試的輔助模塊/169
9.2.2非漸增式集成/169
9.2.3漸增式集成/170
9.2.4三明治集成/172
9.2.5其他集成測試方法/173
9.3集成測試用例設(shè)計/175
9.4集成測試過程/176
9.5思考題/178第10章系統(tǒng)測試/179
10.1性能測試/181
10.1.1性能測試的含義/181
10.1.2如何進(jìn)行性能測試/182
10.1.3性能測試的三個階段和
測試用例/184
10.2壓力測試/185
10.2.1壓力測試的含義/186
10.2.2壓力測試的特點/186
10.2.3壓力測試與性能測試的聯(lián)系
與區(qū)別/186
10.2.4壓力測試方法/187
10.2.5壓力測試執(zhí)行/188
10.3容量測試/189
10.3.1容量測試的含義/189
10.3.2容量測試方法/190
10.3.3容量測試的步驟/191
10.3.4不同情況的容量測試/191
10.4健壯性測試/192
10.4.1健壯性測試的含義/192
10.4.2健壯性測試方法/193
10.4.3設(shè)計健壯性測試的策略/193
10.5安全性測試/194
10.5.1安全性測試的含義/194
10.5.2測試系統(tǒng)安全性要考慮的問題/195
10.5.3安全性測試的手段和層次/196
10.5.4安全性測試方法/196
10.5.5安全性測試標(biāo)準(zhǔn)/199
10.6可靠性測試/200
10.6.1可靠性測試的概念/200
10.6.2可靠性測試方式/200
10.6.3可靠性測試數(shù)學(xué)模型/201
10.7兼容性測試/202
10.7.1兼容性測試概述/203
10.7.2兼容性測試分類/203
10.8可用性測試/205
10.8.1可用性測試概述/205
10.8.2可用性測試方法/207
10.8.3可用性測試的必備要素/208
10.8.4可用性測試的注意事項/210
10.9安裝測試/211
10.9.1安裝測試的含義/211
10.9.2安裝測試的三個主要方面/211
10.9.3安裝和卸載程序測試內(nèi)容/212
10.10容錯性測試/213
10.10.1容錯性測試的含義/213
10.10.2容錯性測試/214
10.11配置測試/214
10.11.1配置測試的含義/215
10.11.2配置測試方法/215
10.12冒煙測試/215
10.12.1冒煙測試概述/216
10.12.2冒煙測試的應(yīng)用和內(nèi)容/216
10.13GUI軟件測試/217
10.13.1GUI軟件測試概述/217
10.13.2GUI軟件測試方法/218
10.13.3GUI常見的要素/222
10.13.4GUI基本測試內(nèi)容/225
10.13.5GUI測試常見錯誤/226
10.14文檔測試/227
10.14.1文檔測試的含義/227
10.14.2文檔性測試方法/230
10.15網(wǎng)站測試/231
10.16恢復(fù)測試/236
10.16.1恢復(fù)測試的含義/236
10.16.2恢復(fù)測試的主要內(nèi)容和步驟/237
10.16.3恢復(fù)測試中要注意的地方/238
10.17協(xié)議測試/239
10.17.1一致性測試/239
10.17.2互操作性測試/240
10.18驗收測試/240
10.18.1驗收測試概述/240
10.18.2測試和測試/241
10.18.3驗收測試的過程和主要內(nèi)容/243
10.19思考題/245第11章軟件測試自動化/246
11.1軟件測試自動化的基礎(chǔ)/246
11.1.1軟件測試自動化的概念/246
11.1.2軟件測試自動化的特點/248
11.2軟件測試自動化的實施/249
11.3軟件測試自動化工具的選擇與比較/252
11.3.1常用軟件測試自動化工具/252
11.3.2白盒測試工具/258
11.3.3黑盒測試工具/259
11.3.4測試管理工具/260
11.3.5軟件測試自動化中的問題、對策
和工具的選擇/260
11.4LoadRunner/261
11.5WinRunner/264
11.6AutoRunner/267
11.7思考題/270第12章軟件測試管理/271
12.1軟件測試的組織/271
12.2軟件測試的人員組織/273
12.3軟件測試文件管理/274
12.4軟件測試管理的原則/275
12.5測試管理體系/277
12.6軟件測試風(fēng)險的控制/279
12.7常用的測試管理工具/281
12.8思考題/282附錄A術(shù)語中英文對照/283參考文獻(xiàn)/299