本書從Python基礎入手,系統(tǒng)講解了使用Python語言來做接口自動化測試、性能自動化測試、安全測試以及功能自動化回歸測試。
全書由淺入深,系統(tǒng)化地將作者多年測試開發(fā)工作中遇到的問題、解決方案等進行了實例化的闡述,書中豐富的實例代碼可以直接在軟件的各個自動化測試場景中使用。
作者針對近年來企業(yè)對測試開發(fā)崗位的需求傾力打造了此書,希望借由此書的出版能夠使更多的讀者更好地掌握Python測試開發(fā)的技能,并找到更理想的軟件測試工作。
本書附贈全部測試實例源代碼文件及Python軟件測試核心知識點精講視頻。本書適合從事軟件測試工作的技術人員及希望從事軟件測試的專業(yè)人員閱讀,也適合計算機、軟件工程、自動化等相關專業(yè)的學生與老師參考。
前言
第1章 測試工程師需要掌握的
Python基礎 /1
1.1 讓Python飛一會兒 /1
1.2 測試工程師常用到的數(shù)據(jù)類型 /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 循環(huán)語句 /25
1.4.1 實例:從無限循環(huán)中逃離 /26
1.4.2 實例:用for遍歷字符串、列表、元組、
字典 /26
1.5 函數(shù) /27
1.5.1 實例:登錄過程的函數(shù)模擬 /28
1.5.2 實例:抽獎游戲的函數(shù)模擬 /28
1.6 異常的處理 /29
1.7 模塊和類 /29
1.7.1 模塊 /29
1.7.2 類 /30
1.8 裝飾器 /33
1.8.1 實例:在函數(shù)中定義 /33
1.8.2 實例:給每一個測試函數(shù)打印執(zhí)行
時間 /34
第2章 用Python開始做接口自動化
測試 /36
2.1 HTTP協(xié)議與接口測試 /36
2.1.1 快速掌握HTTP協(xié)議 /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 實例:關聯(lián)參數(shù)的處理 /46
2.4.3 實例:如何在多個請求的函數(shù)中傳遞
關聯(lián)參數(shù) /46
2.4.4 實例:如何在多個請求的類中傳遞關聯(lián)
參數(shù) /47
2.5 如何訪問接口測試中無所不在的
數(shù)據(jù)存儲 /49
2.5.1 實例:如何訪問數(shù)據(jù)庫 /49
2.5.2 實例:用ORM訪問數(shù)據(jù)庫 /50
2.5.3 實例:對接口返回的數(shù)據(jù)增加數(shù)據(jù)庫
檢查 /51
2.5.4 實例:如何訪問MongoDB緩存庫 /52
2.5.5 實例:如何訪問Redis緩存 /53
2.5.6 實例:對接口返回的內(nèi)容增加MongoDB
的檢查 /53
2.6 logbook:增強性日志包 /55
實例:在接口測試中增加日志邏輯 /56
2.7 pytest:優(yōu)雅地檢查接口測試的
結(jié)果 /57
2.7.1 用pytest對接口返回的內(nèi)容進行
檢查 /58
2.7.2 常用的pytest.mark方法 /59
2.7.3 一起來測試多個測試數(shù)據(jù)吧 /62
2.7.4 pytest的fixture固件 /66
2.7.5 pytest常用第三方插件 /72
2.8 匯報接口測試的結(jié)果 /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請求時
如何調(diào)用JS函數(shù) /80
2.10.4 接口測試中常見的加解密處理 /80
2.11 綜合實例:微型HTTP接口
自動化測試代碼的實現(xiàn) /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 實例:如何將線程與進程結(jié)合后做
性能測試 /97
3.1.6 實例:如何用協(xié)程來做性能測試 /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中分布式多機執(zhí)行 /116
3.3.5 將Locust的結(jié)果與Loadrunner進行
對比 /117
3.3.6 實例:使用FastHttpUser來做性能
測試 /119
3.3.7 實例:自定義擴展grequests來做性能
測試 /122
3.4 如何在多個壓測機中執(zhí)行
命令 /124
3.5 專為性能測試準備的監(jiān)控
工具NetData /125
3.6 綜合實例:用Locust做某OSS
服務的性能測試 /127
3.6.1 Locust主測試代碼 /127
3.6.2 壓測結(jié)果分析 /130
第4章 用Python輕松做HTTP協(xié)議的
安全測試 /134
4.1 OWASP DVWA環(huán)境的搭建 /134
4.2 如何用Python去發(fā)現(xiàn)命令執(zhí)行
漏洞 /139
4.3 如何發(fā)現(xiàn)CSRF漏洞 /143
4.4 如何用Python去發(fā)現(xiàn)文件包含
漏洞 /148
4.5 如何用Python去發(fā)現(xiàn)上傳文件
漏洞 /152
4.6 如何用Python去發(fā)現(xiàn)SQL注入
漏洞 /154
4.7 如何用Python去發(fā)現(xiàn)XSS
漏洞 /157
4.8 Mitmproxy的綜合運用 /162
4.8.1 Mitmproxy簡介 /162
4.8.2 Mitmdump的使用方法 /164
4.8.3 實例:Mitmdump悄無聲息地改變
響應內(nèi)容 /165
4.8.4 實例:Mitmdump結(jié)合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 根據(jù)文本信息查找的兩種方法 /185
5.3.3 根據(jù)頁面路徑深度查找的兩種
方法 /186
5.4 智能識別元素插件Ranorex
Selocity /191
5.5 find_相關方法 /193
5.6 Selenium提供的常用方法 /194
5.6.1 實例:對瀏覽器進行控制的
方法和屬性 /194
5.6.2 實例:對網(wǎng)頁控制的方法和屬性 /195
5.6.3 實例:對元素的控制方法和屬性 /196
5.7 輕松應對網(wǎng)頁中的自定義
控件 /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中使用數(shù)據(jù)
驅(qū)動 /206
5.8.3 實例:生成HTML報告并發(fā)送 /207
5.9 Page Object設計模式的應用 /208
5.9.1 如何組織Page Object模式的代碼 /208
5.9.2 實例:把Page Object模式應用到登錄
功能中 /209
5.10 更快地執(zhí)行UI自動化回歸
測試 /211
5.10.1 實例:Selenium Grid多機執(zhí)行測試
案例 /212
5.10.2 實例:如何在多進程中執(zhí)行
Selenium Grid /215
5.11 使用增強型框架SeleniumBase來
實現(xiàn)UI自動化測試 /216
參考文獻 /219