Python 軟件測試實戰寶典

智谷一川

買這商品的人也買了...

商品描述

本書從Python基礎入手,系統講解了使用Python語言來做接口自動化測試、
性能自動化測試、安全測試以及功能自動化回歸測試。
全書由淺入深,系統化地將作者多年測試開發工作中遇到的問題、
解決方案等進行了實例化的闡述,書中豐富的實例代碼可以直接在軟件的各個自動化測試場景中使用。
作者針對近年來企業對測試開發崗位的需求傾力打造了此書,
希望藉由此書的出版能夠使更多的讀者更好地掌握Python測試開發的技能,並找到更理想的軟件測試工作。
本書附贈全部測試實例源代碼文件及Python軟件測試核心知識點精講視頻。
本書適合從事軟件測試工作的技術人員及希望從事軟件測試的專業人員閱讀,
也適合計算機、軟件工程、自動化等相關專業的學生與老師參考。

目錄大綱

前言

第1章 測試工程師需要掌握的
Python基礎 /1
1.1 讓Python飛一會兒 /1
1.2 測試工程師常用到的數據類型 /7
1.2.1 用Python做加減乘除 /7
1.2.2 用Python來寫字符串 /8
1.2.3 列表是什麼 /11
1.2.4 元組是什麼 /14
1.2.5 字典是什麼 /16
1.2.6 集合是什麼 /21
1.2.7 文件處理的常用方法 /21
1.3 條件語句 /23
1.3.1 實例:愛我還是他 /24
1.3.2 實例:猜一猜今天是星期幾 /24
1.3.3 實例:從Json中獲取今天豬肉的
價格 /25
1.4 循環語句 /25
1.4.1 實例:從無限循環中逃離 /26
1.4.2 實例:用for遍歷字符串、列表、元組、
字典 /26
1.5 函數 /27
1.5.1 實例:登錄過程的函數模擬 /28
1.5.2 實例:抽獎遊戲的函數模擬 /28
1.6 異常的處理 /29
1.7 模塊和類 /29
1.7.1 模塊 /29
1.7.2 類 /30
1.8 裝飾器 /33
1.8.1 實例:在函數中定義 /33
1.8.2 實例:給每一個測試函數打印執行
時間 /34
第2章 用Python開始做接口自動化
測試 /36
2.1 HTTP協議與接口測試 /36
2.1.1 快速掌握HTTP協議 /36
2.1.2 Fiddler工具的使用 /37
2.1.3 接口測試的通用方法與要點 /39
2.2 requests:讓HTTP服務人類 /40
2.3 grequests:requests的異步
模塊 /43
2.4 HTTP接口測試從這兒開始 /45
2.4.1 實例:從一個簡單的接口測試代碼
開始 /45
2.4.2 實例:關聯參數的處理 /46
2.4.3 實例:如何在多個請求的函數中傳遞
關聯參數 /46
2.4.4 實例:如何在多個請求的類中傳遞關聯
參數 /47
2.5 如何訪問接口測試中無所不在的
數據存儲 /49
2.5.1 實例:如何訪問數據庫 /49
2.5.2 實例:用ORM訪問數據庫 /50
2.5.3 實例:對接口返回的數據增加數據庫
檢查 /51
2.5.4 實例:如何訪問MongoDB緩存庫 /52
2.5.5 實例:如何訪問Redis緩存 /53
2.5.6 實例:對接口返回的內容增加MongoDB
的檢查 /53
2.6 logbook:增強性日誌包 /55
實例:在接口測試中增加日誌邏輯 /56
2.7 pytest:優雅地檢查接口測試的
結果 /57
2.7.1 用pytest對接口返回的內容進行
檢查 /58
2.7.2 常用的pytest.mark方法 /59
2.7.3 一起來測試多個測試數據吧 /62
2.7.4 pytest的fixture固件 /66
2.7.5 pytest常用第三方插件 /72
2.8 匯報接口測試的結果 /74
2.9 Allure:更佳的接口測試報告 /75
2.10 HTTP接口自動化測試中的
特殊處理 /78
2.10.1 實例:模擬Web HTTP請求時
如何保持Session /78
2.10.2 實例:模擬Web HTTP請求時
如何處理HTML /79
2.10.3 實例:模擬Web HTTP請求時
如何調用JS函數 /80
2.10.4 接口測試中常見的加解密處理 /80
2.11 綜合實例:微型HTTP接口
自動化測試代碼的實現 /83
2.11.1 代碼工程構造的說明 /84
2.11.2 接口測試主測試代碼 /85
第3章 用Python模擬“千軍萬馬”去
做性能自動化測試 /93
3.1 Python中模擬多用戶的基礎 /93
3.1.1 實例:如何用多線程來做性能測試 /93
3.1.2 實例:如何用線程池來做性能測試 /94
3.1.3 實例:如何用多進程來做性能測試 /96
3.1.4 實例:如何用進程池來做性能測試 /96
3.1.5 實例:如何將線程與進程結合後做
性能測試 /97
3.1.6 實例:如何用協程來做性能測試 /99
3.2 更適合做性能測試的HTTP包 /101
3.2.1 實例:使用grequests來做性能測試 /101
3.2.2 實例:使用aiohttp來做性能測試 /102
3.3 Python中強大的性能測試
框架Locust /103
3.3.1 Locust常用類 /104
3.3.2 實例:讓Locust飛起來 /106
3.3.3 Locust測試腳本的增強處理 /111
3.3.4 如何在Locust中分佈式多機執行 /116
3.3.5 將Locust的結果與Loadrunner進行
對比 /117
3.3.6 實例:使用FastHttpUser來做性能
測試 /119
3.3.7 實例:自定義擴展grequests來做性能
測試 /122
3.4 如何在多個壓測機中執行
命令 /124
3.5 專為性能測試準備的監控
工具NetData /125
3.6 綜合實例:用Locust做某OSS
服務的性能測試 /127
3.6.1 Locust主測試代碼 /127
3.6.2 壓測結果分析 /130
第4章 用Python輕鬆做HTTP協議的
安全測試 /134
4.1 OWASP DVWA環境的搭建 /134
4.2 如何用Python去發現命令執行
漏洞 /139
4.3 如何發現CSRF漏洞 /143
4.4 如何用Python去發現文件包含
漏洞 /148
4.5 如何用Python去發現上傳文件
漏洞 /152
4.6 如何用Python去發現SQL注入
漏洞 /154
4.7 如何用Python去發現XSS
漏洞 /157
4.8 Mitmproxy的綜合運用 /162
4.8.1 Mitmproxy簡介 /162
4.8.2 Mitmdump的使用方法 /164
4.8.3 實例:Mitmdump悄無聲息地改變
響應內容 /165
4.8.4 實例:Mitmdump結合Sqlmap進行
自動化檢測 /168
4.8.5 實例:Mitmdump批量自動化檢測
越權請求 /172
第5章 用Python做UI自動化回歸
測試 /177
5.1 不好好評估的UI自動化測試,
最後可能變成“雞肋” /177
5.2 UI自動化測試開始於Selenium /178
5.3 元素查找的八種方法 /180
5.3.1 與HTML標籤屬性對應的四種
方法 /180
5.3.2 根據文本信息查找的兩種方法 /185
5.3.3 根據頁面路徑深度查找的兩種
方法 /186
5.4 智能識別元素插件Ranorex 
Selocity /191
5.5 find_相關方法 /193
5.6 Selenium提供的常用方法 /194
5.6.1 實例:對瀏覽器進行控制的
方法和屬性 /194
5.6.2 實例:對網頁控制的方法和屬性 /195
5.6.3 實例:對元素的控制方法和屬性 /196
5.7 輕鬆應對網頁中的自定義
控件 /198
5.7.1 實例:對菜單、導航等元素進行
操作 /198
5.7.2 實例:對單選、複選控件進行操作 /199
5.7.3 實例:對上傳控件進行操作 /200
5.7.4 實例:對下拉框控件進行操作 /202
5.7.5 實例:多標籤和iframe的處理 /204
5.8 使用unittest來管理測試案例 /205
5.8.1 實例:用unittest把測試案例管理
起來 /206
5.8.2 實例:如何在unittest中使用數據
驅動 /206
5.8.3 實例:生成HTML報告並發送 /207
5.9 Page Object設計模式的應用 /208
5.9.1 如何組織Page Object模式的代碼 /208
5.9.2 實例:把Page Object模式應用到登錄
功能中 /209
5.10 更快地執行UI自動化回歸
測試 /211
5.10.1 實例:Selenium Grid多機執行測試
案例 /212
5.10.2 實例:如何在多進程中執行
Selenium Grid /215
5.11 使用增強型框架SeleniumBase來
實現UI自動化測試 /216
參考文獻 /219