一書學會自動化測試,從入門到入行

tynam-yang發表於2020-05-21

推薦書籍《Python Web自動化測試入門與實戰》

Python Web自動化測試入門與實戰,從入門到入行
本書由一線測試工程師結合工作實踐精心編撰。全書基於Python語言,從環境搭建、基礎知識、常用框架、專案實戰、持續整合等方面詳細介紹了Web自動化測試的知識。全書共三篇14章,一篇(1~7章)為基礎篇,介紹Python語言基礎、Selenium和WebDriver的使用以及兩個流行的單元測試框架UnitTest和Pytest;二篇(8章~10章)為實踐篇,主要以資料驅動模型和PO模型為例介紹自動化測試專案的流程和應用;三篇(11章~14章)為卓異篇,介紹了測試人員如何擴充自己的知識面、提高專案程式碼質量的建議以及一些與自動化測試相關的面試題。 本書技術先進,通俗易懂,示例豐富,特別適合於想入行自動化測試崗位的初學者和在校學生,也適合掌握了一定的測試基礎知識希望快速提升實戰能力的讀者使用。

購買地址
京東:https://item.jd.com/12656245.html
天貓:https://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.131.17ad3091FI6vea&id=618449194588&skuId=4611686636876582492&user_id=651359430&cat_id=2&is_b=1&rn=bf2da7ab0e99755e8622664c081020f5
噹噹:http://product.dangdang.com/1621250465.html

圖書資訊

定價:79元
印次:1-1
ISBN:9787302552956
出版日期:2020.06.01
印刷日期:2020.04.23

作者簡介
楊定佳,英文名Tynam,從事軟體測試工作多年,目前就職於某外企。在自動化測試設計、框架搭建和開發中具有自己獨特的見解。長期在IT部落格圈分享軟體測試與開發技術相關博文

前 言
隨著網際網路的快速發展,軟體研發模型越來越完善,軟體質量也越來越受到各公司的重視,在這種情況下,軟體測試技術特別是自動化測試技術在產品研發過程中扮演了極為重要的角色。自動化測試能夠快速、全面地對軟體進行測試,從而在保證產品質量的前提下進行軟體的快速迭代。與此同時,軟體測試崗位吸引了大量從業者。本書正是為滿足初入自動化測試行業的從業者的需求而精心編撰。

本書基於Python語言編寫,對於Web自動化測試相關技術做了整體詳細的介紹,從基礎到提升、從理論到實踐、從單個知識點到專案運用,既可以讓讀者快速上手又能夠運用於實際專案,從而提高讀者的實戰技能。

本書結構
本書內容分為3大篇,共計14章。各部分內容概述如下:

基礎篇(第1章~第7章)—自動化測試基礎知識。本篇主要講述自動化測試人員需要掌握的基本知識,從程式碼使用層面進行介紹,包括Python基礎、WebDriver API的使用及單元測試框架等知識。

第1章~第3章是自動化測試的入門知識。第1章為開始自動化工作前的準備工作—環境搭建。第2章和第3章分別介紹Python的使用和WebDriver API的使用,掌握了基礎知識後就能夠編寫一些簡單的自動化測試指令碼。

第4章~第7章是學習完第1章~第3章入門知識後的進階知識。第4章和第6章分別介紹了經常使用的兩種單元測試框架UnitTest和Pytest,學完單元測試框架便可以對專案有個基本的構思。第5章介紹Selenium Grid分散式執行測試用例(好的專案還需要搭配高速的執行效率)。第7章介紹了Python的一些常用模組。

基礎篇主要是為自動化測試實踐運用打下牢固的基礎,適合初學自動化測試的人員學習。

實踐篇(第8章~第10章)—自動化測試專案實戰。

實踐篇是在掌握了基礎篇的基本知識後,在自動化測試專案的應用。從專案層面進行介紹,以資料驅動模型和PO模型為基礎進行實戰練習,然後進行持續整合操作。

第8章使用資料驅動模型,從專案解析、框架搭建、用例組織、資料操作等幾個方面進行介紹,主要使讀者對資料驅動模型有一個認識,該模型在實際專案中會被經常使用。

