《軟件自動化測試實戰(zhàn):基于開源測試工具》旨在講述測試框架、接口測試、Web自動化測試及移動端自動化測試。本書共8章,主要內容包括為什么要實施自動化測試,Python開發(fā)環(huán)境的搭建,Python基礎知識,基于Python的單元測試框架UnitTest及其應用案例,HttpRunner測試框架及其應用案例,HttpRunnerManager測試平臺的搭建過程,JMeter和Postman在接口測試中的應用,Docker基礎與操作實戰(zhàn),Selenium自動化測試框架及其應用案例,Appium自動化測試框架及其應用案例等。
《軟件自動化測試實戰(zhàn):基于開源測試工具》適合測試人員和開發(fā)人員閱讀,也可供高等院校計算機相關專業(yè)的師生閱讀。
1.基于JMeter、Postman、Dovker工具,系統(tǒng)講述測試框架搭建方法及測試工具使用方法
2.提供大量詳細項目及代碼案例幫助掌握測試技巧
3.深入理解UnitTest、HttpRunner、Selenium、Appium等多種測試框架
于涌,具有多年軟件開發(fā)和軟件測試方面工作工作經驗。先后擔任程序員、測試分析師、高級測試經理、測試總監(jiān)等職位。擁有多年的軟件開發(fā)、軟件測試項目實踐和教學經驗。尤其擅長自動化測試、工具應用、單元測試等方面的工作。曾為多個軟件公司提供軟件測試知識、軟件性能測試、性能測試工具LoadRunner、功能測試工具QTP、WinRunner、Jmeter等內容的培訓工作。曾在程序員雜志上發(fā)表過多篇文章。
目 錄
第 1章 自動化測試基礎和Python
開發(fā)環(huán)境的搭建 1
1.1 為什么要實施自動化測試 1
1.2 為什么要學習Python 2
1.3 Python的版本選擇、安裝與配置 8
1.3.1 Python的版本選擇 9
1.3.2 Python的安裝與配置 11
1.4 Python模塊的安裝方法 15
1.5 Python IDEPyCharm的
安裝與配置 19
1.6 使用PyCharm完成第 一個Python
項目 21
第 2章 Python基礎知識 26
2.1 IDLEPython自帶的IDE 26
2.2 Python相關術語 28
2.2.1 變量 28
2.2.2 數(shù)據(jù)類型 31
2.2.3 數(shù)據(jù)類型轉換 35
2.2.4 縮進 38
2.2.5 內置函數(shù) 39
2.3 列表 40
2.3.1 創(chuàng)建列表 40
2.3.2 使用索引獲取列表元素 41
2.3.3 使用切片獲取列表元素 41
2.3.4 添加列表元素 44
2.3.5 刪除列表元素 45
2.3.6 計數(shù)列表元素 47
2.3.7 獲取列表元素的索引位置 49
2.3.8 反轉列表元素并獲取列表的
長度 50
2.4 元組 51
2.4.1 創(chuàng)建元組 51
2.4.2 使用索引獲取元組元素 51
2.4.3 使用切片獲取元組元素 52
2.4.4 統(tǒng)計元組元素的出現(xiàn)次數(shù) 52
2.4.5 獲取元組元素的索引位置 53
2.4.6 刪除整個元組 53
2.5 字典 54
2.5.1 創(chuàng)建字典 54
2.5.2 獲取字典元素 56
2.5.3 修改字典 57
2.5.4 統(tǒng)計字典元素個數(shù) 57
2.5.5 刪除字典或字典中的元素 58
2.6 集合 59
2.6.1 創(chuàng)建集合 59
2.6.2 獲取集合元素 61
2.6.3 添加集合元素 62
2.6.4 修改集合 62
2.6.5 計數(shù)集合元素 64
2.6.6 刪除集合或集合中的元素 64
2.7 常用運算符 65
2.7.1 算術運算符 65
2.7.2 邏輯運算符 68
2.7.3 比較運算符 69
2.7.4 賦值運算符 69
2.7.5 位運算符 70
2.8 常規(guī)語句應用基礎 71
2.8.1 for循環(huán)語句 72
2.8.2 while循環(huán)語句 72
2.8.3 if-else條件語句 73
2.8.4 break語句 73
2.8.5 continue語句 74
2.8.6 導入模塊 74
2.8.7 函數(shù) 77
2.8.8 lambda函數(shù) 80
2.8.9 斷言 81
2.8.10 局部變量和全局變量 82
2.8.11 單行注釋與多行注釋 82
2.9 語法錯誤及異常處理 84
2.9.1 語法錯誤 84
2.9.2 其他錯誤 85
2.9.3 通過try-except捕獲異常 86
2.9.4 通過try-except-else-finally
捕獲異常 88
2.9.5 拋出異常 89
2.10 多線程處理 90
2.10.1 __name__ == "__main__": 90
2.10.2 線程概念解析 93
2.10.3 創(chuàng)建單線程 93
2.10.4 創(chuàng)建多線程 94
2.10.5 守護線程 95
2.10.6 阻塞線程 100
2.11 類和對象 101
2.11.1 對象思想的引入 101
2.11.2 對象(類)的概念 102
2.11.3 類中的self是什么 103
2.11.4 構造函數(shù)與析構函數(shù) 105
2.11.5 類的繼承 107
2.12 字符串相關操作 109
2.12.1 字符串的類型轉換 109
2.12.2 字符串的拼接 110
2.12.3 字符串的截取 112
2.12.4 字符串的替換 113
2.12.5 字符串的位置判斷 114
2.13 文件相關操作 115
2.13.1 文本文件操作 115
2.13.2 Excel文件操作 117
2.13.3 JSON文件操作 121
第3章 基于Python的單元測試
框架UnitTest 125
3.1 UnitTest單元測試框架 125
3.2 UnitTest單元測試框架的應用 126
3.2.1 前期準備 126
3.2.2 設計測試用例 128
3.2.3 測試用例 129
3.2.4 測試固件 131
3.2.5 測試套件 132
3.2.6 測試運行器 135
第4章 HttpRunner測試框架及其
應用 139
4.1 HttpRunner測試框架介紹 139
4.2 HttpRunner運行環(huán)境的搭建
過程 140
4.3 HttpRunner簡單應用案例 142
4.4 HttpRunnerManager測試平臺的
搭建過程 146
4.5 HttpRunner應用綜合案例 158
4.5.1 被測項目環(huán)境搭建 158
4.5.2 被測項目必要設置 161
4.5.3 Charles腳本的錄制與優(yōu)化 163
4.5.4 將Charles生成的腳本轉換為
HttpRunner測試用例 166
4.5.5 HttpRunner測試用例運行失敗
原因分析 167
4.5.6 HttpRunner測試用例的優(yōu)化與
再運行 170
4.6 HttpRunner 2.0測試框架的應用 176
第5章 JMeter和Postman在接口測試
中的應用 184
5.1 JMeter在接口測試中的應用 184
5.1.1 JMeter介紹 184
5.1.2 準備JMeter安裝環(huán)境 185
5.1.3 安裝JDK 186
5.1.4 安裝JMeter 188
5.1.5 JMeter錄制需求介紹 189
5.1.6 創(chuàng)建線程組 189
5.1.7 添加測試腳本錄制器 190
5.1.8 配置證書 193
5.1.9 運行測試腳本錄制器 197
5.1.10 添加監(jiān)聽器 201
5.1.11 添加檢查點 203
5.1.12 分析結果信息 205
5.2 基于JMeter的接口測試項目
實戰(zhàn) 206
5.2.1 火車查詢接口介紹 207
5.2.2 火車查詢接口測試用例
設計 211
5.2.3 首個接口測試用例的JMeter
腳本的實現(xiàn) 212
5.2.4 首個接口測試用例的JMeter
腳本的執(zhí)行與結果分析 214
5.2.5 所有接口測試用例的JMeter
腳本的實現(xiàn) 218
5.2.6 所有接口測試用例的JMeter
腳本的執(zhí)行與結果分析 220
5.3 Postman在接口測試中的應用 222
5.3.1 Postman介紹及安裝 222
5.3.2 發(fā)送請求 225
5.3.3 執(zhí)行腳本 230
5.3.4 運行集合 235
5.4 基于Postman的接口測試項目
實戰(zhàn) 238
5.4.1 接口測試用例的Postman
腳本的實現(xiàn) 238
5.4.2 接口測試用例的Postman
腳本的執(zhí)行與結果分析 245
第6章 Docker基礎與操作實戰(zhàn) 248
6.1 Docker容器簡介 248
6.2 Docker的安裝過程 251
6.3 Docker命令實戰(zhàn):幫助命令
(docker --help) 257
6.4 Docker命令實戰(zhàn):拉取鏡像
(docker pull) 258
6.5 Docker命令實戰(zhàn):顯示本機已有
鏡像(docker images) 260
6.6 Docker命令實戰(zhàn):啟動容器
(docker run) 260
6.7 Docker命令實戰(zhàn):查看運行中的
容器(docker ps) 262
6.8 Docker命令實戰(zhàn):在容器中
運行命令(docker exec) 262
6.9 Docker命令實戰(zhàn):停止容器
運行(docker stop) 263
6.10 Docker命令實戰(zhàn):啟動/重啟
容器(docker start/restart) 264
6.11 Docker命令實戰(zhàn):查看容器
元數(shù)據(jù)(docker inspect) 265
6.12 Docker命令實戰(zhàn):刪除容器
(docker rm) 266
6.13 Docker命令實戰(zhàn):刪除鏡像
(docker rmi) 267
6.14 Docker命令實戰(zhàn):導出容器
(docker export) 267
6.15 Docker命令實戰(zhàn):從tar文件中
創(chuàng)建鏡像(docker import) 269
第7章 Selenium自動化測試框架及其
應用 271
7.1 Selenium自動化測試框架 271
7.2 Selenium的歷史版本及核心
組件 272
7.3 安裝Selenium 277
7.4 Selenium的配置與第 一個
可運行的腳本 278
7.5 Selenium元素定位方法概述 281
7.6 根據(jù)id屬性定位元素 282
7.7 根據(jù)name屬性定位元素 287
7.8 根據(jù)class屬性定位元素 290
7.9 根據(jù)標簽定位元素 293
7.10 根據(jù)鏈接文本定位元素 296
7.11 根據(jù)部分鏈接文本定位元素 299
7.12 根據(jù)XPath定位元素 301
7.13 根據(jù)CSS定位元素 308
7.14 基于Docker和Selenium Grid的
測試技術的應用 311
7.15 基于Docker的Selenium Grid的
相關配置 312
7.16 基于Docker和Selenium Grid的
案例演示 314
第8章 Appium自動化測試框架及其
應用 321
8.1 Appium自動化測試框架 321
8.1.1 Appium的理念 321
8.1.2 Appium的設計 321
8.1.3 Appium的相關概念 322
8.1.4 Appium的工作原理 323
8.1.5 Appium與Selenium 324
8.2 Appium環(huán)境的搭建與配置
過程 324
8.2.1 在Windows環(huán)境中部署
Appium運行環(huán)境 324
8.2.2 Appium相關配置說明 349
8.3 定位Appium元素的3個利器 351
8.3.1 應用UI Automator Viewer
獲得元素信息的實例 352
8.3.2 應用Inspector獲得元素信息的
實例 357
8.3.3 應用ADB插件獲得元素信息的
實例 375
8.4 獲取應用包名和主活動名 379
8.4.1 根據(jù)APK包獲得應用的包名和
主活動名 380
8.4.2 根據(jù)運行的應用獲得應用包名和
主活動名 382
8.5 界面元素的定位 384
8.5.1 根據(jù)id定位元素 384
8.5.2 根據(jù)name定位元素 385
8.5.3 根據(jù)classname定位元素 387
8.5.4 根據(jù)content-desc定位元素 391
8.5.5 根據(jù)XPath定位元素 393
8.5.6 根據(jù)坐標操作元素 396
8.6 模擬各種手勢操作 397
8.6.1 長按操作 398
8.6.2 拖曳操作 400
8.6.3 滑動操作 403
8.6.4 多點操作 406
8.6.5 手勢密碼 407
8.7 Appium的其他功能與案例演示 410
8.7.1 Appium的3種等待方式 410
8.7.2 斷言在測試腳本中的應用 414
8.7.3 模擬操作系統(tǒng)按鍵 418
8.7.4 獲取Toast元素的內容 422
8.7.5 模擬滾動條操作 424
8.7.6 捕獲因界面元素定位失敗
產生的異常 426
8.8 自動化測試模型 429
8.8.1 自動化測試模型概述 429
8.8.2 Page Object設計模式 437
8.9 基于Docker和模擬器的Appium
自動化測試 440
8.9.1 獲取Appium Docker鏡像并
啟動Appium 440
8.9.2 模擬器的設置 442
8.9.3 將容器連接到模擬器 443
8.9.4 測試腳本 443