軟件自動化測試實戰解析:基於Python3編程語言

徐西寧

  • 出版商: 機械工業
  • 出版日期: 2021-07-01
  • 定價: $534
  • 售價: 8.5$454
  • 語言: 簡體中文
  • 頁數: 352
  • 裝訂: 平裝
  • ISBN: 711168561X
  • ISBN-13: 9787111685616
  • 立即出貨

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

商品描述

本書由淺入深地對自動化軟件測試進行了闡述,內容涵蓋軟件測試的基礎知識、Python、PyTest、Selenium、
面向對象編程、自動化測試框架的設計要點和測試自動化開發實踐等,
本書內容組織成入門、進階和高階三個逐步提高的版塊,
每個版塊都有實戰編程章節,清晰呈現了技術方案的打磨和改進的過程。

作者簡介

徐西寧,畢業於華中科技大學計算機學院,資深全棧軟件工程師,從事軟件開發和測試工作15年,先後任職於Autodesk、EMC、每銳軟件等公司,在自動化測試框架設計、自動化測試流程優化、持續集成、Web開發等方面有豐富的經驗,是一位活躍的開源軟件和技術分享實踐者。

目錄大綱

序一
序二
前言
第1章 軟件測試基礎 1
1.1 什麼是軟件測試1
1.2 軟件測試的類型2
1.2.1 按測試對象的顆粒度劃分2
1.2.2 按內部邏輯的透明度劃分3
1.2.3 按執行階段劃分4
1.2.4 按執行方式劃分4
1.3 敏捷開發模式5
1.4 測試經濟學6
1.4.1 測試是必需的嗎6
1.4.2 放棄追求完美7
1.4.3 關注核心功能8
1.4.4 等價類劃分8
1.4.5 邊界值分析9
1.4.6 用機器取代人工10
1.5 自動化測試不容易12
1.6 本章小結12

第2章 Python入門 13
2.1 世界上最好的兩種編程語言13
2.2 別問我怎麼安裝14
2.3 解釋器是什麼14
2.4 初識變量16
2.5 函數基礎17
2.6 代碼縮進和代碼塊18
2.7 字符串19
2.7.1 拼接和格式化21
2.7.2 下標訪問22
2.7.3 更多常見操作23
2.8 數值類型26
2.8.1 數值類型的基本運算27
2.8.2 浮點數的常見運算29
2.9 布爾值和條件判斷32
2.9.1 條件判斷的組合33
2.9.2 條件判斷的短路34
2.9.3 條件判斷的鍊式表達35
2.10 日期和時間36
2.10.1 生成時間對象37
2.10.2 格式化日期字符串38
2.11 list基礎39
2.11.1 下標訪問40
2.11.2 插入元素40
2.11.3 刪除元素41
2.11.4 簡單排序42
2.11.5 更多常見操作43
2.11.6 遍歷44
2.11.7 元素類型46
2.12 dict基礎47
2.12.1 讀取48
2.12.2 插入和更新49
2.12.3 合併50
2.12.4 刪除51
2.12.5 遍歷53
2.12.6 key的選擇55
2.13 循環56
2.13.1 while循環57
2.13.2 for循環58
2.13.3 多重循環59
2.13.4 循環的終止60
2.13.5 遞歸63
2.14 異常63
2.14.1 基本語法64
2.14.2 異常的類型67
2.14.3 捕獲特定類型的異常68
2.14.4 主動拋出異常71
2.15 斷言72
2.15.1 assertion72
2.15.2 AssertionError73
2.15.3 assert73
2.16 pip的基礎用法74
2.17 本章小結76

第3章 PyTest入門 77
3.1 框架是什麼77
3.2 測試框架77
3.2.1 篩選測試源文件77
3.2.2 篩選測試函數78
3.2.3 測試函數的啟動79
3.2.4 成功還是失敗80
3.2.5 測試報告80
3.2.6 測試前的環境配置81
3.2.7 測試後的現場清理81
3.2.8 核心功能的擴充82
3.2.9 主流測試框架82
3.3 PyTest是什麼83
3.4 自動發現84
3.4.1 自動發現測試源文件84
3.4.2 自動發現測試函數84
3.5 使用斷言85
3.6 測試結果解讀86
3.7 測試報告88
3.8 本章小結89

第4章 Selenium入門 90
4.1 Selenium是什麼90
4.1.1 Selenium IDE91
4.1.2 Selenium Grid97
4.1.3 Web Driver98
4.2 Selenium的安裝配置99
4.3 用Web Driver驅動網頁100
4.4 頁面元素的定位102
4.4.1 簡單定位102
4.4.2 CSS定位107
4.5 頁面元素的常見操作108
4.6 本章小結112

第5章 實戰12306之入門篇 113
5.1 測試用例設計文檔113
5.2 代碼實戰114
5.3 代碼解析116
5.3.1 審視測試邏輯116
5.3.2 用變量澄清代碼邏輯117
5.3.3 DRY原則118
5.3.4 改善代碼可讀性120
5.4 本章小結122

