前端自動化測試框架——Cypress 從入門到精通 ( 簡體 字) |
作者:蔡超 | 類別:1. -> 軟體工程 -> 軟體測試 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 52616 詢問書籍請說出此書號!【缺書】 NT售價: 325 元 |
出版日:4/1/2020 |
頁數:252 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121387784 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:序 1
最近幾年,跟不少公司的創始團隊都有過深入的交流,“技術驅動商業騰飛”越來越成為大家的共識。在科技全球化的浪潮下,誰深耕技術,誰就能構建起技術的“護城河”;誰深耕技術,誰就能通過技術賦能,實現業務的單點突破,甚至成就新的商業模式。與此對應地,公司在技術團隊上的投入也逐年增多,而工程技術團隊面臨的挑戰,從單純的技術升級與變革,逐步過渡到團隊技術思維的迭代。
在新的思維模式下,技術團隊如何更高效、更迅速地支撐公司爆發式增長,如何利用技術賦能公司業務,是每一位技術領導人所面臨的挑戰。鑒于此,各個企業都在積極探索互聯網新技術,同時隨著各類開源和商業技術組織的推動,形成了百花齊放的局面。隨著各類技術的不斷升級,每個企業就會面臨一個不可回避的問題——應用質量保障。
同時,伴隨著精益管理、敏捷開發和持續交付的深入人心,人人對質量負責已經變成毫無爭議的事實。質量保障由質量團隊單獨負責,變成工程技術團隊整體對質量負責。在此背景下,質量保障的手段及工具,也迎來了新的機遇。而測試作為應用質量保障的重要環節,不僅需要有持續優化的方法論,同時也需要不斷地進行生產工具和生產力的革新,以適應現代開發技術的發展。
其中自動化測試作為提升質量效能的重要能力支撐,對于其相關技術和工具的掌握及運用就顯得尤為重要。
從我認識本書作者蔡老師以來,他就在自動化測試領域深入耕耘,他對軟件測試,特別是自動化測試有自己獨到的見解,更有編寫自動化測試框架的經歷。在跟他的交談中,我一方面能感受到他對自動化測試框架的熱忱,也常聽到他對于當下測試工具支撐能力不足的抱怨。故在他興奮地向我描述Cypress框架不僅能貫穿三層“測試金字塔”結構且他已踐行多時并整理成書時,我欣然受邀,為本書作序。
本書作者高屋建瓴,從整個前端開發的發展歷程娓娓道來,從前端測試框架的前世今生講起,通過對市面上多款主流前端測試框架的對比,引出本書的主角——Cypress。本書不僅是一本實用的技術工具書,還具備一定的行業前瞻性,更結合了作者多年一線的最佳實踐經驗,是不可多得的測試技術寶典。
俗話說,工欲善其事,必先利其器。本書值得每位自動化測試從業者品讀和學習。
——IT東方會聯合發起人、杭州笨馬網絡技術有限公司(PerfMa)副總裁 王斌
序 2
現代企業對于產品質量的要求越來越高,同時,也有越來越多的公司取消了QA/QE的職位,取而代之的是更多的測試架構師的職位,讓測試人員專注于測試框架的開發以及測試策略的構建,而讓開發人員從頭到尾負責產品的質量。因此,以前寫測試用例的測試職位會越來越少,對于之后的測試人員的要求會越來越偏向測試架構和整體流程,而一個測試工程師如何編寫一個可以讓開發工程師更容易使用的測試架構將成為重點。
本書是蔡老師在企業經歷了數個真實項目,打磨了多個自動化框架后的技術輸出。本書結合了真實案例,帶讀者從JS基礎入手,學習Cypress,隨后一步步構建一個以Cypress為基礎的前端測試框架,以結合CI的持續集成實踐部分結束。內容由淺入深,帶領讀者貫穿整個測試框架構建流程,幫助讀者從零開始構建一個符合現代化項目質量的測試工具。整個框架完全依托于使用JS開發,也可以幫助前端開發工程師更好、更快地上手這個前端測試框架并編寫測試用例。無論你是一個初入職場的測試新人,還是一個久經考驗的測試老將,都能從中收獲良多。
最后,祝賀蔡老師新書發布,也希望本書能夠幫助到更多的開發者。
——eBay中國資深架構師 嚴正剛
前 言
近年來,在互聯網行業飛速發展的背景下,頻繁交付、快速迭代逐漸成為軟件開發、交付的首要目標。所以,敏捷的、能提高組織運行效率并能減少浪費的各種理論和方法越來越受歡迎。DevOps和敏捷開發作為其中的佼佼者,已經被廣泛應用在各種項目實踐中。在DevOps和敏捷開發實踐中,自動化測試在整個測試活動中所占的比重也越來越大,但是用于自動化測試的工具卻長期沒有大的突破。
說起前端自動化測試,大家一定會想到Selenium/WebDriver。誠然,Selenium/WebDriver作為前端UI自動化測試的王者,曾經承擔起了絕大多數的前端UI自動化測試工作。但是前端自動化測試,真的只能包含UI自動化嗎?
時至今日,前端Web開發技術,早已經從簡單的靜態頁面階段,發展到現代Web應用程序階段。特別是隨著Node.js(Node.js可以看作是可以運行JavaScript的服務器環境)的出現,使得前端應用越來越復雜,譬如前端也可以用作服務端來操作數據庫、提供API等。Selenium/WebDriver在用作此類應用程序進行自動化測試時,越來越顯得笨拙,難以滿足用戶期望。
Cypress作為新一代的自動化測試框架,與Selenium/WebDrvier相比,擁有無與倫比的優勢:
? Cypress運行在瀏覽器之內,而Selenium/WebDriver運行在瀏覽器之外。
? Cypress不基于JSON Wire協議,比Selenium/WebDriver運行更快。
? Cypress不僅能做UI自動化測試,而且可以做接口測試,集成測試。
與只能用在UI自動化測試的Selenium/WebDriver相比,Cypress能夠覆蓋“測試金字塔”的方方面面,而且在元素定位、自動等待、Mock服務器返回方面都展現出了超強的能力。除此之外,Cypress允許測試者直接通過接口請求的方式,即刻滿足測試場景所需的配置,而無須煩瑣的測試準備。
“測試你的代碼,而不是你的耐心”。Cypress作為下一代前端自動化測試框架的翹楚,在NASA(美國國家航空航天局),Amazon Web Services(AWS,亞馬遜云)等公司成功部署并商用,而且在UI自動化測試、接口自動化測試以及端到端(End to End)自動化測試中均有不俗的表現。
目前圖書市場上,還沒有一本專門介紹End to End前端測試框架Cypress的書,作為Cypress框架的受益者,我期望廣大測試人員在項目實踐中盡早使用Cypress,以提升測試效率,減少不必要的時間浪費。
最后,我希望本書可以促進國內互聯網測試從業者對前端測試框架的探討和交流,并期待國內自主可控的優秀前端測試框架誕生。
從本書中可以收獲什么
本書是一本介紹軟件自動化測試框架搭建、使用及定制的技術書籍,更是一本指導測試工程師如何做端到端自動化測試(包括UI自動化測試,接口自動化測試)的技術類書籍。
基于測試框架Cypress,本書由淺入深地介紹了自動化測試的方方面面。內容包括測試用例動態生成,動態挑選,動態執行;數據驅動;PageObject設計模式;擋板(Mock Server);持續集成(CI/CD)及測試報告等多個知識點,并附有詳細實例。
學習完本書,你不僅能搭建一套覆蓋UI自動化、接口自動化測試的測試框架,也能將此框架與你的DevOps流程集成在一起,實現測試效率的提升。
本書面向的讀者
本書適合以下讀者閱讀:
? 對自動化測試(不僅僅是UI自動化)有實際需求的軟件測試人員。
? 希望能搭建起企業級、項目級測試框架的軟件測試人員。
? 想轉向自動化測試的測試人員。
? 對前端自動化測試新技術感興趣,想進一步了解的人員。
本書可用于相關管理人員的自動化測試框架選型參考,也可當作初入測試行業的第一本測試框架實踐指南。
本書內容結構
本書分為五大部分,14章,各部分的主要內容如下:
第一部分:前端自動化測試框架準備篇
本部分詳細介紹了自動化測試的概念、組成及自動化框架的設計原則。
通過閱讀本部分,讀者會對目前軟件測試的現狀有充分了解,并能說出一個優秀的自動化測試框架應該包括哪些組成部分以及如何設計一個測試框架。
第二部分:前端自動化測試工具篇
本部分介紹了當前流行的前端測試框架,并進行了逐個比較。著重從架構、原理、解決的痛點等多方面比較了Selenium/WebDriver和Cypress的異同,借助這些比較,讀者可以清晰了解到Cypress的優勢。
通過閱讀本部分,讀者還可以了解到多個前端測試框架的各自優缺點和適用范圍。
第三部分:前端自動化測試框架基礎篇——Cypress基礎知識
本部分從如何搭建Cypress測試環境講起,首先介紹了如何編寫你的第一個測試腳本,Cypress測試框架拆解;然后介紹了如何識別元素,如何通過命令行運行Cypress及運行完后的查看測試運行器;最后介紹了Cypress下特有的測試習慣。
通過閱讀本部分,讀者能夠上手Cypress并搭建出自己的Cypress測試框架。
第四部分:前端自動化測試框架進階篇——Cypress進階
本部分主要介紹了Cypress的進階知識點,Cypress最佳實踐,接口測試及如何搭建自己的Mock Server。
通過閱讀本部分,讀者將能更自如地使用Cypress并能使用Cypress完成大多數自動化測試工作。
第五部分:前端自動化測試框架高級篇——持續集成實踐
本部分主要介紹了如何使用Cypress進行并發(并行)測試,并著重介紹了Cypress如何與持續集成結合。每一位立志成為優秀測試架構師的同學都應該仔細閱讀本部分內容。
通過閱讀本部分,讀者將對Cypress產生更大的認同,也會更加理解為什么Cypress能夠天然適應“大中臺,小前臺”的戰略并為企業賦能。
勘誤與支持
限于個人水平,書中難免有不妥或不足之處,懇請各位讀者海涵,并歡迎各位批評指正。
讀者朋友可通過微信公眾號“iTesting”直接留言或聯系作者,也可以發郵件至testertalk@outlook.com。
致謝
感謝為我寫推薦序、推薦語的朋友們,能夠獲得你們的認可和鼓勵是我的榮耀。
感謝關注我公眾號的朋友們和經常聽我嘮叨的各位測試行業的同行們,是你們的熱情鼓勵使得本書能夠盡早與讀者朋友見面。
感謝電子工業出版社的張瑞喜老師及為本書做校對審核工作的人們,你們表現出來的專業精神讓我非常敬佩。
感謝我親愛的家人們,是你們的默默支持和鼓勵支撐著我更加努力。
感謝我的兒子享享,與你相伴玩耍,陪你成長,帶給了我難以置信的幸福和快樂。
更要感謝我的妻子明莉,是你的愛和全力支持讓我得以有足夠長的時間思考與寫作。
本書配套視頻課程簡介
為使廣大讀者朋友們更容易理解和消化書中的內容,作者特意制作了本書配套視頻課程。本套視頻主要特點如下:
? 視頻和書籍章節對應,方便讀者朋友們學習。
? 針對部分重點內容,進行代碼演示,一目了然。
? 視頻內容和書中內容相互補充,理解更輕松。
本套視頻覆蓋了Cypress的基礎知識,部分Cypress進階知識,以及少量高級實踐內容。本套視頻共12節,分為0-9單元,共計180分鐘。視頻對應的標題如下:
0-Cypress引領前端測試新生態
1-自動化測試的現狀及痛點
1-自動化測試框架的組成及其設計原則
2-前端測試框架大比拼及Cypress原理
3-編寫你的第一個Cypress測試用例
4-Cypress測試框架拆解及配置
5-Cypress測試用例的組織與挑選運行
6-Cypress定位,查找,交互,斷言及TestRunner
7-深入測試用例編寫及Cypress兩種運行模式
8-Cypress設計模式之PageObject和Custom Commands
8-Cypress整合UI自動化測試和API自動化測試
9-Cypress掉“坑”及爬“坑”指南
視頻內容可幫助讀者朋友們快速熟悉章節所講的內容,讀者朋友們可結合書中內容,實例及代碼,自己搭建環境上手練習,加深對Cypress的各個章節知識的理解。 |
內容簡介:本書在簡要講解軟件測試概述和自動化測試框架之后,教會讀者了解測試的基本概念,以及如何設計一個測試框架。之后,在分別介紹了一些流行框架并使讀者知曉各自優缺點和適用,使得讀者對前端自動化框架有提綱挈領的了解。在此基礎上,本書重點介紹當下流行的前端測試框架Cypress ,通過基礎知識、進階知識、高級用法和實戰演示幾個方面,由淺入深,讓讀者真正掌握前端測試框架,成為軟件測試行業的高手。 |
目錄:第一部分 前端自動化測試框架準備篇
第1 章 前端自動化測試概述 2
1.1 前端自動化測試概述 2
1.2 前端自動化測試框架概述 5
1.2.1 應運而生的前端測試框架 5
1.2.2 前端自動化測試框架組成 6
1.2.3 前端自動化測試框架設計原則 8
1.3 前端代碼基礎 9
第二部分 前端自動化測試工具篇
第2 章 前端測試框架/工具大比拼 14
2.1 前端測試框架/工具簡介 14
2.1.1 Selenium/WebDriver 14
2.1.2 Karma 15
2.1.3 Nightwatch 17
2.1.4 Protractor 17
2.1.5 TestCafe 18
2.1.6 Puppeteer 19
2.2 Cypress框架介紹 20
2.2.1 Cypress簡介 20
2.2.2 Cypress架構及原理 20
2.2.3 Cypress八大特性 22
2.2.4 一圖勝千言 23
2.3 Cypress與Selenium/WebDriver的比較 23
2.3.1 Selenium/WebDriver的原理 23
2.3.2 Cypress與Selenium/WebDriver比較 26
2.4 Cypress與其他主流測試工具比較 29
2.4.1 Cypress與Karma比較 29
2.4.2 Cypress與Nightwatch比較 30
2.4.3 Cypress與Protractor比較 31
2.4.4 Cypress與TestCafe比較 32
2.4.5 Cypress與Puppeteer比較 33
2.5 Cypress的局限 34
2.5.1 長期權衡 34
2.5.2 短期折中 34
第三部分 前端自動化測試框架基礎篇
——Cypress基礎知識
第3 章 Cypress初體驗 36
3.1 Cypress安裝 36
3.1.1 系統要求 36
3.1.2 下載 36
3.1.3 安裝 37
3.1.4 打開Cypress 39
3.1.5 Cypress設置 40
3.2 搭建測試應用 41
3.2.1 下載測試應用 41
3.2.2 啟動測試應用 42
3.3 測試你的應用 44
3.3.1 創建測試 44
3.3.2 編寫測試用例 44
3.3.3 運行測試 46
3.3.4 調試測試用例 47
第4 章 Cypress測試框架拆解 53
4.1 Cypress默認文件結構 53
4.1.1 測試夾具(Fixture) 54
4.1.2 測試文件(Test file) 54
4.1.3 插件文件(Plugin file) 55
4.1.4 支持文件(Support file) 55
4.2 自定義Cypress 56
4.3 重試機制 59
4.3.1 命令和斷言 59
4.3.2 多重斷言 61
4.3.3 重試(Retry-ability)的條件 61
4.4 測試報告 62
4.4.1 內置的測試報告 62
4.4.2 自定義的測試報告 66
4.4.3 生成混合測試報告 69
第5 章 測試用例的組織和編寫 72
5.1 Mocha介紹 72
5.2 鉤子函數(Hook) 74
5.3 排除或包含測試用例 82
5.3.1 排除測試套件/測試用例 83
5.3.2 包含測試套件/測試用例 86
5.4 動態忽略測試用例 89
5.5 動態生成測試用例 91
5.6 斷言 93
5.7 觀察測試運行 94
第6 章 Cypress與元素交互 97
6.1 Cypress元素定位選擇器 97
6.2 Cypress與頁面元素交互 99
6.2.1 查找頁面元素的基本方法 99
6.2.2 查找頁面元素的輔助方法 100
6.2.3 可操作類型 105
6.2.4 Cypress常見操作 109
第7 章 命令行運行Cypress 117
7.1 cypress open 117
7.1.1 cypress open簡介 117
7.1.2 cypress open詳解 118
7.2 cypress run 119
7.2.1 cypress run簡介 119
7.2.2 cypress run詳解 119
第8 章 測試運行器 123
8.1 Test Runner簡介 123
8.2 Test Runner如何便捷我們的測試 125
8.2.1 更改瀏覽器 125
8.2.2 更改元素定位策略 125
8.2.3 實時監控測試用例執行情況 126
8.2.4 時間穿梭功能 126
8.3 Test Runner功能擴展 127
8.3.1 安裝 127
8.3.2 配置 127
8.3.3 使用 128
第9 章 重塑你的“測試習慣” 129
9.1 Cypress典型的“坑” 129
9.1.1 Cypress命令是異步的 129
9.1.2 慎用箭頭函數 130
9.1.3 async/await不工作 130
9.1.4 賦值“永遠”失敗 131
9.1.5 躲不過的同源策略 131
9.2 Cypress獨特之處 132
9.2.1 閉包(Closure) 132
9.2.2 變量和別名 133
第四部分 前端自動化測試框架進階篇
——Cypress進階
第10 章 Cypress最佳實踐 138
10.1 設置全局URL 138
10.2 避免訪問多個站點 139
10.3 刪除等待代碼 139
10.4 停用條件測試 140
10.5 實時調試和中斷 140
10.6 運行時的截圖和錄屏 141
10.7 斷言最佳實踐 143
10.8 改造PageObject模式 146
10.9 使用Custom Commands 153
10.10 數據驅動策略 155
10.10.1 數據保存在前置條件里 155
10.10.2 使用fixtures 156
10.10.3 數據保存在自定義文件中 156
10.11 環境變量設置指南 157
10.11.1 cypress.json設置 157
10.11.2 cypress.env.json 157
10.11.3 運行時動態指定環境變量 158
10.12 測試運行最佳實踐 159
10.12.1 動態生成測試用例 159
10.12.2 挑選待運行測試用例 159
10.13 測試運行失敗自動重試 162
10.14 全面的測試報告 162
10.15 Cypress連接DB 163
第11 章 使用Cypress做接口測試 165
11.1 發起接口請求 165
11.1.1 發起HTTP請求的方式 165
11.1.2 發起GET請求 166
11.1.3 發起POST請求 167
11.2 實例演示 170
第12 章 Mock Server 172
12.1 自定義Mock Server 172
12.1.1 搭建Mock Server 172
12.1.2 使用Mock Server進行測試 173
12.2 Cypress自帶Mock 182
12.2.1 截獲接口返回值 184
12.2.2 更改接口返回值 185
第13 章 模塊API 187
13.1 cypress.run( ) 187
13.2 cypress.open( ) 188
13.3 Module API實踐 188
13.3.1 挑選測試用例運行 188
13.3.2 Module API完整項目實踐 191
第五部分 前端自動化測試框架高級篇
——持續集成實踐
第14 章 Cypress持續集成實踐 202
14.1 持續集成簡介 202
14.2 Cypress并行執行測試 203
14.3 Circle CI持續集成實踐 204
14.3.1 Circle CI集成Github 204
14.3.2 Circle CI集成Cypress 212
14.4 Jenkins持續集成實踐 220
附錄A 參考資料 229
A.1 源代碼下載 229
A.2 參考資料 229
A.3 聯系作者 229 |
序: |