Python Web自動化測試設計與實現 ( 簡體 字) |
作者:陳曉伍 | 類別:1. -> 程式設計 -> Python |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 50855 詢問書籍請說出此書號!【缺書】 NT售價: 395 元 |
出版日:4/1/2019 |
頁數:360 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302519294 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:為什么要寫這本書 作為一名測試人員,從工作的第一天開始我就對自動化測試產生了獨特的興趣。而最初的理由也很簡單,就像開發人員不愿意只寫業務代碼一樣,測試人員也不希望只局限于手動測試。自動化測試對于當時還是新手測試人員的我而言,完全可以用“高大上”來形容。自此,我便在學習和實踐自動化測試的道路上越走越遠。 而隨著計算機技術及互聯網的發展,如今作為一名測試人員,不僅要掌握針對于業務流程的手動測試方法和理論;還要具備一定的自動化、性能的測試能力。甚至于在找工作時會寫腳本,會使用自動化工具進行測試已經成為測試人員的一種標配。本書總結了作者在項目實踐中的多年工作經驗,梳理了自動化測試需要掌握的一些基本技能和知識,幫助初級測試人員快速掌握目前常用的自動化測試手段和方法,提高自身的綜合技能水平。 自動化測試對于測試新人而言,往往會理解為手動功能測試的自動化實現。比如:UI自動化測試。但從廣義概念來看,自動化測試還要包括:接口自動化、性能自動化、白盒自動化、安全自動化、自動化工具/框架/平臺等一系列可以通過開發腳本來實現的測試。而本書所講到的自動化測試內容包括:UI自動化、自動化框架、接口自動化、自動化工具、自動化持續集成等相關知識。目的是給讀者打開一個通向更加廣泛的自動化測試之門。 此外,對于一些剛開始接觸自動化測試的人員而言,自動化測試幾乎等同于高效測試。其實現項目中并沒有想象的那么美好,自動化測試需要根據不同的場景和需求來定制不同的自動化測試方案。本書最開始的部分就介紹了自動化測試的方法論和最佳實踐,避免測試新人誤入自動化測試的“陷阱”。 另外,本書也是一本Python的基礎學習教程,作為Python的鐵桿粉絲,自然也希望能夠將Python語言最大程度地推廣到自動化測試領域中來。正所謂“人生苦短,我用Python!” 本書特色 1. 附帶讀書興趣小組,方便學習溝通 為了便于讀者相互溝通,提高學習效率,作者專門為本書建設了讀書興趣小組,讀者可以通過登錄testqa.cn并加入seleniumbook小組來學習和交流。另外本書中的源碼包也會在這個小組中支持下載。 2. 涵蓋多種自動化測試方法 本書涵蓋自動化測試中使用到的多種測試方法,除了UI的自動化,還包括接口自動化,測試工具開發、CI的使用。 3. 對Selenium工具的歷史和原理進行了分析與說明 除了對于Selenium工具,提供相關接口的實例代碼外,還介紹了Selenium的歷史和基本原理。使得讀者在學習的過程中,知其然也知其所以然。另外對Selenium IDE的操作和使用也做了較為詳盡的說明,使得初學者也可以快速上手和使用Selenium進行自動化測試的 實踐。 4. 介紹詳盡框架的開發 本書除了介紹Selenium的一些基本接口之外,還介紹了在基于Selenium的情況下,如何搭建可用性較高的測試基礎框架。使用分層架構、數據驅動、業務解耦、功能封裝等方式,讓UI自動化測試不再是“可遠觀而不可褻玩”的技術。 5. 總結自動化最佳實踐 本書的開頭并沒有一上來就開展技術的介紹,而是先從方法論和最佳實踐開始。目的是讓讀者先理解“道”,再學習“術”。這樣才能更好地學習和真正地利用自動化的相關測試技術。避免測試新人誤入自動化的“陷阱”。 6. 提供基礎的Python教程 除了介紹自動化相關的測試技術,本書還涵蓋了書中其他地方需要用到的Python編程基礎知識。為的是讓讀者只需一本書就可以開始步入自動化測試的行列。 7. 提供完善的技術支持和售后服務 本書提供了專門的技術支持郵箱:five3@163.com。讀者在閱讀本書過程中有任何疑問都可以通過該郵箱獲得幫助。 讀者對象 希望學習自動化測試技術的測試人員; 希望提升自身技術的測試人員; 希望了解自動化測試技術的開發人員; 其他希望利用自動化技術的相關人員。 本書主要內容 本書分為三大部分。 第一部分為方法論,主要介紹入門自動化測試之前需要了解的相關方法論和最佳實踐。 第二部分為Selenium介紹,著重講解Selenium的歷史、原理、IDE和接口的使用,同時還介紹了基于Selenium的自動化框架搭建。 第三部分為工具開發介紹,通過一步步深入的介紹帶領讀者進行接口測試工具、mock測試工具的開發,同時集成到Web服務中。 除了這三個主要部分之外,還會有一些其他的自動化相關知識,各自分散在不同的章節中。比如:CI持續集成的使用,基礎環境的搭建,Python語言的學習等。如果你是一名初學者,建議從第1章開始學習。 閱讀本書的建議 測試新手讀者,建議從第1章順次閱讀。 有一定Python基礎的讀者,可以根據實際情況有重點地選擇閱讀各個技術要點。 在學習框架之前,需要保證對Selenium和Python語法章節有了一定的掌握;先通讀一遍有個大概印象,然后將每個知識點的示例代碼都在開發環境中操作一遍,加深對知識點的印象。 結合github中的完整代碼來實際操作,這樣理解起來就更加容易,也會更加深刻。 進一步學習建議 當您閱讀完本書后,相信已經掌握了Python Web自動化測試的基本知識。但如果還要更進一步深入下去,還必須要進一步地掌握Python的開發技術,以及加深對自動化測試的理解。掌握了扎實的技術能力之后,針對項目中需要提煉的流程和事務,進行分析并有針對性地優化。做好自動化項目最重要的一點就是:結合實際業務需求,否則可能就成為“空中 樓閣”。 此外還需要學習性能、白盒、安全等相關測試技術,結合自動化來提升這些測試過程中的效率。比如:測試數據的準備、mock系統的開發、代理監聽、信息采集等。 如果希望在Python編程方面有更多的提升,推薦去閱讀Python核心編程方面的書籍,而對于項目中的效率提升則需要自己更多地去實踐、學習和思考。 勘誤和支持 由于作者的水平有限,編寫時間倉促,書中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。為此,特意創建一個在線支持與應急方案的二級站點http://www.testqa.cn/seleniumbook。你可以將書中的錯誤發布在Bug勘誤表頁面中,同時如果你遇到任何問題,也可以訪問seleniumbook小組頁面,我將盡量在線上為讀者提供最滿意的解答。書中的全部源文件除可以從github(http://github.com/five3)下載外,還可以從testqa站點下載,我也會及時更新相應的功能。如果你有更多的寶貴意見,也歡迎通過清華大學出版社網站(www.tup.com.cn)與我們聯系,期待能夠得到你們的真摯反饋。 致謝 首先要感謝我的愛人、岳母,是她們的辛苦付出和支持才讓我有時間來進行本書的寫作。 感謝出版社的編輯老師,在這一年多的時間中始終支持我的寫作,你的鼓勵和幫助引導我能順利完成全部書稿。 還要感謝職業生涯中給予過我幫助的同事們,沒有你們的信任和無私的幫助就沒有這本書。 最后感謝我的爸爸、媽媽、哥哥、姐姐,感謝你們將我培養成人,并給予我的一切! 謹以此書獻給我最親愛的兒子,希望他一直快樂成長! |
內容簡介:本書是資深測試開發專家的經驗結晶,由淺入深地闡釋了Web自動化測試的相關技術,包括Web UI自動化測試、API自動化測試及測試相關的基礎開發。通過學習本書,讀者可以基本掌握Web測試相關的大部分技術點。本書是測試相關人員必備的技術指導。書中每個技術點都有示例代碼,理論與實踐相結合的方式能夠使讀者快速理解Web自動化測試。 本書循序漸進地講解了Web自動化測試的各項知識點,使任何層級的讀者都能從中受益。緒論部分介紹自動化方面的基礎知識,幫助讀者少走彎路,正確學會自動化測試。第1~3章介紹Selenium、Python以及Web UI自動化的相關基礎知識。第4章和第5章介紹Selenium IDE和Selenium常規對象接口。第6章介紹Web UI自動化特殊場景處理。第7章介紹UnitTest單元測試框架。第8章介紹分層框架設計與實現。第9章介紹測試腳本的部署。第10章和第11章介紹Web API相關基礎知識。第12章介紹通過Python發送HTTP請求。第13章介紹API工具的設計與實現。第14章介紹Web服務的集成工作。第15章介紹HTTP Mock的開發。 本書適合Web測試人員、Web自動化人員、Web開發人員等初中級讀者以及希望使用Python作為編程語言的軟件測試工程師參考。 |
目錄:緒論1 第1章Selenium基礎9 1.1Selenium的歷史和分支9 1.2Selenium的特點12 1.3Selenium名詞說明12 1.3.1SeleniumRC12 1.3.2SeleniumServer12 1.3.3SeleniumWebDriver13 1.3.4SeleniumClient13 1.3.5SeleniumGrid13 1.3.6SeleniumIDE13 1.4Selenium基本原理14 1.5Selenium環境搭建15 1.5.1Windows環境搭建16 1.5.2Ubuntu環境搭建22 1.5.3MacOS環境搭建26 1.6Selenium調用不同瀏覽器28 1.6.1調用Firefox瀏覽器28 1.6.2調用Chrome瀏覽器29 1.6.3調用IE瀏覽器30 1.6.4IE瀏覽器安全機制設置30 1.7SeleniumDocker的使用31 1.7.1Docker環境安裝32 1.7.2SeleniumDocker鏡像下載35 1.7.3Docker下運行Selenium腳本36 1.8Selenium3說明38 1.8.1不再支持SeleniumRC38 1.8.2僅支持JDK1.8.0以上版本38 1.8.3SeleniumIDE支持Chrome插件38 1.8.4FireFox需要安裝獨立驅動38 1.8.5僅支持IE9.0以上版本39 1.8.6支持微軟的Edge瀏覽器39 1.8.7支持官方的SafariDriver39 第2章Python編程基礎41 2.1基礎語法41 2.1.1Python語句執行41 2.1.2Python語法格式42 2.1.3Python變量與類型44 2.1.4Python運算符與表達式47 2.2控制語句52 2.2.1if-else語句52 2.2.2for語句53 2.2.3while語句53 2.2.4continue語句54 2.2.5break語句54 2.2.6pass語句55 2.3模塊化55 2.3.1函數55 2.3.2類與實例59 2.3.3模塊文件61 2.3.4包62 2.4基礎數據結構63 2.4.1列表63 2.4.2元組64 2.4.3字典65 2.4.4遍歷數據67 2.5輸入/輸出67 2.5.1命令行輸入/輸出67 2.5.2文件輸入/輸出69 2.6內置函數70 2.6.1id函數70 2.6.2dir函數71 2.6.3help函數71 2.6.4type函數72 2.6.5isinstance函數72 2.6.6zip函數72 2.6.7filter函數72 2.6.8map函數73 2.6.9reduce函數73 2.7異常73 2.7.1異常捕獲73 2.7.2自定義異常75 2.8魔法特性76 2.8.1列表推導式76 2.8.2迭代器77 2.8.3生成器78 2.8.4閉包79 2.8.5裝飾器79 2.8.6內省機制83 2.9并發任務86 2.9.1多進程86 2.9.2多線程91 2.9.3協程93 2.10編解碼96 2.10.1源碼文件編碼97 2.10.2解釋器默認編碼98 2.10.3外部文件編碼99 2.10.4數據庫編碼100 2.10.5編解碼函數100 第3章WebUI自動化基礎102 3.1HTML與DOM簡介102 3.2學習元素定位方式104 3.3CSS定位技術106 3.4使用工具幫助定位106 3.4.1IE的DeveloperTool107 3.4.2Firefox的Web開發者工具107 3.4.3Chrome的開發者工具108 3.4.4Firefox的XPathChecker插件108 3.4.5Chrome的XPath工具109 3.4.6Firefox的CSS插件109 3.4.7Chrome的CSS工具110 3.4.8Firefox的WebDriverElementLocator插件110 3.5Selenium中進行元素定位112 3.5.1獲取一個定位元素112 3.5.2獲取一組定位元素113 3.5.3匹配非第一個元素114 第4章SeleniumIDE115 4.1SeleniumIDE安裝115 4.1.1Firefox安裝115 4.1.2SeleniumIDE在線安裝116 4.1.3SeleniumIDE本地安裝117 4.2SeleniumIDE功能介紹120 4.2.1SeleniumIDE窗口120 4.2.2菜單欄121 4.2.3地址欄123 4.2.4工具欄124 4.2.5用例管理區124 4.2.6用例腳本開發區125 4.2.7信息輸出區126 4.3SeleniumIDE使用126 4.3.1SeleniumIDE錄制與回放126 4.3.2SeleniumIDE腳本編輯128 4.3.3SeleniumIDE元素定位138 4.3.4SeleniumIDE匹配模式141 4.3.5SeleniumIDE腳本轉換143 第5章Selenium常規對象接口148 5.1瀏覽器對象操作148 5.1.1查找元素方法148 5.1.2瀏覽器窗口方法149 5.1.3Cookie處理方法149 5.2WebElement對象操作150 5.3文本框對象操作152 5.4按鈕對象操作152 5.5下拉列表對象操作153 5.6鏈接對象操作154 第6章WebUI自動化特殊場景處理156 6.1處理多窗口測試場景156 6.2處理瀏覽器彈框場景158 6.2.1Alert對象及方法158 6.2.2優雅地處理Alert彈框159 6.3Selenium進行鍵盤鼠標操作160 6.3.1鍵盤操作160 6.3.2鼠標操作161 6.4非Web控件的操作實現162 6.5Selenium執行JavaScript及操作DOM164 6.6Selenium截屏操作165 第7章UnitTest單元測試框架167 7.1常規使用方式167 7.2測試套件使用169 7.3TestLoader的使用170 7.4UnitTest加載流程172 第8章分層框架設計與實現173 8.1數據驅動層174 8.1.1文件存儲175 8.1.2數據庫存儲176 8.2定位符驅動層180 8.2.1本地文件存儲181 8.2.2遠程服務存儲183 8.3頁面操作層185 8.4業務邏輯層190 8.4.1公共業務190 8.4.2常規業務191 8.5結果驅動層193 8.5.1日志Logger記錄193 8.5.2自定義Logger記錄199 8.5.3郵件通知結果203 8.6異常處理層204 8.6.1程序異常處理204 8.6.2斷言異常處理208 8.6.3自定義異常類209 第9章測試腳本部署211 9.1使用SVN管理測試腳本211 9.1.1SVN服務安裝212 9.1.2SVN客戶端安裝217 9.1.3SVN使用簡介219 9.1.4SVN操作規范223 9.2遠程執行用例場景224 9.3SeleniumGrid模塊及搭建228 9.3.1SeleniumGrid環境搭建229 9.3.2SeleniumGrid使用232 9.4持續集成的自動化測試232 第10章WebAPI介紹236 10.1HTTP簡介236 10.1.1HTTP請求報文237 10.1.2HTTP響應報文239 10.2WebAPI介紹240 10.3RESTAPI介紹241 第11章WebAPI自動化基礎243 11.1正則表達式模塊學習243 11.1.1字符搜索244 11.1.2字符替換和分割246 11.1.3表達式修飾符246 11.1.4其他事項247 11.2XML讀寫模塊的學習248 11.2.1讀取XML文檔249 11.2.2寫入XML文檔252 11.3JSON模塊的學習253 11.3.1JSON串生成254 11.3.2JSON串解析256 11.4MD5、BASE64編解碼256 11.4.1BASE64編解碼257 11.4.2MD5加密258 11.4.3數據序列化259 第12章Python發送HTTP請求261 12.1HTTP請求發送261 12.1.1requests模塊安裝261 12.1.2發送GET請求262 12.1.3發送POST請求264 12.1.4發送multipart/form-data請求265 12.1.5發送其他類型請求266 12.2HTTP請求認證266 12.2.1HTTPBasicAuth267 12.2.2HTTPDigestAuth267 12.2.3OAuth認證268 12.2.4自定義認證268 12.3URL的編解碼269 12.4HTTP響應內容驗證271 12.4.1狀態碼驗證271 12.4.2響應頭驗證272 12.4.3響應體驗證273 12.5多線程發送請求276 12.5.1函數式多線程276 12.5.2類繼承式多線程279 第13章API工具設計與實現282 13.1最簡單的API工具282 13.1.1請求方法設置284 13.1.2請求頭設置288 13.1.3支持文件上傳289 13.1.4簡單結果驗證292 13.2測試數據讀取293 13.2.1測試數據格式293 13.2.2數據存儲方式294 13.2.3實現數據讀取296 13.3測試數據用例化299 13.3.1用例基本信息299 13.3.2用例套件信息301 13.3.3用例模板信息302 13.4測試流程控制304 13.4.1鉤子函數接口設計305 13.4.2鉤子函數接口調用307 13.4.3鉤子函數接口實現309 13.5測試結果驗證311 13.5.1完全匹配311 13.5.2內容包含312 13.5.3正則匹配313 13.5.4JSONPath313 13.6測試數據記錄315 13.6.1結果記錄315 13.6.2日志記錄317 第14章集成為Web服務319 14.1Web服務簡介319 14.1.1Web框架選擇320 14.1.2DEMO實現321 14.1.3框架開發學習322 14.2Web上啟動用例執行330 14.2.1運行參數接收332 14.2.2測試請求處理335 14.3Web上查看測試結果337 14.3.1任務列表頁338 14.3.2用例結果頁340 14.4持續集成的API自動化測試342 14.4.1用例集保存342 14.4.2用例集執行345 第15章HTTPMock開發347 15.1HTTPMock介紹347 15.2HTTPMock分析348 15.3HTTPMock實現349 15.3.1根據請求URL過濾349 15.3.2根據請求方法過濾350 15.3.3根據請求頭過濾352 15.3.4根據請求數據過濾353 參考文獻356 結束語357 |
序: |