第9章使用PO模型,以一個簡單的後臺管理系統從專案解析、框架搭建、常用結構封裝、頁面封裝、用例組織、設定專案入口等幾個方面進行介紹。很多公司在專案中都會以PO模型為基礎,混合資料驅動模型和其他的一些方式進行專案操作,建議讀者對本章內容進行深入的學習。

第10章介紹了目前最流行的持續整合工具Jenkins,對第9章產生的專案測試指令碼進行持續整合,從專案建立、任務定時、郵件傳送等幾個方面進行實戰應用。

本篇屬於專案實踐篇,適合具有一定基礎的自動化測試人員學習。學完實踐篇,在專案解析、自動化框架搭建、模組封裝、用例組織、測試報告生成和持續整合上,讀者已經有一定程度的認知,由此便可以在中小型專案上進行實際操作。

卓異篇(第11章~第14章)—擴充知識面並提高專案質量。

卓異篇主要用來提高讀者的知識面,一個完整的自動化測試專案不只是寫好測試指令碼,還需要一些輔助的知識技能,本篇將介紹6種測試模型、如何寫一手高質量的程式碼和以GitHub為例講解Git的基本使用,此外,還介紹了一些初級測試人員求職必備的面試題。

第11章介紹的是5種基本自動化測試模型,即線性模型、模組化驅動模型、資料驅動模型、關鍵字驅動模型及行為驅動模型。

第12章介紹如何提高自己的編碼質量,從編碼規範、專案層次結構、個人學習幾個方面進行說明。

第13章介紹了一個開源的分散式版本控制系統Git,並以GitHub為例介紹Git命令的使用。

第14章精選了一些常見的自動化測試經典面試題,涵蓋Python、Selenium和開放性三個方面,以幫助有求職需求的讀者應對面試。

卓異篇旨在擴充知識,不僅適合自動化測試人員,對於從事測試工作的從業者也同樣適合。

本書特色
本書的特點主要體現在以下幾方面:

  • 內容編排循序漸進,從零基礎開始到框架結構在專案中應用,針對Web自動化測試新手量身打造。

  • 知識點全面,涵蓋了Web自動化測試體系中的大部分知識點。從基礎知識到框架結構、持續整合等都進行了講解。

  • 理論與應用結合,知識點講解中整合了許多示例進行演示說明。

  • 技術新,本書所講解的知識都是目前比較流行的,用到的技術比較新。

  • 程式碼豐富,實用性和系統性非常強。

  • 示例程式碼開源,參考附錄可獲取開發示例原始碼。

  • 專案實戰應用,學完基礎知識,可以在專案中進行實戰練習,即學即用,迅速獲得專案經驗。

  • 結合筆者實際經驗進行示例講解。

  • 擴充套件性,學完本書後不但會運用本書技術還能夠寫出高質量的程式碼,並應對求職面試。

目標讀者
本書主要適合以下讀者:

  • 希望進入自動化測試行業的人員。

  • 在校學生。

  • 自動化測試零基礎的測試從業者。

  • 有一定基礎希望提升自己的測試從業者。

  • 培訓機構學員。

希望讀者通過閱讀本書都能夠快速進入Web自動化測試領域,對Web自動化測試有一個清晰地理解,並且具備承擔Web自動化測試開發的能力。

由於編者水平所限,書中難免存在錯誤或解釋不到位的地方,懇請廣大讀者批評指正。

聯絡郵箱:tynam.yang@gmail.com。

2019年12月

圖書目錄
第一篇 基礎篇

第1章 學習環境的搭建... 1

1.1 環境搭建... 1

1.1.1 Selenium簡介... 2

1.1.2 Python簡介... 3

1.1.3 Python的安裝... 5

1.1.4 環境變數的設定... 6

1.1.5 Selenium的安裝... 7

1.1.6 瀏覽器驅動的安裝... 8

1.1.7 PyCharm的安裝... 12

1.2 開始你的第一個專案... 15

第2章 Python基礎... 18

2.1 基礎語法... 18

2.1.1 列印... 18

2.1.2 編碼... 19

2.1.3 資料型別... 20

2.1.4 變數... 21

2.1.5 註釋... 21

2.1.6 縮排... 22

