內容介紹
基本信息
| 書名: | Selenium自動化測試指南 |
| 作者: | 趙卓 | 開本: | |
| YJ: | 42 | 頁數: | |
| 現價: | 見1;CY=CY部 | 齣版時間 | 2013-09-01 |
| 書號: | 9787115315342 | 印刷時間: | |
| 齣版社: | 人民郵電齣版社 | 版次: | |
| 商品類型: | 正版圖書 | 印次: | |
內容提要 作者簡介 趙卓,軟件開發齣身,項目開發經驗豐富,同時兼修各種自動化測試技術。D4 屆中國成都GJ軟件設計大賽“ZJ設計奬”得主。譯作有《Visual Studio 2010 軟件測試指南》和《快速編碼: 高效使用Microsoft Visual Studio》。現J職於新蛋中國,負責推動整個部門的自動化測試。 精彩導讀 目錄 目 錄
D1章 Selenium自動化測試基礎 1
1.1 自動化測試基礎 2
1.1.1 軟件測試概述 2
1.1.2 自動化測試簡介 4
1.1.3 Selenium簡介 5
1.2 HTML/XML/XPath基礎 7
1.2.1 HTML簡介 7
1.2.2 XML簡介 9
1.2.3 使用XPath進行元素定位 10
D2章 BB輔助工具 17
2.1 FireBug 18
2.2 FirePath 22
D3章 Selenium IDE 25
3.1 Selenium IDE的安裝 26
3.2 錄製測試用例 27
3.3 編寫測試用例 30
3.4 Command 33
3.4.1 Action 34
3.4.2 Accessor 46
3.4.3 Assertion 59
3.5 Target 71
3.5.1 identifier定位 71
3.5.2 id定位 72
3.5.3 name定位 73
3.5.4 XPath定位 74
3.5.5 鏈接文字定位 75
3.5.6 DOM定位 76
3.5.7 CSS定位 77
3.5.8 隱式定位 78
3.6 Value 78
3.6.1 帶變量的字符串 78
3.6.2 帶的字符串 79
3.7 日誌與引用 79
3.8 將命令復製或導齣為代碼 80
3.8.1 將命令復製為代碼 80
3.8.2 將命令導齣為代碼 82
D4章 Selenium 1(Remote Control) 84
4.1 Selenium 1的工作原理 85
4.1.1 Selenium 1的組件 85
4.1.2 Selenium服務器 86
4.1.3 Selenium客戶端庫文件 86
4.2 安裝並使用Selenium 86
4.2.1 在C# IDE中使用Selenium 87
4.2.2 在Java IDE中使用Selenium 92
4.3 下載並啓動Selenium服務器 99
4.4 選擇瀏覽器開始測試 100
4.5 瀏覽器導航操作 102
4.5.1 Open(url) 102
4.5.2 GoBack(url) 103
4.5.3 Refresh(), WindowFocus(), WindowMaximize()和Close() 104
4.6 操作頁麵元素 105
4.6.1 Type(locator, value) 105
4.6.2 TypeKeys(locator, value) 106
4.6.3 Click(locator) 107
4.6.4 ClickAt(locator, coordString) 107
4.6.5 doubleClick(locator) 108
4.6.6 doubleClickAt(locator, coordString) 108
4.6.7 Select(selectLocator, optionLocator) 108
4.6.8 check(locator)/unCheck(locator) 110
4.6.9 focus(locator) 110
4.7 鍵盤鼠標模擬操作 110
4.8 獲取頁麵元素的內容 112
4.8.1 getTitle() 112
4.8.2 getLocation() 114
4.8.3 getValue(locator) 114
4.8.4 IsEditable(locator) 115
4.8.5 getText(locator) 116
4.8.6 isChecked(locator) 118
4.8.7 getSelectedIndex(selectLocator) 119
4.8.8 getSelectedLabel(selectLocator) 121
4.8.9 getSelectedValue(selectLocator) 122
4.8.10 getSelectOptions(selectLocator) 123
4.8.11 getTable(tableCell Address) 124
4.8.12 getAttribute(attributeLocator) 126
4.8.13 isTextPresent(pattern) 127
4.8.14 isElementPresent(locator) 128
4.8.15 isVisible(locator) 130
4.8.16 getXpathCount(locator) 131
4.9 設置等待 132
4.9.1 WaitForPageToLoad(timeout) 132
4.9.2 setTimeOut(timeout) 133
4.9.3 setSpeed(value) 133
4.10 測試控製和調試類操作 134
4.10.1 captureEntirePage Screenshot(filename, kwargs) 134
4.10.2 captureEntirePage Screenshot(filename) 135
4.10.3 highlight(locator) 136
4.11 彈齣對話框的處理 136
4.11.1 IsAlertPresent() 138
4.11.2 GetAlert() 139
4.11.3 IsConfirmationPresent() 140
4.11.4 GetConfirmation() 141
4.11.5 ChooseOkOnNext Confirmation()和Choose CancelOnNext Confirmation() 142
4.11.6 IsPromptPresent() 142
4.11.7 GetPrompt() 143
4.11.8 AnswerOnNextPrompt(answer) 144
4.12 瀏覽器多窗口處理 144
4.12.1 GetAllWindowIds()、GetAllWindowNames()和GetAllWindow Titles() 145
4.12.2 WaitForPopUp(windowID, timeout) 148
4.12.3 SelectPopUp(windowID)和SelectWindow(windowID) 149
4.12.4 OpenWindow(url, windowID) 150
4.13 結束測試 151
4.13.1 Close()和Stop() 151
4.13.2 shutDownSelenium Server() 152
D5章 Selenium 2(WebDriver) 153
5.1 Selenium 2基於對象的測試 154
5.2 安裝並引用Selenium 2 155
5.2.1 在C# IDE中使用Selenium 156
5.2.2 在Java IDE中使用Selenium 160
5.3 選擇瀏覽器開始測試 166
5.4 瀏覽器導航對象Navigation 169
5.4.1 GoToUrl()/to() 169
5.4.2 Back()/Forward() 170
5.4.3 Refresh() 172
5.5 查找條件對象By 173
5.5.1 Id(idToFind) 173
5.5.2 Name(nameToFind) 175
5.5.3 LinkText(linkText ToFind) 175
5.5.4 PartialLinkText(partial LinkTextToFind) 176
5.5.5 ClassName(className ToFind) 177
5.5.6 TagName(TagName ToFind) 178
5.5.7 XPath(xPathToFind) 179
5.6 操作頁麵元素WebElement 179
5.6.1 Click() 180
5.6.2 SendKeys(text) 183
5.6.3 Clear() 184
5.6.4 Submit() 185
5.7 獲取頁麵及頁麵元素的內容 187
5.7.1 Title/getTitle() 187
5.7.2 Url/getCurrentUrl() 188
5.7.3 Text/getText() 189
5.7.4 Selected/isSelected() 190
5.7.5 TagName/getTagName() 191
5.7.6 Enabled/isEnabled() 192
5.7.7 Displayed/isDisplayed() 193
5.7.8 GetAttribute(attribute Name) 194
5.8 彈齣對話框的處理 195
5.8.1 Accept() 197
5.8.2 Dismiss() 198
5.8.3 SendKeys(keysToSend) 200
5.8.4 Text/getText() 201
5.9 瀏覽器多窗口處理 202
5.9.1 WindowHandles/get WindowHandles() 203
5.9.2 Window(windowName) 204
5.10 設置管理 205
5.10.1 Cookies/getCookies() 206
5.10.2 Window/window() 210
5.10.3 Timeouts() 212
5.11 為測試操作添加事件 213
5.11.1 在C#中使用Event FiringWebDriver 214
5.11.2 在Java中使用Event FiringWebDriver 219
5.12 結束測試 225
D6章 自動化測試的流程和框架 229
6.1 自動化測試的流程 230
6.2 自動化測試框架 232
D7章 自動化測試的實施 236
7.1 設計自動化測試用例 237
7.1.1 登錄功能的用例設計 237
7.1.2 搜索商品功能的用例設計 238
7.1.3 購買商品功能的用例設計 242
7.2 編寫自動化測試代碼 245
7.2.1 登錄功能的測試代碼 245
7.2.2 搜索商品功能的測試代碼 252
7.2.3 購買商品功能的測試代碼 262
7.3 設計自動化測試數據 268
7.3.1 登錄功能的數據 268
7.3.2 搜索商品功能的數據 269
7.3.3 購買商品功能的數據 271
D8章 Selenium測試進階 272
8.1 Opera/iPhone/Android測試 273
8.1.1 Opera測試 273
8.1.2 iPhone測試 276
8.1.3 Android測試 279
8.2 Selenium 1與Selenium 2的切換 282
8.2.1 從Selenium 1切換到Selenium 2 282
8.2.2 從Selenium 2切換到Selenium 1 287
8.3 對Selenium進行擴展 287
8.3.1 對Selenium IDE應用擴展 290
8.3.2 對Selenium 1應用擴展 290
8.3.3 對Selenium 2應用擴展 292
D9章 使用Selenium常見的問題 294
9.1 使用Selenium IDE常見的問題 295
9.2 使用Selenium 1常見的問題 296
9.3 使用Selenium 2常見的問題 301
暫時沒有目錄,請見諒!
《探索網絡交互的奧秘:現代Web應用測試的實踐與策略》 在當今快速迭代的軟件開發周期中,確保Web應用程序的穩定性和用戶體驗已成為一項至關重要的任務。隨著Web技術的飛速發展,前端框架的日新月異,以及用戶交互的日益復雜化,傳統的手動測試已遠遠無法滿足項目對效率和覆蓋率的需求。本書正是應運而生,它將帶領讀者深入理解現代Web應用測試的核心理念,掌握行之有效的實踐方法,並構建一套能夠應對復雜挑戰的自動化測試策略。 本書並非一本簡單的工具使用手冊,而是旨在從更宏觀的視角,揭示Web應用程序測試的本質,以及如何在日益變化的技術環境中,構建一套健壯、高效且可持續的自動化測試體係。我們將一起深入剖析Web應用程序的工作原理,理解從瀏覽器接收請求到服務器響應,再到前端渲染的整個過程,這將為我們後續的學習和實踐打下堅實的基礎。 第一部分:理解Web應用與測試的基石 在開始自動化測試的徵程之前,充分理解Web應用程序的架構和測試的基本原則至關重要。本部分將為你構建堅實的理論基礎。 第一章:現代Web應用的演進與挑戰 從靜態網頁到富客戶端應用:迴顧Web技術的發展曆程,理解單頁應用(SPA)、服務器端渲染(SSR)、客戶端渲染(CSR)等不同架構模式的特點和優劣。 組件化開發與聲明式UI:分析React、Vue、Angular等主流前端框架如何驅動UI的構建,理解組件化帶來的優勢以及對測試提齣的新要求。 API驅動的交互:深入理解RESTful API、GraphQL等數據交互方式,以及它們在前後端分離架構中的作用。 日益復雜的用戶場景:從用戶注冊、登錄、信息填寫,到復雜的數據可視化、實時協作,分析現代Web應用所麵臨的用戶交互復雜性。 測試的演變:從黑盒測試、白盒測試到灰盒測試,理解不同測試維度的應用場景,以及為何自動化測試成為必然選擇。 敏捷開發與DevOps中的測試定位:探討自動化測試如何在持續集成/持續部署(CI/CD)流程中扮演關鍵角色,加速交付周期,提高産品質量。 第二章:Web應用測試的理論模型與方法論 測試金字塔理論的精髓:深入解析單元測試、集成測試、端到端(E2E)測試的層級劃分,理解它們在整個測試策略中的比例和價值。 行為驅動開發(BDD)與驗收測試:學習如何將業務需求轉化為可執行的測試用例,促進開發、測試和業務人員之間的溝通協作。 探索性測試與腳本化測試的互補:理解手工探索性測試的價值,以及如何將其與自動化測試有機結閤,發現潛在問題。 性能測試、安全測試與兼容性測試的引入:初步瞭解這些非功能性測試在Web應用質量保障中的重要性,為後續深入學習打下基礎。 缺陷管理與度量:學習有效的缺陷跟蹤和報告方法,以及如何通過關鍵指標來衡量測試活動的有效性。 第二部分:核心自動化測試技術與實踐 本部分將聚焦於實現Web應用自動化的核心技術,並提供詳實的實踐指導。 第三章:瀏覽器自動化原理與協議 WebDriver協議的解析:深入理解WebDriver協議如何作為瀏覽器自動化操作的標準接口,以及它在跨瀏覽器、跨平颱測試中的作用。 瀏覽器開發者工具的妙用:學習如何利用Chrome DevTools、Firefox Developer Tools等工具進行元素定位、網絡請求分析、JavaScript調試,為自動化腳本編寫提供支持。 DOM(文檔對象模型)與CSS選擇器:掌握DOM樹的結構,學習如何使用CSS選擇器、XPath等高效且精確地定位Web頁麵上的元素。 JavaScript執行與異步處理:理解瀏覽器中的JavaScript執行環境,學習如何在自動化腳本中執行JavaScript代碼,處理異步操作(如AJAX請求、定時器)。 頁麵加載與等待機製:分析不同類型的頁麵加載行為,學習如何設計健壯的等待策略,避免因頁麵加載不完全而導緻的腳本失敗。 第四章:設計健壯的自動化測試用例 “AAA”原則(Arrange-Act-Assert)的應用:學習如何構建結構清晰、易於理解和維護的測試用例。 元素定位策略的優化:從ID、Name、ClassName、LinkText、PartialLinkText、TagName、CSS Selector、XPath等多種定位方式中,選擇最穩定、最適閤的定位器。 頁麵對象模型(POM)設計模式:掌握POM如何封裝頁麵元素和操作,提高測試代碼的可讀性、可維護性和復用性,降低維護成本。 數據驅動測試(DDT)的實現:學習如何將測試數據與測試邏輯分離,實現用例的批量執行,提高測試效率。 斷言(Assertion)的藝術:掌握各種斷言方法的應用,確保測試結果的準確性和有效性。 異常處理與錯誤恢復:學習如何預測和處理潛在的異常情況,使測試腳本更加魯棒。 第五章:構建可維護的自動化測試框架 框架設計的考量因素:可擴展性、可讀性、可復用性、易於維護性、集成性。 選擇閤適的編程語言和開發環境:探討Java、Python、JavaScript等主流語言在自動化測試中的應用,以及它們的優劣勢。 自動化測試框架的組成部分:測試 runner、測試腳本、頁麵對象、輔助工具、報告生成器等。 日誌記錄與調試技巧:學習如何有效地記錄測試執行過程中的關鍵信息,便於問題排查。 測試用例的組織與管理:探索不同的測試用例組織結構,提高測試用例的可查找性和管理效率。 版本控製係統的應用:理解Git等版本控製係統在自動化測試項目中的重要性,實現代碼協同開發與管理。 第三部分:高級自動化測試策略與實踐 在掌握瞭基礎知識和核心技術後,本部分將帶領讀者進一步探索更高級的自動化測試策略,應對更復雜的場景。 第六章:跨瀏覽器與跨平颱測試 瀏覽器兼容性測試的挑戰:理解不同瀏覽器內核、版本、操作係統之間的差異。 WebDriver與Grid:深入理解WebDriver如何實現跨瀏覽器執行,以及Selenium Grid如何支持分布式測試,提高測試效率。 Headless瀏覽器測試:學習如何在無界麵的環境中執行自動化測試,加速執行速度,便於CI/CD集成。 移動端Web應用測試:探討在移動設備上進行Web應用自動化的策略,如使用Appium、WebDriverIO等。 雲測試平颱的使用:介紹BrowserStack、Sauce Labs等雲測試平颱的優勢,如何利用它們實現大規模的跨瀏覽器、跨設備測試。 第七章:與CI/CD流程的集成 持續集成(CI)與持續部署(CD)的理念:理解DevOps文化下,自動化測試如何賦能CI/CD。 Jenkins、GitLab CI、GitHub Actions等CI/CD工具的應用:學習如何配置自動化測試任務,在代碼提交後自動觸發測試。 測試報告的集成與展示:將自動化測試結果與CI/CD流程集成,實現可視化的測試報告。 測試環境的管理與配置:如何自動化地搭建和配置測試環境,確保測試的穩定性和一緻性。 性能測試與安全掃描的自動化集成:探討如何將這些非功能性測試也集成到CI/CD流程中,實現端到端的質量保障。 第八章:API自動化測試的整閤 Web應用中API的重要性:理解API在現代Web應用中的核心地位,以及API測試的價值。 HTTP協議與請求/響應模型:復習HTTP協議的核心概念,理解請求方法、狀態碼、請求頭、請求體等。 RESTful API與GraphQL API的測試:學習使用Postman、Insomnia、RestAssured等工具進行API測試。 API測試與UI測試的協同:探討如何將API測試集成到UI自動化測試流程中,提升測試效率和覆蓋率,例如在UI操作前先驗證API響應。 API Mocking與Stubbing:學習如何使用Mock服務模擬API響應,隔離測試依賴,加速測試執行。 第九章:測試數據管理與生成 測試數據的復雜性與重要性:分析各種場景下對測試數據的需求。 靜態測試數據與動態測試數據:理解兩者的區彆及其適用場景。 測試數據生成工具與技巧:介紹如何使用各種工具(如Faker庫、數據庫腳本)生成逼真的測試數據。 測試數據與測試用例的解耦:學習如何將測試數據與測試腳本分離,提高用例的可復用性。 測試數據清理與重置:確保測試數據的環境一緻性,避免因數據汙染導緻測試結果不準確。 第十章:性能與可靠性進階 Web應用性能瓶頸的識彆:理解頁麵加載時間、響應時間、資源利用率等關鍵性能指標。 性能測試工具的介紹與應用(如JMeter, k6):學習如何設計和執行性能測試場景。 高並發場景下的測試策略:如何模擬真實的用戶負載,找齣係統的極限。 自動化測試中的容錯與自愈能力:探討如何設計具有一定容錯能力的自動化腳本,減少因短暫的網絡波動或UI變化導緻的失敗。 灰度發布與A/B測試中的自動化支持:理解自動化測試如何在這些前沿的發布策略中發揮作用。 第四部分:走嚮卓越:測試策略與未來展望 在掌握瞭各項技術和策略後,本部分將帶領讀者思考如何構建更具前瞻性的測試體係,並對未來的發展趨勢進行展望。 第十一章:測試團隊的建設與協作 T型人纔與全棧測試:探討測試人員應具備的技能廣度和深度。 測試人員與開發人員的協作模式:如何建立緊密的溝通和閤作關係,實現“測試左移”。 測試知識的共享與傳播:建立內部知識庫,分享最佳實踐和學習資源。 敏捷測試的實踐經驗:總結在敏捷團隊中進行測試的有效方法。 度量與改進:如何通過數據分析來評估測試團隊的績效,並持續改進。 第十二章:Web自動化測試的未來趨勢 AI與機器學習在測試中的應用:探討AI如何輔助測試用例生成、故障預測、UI元素識彆等。 無代碼/低代碼自動化測試工具的興起:分析其優勢和局限性。 Visual Testing(視覺迴歸測試)的進展:如何通過圖像比對來捕捉UI的視覺變化。 GraphQL與微服務測試的新挑戰與機遇。 “Shift Left”與“Shift Right”的持續演進。 智能化測試的生態係統。 通過本書的學習,讀者將能夠構建起一套全麵、高效且適應性強的Web應用自動化測試體係。無論你是初學者,還是希望提升現有技能的資深測試工程師,亦或是尋求更優測試策略的開發人員,都能從中獲得寶貴的知識和實踐經驗。本書的最終目標是幫助你更自信、更從容地駕馭現代Web應用的質量保障,為打造卓越的用戶體驗貢獻力量。