《零成本實現Web 自動化測試:基於Selenium WebDriver 和Cucumber》是2015年1月1日出版的圖書,作者是溫素劍。
基本介紹
- 書名:零成本實現Web 自動化測試:基於Selenium WebDriver 和Cucumber
- 作者:溫素劍
- 類別:計算機科學
- 出版社:電子工業出版社
- 出版時間:2015年1月1日
- 頁數:276 頁
- 定價:59 元
- 開本:16 開
- 裝幀:平裝
- ISBN:978-7-121-24823-8
內容簡介,內容提要,目錄,
內容簡介
從目前主流的Web 自動化測試工具入手,由淺入深、全面、細緻地闡述了如何使用開源測試工具來完成Web 自動化測試,便於讀者輕鬆掌握Web 自動化測試的原理、方法和實際操作。它並不是一本講述深奧測試理論的教科書,而是一本實戰類書籍,作者嘗試在書中向讀者演示如何使用Selenium、WebDriver 和Cucumber 搭建起一整套穩定、高效、零成本的自動化測試平台。《零成本實現Web 自動化測試——基於Selenium WebDriver 和Cucumber》以測試Google Gmail 和Test Perfect 為例,提供了完整的Web 自動化測試解決方案。
《零成本實現Web 自動化測試——基於Selenium WebDriver 和Cucumber》是一本Web 自動化測試的專業工具書,也是軟體測試工程師的良師益友,它可作為軟體測試培訓、高等院校軟體相關專業的輔助教材,目標讀者是初級或者有經驗的軟體測試工程師、對提高自動化測試的有效性感到困惑的測試經理,以及有志於從事軟體測試工作的朋友。
內容提要
從目前主流的Web 自動化測試工具入手,由淺入深、全面、細緻地闡述了如何使用開源測試工具來完成Web 自動化測試,便於讀者輕鬆掌握Web 自動化測試的原理、方法和實際操作。它並不是一本講述深奧測試理論的教科書,而是一本實戰類書籍,作者嘗試在書中向讀者演示如何使用Selenium、WebDriver 和Cucumber 搭建起一整套穩定、高效、零成本的自動化測試平台。《零成本實現Web 自動化測試——基於Selenium WebDriver 和Cucumber》以測試Google Gmail 和Test Perfect 為例,提供了完整的Web 自動化測試解決方案。
《零成本實現Web 自動化測試——基於Selenium WebDriver 和Cucumber》是一本Web 自動化測試的專業工具書,也是軟體測試工程師的良師益友,它可作為軟體測試培訓、高等院校軟體相關專業的輔助教材,目標讀者是初級或者有經驗的軟體測試工程師、對提高自動化測試的有效性感到困惑的測試經理,以及有志於從事軟體測試工作的朋友。
目錄
Selenium 和WebDriver 工具篇
第1 章 自動化測試基礎 .............. 2
1.1 初識自動化測試 ... 2
1.1.1 自動化測試是什麼 ................. 2
1.1.2 常見的自動化測試架構 ..... 4
1.1.3 自動化測試的基本流程 ................. 7
1.1.4 自動化測試腳本分類 ................ 9
1.1.5 走出自動化測試認知的誤區 ..... 10
1.2 開源Web 自動化測試 .......... 11
1.2.1 是否選擇開源自動化測試 ...................... 12
1.2.2 使用開源自動化測試工具的優勢 .......... 12
第2 章 Selenium簡介和基礎 ..... 14
2.1 Selenium 簡介 ....... 14
2.1.1 Selenium 組件 ................... 14
2.1.2 Selenium 發展歷程 ........... 16
2.1.3 Selenium 瀏覽器支持情況 ...................... 17
2.2 Selenium 基礎 ....... 18
2.2.1 Selenium 命令——Selenese .................... 18
2.2.2 Selenium 腳本語法 ........... 19
2.2.3 Selenium 測試案例集 ....... 20
2.2.4 常用的Selenium 命令 ...... 20
2.3 小結 ...................... 21
第3 章 Selenium IDE ................. 22
3.1 Selenium IDE 簡介 ...................... 22
3.1.1 安裝Selenium IDE ........... 22
3.1.2 運行Selenium IDE ........... 24
3.2 Selenium IDE 的操作接口 .......... 25
3.2.1 選單欄 ........ 25
3.2.2 工具列 ........ 25
3.2.3 測試案例面板 ................... 26
3.2.4 Log、Reference、UI-Element 和Rollup 面板 ............. 26
3.3 測試案例和測試案例集 .............. 27
3.3.1 創建測試案例 ................... 27
3.3.2 運行測試案例 ................... 29
3.3.3 調試測試案例 ................... 31
3.3.4 測試案例集 ............. 33
3.4 Selenium IDE 功能擴展 .............. 34
3.4.1 用戶擴展 ................. 34
3.4.2 轉換代碼形式 ................... 34
3.5 常見錯誤處理 ....... 35
第4 章 Selenium命令 ................ 38
4.1 驗證頁面元素 ....... 38
4.2 定位頁面元素 ....... 40
4.3 文字模板匹配 ....... 45
4.4 命令使用技巧 ....... 48
4.5 警告框、彈出框以及多視窗 ...... 51
第5 章 Selenium 1.0(Selenium RC) ............. 55
5.1 Selenium 1.0(Selenium RC)簡介 ................... 55
5.2 Selenium RC 基礎 .............. 56
5.2.1 Selenium RC 工作原理 .... 56
5.2.2 Selenium RC 架構 ............ 57
5.2.3 Selenium RC 安裝 ............ 61
5.3 使用Selenium RC .............. 63
5.3.1 從Selenese 到測試程式 ... 63
5.3.2 構建你的測試程式 ........... 68
5.3.3 學習Selenium RC API ..... 74
5.3.4 報告測試結果 ................... 76
5.3.5 為測試加入一些編程邏輯 ...................... 77
5.3.6 Server 選項 .............80
5.3.7 Selenium Server 日誌記錄 ...................... 83
5.3.8 處理HTTPS 和安全彈出對話框 ........... 84
5.3.9 支持其他瀏覽器和瀏覽器配置 .............. 85
5.4 常見錯誤處理 ....... 85
第6 章 Selenium測試案例設計 .............. 91
6.1 測試設計導言 ....... 91
6.2 測試什麼 .............. 91
6.3 驗證結果 .............. 92
6.3.1 斷言vs.驗證 ..................... 93
6.3.2 權衡:assertTextPresent、assertElementPresent、assertText ............. 93
6.4 選擇一個定位策略 ...................... 94
6.4.1 定位動態對象 ................... 94
6.4.2 如何避免在測試中使用複雜的XPath 表達式 ............. 96
6.5 測試AJAX 套用系統 .................. 96
6.6 封裝Selenium 通用函式 ............. 97
6.7 UI 映射 ................. 98
6.8 Page Object 設計模式 ................ 100
6.9 數據驅動測試 ..... 103
6.10 資料庫驗證 ....... 103
第7 章 Selenium用戶擴展 ....... 105
7.1 Selenium 用戶擴展簡介 ............ 105
7.2 Action ................. 105
7.3 Accessor/Assertion ..................... 106
7.4 定位策略 ............ 107
7.5 在Selenium IDE 中使用用戶擴展 .................. 107
7.6 在Selenium RC 中使用用戶擴展 .................... 108
第8 章 Selenium Grid .............. 109
8.1 Selenium Grid 是什麼 ................ 109
8.2 什麼時候使用Selenium Grid .... 110
8.3 Selenium Grid 如何工作——通過中心和節點 ...................... 111
8.3.1 安裝Selenium Grid ........ 111
8.3.2 啟動Selenium Grid ........ 111
8.3.3 通過Selenium Grid 運行測試 .............. 112
8.4 Selenium Grid 配置 .................... 113
8.4.1 中心(hub)配置 ........... 113
8.4.2 節點(Node)配置 ........ 114
8.5 中心(hub)診斷信息 .............. 116
8.6 常見錯誤 ............ 117
第9 章 Selenium 2.0 和WebDriver ................. 118
9.1 WebDriver 基礎 ... 118
9.1.1 WebDriver 如何驅動瀏覽器 ................. 118
9.1.2 WebDriver 和Selenium Server.............. 118
9.1.3 建立Selenium WebDriver 工程 ............ 119
9.1.4 從Selenium RC 遷移到Selenium WebDriver ............ 121
9.1.5 常見問題 ............... 122
9.1.6 Selenium WebDriver API 簡介 .............. 124
9.1.7 Selenium WebDriver API 命令和參數 .. 126
9.2 WebDriver 的各種實現 .............. 138
9.2.1 HtmlUnit Driver .............. 138
9.2.2 Firefox Driver .................. 140
9.2.3 Internet Explorer Driver .. 141
9.2.4 Chrome Driver................. 142
9.2.5 其他Driver ..................... 142
9.3 可選的向後相容:混用WebDriver 和RC 技術 ................... 143
9.3.1 基於WebDriver 的Selenium RC .......... 143
9.3.2 使用Selenium 擴展WebDriver ............ 144
9.4 WebDriver 的高級用法 .............. 144
9.4.1 顯式和隱式等待 ............. 144
9.4.2 遠程WebDriver(Remote WebDriver) ..................... 147
9.4.3 高級用戶互動 ................. 150
9.4.4 改變瀏覽器代理 ............. 151
第10 章 Cucumber 和WebDriver ................... 154
10.1 Cucumber 基礎 .. 154
10.1.1 下載安裝Cucumber ..... 154
10.1.2 五分鐘入門 ................... 155
10.2 Cucumber 與WebDriver 結合 . 157
10.3 採用中文描述的自動化測試 .. 161
自動化測試實戰篇
第11 章 實戰——測試Google Gmail .............. 166
11.1 明確測試範圍 ... 166
11.2 Selenium 測試——登錄Gmail 信箱 .............. 167
11.2.1 使用Selenium IDE 錄製腳本 ............. 167
11.2.2 轉換腳本語言(Java Selenium RC)............. 172
11.3 Selenium 測試——撰寫郵件 ... 177
11.3.1 使用Selenium IDE 錄製腳本 ............. 177
11.3.2 轉換腳本語言(Java Selenium RC) .............181
11.4 Selenium 測試——刪除郵件以及郵件列表 .. 182
11.4.1 使用Selenium IDE 錄製腳本 ............. 182
11.4.2 轉換腳本語言(Java Selenium RC) .............186
11.5 Selenium 測試——郵件存檔 ... 188
11.5.1 使用Selenium IDE 錄製腳本 ............. 188
11.5.2 轉換腳本語言(Java Selenium RC)............. 190
11.6 Selenium 測試——搜尋郵件 ... 194
11.6.1 使用Selenium IDE 錄製腳本 ............. 194
11.6.2 轉換腳本語言(Java Selenium RC) ............. 197
11.7 使用測試案例集來管理Selenium IDE 腳本............. 199
11.8 留給讀者的思考 ...................... 202
第12 章 實戰——測試Test Perfect ................. 203
12.1 明確測試範圍 ... 203
12.2 WebDriver 測試——添加移動設備 ............... 204
12.2.1 通過Ruby 腳本驅動WebDriver ........ 204
12.2.2 將Cucumber 和WebDriver 結合 ....... 210
12.3 WebDriver 測試——新建測試用例 ............... 216
12.4 WebDriver 測試——測試用例運行 ............... 224
12.5 留給讀者的思考 ...................... 230
Selenium 使用幫助篇
第13 章 Selenium 使用幫助 ..... 232
13.1 Selenium 客戶端驅動配置 ..... 232
13.1.1 .NET 客戶端驅動配置 .............. 232
13.1.2 Java 客戶端驅動配置 ................ 234
13.1.3 Python 客戶端驅動配置 ..................... 251
13.2 使用Maven 導入Selenium 2.0 工程 ............. 253
13.2.1 使用Maven 導入Selenium 2.0 工程到Eclipse........ 253
13.2.2 使用Maven 導入Selenium 2.0 工程到IntelliJ ........ 254
前言
我有一個夢想,有一天,我的辦公桌上不再是一片狼藉,整潔的檯面上只有一個大大的紅色按鈕。我每天最重要的工作,就是上班後狠狠地按下紅色按鈕,然後悠閒地泡上一杯西湖龍井,拿起最新一期的《參考訊息》,看看美聯儲是不是又在加印該死的“廢紙”。在我享受生活的同時,一份份準確嚴謹的測試報告就會自動發往開發部門,並抄送到各位領導的信箱中。測試報告中包含最新的軟體版本的缺陷列表,並指出了可接受的缺陷修復時間。剩下的一切都是“傲慢自大”的軟體開發人員的事,多么美妙的一天。
不過夢想永遠都是夢想,就像馬丁·路德·金遇刺身亡42 年後的今天,美國仍然不是人人平等。沒有種族歧視的國家。如果我的夢想有一天變為現實,那么我需要面對的可能不是悠閒的生活,而是一份解聘通知書。因為真到那一天,軟體測試工作就變成掃地大媽都能完成的簡單事情,公司完全可以請一位清潔工來負責我的工作,而不必付出更高的薪水。這真是一個一點也不好笑的笑話,測試人員的終極目標居然是讓自己失去飯碗,不過幸好這一天還遠著呢。
現在,讓我們從夢想世界回到現實中來。現實是殘酷的,筆者所在的測試部門,已經擁有了成千上萬個QTP 自動化測試案例,不過它們僅僅是自動化測試案例而已。這些案例總是執行失敗,而失敗原因也是千奇百怪,既有測試環境不穩定導致的失敗,也有QTP 工具莫名其妙的錯誤。測試工程師投入了大量的精力去維護這些自動化測試案例,可惜效果並不好,自動化測試有的效率依然很低。很多軟體系統的自動化測試效率常年保持在60%左右,怎么辦?如何向領導匯報?如何解釋?
要提高自動化測試的有效性,筆者認為有兩種辦法。
第一,降低自動化測試對象的層次,即採用底層接口自動化測試。一個軟體系統的上層接口可能會經常發生變化,但是底層功能模組間接口、系統間接口的變化卻一定不會很頻繁,除非是遇到軟體重構。這樣做就能在很大程度上避免用戶接口頻繁變化對自動化測試的影響,從而降低維護工作量。零成本實現Web 自動化測試——基於Selenium WebDriver 和Cucumber
第二,採取更可靠的、基於GUI 的自動化測試工具。目前QTP 無疑是使用最廣泛的自動化測試工具,但是實踐中筆者發現它的“錄製/回放”功能很不穩定,經常會發生測試對象無法識別的異常情況,甚至莫名其妙地運行失敗。怎么辦?放棄基於、用於用戶界面的自動化測試?顯然不行,因為底層接口的自動化測試有其自身的局限性。首先,你無法通過它來測試用戶界面;其次,你很難用它來測試軟體系統的完整業務流程。唯一可行的辦法就是尋找一種更可靠、更有效的工具來代替它,筆者在這裡推薦Selenium 和WebDriver 兩種開源自動化測試工具。從筆者目前的實踐來看,它們遠比QTP 更穩定,測試案例的執行速度也更快,使用成本會更低。
寫作背景
最近幾年自動化測試可謂深入人心,如果現在有人去面試軟體測試工程師崗位,而又完全不了解自動化測試,那么他幾乎不可能得到職位。對軟體測試工程師而言,了解自動化測試原理,掌握幾種主流自動化測試軟體,已經變成崗位最基本的要求。對有志於從事軟體測試行業的大學應屆畢業生而言,了解自動化測試也是塊不錯的敲門磚。今年筆者所在的測試部門招聘了兩位實習生,由筆者輔導他們完成一些自動化測試任務。實習結束後他們並沒有與公司簽約,筆者後來與他們溝通才知道,有家公司肯出雙倍的薪水聘用他們,看重的正是他們有自動化測試的工作經驗。由此讀者朋友們不難看出業界對自動化測試的重視程度。
最近幾年“雲計算”一直是很火的IT 辭彙,甚至沾上一點“雲”概念的股票都會一飛沖天。“雲”聽起來很虛幻,但其實就是客戶端加格線計算。今後客戶端再不會有大量的計算任務,計算和存儲都被放在“雲”上。在筆者看來,今後的客戶端應該就是一個瀏覽器,用戶的所有操作都是通過這個瀏覽器來實現的。Google 發布的作業系統Chrome OS 就是基於這一理念設計的。B/S 和C/S 架構的軟體系統,應該會慢慢演變到Browser/Cloud 模式。如此看來,在“雲計算”時代,Web 自動化測試依然很重要,而且會越來越重要。因此,筆者萌生了寫作一本關於Web 自動化測試書籍的想法。
本書內容
本書不是一本講述深奧測試理論的教科書,而是一本實戰類的書籍。筆者想要達到的目標就是,讀者朋友們在認真讀完這本書後,馬上就能在生產實踐中用上所學內容。本書首先介紹基礎的自動化測試理論,然後介紹Selenium 和WebDriver 兩種測試工具,最重要的則是自動化測試實戰篇。在實戰篇中,筆者以測試Google Gmail 和Test Perfect 為例,一步一步地教會讀者如何用Selenium、WebDriver、Cucumber,搭建起一整套穩定、高效、零成本的自動化測試平台。第1章介紹自動化測試基礎,第2 章到第8 章介紹Selenium 自動化測試工具,第9 章介紹Selenium 2.0和WebDriver 自動化測試工具,第10 章介紹怎樣將Cucumber 和WebDriver 結合起來,第11 章和第12 章是自動化測試實戰篇,最後一章是Selenium 使用幫助文檔。
目標讀者
本書的目標讀者是初級或者有一些經驗的軟體測試工程師,以及對提高自動化測試有效性感到困惑的測試經理。本書著重介紹如何使用Selenium WebDriver 和Cucumber 兩種開源自動化測試工具,來構建你的Web 自動化測試體系。
感謝
首先要感謝我的家人,正是由於他們默默的支持,我才能靜下心來寫作。其次要感謝參與本書編著的同事:陳建紅、唐明娟、曾泗維、宋波、袁春梅、劉娟、陳鵬程、劉登勇、陳倩、陽茂、聶娟、唐光傑、劉興翬、谷明。
溫素劍
2014 年10 月7 日