《軟件測試技術(shù)與項目實踐》全面介紹軟件測試技術(shù)和實際應(yīng)用,全書分3篇,共10章。
基礎(chǔ)篇(第1~4章)詳細(xì)介紹軟件測試的基本概念、功能和單元測試用例設(shè)計方法。技術(shù)篇(第5~8章)深入探討接口及接口自動化測試、Web UI自動化測試、性能測試。擴(kuò)展篇(第9、10章)重點講述移動App非功能測試和滲透性測試等內(nèi)容。全書引入合同管理系統(tǒng)項目作為實踐案例,幫助讀者掌握軟件測試的核心技能。此外,本書還配套有阿爾法輔助教學(xué)平臺,為讀者提供線上線下相結(jié)合的靈活學(xué)習(xí)方式,有助于提升學(xué)習(xí)效果。
本書適合作為高等學(xué)校計算機(jī)相關(guān)專業(yè)本科生軟件測試技術(shù)課程的教材,也可供軟件測試技術(shù)人員參考使用。
新時代下軟件測試技術(shù)越來越受到重視,軟件測試工程師越來越稀缺。本教材研發(fā)團(tuán)隊有豐富的軟件測試行業(yè)實踐經(jīng)驗,都有軟件技術(shù)專業(yè)教育背景或是從事過多年的軟件測試實踐,均具備扎實的學(xué)術(shù)背景和專業(yè)知識,如都深入了解軟件開發(fā)生命周期、測試方法論、測試技術(shù)和相關(guān)工具,可確保教材的準(zhǔn)確性和專業(yè)性,能夠?qū)嶋H項目中遇到的問題和解決方案融入教材中,使之更加實用和貼近實際應(yīng)用。
近些年來,隨著軟件技術(shù)的發(fā)展升級,編者們對軟件測試領(lǐng)域最新研究和發(fā)展有著持續(xù)的關(guān)注,如:了解并應(yīng)用著新的測試方法、技術(shù)和工具。這樣可以確保教材的內(nèi)容與時俱進(jìn),反映當(dāng)前行業(yè)的最佳實踐。
編寫本書能夠為讀者提供全面、系統(tǒng)和結(jié)構(gòu)化的軟件測試知識,幫助讀者建立起正確的測試思維和方法,提升軟件質(zhì)量和測試效率。相信本教材能夠幫助讀者深入理解軟件測試的核心概念和技術(shù),并能夠應(yīng)用于實際項目中。同時,本教材編寫團(tuán)隊可以根據(jù)教材的定位和目標(biāo)讀者群體的需求,提供豐富的案例和實踐經(jīng)驗,讓讀者在實際操作中獲得更多的知識和技能。
數(shù)字化時代,軟件已經(jīng)成為生活和工作不可或缺的一部分,軟件質(zhì)量是企業(yè)和用戶最為關(guān)心的問題之一。軟件的穩(wěn)定性和可靠性直接關(guān)系到用戶體驗和業(yè)務(wù)的成敗。因此,確保軟件質(zhì)量成為軟件開發(fā)過程中至關(guān)重要的一個環(huán)節(jié)。軟件測試作為確保軟件質(zhì)量的關(guān)鍵環(huán)節(jié),其重要性不言而喻。
為了滿足企業(yè)和用戶對高質(zhì)量軟件的需求,《軟件測試技術(shù)與項目實踐》應(yīng)運而生。本書不僅詳細(xì)介紹了軟件測試的基本理論和方法,還結(jié)合合同管理系統(tǒng)項目實踐,幫助讀者更好地理解和掌握軟件測試的技巧和經(jīng)驗。
書中涵蓋了自動化測試、性能測試、安全測試等多種測試類型,力求為讀者提供全面而深入的軟件測試知識。
本書分3篇,共10章,第1~4章是基礎(chǔ)篇,第5~8章是技術(shù)篇,第9、10章是擴(kuò)展篇。各章內(nèi)容概述如下。
1. 基礎(chǔ)篇
第1章軟件測試概述: 介紹軟件測試的重要性、定義、目的、原則,以及軟件缺陷的處理方法。
第2章軟件測試入門: 講解軟件測試級別、常見應(yīng)用軟件的基本特征、軟件測試的基本思路和測試用例設(shè)計方法,并通過合同管理系統(tǒng)案例分析測試思路。
第3章功能測試: 介紹功能測試用例設(shè)計方法,包括等價類劃分法、邊界值分析法、組合測試用例設(shè)計技術(shù)、因果圖法、決策表法和場景法,并通過合同管理系統(tǒng)案例進(jìn)行演練。
第4章單元測試: 介紹白盒測試方法,包括邏輯覆蓋法、基本路徑測試法,以及常用單元測試工具,并通過ToDoList項目進(jìn)行演練。
2. 技術(shù)篇
第5章接口測試: 講解接口測試的價值、定義,HTTP協(xié)議解析,Postman工具使用,并通過合同管理系統(tǒng)項目進(jìn)行演練。
第6章Python接口自動化測試: 介紹接口自動化測試的概念,Requests庫和Pytest工具,并通過合同管理平臺項目進(jìn)行演練。
第7章Web UI自動化測試: 介紹Selenium的基本概念,WebDriver、WebElement接口和自動化測試模型,并通過Selenium輕量級UI自動化測試框架進(jìn)行演練。
第8章性能測試: 講解性能測試基礎(chǔ)知識、JMeter工具使用、與Jenkins的集成,并通過合同管理系統(tǒng)項目進(jìn)行演練。
3. 擴(kuò)展篇
第9章移動App非功能測試: 介紹移動App啟動時間、流量、CPU和電量測試方法。
第10章滲透性測試: 講解Web應(yīng)用安全基礎(chǔ)、SQL注入漏洞、XSS跨站腳本漏洞、CSRF和文件上傳漏洞的原理和防范措施。
4. 教學(xué)資源下載與學(xué)習(xí)
本書配套的合同管理系統(tǒng),讀者可以登錄阿爾法輔助教學(xué)平臺獲取相關(guān)資源。
本書由北京信息科技大學(xué)王磊任主編,負(fù)責(zé)確定本書的主題方向和整體框架,并編寫第1、2章;另一位主編是北京浩泰思特科技有限公司資深軟件測試工程師郝志卿,負(fù)責(zé)編寫第3章;北京信息科技大學(xué)盧慧雅任副主編,負(fù)責(zé)編寫第4、8章;呂梁學(xué)院高文蓮任副主編,負(fù)責(zé)編寫第9、10章;呂梁學(xué)院董紅松負(fù)責(zé)編寫第5章;山西金融職業(yè)學(xué)院郭瑩潔負(fù)責(zé)編寫第6、7章。
盡管我們做了努力,本書仍難免有疏漏和不足之處,望讀者指正。
編者2025年6月
第一篇基礎(chǔ)篇
第1章軟件測試概述3
1.1為什么要進(jìn)行軟件測試3
1.2軟件測試的定義4
1.2.1軟件測試定義的正反兩面性4
1.2.2服從于用戶需求的軟件測試5
1.3軟件測試的目的5
1.4軟件測試的原則6
1.5軟件缺陷7
1.5.1一個簡單的缺陷報告7
1.5.2缺陷報告的重要組成9
1.5.3完整的缺陷信息列表11
1.5.4缺陷的管理11
1.6實踐: 尋找合同管理系統(tǒng)缺陷13
1.6.1合同管理系統(tǒng)需求說明書13
1.6.2合同管理系統(tǒng)地址及用戶13
1.6.3任務(wù)一: 合同列表頁面的缺陷說明14
1.6.4任務(wù)二: 合同新增頁面的缺陷說明15
1.7本章小結(jié)17
第2章軟件測試入門18
2.1軟件測試級別18
2.1.1單元測試18
2.1.2集成測試21
2.1.3系統(tǒng)測試24
2.1.4驗收測試25
2.2常見應(yīng)用軟件的基本特征25
2.3軟件測試的基本思路27
2.3.1增加功能的測試思路27
2.3.2修改功能的測試思路29
2.3.3刪除功能的測試思路29
2.3.4查詢功能的測試思路30
2.3.5導(dǎo)入/導(dǎo)出功能的測試思路31
2.3.6計算功能的測試思路31
2.3.7業(yè)務(wù)流程32
2.4測試用例34
2.4.1為什么需要測試用例34
2.4.2什么是測試用例34
2.4.3一個簡單的測試用例35
2.4.4測試用例的元素35
2.5實踐: 合同管理系統(tǒng)測試思路分析37
2.5.1新增合同功能測試思路分析37
2.5.2修改合同功能測試思路分析39
2.5.3作廢合同功能測試思路分析39
2.5.4查詢合同功能測試思路分析40
2.5.5業(yè)務(wù)流程梳理42
2.6本章小結(jié)43
第3章功能測試44
3.1功能測試用例設(shè)計44
3.2等價類劃分法45
3.2.1等價類劃分法的定義45
3.2.2有效等價類和無效等價類45
3.2.3劃分等價類的規(guī)則46
3.2.4等價類劃分法實例分析47
3.3邊界值分析法48
3.3.1如何確定邊界值49
3.3.2邊界值法實例分析49
3.4組合測試用例設(shè)計技術(shù)50
3.4.1全面測試50
3.4.2單因素覆蓋51
3.4.3正交試驗法53
3.4.4兩兩組合56
3.4.5具有約束關(guān)系的組合測試59
3.4.6種子組合測試62
3.5因果圖法62
3.5.1因果圖的基本符號62
3.5.2因果圖法實例分析63
3.6決策表法67
3.6.1決策表的構(gòu)成67
3.6.2決策表法實例分析67
3.7場景法69
3.7.1場景法70
3.7.2場景法實例分析70
3.8實踐: 合同管理系統(tǒng)測試用例設(shè)計73
3.8.1測試方法選擇的綜合策略73
3.8.2創(chuàng)建合同用例設(shè)計74
3.8.3修改合同用例設(shè)計76
3.8.4作廢合同用例設(shè)計78
3.8.5查詢合同用例設(shè)計78
3.8.6審批合同用例設(shè)計80
3.9本章小結(jié)81
第4章單元測試82
4.1單元測試用例設(shè)計82
4.2白盒測試83
4.2.1邏輯覆蓋法83
4.2.2基本路徑測試法87
4.3單元測試框架92
4.3.1JUnit介紹92
4.3.2用JUnit進(jìn)行單元測試97
4.4任務(wù): ToDoList單元測試用例設(shè)計及運行127
4.4.1創(chuàng)建待辦事項單元測試129
4.4.2標(biāo)記待辦事項完成單元測試131
4.4.3列表查詢單元測試134
4.5本章小結(jié)137
第二篇技術(shù)篇
第5章接口測試141
5.1接口測試的價值與體系141
5.2接口測試的定義142
5.3HTTP協(xié)議解析142
5.3.1URL142
5.3.2請求報文143
5.3.3響應(yīng)報文143
5.3.4保持連接狀態(tài)144
5.4接口測試工具Postman144
5.4.1安裝Postman工具144
5.4.2創(chuàng)建完整請求144
5.5實踐: 合同管理系統(tǒng)項目進(jìn)行接口測試146
5.5.1被測接口介紹146
5.5.2保持接口的登錄狀態(tài)146
5.5.3執(zhí)行接口測試148
5.6本章小結(jié)149
第6章Python接口自動化測試150
6.1接口自動化測試介紹150
6.1.1為什么要做接口自動化測試150
6.1.2接口自動化測試工具150
6.2Requests庫介紹150
6.2.1Requests庫入門150
6.2.2GET方法151
6.2.3POST方法151
6.2.4Requests主要方法解析154
6.3利用Pytest進(jìn)行測試管理155
6.3.1認(rèn)識Pytest155
6.3.2用例的識別與運行156
6.3.3Pytest實現(xiàn)前后置157
6.3.4參數(shù)化用例159
6.3.5結(jié)合Allure生成測試報告160
6.4實踐: 合同管理系統(tǒng)接口自動化測試163
6.4.1定義BaseAPI類,封裝request164
6.4.2實現(xiàn)業(yè)務(wù)接口的API Object164
6.4.3構(gòu)建API Object模式的測試實例165
6.4.4結(jié)合Allure生成測試報告167
6.5本章小結(jié)168
第7章Web UI自動化測試169
7.1Selenium介紹169
7.1.1安裝Selenium170
7.1.2第一個Selenium Python腳本170
7.1.3WebDriver原理172
7.1.4控件的識別與定位172
7.2Selenium WebDriver173
7.2.1Selenium WebDriver的常用方法173
7.2.2WebDriver的功能173
7.2.3示例: 登錄合同管理系統(tǒng)174
7.2.4正則匹配示例摘取合同編號174
7.3WebElement接口175
7.3.1WebElement功能175
7.3.2WebElement方法175
7.3.3示例: 作廢合同176
7.4自動化測試模型介紹177
7.4.1線性測試177
7.4.2模塊化與類庫178
7.4.3數(shù)據(jù)驅(qū)動179
7.4.4關(guān)鍵字驅(qū)動179
7.5UI自動化測試框架(PageObject模式)180
7.5.1認(rèn)識PageObject180
7.5.2BasePage對象181
7.5.3實現(xiàn)PageObject181
7.5.4構(gòu)建PageObject模式測試實例183
7.6本章小結(jié)184
第8章性能測試185
8.1性能測試概述185
8.1.1為什么要進(jìn)行性能測試185
8.1.2性能定義188
8.1.3性能測試分層模型188
8.1.4性能測試術(shù)語和指標(biāo)189
8.1.5性能測試的流程190
8.2性能測試工具JMeter191
8.2.1概述191
8.2.2作用192
8.2.3環(huán)境搭建192
8.2.4基本組件193
8.2.5腳本增強(qiáng)參數(shù)化205
8.2.6腳本增強(qiáng)關(guān)聯(lián)207
8.2.7腳本增強(qiáng)邏輯控制211
8.2.8腳本增強(qiáng)保存數(shù)據(jù)212
8.2.9腳本增強(qiáng)集合點215
8.2.10腳本增強(qiáng)事務(wù)217
8.2.11函數(shù)助手217
8.2.12JMeter插件安裝221
8.2.13命令行執(zhí)行腳本222
8.3結(jié)合Jenkins工具持續(xù)集成222
8.4實踐: 合同管理系統(tǒng)性能測試223
8.4.1通過代理錄制腳本223
8.4.2手動添加請求230
8.4.3運行測試場景233
8.5本章小結(jié)238
第三篇擴(kuò)展篇
第9章移動App非功能測試241
9.1移動App啟動時間測試241
9.1.1用戶體驗角度的App啟動時間241
9.1.2常見的App啟動時間測試方法241
9.1.3使用adb獲得App啟動時間示例242
9.2移動App流量測試243
9.2.1App流量測試場景243
9.2.2App流量測試示例243
9.3移動App CPU測試243
9.3.1App的CPU測試場景244
9.3.2App的CPU占用率測試示例244
9.4移動App電量測試245
9.5本章小結(jié)245
第10章滲透性測試246
10.1Web應(yīng)用安全基礎(chǔ)246
10.2SQL注入漏洞247
10.2.1SQL注入原理247
10.2.2SQL注入的后果248
10.2.3SQL注入漏洞攻擊流程249
10.2.4注入點類型249
10.2.5SQL注入的防范措施251
10.3XSS跨站腳本漏洞252
10.3.1XSS原理解析252
10.3.2XSS類型253
10.3.3查找XSS漏洞的過程256
10.3.4XSS防御256
10.4CSRF257
10.4.1CSRF攻擊原理257
10.4.2CSRF攻擊場景258
10.4.3查找CSRF漏洞260
10.4.4預(yù)防CSRF261
10.5文件上傳漏洞261
10.5.1文件上傳漏洞利用場景261
10.5.2文件上傳漏洞的測試流程264
10.5.3文件上傳防御264
10.6本章小結(jié)264
參考文獻(xiàn)265
附錄A阿爾法編程使用說明266