2.2 運算子... 22

2.2.1 算術運算子... 22

2.2.2 比較運算子... 23

2.2.3 邏輯運算子... 23

2.2.4 Is 與 ==. 24

2.3 條件語句... 24

2.3.1 單項判斷... 25

2.3.2 雙向判斷... 25

2.3.3 多項判斷... 25

2.4 迴圈語句... 26

2.4.1 for語句... 26

2.4.2 while語句... 27

2.4.3 continue和break. 28

2.5 列表... 28

2.5.1 建立列表... 28

2.5.2 獲取元素... 29

2.5.3 新增元素... 29

2.5.4 刪除元素... 29

2.5.5 列表切片... 30

2.5.6 其他操作... 31

2.6 元組... 31

2.6.1 建立元組... 31

2.6.2 獲取元素... 31

2.6.3 拼接元組... 32

2.6.4 刪除元組... 32

2.6.5 其他操作... 32

2.7 字典... 33

2.7.1 建立字典... 33

2.7.2 獲取元素... 33

2.7.3 修改元素... 33

2.7.4 刪除元素... 34

2.7.5 其他操作... 34

2.8 集合... 34

2.8.1 建立集合... 35

2.8.2 新增元素... 35

2.8.3 移除元素... 35

2.8.4 其他操作... 36

2.9 推導式... 36

2.9.1 列表推導式... 36

2.9.2 字典推導式... 37

2.9.3 集合推導式... 37

2.10 生成器... 38

2.10.1 建立生成器... 38

2.10.2 send方法... 39

2.11 迭代器... 40

2.11.1 可迭代物件... 40

2.11.2 建立迭代器... 40

2.12 函式... 41

2.12.1 函式... 41

2.12.2 引數... 42

2.12.3 匿名函式... 45

2.12.4 引數型別... 45

2.12.5 返回值型別... 46

2.13 類和物件... 46

2.13.1 建立類... 46

2.13.2 建立例項物件... 47

2.13.3 類的私有化... 48

2.13.4 類繼承... 49

2.13.5 類的重寫... 51

2.14 模組... 52

2.14.1 模組的分類... 52

2.14.2 模組的匯入... 52

2.15 作用域... 53

2.16 異常機制... 54

2.16.1 try-except 54

2.16.2 else. 55

2.16.3 finally. 56

2.17 init.py檔案... 56

2.18 Python實用技巧... 57

第3章 Selenium WebDriver 62

3.1 WebDriver 簡介... 62

3.1.1 WebDriver的特點... 62

3.1.2 常用WebDriver 63

3.2 原始碼中查詢元素... 63

3.2.1 檢視網頁原始碼... 63

3.2.2 查詢元素的屬性... 64

3.3 元素定位... 65

3.3.1 id定位... 68

3.3.2 class定位... 68

3.3.3 name定位... 69

3.3.4 tag定位... 70

3.3.5 xPath定位... 70

3.3.6 link定位... 71

3.3.7 Partial link定位... 72

3.3.8 CSS選擇器定位... 72

3.3.9 By定位... 73

3.3.10 確認元素的唯一性... 74

3.4 定位一組元素... 76

3.5 瀏覽器操作... 78

3.5.1 瀏覽器最大化... 78

3.5.2 設定瀏覽器的寬和高... 78

3.5.3 訪問網頁... 78

3.5.4 瀏覽器後退... 79

3.5.5 瀏覽器前進... 79

3.5.6 重新整理頁面... 80

3.5.7 關閉瀏覽器當前視窗... 80

3.5.8 結束程式... 80

3.5.9 獲取頁面 title. 81

3.5.10 獲取當前頁面的URL. 81

3.5.11 獲取頁面原始碼... 82

3.5.12 切換瀏覽器視窗... 83

3.5.13 滾動條操作... 86

3.6 物件操作... 88

3.6.1 單擊物件... 89

3.6.2 輸入內容... 89

3.6.3 清空內容... 90

3.6.4 提交表單... 90

3.6.5 獲取文字內容... 90

3.6.6 獲取物件屬性值... 91

3.6.7 物件顯示狀態... 91

3.6.8 物件編輯狀態... 94

