産品特色
編輯推薦
適讀人群 :具有編程基礎,希望係統地瞭解UI自動化測試的開發或測試人員 《Selenium自動化測試之道——基於Python和Java語言》既介紹瞭測試工具Selenium的使用,又帶領讀者理清實施自動化測試的思路,後者尤其重要。正所謂,測試技術或工具隻是“指月之手”,我們追求的是“月亮”,是如何放心地迭代、快速地交付高品質的産品。
《Selenium自動化測試之道》內容設置與當今企業,尤其是互聯網公司所需的UI自動化測試技術環環相扣,歸納總結瞭可能遇到的難點以及解決問題的思路。
《Selenium自動化測試之道》介紹的行為驅動開發(BDD)與持續集成工具Jenkins,都需要團結整個研發團隊,甚至是相關的業務部門,纔能將這些理念發揮得更好,因此對於促進研發過程改進也具有一定的參考價值。
內容簡介
《Selenium自動化測試之道——基於Python和Java語言》以Selenium的使用為主綫,展現瞭UI自動化測試的各種實踐過程,引導讀者思考如何基於Selenium做好UI自動化測試。示例代碼采用Python和Java,全書共8章,第1章分析討論瞭自動化測試的意義,旨在使讀者對自動化測試有一個較明確的認識;第2、3章詳細介紹瞭SeleniumIDE的命令、SeleniumWebDriverAPI、不同Driver對象以及工作原理,旨在使讀者對Selenium有深入的瞭解;第4章重點通過代碼演示介紹瞭不同類型的測試框架;第5、6章是拓寬思路,演示瞭如何使用SeleniumWebDriver結閤JavaScript代碼來操作HTML5頁麵的WebStorage、Canvas對象,以及如何使用Appium處理原生App和WebApp的頁麵對象;第7章著重演示瞭主流BDD框架Cucumber-JVM、Lettuce、Behave的應用,偏實戰場景,探討瞭BDD實施過程中需要考慮的種種問題;第8章介紹瞭測試人員在Jenkins使用過程中的必備知識。本書還提供瞭所有示例的源碼與素材文件供讀者練習使用,讀者可從網上下載本書資源文件。
《Selenium自動化測試之道》適用於具有編程基礎,希望係統地瞭解UI自動化測試的開發或測試人員,以及對自動化測試感興趣的計算機專業學生等。
作者簡介
Ping++測試團隊主要麵嚮支付相關産品及行業解決方案,特彆是針對RESTful API和Web係統的各類測試場景。作為創業團隊的一部分,Ping++測試團隊的工程師既認可手動測試的價值,又積極推行測試自動化,既聚焦産品,也關注流程協作,同時把提升産品質量作為己任。
目錄
目錄
第1章自動化測試的價值觀1
1.1自動化測試與産品質量的關係1
1.2自動化並不等同於白盒測試2
1.3采用自動化還是手工測試4
1.4如何進行自動化測試5
1.5學習自動化測試的建議7
1.6小結8
第2章Selenium初體驗9
2.1從一個測試腳本說起9
2.2Selenium傢族10
2.3SeleniumIDE12
2.3.1安裝SeleniumIDE12
2.3.2SeleniumIDE的使用13
2.3.3場景演練20
2.4SeleniumWebDriver37
2.4.1工作原理37
2.4.2元素定位38
2.4.3場景演練41
2.4.4Wait45
2.4.5常用的斷言46
2.5SeleniumGrid47
2.5.1工作原理47
2.5.2環境搭建48
2.6小結52
2.7練習52
第3章SeleniumWebDriver53
3.1創建不同的Driver對象53
3.1.1主流瀏覽器53
3.1.2Headless瀏覽器56
3.2常用API概覽59
3.2.1瀏覽器操作60
3.2.2ActionChains61
3.2.3Alert61
3.2.4By62
3.2.5DesiredCapabilities62
3.2.6Keys63
3.2.7Wait64
3.2.8execute_script64
3.2.9switch_to66
3.3場景演練66
3.3.1彈齣框67
3.3.2懸浮菜單71
3.3.3錶格75
3.3.4iframe79
3.3.5上傳與下載81
3.4可能遇到的異常83
3.5小結88
3.6練習88
第4章自動化框架89
4.1綫性框架89
4.2模塊化框架91
4.3數據驅動框架94
4.4關鍵字驅動框架102
第5章HTML5測試107
5.1WebStorage108
5.1.1LocalStorage108
5.1.2SessionStorage111
5.2ApplicationCache111
5.2.1獲得ApplicationCache
當前的狀態112
5.2.2設置網絡連接狀態在綫/
離綫113
5.3Canvas114
5.4Video116
5.5小結118
5.6練習118
第6章移動App測試:Appium119
6.1認識Appium120
6.1.1Appium是什麼120
6.1.2Appium與iOS應用120
6.1.3Appium與Android應用121
6.2開始使用Appium122
6.2.1準備工作122
6.2.2Appium的安裝與啓動123
6.3原生App測試實踐128
6.3.1運行ios_simple.py128
6.3.2運行android_simple.py133
6.3.3尋找練手App136
6.4WebApp測試實踐139
6.4.1使用Chrome開發者工具
查看WebApp元素141
6.4.2AndroidWebApp的聯機
調試142
6.4.3iOSWebApp的聯機
調試144
6.5小結146
6.6練習146
第7章BDD:行為驅動開發147
7.1認識BDD148
7.1.1BDD的由來148
7.1.2與TDD比較150
7.1.3選擇閤適的BDD工具151
7.1.4BDD實施157
7.2BDD工具的使用160
7.2.1使用Cucumber-JVM161
7.2.2使用Lettuce168
7.2.3使用Behave175
7.3小結182
7.4練習182
第8章Jenkins的使用183
8.1認識Jenkins183
8.2Jenkins安裝與啓動185
8.3任務定製化188
8.3.1同步源碼190
8.3.2定時任務190
8.3.3報告191
8.4用戶與權限194
8.5小結195
8.6練習195
參考資料196
前言/序言
前言
寫一本關於Selenium自動化測試的工具書,一開始我是拒絕的。直到現在,我仍然認為工具書不足以道盡測試的奧妙。學習Selenium最好的途徑是啃官方文檔和源碼,從最開始的SeleniumRC到WebDriver,再到移動測試Appium,Selenium一直在快速、持續地發展和變化著。等讀者看到這本書的時候,很可能某些問題已經有瞭更好的解決方案,或者書中的代碼已經不能直接運行。
而最終,我還是動筆瞭。因為我還有另一個觀點:“自動化測試”不是某一傢公司或者團隊組織需要考慮的問題,它應該是測試同行們的必經之路,是日常測試工作的手段之一。而初學者在一開始難免會有畏難情緒,又不知如何構建知識體係。於是,將所思所得分享齣來,或許可以幫助初學者盡快地度過那段“破冰期”。
本書的組織方式
市麵上Selenium的資料很多,談論測試自動化的也很多。但脫離瞭工具和技術,去談方法論,難免讓人覺得空洞;而沒有方法論的東西,隻談工具和技術,難免是“一葉障目,不見泰山”。本書嘗試在梳理技術知識的同時,討論測試自動化的方法論。
第1章主要探討測試價值觀,闡述編者對自動化測試的基本觀點和認識。
第2章是Selenium入門內容,介紹瞭Selenium的發展,涉及SeleniumIDE、SeleniumWebDriver和SeleniumGrid。
第3章重點介紹瞭SeleniumWebDriver的使用。不是簡單羅列SeleniumWebDriverAPI,還包括不同WebDriver對象、不同頁麵元素的處理思路。
第4章介紹瞭自動化測試框架的設計,包括綫性、模塊化、數據驅動和關鍵字框架4種類型。
第5章介紹瞭HTML5元素的處理。Selenium還未對某些HTML5元素的操作進行封裝,因而需要利用JavaScript來解決問題。讀者將在這一章開拓視角,瞭解更多的Selenium應用場景。
第6章介紹瞭移動App的測試框架——Appium。基於前麵幾章對Selenium原理與操作的瞭解,讀者會在這一章瞭解iOS與AndroidApp自動化測試腳本的寫法。
第7章介紹瞭行為驅動開發(BDD)模式。通過這一章,希望讀者能體會到做好自動化測試不僅在於工具的掌握和框架的使用,還需要考慮測試用例的管理、手動測試用例如何與自動化腳本關聯,甚至與業務部門的溝通等問題,其中幾個BDD框架的示例為讀者提供瞭解決問題的思路。
第8章介紹瞭持續集成工具Jenkins的使用,希望通過這一章能為讀者帶來測試流程方麵的思考。Jenkins可以讓測試腳本的執行、報告的展示變得簡單高效。
本書的內容均是由Ping++的一綫測試人員編寫的。第2章由王紅興、周淼淼編寫,第4章由徐剋亮編寫,其餘章節由吳子騰編寫。
本書的特色
本書的特色主要體現在以下3個方麵:
第一,在理論觀點上,本書在開篇就闡明瞭編者對於“質量與自動化測試的關係”,“自動化測試與白盒測試的關係”等話題的理解。其實Selenium等各種自動化測試工具上手並不難,但相信讀者在閱讀過程中並不僅僅隻是想瞭解一種工具,而是想獲得如何實施自動化測試的思路。正所謂,測試技術或工具隻是“指月之手”,我們追求的是“月亮”,是如何放心地迭代,快速地交付高品質的産品。
第二,在學習視角上,本書從Selenium工作原理、測試腳本的組織方式——開始講解,再由Web自動化腳本的編寫延伸到HTML5元素、App測試對象的識彆等。章節的內容設置與當今企業,尤其是互聯網公司所需的UI自動化測試技術環環相扣,歸納總結瞭可能遇到的難點以及解決問題的思路。
第三,在技術實施上,突齣瞭需要嚮團隊傳播質量意識與測試自動化實踐相結閤。本書介紹的行為驅動開發(BDD)與持續集成工具Jenkins都是需要團結整個研發團隊,甚至是相關的業務部門,纔能將這些理念發揮至最佳。當然,即便這些概念在組織推進過程中存在睏難,測試人員也可以通過瞭解這些工具和技術,對研發過程改進這一話題進行更加深入的思考。
考慮到本書的目標和定位,對於沒有掌握任何一門編程語言的讀者而言,或許會造成閱讀門檻。另外,本書涉及多類界麵對象的識彆和操作、多種測試腳本的寫法、多個測試框架的使用。然而在實際工作中,界麵操作的自動化僅僅是分層測試策略中的一部分,並不能代錶全部的自動化工作。但為瞭便於從整體上把握和安排內容,編者還是以Web測試自動化作為本書的主要架構。這樣,相比單一地通過某個係統或産品來整體介紹自動化測試方麵的研究,書中各章節的內容顯得在體係性上有所欠缺。
目標讀者
本書主要麵嚮的讀者是具備編程基礎,缺乏自動化測試經驗,希望快速、係統地瞭解Selenium,從而進一步做好UI測試自動化的工程師。本書不僅是為測試人員而寫的,它還適用於對軟件測試有興趣的在讀大學生以及希望瞭解測試技術的開發人員。
全書綜閤瞭Selenium實踐過程中的方方麵麵,涉及腳本編寫、框架選型、開發模式等各個領域的討論。雖然示例代碼分為Java與Python兩種語言,但並不會影響閱讀,書中對示例代碼進行瞭詳盡的文字解讀。Python代碼適用於2.7.10版本。代碼下載鏈接:https://github.com/applewu/selenium-exercises.git。
如何閱讀本書
本書的前3章是全書內容的基礎,需要首先閱讀。在掌握瞭前3章之後,讀者可以按照任意順序閱讀後續章節。既可以順序瀏覽,概觀Selenium自動化測試實踐,也可以選擇性地閱讀自己感興趣的章節。
我們學習任何測試工具的最終目的不在於掌握工具,而在於如何利用工具更好地為自動化測試服務。自動化測試也隻是産品質量工作中的一部分。因此,不要沉迷於“術”,而忘卻瞭“道”。在閱讀過程中,讀者一方麵需要積極實踐,掌握測試腳本的編寫方法,另一方麵需要積極思考,如何在自己所在的工作中閤理應用起來。練習與反思,纔能將本書的效果發揮至極緻。
勘誤和支持
由於水平有限,書中難免會齣現一些錯誤或者不準確的地方,懇請讀者批評指正。在閱讀過程中遇到任何問題或錯誤,歡迎發送郵件至郵箱test4greenbar@163.com,期待能夠得到讀者的真摯反饋。
讀者還可以直接在Github的selenium-exercises項目中提交代碼有關的問題,也可以通過微博(@籽藤_上海)聯係編者。
緻謝
首先要感謝清華大學齣版社提供瞭這樣一個創作平颱。其次,感謝那些提供瞭寶貴建議的朋友們。雖然最終編寫這本書的是Ping++的測試團隊,但還有很多同事和好友為本書提供瞭寶貴的意見。感謝李雨洪、方雷、孫兵兵、葉波光、翁旭鋒、李響、左文婭、趙海林、付敏芝、史子飛提齣的問題和反饋,感謝我素未謀麵卻誌同道閤的好友劉琛梅以及我的老師薑曉東在百忙之中為本書寫瞭推薦序。
最後,我要感謝我的傢人。感謝我的父母,尤其是我的母親,培養瞭我的閱讀和學習習慣。感謝我的公公婆婆,他們的辛勤付齣讓我在寫書的過程中沒有後顧之憂,不用擔心兒子的生活起居。我還要感謝我的兒子塏興,你的笑容是我的能量。感謝你們伴我前行。
Ping++測試團隊吳子騰
上海張江高科
2017年9月10日
擁抱效率,掌控未來:你的代碼,為你效勞 在瞬息萬變的數字洪流中,效率與精準是軟件開發生命周期的核心驅動力。當每一次的迭代都伴隨著成百上韆次的重復勞動,當人工測試的瓶頸日益凸顯,我們迫切需要一種更智能、更可靠的方式來確保産品的質量,加速産品上綫。這,便是軟件自動化測試的價值所在。 本書將帶領你踏上一段深度探索自動化測試技術之旅。我們並非僅僅停留在工具的使用層麵,而是將目光聚焦於其背後的原理、設計理念、以及如何在實際項目中構建和維護一套健壯、可擴展的自動化測試體係。我們將深入剖析自動化測試的“道”——那些支撐其強大生命力的核心思想與最佳實踐。 第一部分:基石的構築——理解自動化測試的本質與哲學 在正式揮舞自動化測試的利刃之前,我們需要夯實理論基礎,理解為何而戰,以及如何能戰得更漂亮。 超越“點”的理解:自動化測試的戰略意義。 我們將探討自動化測試在整個軟件開發生命周期中的戰略定位,它如何與敏捷開發、DevOps文化相輔相成,如何幫助團隊實現“持續集成、持續交付”的目標。這不僅僅是寫幾行代碼執行一下,而是關於如何通過自動化來提升整體的開發效率、降低風險、縮短交付周期。 擺脫“孤島”睏境:自動化測試與質量保證的融閤。 質量並非測試人員的專屬責任,而應貫穿於産品設計的每一個環節。本書將闡述自動化測試如何賦能開發人員、産品經理,讓他們都能在早期發現和修復問題,從而構建“內建質量”的産品。我們將討論單元測試、集成測試、端到端測試的定位與協作,以及如何構建一個多層次的測試金字塔。 “人”的智慧,機械的執行:自動化測試的哲學思考。 自動化測試並非要取代人的思考,而是要將人從重復、低價值的工作中解放齣來,讓他們能專注於更具創造性、更需要洞察力的分析和設計。我們將探討如何設計能夠清晰錶達業務意圖的自動化測試,如何讓測試代碼本身也具有良好的可讀性和可維護性。 選擇的智慧:不同自動化測試框架的審視與取捨。 市場上的自動化測試框架琳琅滿目,針對不同的技術棧、不同的測試場景,都有其獨特的優勢。我們將不局限於單一工具,而是站在宏觀視角,審視幾種主流的自動化測試框架(例如,前端的Playwright、Cypress,後端的REST Assured,移動端的Appium等)的設計哲學、適用場景、以及它們在社區中的發展趨勢。我們將幫助你理解,為什麼在某些情況下選擇X比選擇Y更閤適。 第二部分:精益的實踐——構建可維護、可擴展的自動化測試框架 理論指導實踐,但實踐本身也需要一套嚴謹的框架來支撐,使其穩定運行,並能隨著業務的發展而不斷演進。 “模型驅動”的強大:Page Object Model (POM) 與 Screenplay Pattern。 在Web自動化測試領域,Page Object Model(POM)早已是耳熟能詳的設計模式,它極大地提升瞭測試代碼的可維護性。我們將深入解析POM的實現細節,包括如何優雅地管理頁麵元素、如何封裝頁麵操作,以及如何規避其潛在的缺點。在此基礎上,我們還將引入更具錶達力和可維護性的Screenplay Pattern(腳本傢模式),演示如何將測試腳本編寫得更像是一係列角色執行的“劇本”,從而大幅降低維護成本,提高測試的清晰度。 數據驅動的靈活性:告彆硬編碼的時代。 為什麼同一個測試用例需要針對不同的輸入數據進行多次執行?數據驅動測試是解決這一問題的關鍵。我們將講解如何有效地管理測試數據,無論是從CSV、Excel文件,還是數據庫,甚至是如何通過API動態生成測試數據,並將其無縫集成到自動化測試腳本中。 “行為驅動”的溝通力:BDD與Cucumber的深度融閤。 Behavior-Driven Development(BDD)是一種將技術人員、業務人員和測試人員聚集在一起,以一種共同的語言描述係統行為的方法。我們將深入探討BDD的核心理念,並演示如何利用Cucumber等工具,將自然語言描述的業務需求轉化為可執行的自動化測試。這不僅僅是編寫自動化腳本,更是構建團隊溝通橋梁的有力工具。 “麵嚮服務”的基石:API自動化測試的精髓。 在現代微服務架構中,API是係統之間交互的命脈。API自動化測試是確保係統穩定性和互操作性的重要環節。我們將詳細介紹如何使用專業的API自動化測試工具(如Postman、REST Assured等)來設計和執行API測試,包括請求構建、參數化、斷言校驗、以及如何進行性能和安全相關的API測試。 “可觀察性”的保障:日誌、報告與異常處理。 自動化測試的價值不僅僅在於發現問題,還在於能夠清晰地報告問題。我們將深入探討如何設計詳盡、易於理解的測試報告,如何集成豐富的日誌記錄,以及如何優雅地處理和捕獲自動化執行過程中齣現的各種異常,從而幫助我們快速定位和解決問題。 第三部分:進階的藝術——將自動化測試推嚮新的高度 掌握瞭基本功之後,我們還將一同探索如何讓自動化測試變得更智能、更高效、更具價值。 “可視化”的洞察:UI自動化測試的挑戰與解法。 Web UI自動化測試常常麵臨著環境不穩定、執行緩慢、維護睏難等挑戰。我們將深入分析這些挑戰,並探討如何通過閤理的測試設計、優秀的元素定位策略、以及一些高級的工具特性來剋服它們。 “混沌”的守護者:探索與探索式自動化測試。 傳統的自動化測試通常是基於預設的測試用例。然而,現實世界充滿瞭未知。我們將介紹探索式自動化測試的概念,它如何與手動探索式測試相結閤,幫助我們發現那些預設用例難以覆蓋的邊緣情況和潛在缺陷。 “智能”的助手:AI在自動化測試中的應用前景。 人工智能正在以前所未有的速度滲透到各個領域,自動化測試也不例外。我們將探討AI在測試用例生成、故障定位、甚至UI自愈等方麵的潛在應用,並展望AI將如何重塑未來的自動化測試格局。 “雲端”的翅膀:分布式與並行執行的優化。 隨著測試用例數量的不斷增加,單機執行的效率逐漸捉襟見肘。我們將介紹如何利用雲平颱或自建的Grid架構,實現自動化測試的分布式和並行執行,從而大幅縮短整體的測試周期,加速反饋。 “持續”的演進:自動化測試的度量與改進。 如何衡量一套自動化測試體係的有效性?如何識彆其瓶頸並進行持續改進?我們將探討一係列關鍵的度量指標,並提供一套係統性的方法論,幫助你不斷優化自動化測試的投資迴報。 本書旨在成為你手中一份實用而深入的指南,無論你是剛剛接觸自動化測試的初學者,還是希望進一步提升技能的資深工程師,都能從中獲益。我們相信,掌握瞭自動化測試的“道”,你將能夠更自信地擁抱變化,更高效地交付高質量的軟件産品,為你的職業生涯和團隊的成功注入強大的動力。讓我們一同踏上這段充滿探索與實踐的旅程,用代碼為效率代言,為未來賦能。