第6章 Python進階 123
6.1 基本數據類型的深入了解123
6.1.1 轉義字符123
6.1.2 字符串的不可變性124
6.1.3 深入了解布爾類型126
6.1.4 set128
6.1.5 tuple131
6.1.6 整型數的設計很優秀132
6.1.7 浮點數為什麼算不准133
6.1.8 Decimal,準! 134
6.2 深入了解函數137
6.2.1 函數的調用137
6.2.2 函數的返回138
6.2.3 不支持函數重載139
6.2.4 默認參數141
6.2.5 可變參數142
6.3 關於時間144
6.3.1 時間差144
6.3.2 UTC時間146
6.4 面向對象基礎148
6.4.1 面向對像到底是什麼意思148
6.4.2 類和對象148
6.4.3 初始化函數149
6.5 模塊是什麼151
6.6 高級排序153
6.6.1 list的排序153
6.6.2 dict的排序157
6.6.3 自定義對象序列的排序159
6.7 複雜的遍歷場景160
6.7.1 一邊遍歷一邊修改160
6.7.2 一邊遍歷一邊刪除162
6.8 文件和文件系統操作基礎165
6.8.1 路徑的正確操作方式165
6.8.2 文件系統的基本操作168
6.8.3 文本文件的讀169
6.8.4 文本文件的寫170
6.8.5 文本文件的關閉171
6.8.6 CSV文件的讀寫172
6.8.7 Excel文件的讀寫174
6.9 淺拷貝與深拷貝176
6.10 深入了解import179
6.11 變量的作用域182
6.12 局部變量和全局變量的衝突185
6.13 __name__和__main__186
6.14 註釋188
6.15 pip的工程用法190
6.16 本章小結192

第7章 PyTest進階 193
7.1 自動發現測試類193
7.2 測試集合194
7.3 標記195
7.3.1 忽略執行195
7.3.2 條件執行197
7.3.3 期待失敗的發生199
7.3.4 限時執行201
7.3.5 自定義標籤201
7.4 參數化測試204
7.5 測試用例的ID206
7.6 Fixture初探207
7.7 PyTest的插件機制209
7.7.1 Hook函數209
7.7.2 PyTest插件210
7.7.3 多級conftest協同210
7.7.4 第三方插件212
7.8 本章小結213

第8章 Selenium進階 214
8.1 頁面元素的XPath定位214
8.2 頁面元素的等待215
8.2.1 隱式等待216
8.2.2 顯式等待216
8.3 Selenium的局限218
8.4 本章小結219

第9章 實戰12306之進階篇 220
9.1 PO設計模式220
9.2 更有針對性的顯式等待223
9.3 更健壯的代碼邏輯224
9.4 函數單一職責原則225
9.5 測試單一職責原則226
9.6 本章小結227

第10章 Python高階 228
10.1 面向對象設計思想228
10.1.1 繼承228
10.1.2 封裝230
10.1.3 多態232
10.2 對類的深入了解233
10.2.1 析構函數233
10.2.2 訪問權限控制235
10.2.3 self不是關鍵字236
10.2.4 實例屬性和類屬性239
10.2.5 成員方法和類方法240
10.2.6 類方法和靜態方法242
10.3 重寫244
10.3.1 如何重寫244
10.3.2 重寫中的代碼復用247
10.3.3 重寫__str__方法249
10.3.4 重寫運算符249
10.4 深入了解函數252
10.4.1 函數也是一種對象252
10.4.2 內嵌函數254
10.4.3 函數裝飾器255
10.4.4 不只是會裝飾259
10.4.5 用Property裝飾器改進設計261
10.5 None是什麼264
10.6 Enum是什麼265
10.7 Python不支持常量267
10.8 隨機數據和時間戳268
10.9 自定義異常類型270
10.10 需要用強類型嗎271
10.11 日誌272
10.12 本章小結277

第11章 測試框架的設計和演進 278
11.1 代碼的可讀性278
11.1.1 統一的代碼風格279
11.1.2 醜陋的函數名280
11.1.3 糟糕的變量名282
11.2 友好的函數設計283
11.2.1 簡潔的接口283
11.2.2 操作狀態的處理285
11.2.3 不要過度設計287
11.2.4 防呆288
11.3 有效管理測試資源290
11.3.1 封裝微服務290
11.3.2 統一的資源入口295
11.3.3 資源的延遲加載296
11.3.4 保證資源的釋放298
11.3.5 支持多環境測試300
11.3.6 容忍不穩定的測試環境302
11.4 不要引入getter和setter304
11.5 一次收集多個斷言錯誤306
11.6 日誌的支持和改進308
11.7 減少重複執行的負面影響310
11.8 數據驅動測試的設計311
11.8.1 讓PyTest支持中文ID311
11.8.2 更優雅的參數化測試314
11.8.3 用YML取代JSON316
11.8.4 面向對象的測試數據317
11.9 接受一定程度的重複代碼319
11.10 本章小結320

第12章 實戰12306之高階篇 321
12.1 就近原則321
12.2 用Enum澄清設計意圖322
12.3 支持鍊式表達324
12.4 簡化函數名325
12.5 封裝複雜邏輯326
12.6 單例設計模式328
12.7 異常和斷言的使用場景的區別331
12.8 測試用例的維護333
12.9 本章小結334
術語表 335
參考文獻 336
後記 337