3.6.9 物件選擇狀態... 95

3.7 鍵盤操作... 96

3.7.1 send_keys 操作... 96

3.7.2 keyUp/keyDown 操作... 98

3.8 滑鼠操作... 99

3.8.1 滑鼠右擊... 99

3.8.2 滑鼠雙擊... 99

3.8.3 滑鼠懸停... 100

3.8.4 滑鼠拖放... 100

3.8.5 滑鼠其他事件... 101

3.9 下拉框操作... 101

3.10 特殊Dom結構操作... 103

3.10.1 Windows彈窗... 103

3.10.2 非Windows彈窗... 106

3.10.3 frame與iframe. 108

3.11 檔案上傳操作... 110

3.11.1 直接上傳... 110

3.11.2 使用AutoIt上傳... 112

3.11.3 使用WinSpy上傳... 115

3.12 檔案下載操作... 119

3.12.1 手動修改... 119

3.12.2 通過options修改... 119

3.13 WebDriver的高階特性... 120

3.13.1 cookie操作... 120

3.13.2 JavaScript呼叫... 122

3.13.3 螢幕截圖... 122

3.14 時間等待... 123

3.14.1 強制等待... 123

3.14.2 隱式等待... 124

3.14.3 顯式等待... 124

3.15 其他設定... 125

3.15.1 限制頁面載入時間... 125

3.15.2 獲取環境資訊... 126

3.15.3 非W3C標準命令... 127

3.16 配置Chrome瀏覽器... 127

3.17 SSL證照錯誤處理... 129

第4章 UnitTest測試框架... 131

4.1 UnitTest簡介... 131

4.2 TestFixture. 132

4.3 TestCase. 133

4.4 斷言Assert 135

4.5 TestSuit 137

4.5.1 TestSuite直接構建測試集... 137

4.5.2 addTest( )構建測試集... 138

4.5.3 addTests( )構建測試集... 139

4.5.4 skip裝飾器... 139

4.6 TestLoader 140

4.7 TestRunner 142

4.8 生成HTML報告... 143

第5章 Selenium Grid. 145

5.1 Selenium Grid簡介... 145

5.2 Selenium Grid的工作原理... 145

5.3 Selenium Grid測試環境的搭建... 146

5.3.1 檔案準備... 146

5.3.2 部署Hub節點... 147

5.3.3 部署Node節點... 148

5.4 測試指令碼開發... 149

5.4.1 指定Node節點... 149

5.4.2 指定Hub地址... 150

第6章 Pytest測試框架... 152

6.1 Pytest簡介... 152

6.2 Console引數... 154

6.2.1 例項初體驗... 154

6.2.2 -v引數... 155

6.2.3 -h引數... 156

6.2.4 其他引數... 156

6.3 mark標記... 157

6.3.1 標記測試函式... 157

6.3.2 示例說明... 158

6.3.3 直接標記... 163

6.3.4 模糊匹配標記... 165

6.3.5 使用mark自定義標記... 166

6.4 韌體 Fixture. 167

6.4.1 Fixture的使用... 167

6.4.2 Fixure的作用域... 168

6.4.3 autouse(自動使用)... 170

6.4.4 yield的使用... 171

6.4.5 共享Fixture功能... 173

6.4.6 引數化... 175

6.4.7 內建Fixture. 176

6.5 Pytest外掛... 182

6.5.1 外掛的安裝與解除安裝... 182

6.5.2 檢視活動外掛... 183

6.5.3 外掛的登出... 184

6.6 Allure測試報告... 184

6.6.1 Allure的安裝... 184

6.6.2 指令碼應用... 186

6.6.3 報告生成... 186

第7章 Python指令碼開發常用模組... 189

7.1 日期和時間模組time和datetime. 189

7.2 檔案和目錄模組os 190

7.3 系統功能模組sys 191

7.4 匯入第三方模組pip. 192

7.5 郵件模組smtplib. 195

7.5.1 開啟郵箱SMTP服務... 195

7.5.2 smtplib模組的使用... 196

7.6 日誌模組logging. 199

7.7 CSV檔案讀寫模組csv. 201

7.8 Excel操作模組openpyxl 203

7.9 MySQL資料庫操作包pymysql 205

7.9.1 簡單使用... 206

7.9.2 獲取查詢資料... 207

7.9.3 增刪改資料... 209

7.10 JSON資料... 210

7.10.1 JSON語法... 210

7.10.2 Python讀寫JSON.. 211

7.11 多執行緒模組threading. 212

第二篇 實踐篇

第8章 資料驅動模型及專案應用... 215

8.1 資料驅動簡介... 215

8.2 ddt的使用... 216

8.2.1 ddt的安裝... 216

8.2.2 ddt的常用方法... 216

8.2.3 例項... 217

8.3 專案解析... 218

8.4 框架搭建... 220

8.5 設計測試用例... 221

8.6 資料檔案操作... 222

8.7 測試用例生成... 225

8.7.1 Excel資料處理... 225

8.7.2 測試步驟... 226

8.7.3 斷言處理... 227

8.7.4 使用ddt生成測試用例... 228

8.8 測試執行... 229

第9章 PO模型——一個測試專案的實現... 231

9.1 專案解析... 231

9.1.1 主頁... 232

9.1.2 關於我們頁面... 233

9.1.3 退出登入... 233

9.2 框架搭建... 233

9.3 配置檔案... 235

9.4 常用結構的封裝... 236

9.4.1 判斷元素存在... 236

9.4.2 Tab切換... 236

9.4.3 多級選單... 239

9.4.4 表格結構... 241

9.4.5 分頁... 244

9.5 頁面封裝... 246

9.5.1 基礎頁面... 246

9.5.2 登入頁面... 248

9.5.3 主頁頁面... 251

9.5.4 關於我們頁面... 257

9.5.5 退出登入功能... 257

9.6 測試用例生成... 257

9.6.1 登入功能的測試用例... 257

9.6.2 主頁頁面測試用例... 258

9.6.3 關於我們頁面的測試用例... 260

9.6.4 退出登入功能的測試用例... 260

9.7 測試用例的組織... 261

9.8 設定專案入口... 262

第10章 持續整合在自動化測試中的應用... 264

10.1 Jenkins的安裝... 264

10.1.1 Jenkins的下載... 264

10.1.2 安裝... 265

10.1.3 建立管理員使用者... 267

10.2 建立專案... 267

10.3 任務定時... 269

10.3.1 任務定時構建的設定... 269

10.3.2 設定說明... 270

10.3.3 構建例項... 271

10.4 郵件傳送... 271

10.4.1 外掛安裝... 271

10.4.2 HTML 報告配置... 273

10.4.3 郵件配置... 275

第三篇 卓異篇

第11章 自動化測試模型... 279

11.1 自動化測試模型簡介... 279

11.2 線性模型... 281

11.3 模組化驅動模型... 282

11.4 資料驅動模型... 282

11.5 關鍵字驅動模型... 282

11.6 混合驅動模型... 283

11.7 行為驅動模型... 283

11.7.1 安裝Behave. 284

11.7.2 Behave的使用... 286

11.7.3 執行... 288

11.7.4 生成測試報告... 289

第12章 高質量程式碼的編寫... 291

12.1 編碼規範... 291

12.2 分層與結構... 294

12.3 閱讀原始碼的技巧... 295

12.3.1 分析層次... 295

12.3.2 分析結構... 296

12.3.3 分析具體檔案... 296

12.4 持續學習... 298

第13章 用Git管理專案... 299

13.1 Git簡介... 299

13.2 安裝Git 300

13.3 Git的配置... 301

13.3.1 配置使用者資訊... 301

13.3.2 文字編輯器配置... 301

13.3.3 配置差異分析工具... 301

13.3.4 檢視配置資訊... 302

13.4 常用命令... 302

13.5 GitHub. 304

13.5.1 賬號註冊... 304

13.5.2 建立倉庫... 306

13.5.3 上傳專案... 307

13.5.4 Jenkins與Git 308

第14章 精選面試題... 310

14.1 Python題... 310

14.2 Selenium題... 317

14.3 開放性題... 321

附錄1 示例程式碼... 324

附錄2 專案搭建... 327

參考文獻... 330

相關文章