發表於2024-11-17
本書作為“蝸牛學院”自動化測試開發的核心教材,全麵而深入地講解瞭自動化測試開發的四大核心技術:接口測試、GUI測試、性能測試和測試框架設計。本書全程以項目和實驗為主綫,將所有測試開發的核心技術以及底層實現原理進行瞭詳細的剖析,並結閤Java代碼完整地實現瞭這些原理。由於本書以Java作為核心編程語言,所以也有專門的項目講解測試開發過程中常用的Java核心編程知識。同時,筆者也將從業多年來關於軟件測試的項目和實驗進行瞭總結,這也是本書的特色和價值所在。考慮到目前讀者對測試工具的學習需求,本書也對目前比較流行的幾款測試工具進行瞭講解。
本書麵嚮的主要讀者群為軟件測試工程師、測試主管、測試架構師和對自動化測試開發有濃厚興趣的愛好者。本書也可以作為整個研發團隊提升測試技術和質量意識的參考書。希望通過本書的學習,能為讀者建立起一套完整的、有競爭力的自動化測試技術體係化思維。
項目1自動化測試體係及環境準備1
1.1預備知識2
1.1.1軟件工程與“沒有銀彈”2
1.1.2理解自動化測試6
1.1.3自動化測試實施過程9
1.1.4軟件測試專業術語14
1.2核心實驗18
1.2.1Eclipse開發環境的配置與使用18
1.2.2安裝XAMPP並配置數據庫及應用係統24
項目2WoniuATM模擬係統32
2.1預備知識33
2.1.1Java程序設計基礎——變量與類型33
2.1.2Java程序設計基礎——控製結構37
2.1.3Java程序設計基礎——數組44
2.2核心實驗: 實現WoniuATM的注冊與登錄50
2.3預備知識56
2.3.1Java麵嚮對象——類與實例56
2.3.2Java麵嚮對象——靜態與非靜態61
2.3.3Java麵嚮對象——構造方法63
2.3.4Java麵嚮對象——失血模型66
2.3.5Java麵嚮對象——繼承與多態69
2.4核心實驗: 重構WoniuATM並完善其功能77
2.5預備知識86
2.5.1Java異常處理機製86
2.5.2Java數據持久化——文本文件91
2.5.3Java數據持久化——Excel文件95
2.5.4Java數據持久化——JDBC數據庫99
2.6核心實驗102
2.6.1利用文本文件重構WoniuATM102
2.6.2利用數據庫重構WoniuATM108
2.6.3利用正則錶達式檢驗用戶輸入113項目3代碼級接口測試自動化118
3.1預備知識: 深入理解接口測試及白盒測試119
3.2核心實驗122
3.2.1實現被測程序ArrayCompare代碼122
3.2.2基於Java實現TDD測試驅動開發127
3.2.3基於Java實現代碼級接口測試132
3.2.4基於Java實現代碼級集成測試135
3.2.5基於JUnit實現代碼級接口測試137
3.2.6基於TestNG實現代碼級接口測試149
3.2.7基於Ecl�睧mma實現代碼覆蓋率統計157
3.2.8將被測程序導齣為Jar包並完成測試161
項目4協議級接口測試自動化164
4.1預備知識165
4.1.1協議級接口測試的價值165
4.1.2網絡通信過程與TCP/IP協議167
4.2核心實驗173
4.2.1利用Wireshark完成協議監控與分析173
4.2.2利用Java實現TCP通信過程175
4.2.3利用Java對飛鞦客戶端實施可靠性測試177
4.3預備知識: Web係統通信協議HTTP179
4.4核心實驗189
4.4.1利用協議分析工具監控Agileone通信過程189
4.4.2利用Java發送GET請求獲取頁麵源文件193
4.4.3利用Java發送POST請求實現登錄測試196
4.4.4使用Java對Agileone進行暴力破解200
4.4.5利用Java對需求提案模塊進行測試202
4.4.6利用HttpClient實現需求提案的測試212
4.4.7利用Java對Phpwind論壇進行“灌水”216
4.4.8利用Java完成對Phpwind論壇的隨機迴帖223
4.4.9利用Java處理JSON格式的數據內容226
4.4.10利用Java實現文件的上傳下載232
4.4.11利用Java實現HTTPS協議通信240
4.4.12利用Java完成對Web Service協議接口測試247
4.5工具應用254
4.5.1利用SoupUI實現協議級接口測試254
4.5.2利用Tesseract�睴CR實現驗證碼識彆260
項目5界麵級黑盒測試自動化265
5.1預備知識: 基於界麵的自動化測試核心技術266
5.2核心實驗271
5.2.1對象識彆原理——Java實現Monkey測試271
5.2.2對象識彆原理——Java操作Windows窗體對象276
5.2.3對象識彆原理——Java操作Java窗體對象283
5.2.4對象識彆原理——JavaScript操作Web窗體對象294
5.2.5Selenium IDE——測試Agileone的公告管理297
5.2.6Selenium WebDriver——配置與使用306
5.2.7Selenium WebDriver——代碼結構優化310
5.2.8Selenium WebDriver——代碼深度優化316
5.2.9Selenium WebDriver——對象識彆機製327
5.2.10Selenium WebDriver——鼠標與鍵盤操作338
5.2.11Selenium WebDriver——對話框與窗口341
5.2.12Selenium WebDriver——其他重要對象344
5.2.13Selenium WebDriver——兼容性測試347
5.3工具應用: 使用Appium測試Android應用程序348
項目6協議級性能測試自動化356
6.1預備知識357
6.1.1性能測試核心原理與技術體係357
6.1.2性能測試工程體係與場景設計361
6.1.3性能測試指標體係與結果分析370
6.2核心實驗375
6.2.1基於Java的多綫程技術應用375
6.2.2利用Java的Executor框架運行多綫程387
6.2.3利用Java開發Phpwind性能測試腳本392
6.2.4利用Java+JSoup實現頁麵資源的下載407
6.2.5利用Java設計拱形場景及思考時間412
6.2.6監控並分析Windows和Linux關鍵性能指標417
6.2.7基於Web前端的性能測試分析430
6.3工具應用437
6.3.1使用JMeter實現Agileone的接口測試437
6.3.2使用JMeter實現Phpwind的性能測試444
項目7CBT自動化測試框架設計451
7.1預備知識: 理解自動化測試框架設計與CBT452
7.2核心實驗454
7.2.1利用CBT的ATM模型實現基礎框架454
7.2.2利用DDT模型重構CBT框架463
7.2.3在CBT中定製測試報告組件467
7.2.4對CBT測試報告組件進行測試479
7.2.5在CBT中定製公共組件模塊485
7.2.6利用CBT完成與禪道管理係統集成495
7.2.7讓CBT完成産品的持續集成500
參考文獻509
項目3代碼級接口測試自動化項目簡介
被測程序(ArrayCompare)實現如下功能。
輸入一個以逗號(或其他字符)分隔的字符串,程序將解析該字符串並得到一個數組。以同樣的方式輸入第二個字符串,並解析成數組。
對輸入的字符分隔的每一個值進行判斷,必須為數值類型,否則程序將不做任何處理。
如果輸入閤法,將按如下順序進行判斷。
(1) 如果數組長度為零,將直接輸齣信息“結果: 數組長度為零.”。
(2) 如果兩個數組長度不相等,將直接輸齣信息“結果: 數組長度不一緻.”。
(3) 如果兩個數組不經過任何排序,自然相等,輸齣信息為“結果: 數組相同.”。
(4) 如果兩個數組經過排序後比較,是相等的,輸齣信息為“結果: 數組排序後相同.”。
(5) 如果兩個數組經過排序後比較,不相等,輸齣信息為“結果: 數組不同.”。
程序不需要設計專門的GUI界麵,直接使用命令行即可。
☆代碼路徑: \bookworkspace\CodeTest
項目展示
實驗結果如圖3��1所示。
圖3��1數組判斷
項目目標
(1) 理解路徑覆蓋和條件覆蓋對測試用例設計的指導價值。(2) 熟練運用基於代碼級的接口測試自動化技術。
(3) 對代碼級自動化測試框架JUnit和TestNG有深入理解。
(4) 理解代碼覆蓋率對代碼級自動測試的價值。
(5) 深入理解並熟練運用代碼級自動化測試技術,突破自動化測試技術難題。
3.1預備知識: 深入理解接口測試及白盒測試〖*2〗實驗簡介隨著移動互聯網的觸角深入人們生活的每個角落,伴隨而來的便是企業不斷對其軟件係統接口定義和研發,以便於進行數據傳輸和交換。由此導緻目前企業急需大量專業接口測試工程師,因為接口測試天然具備自動化測試的可行性。所以本項目專門介紹接口測試的各種存在形式。
實驗目的
(1) 理解接口測試的含義與作用。
(2) 理解白盒測試與灰盒測試。
(3) 理解代碼級接口測試與協議級接口測試。
01寫作背景
IT及互聯網行業在中國的發展已經超過20年,而軟件測試在中國也發展瞭15年左右。在這15年中,軟件測試經曆瞭從粗放到精細的過程,自主研發的軟件係統質量也越來越高。但是即使在大傢非常重視産品質量和用戶體驗的今天,業內仍然存在著諸多對軟件測試的偏見和誤解,比如軟件測試門檻低、沒有技術含量、沒有發展前途、吃青春飯、不懂編程纔做軟件測試等。很多軟件測試從業者也是基於其門檻低的緣故進入該行業的,但是後來卻發現事實並非如此,很多人都或多或少遇到瞭技術上的瓶頸。筆者從事軟件測試工作的14年間,親曆瞭中國IT行業及軟件測試的發展曆程,從帶項目、做管理,到做企業谘詢和內訓,再到專職培訓講師,整個過程中積纍瞭很多經驗和教訓。因此,纔萌發瞭編寫本書的想法。從筆者所經曆的項目經驗和企業實踐來看,軟件測試工作做得好的企業不多,能把自動化測試成功實施的企業就更少瞭。究其原因,就是大傢的質量意識不夠高,對測試工作的認知不足,同時在技術和管理上缺乏係統思維。不過令人欣慰的是,這些問題目前已經得到瞭企業的足夠重視,已經在慢慢好轉。
作為一名軟件測試行業的老兵,筆者一直在緻力於推動國內軟件測試行業的發展,並為此做過許多努力。筆者從來都沒有覺得軟件測試是一個門檻低、沒有技術含量、沒有發展前景的行業。之所以會這樣,是由於一些人的誤解以及一些企業在測試領域的不專業導緻的,而不是行業本身的問題。筆者在經曆瞭多年的技術沉澱之後,決定通過編寫一本書去影響更多的人,展現更多的測試技術。所以在寫作本書之前,筆者為這本書定下瞭5個寫作目標。
(1) 一定要講透自動化測試開發的核心原理及代碼實現,而不依賴於工具。
(2) 一定要讓這本書在未來10年甚至更長的時間內仍然具有指導價值。
(3) 一定要通過這本書證明軟件測試技術的難度不亞於任何一門開發技術。
(4) 一定要讓這本書成為自動化測試開發領域的一個技術標杆。
(5) 一定要讓讀者在完成本書的深入理解和全程實戰以後,成為一名高級測試工程師並具備架構師能力。
為瞭達到上述目的,為瞭能寫齣一本對中國軟件測試行業特彆是自動化測試領域有影響力的書,筆者搜集瞭大量素材,整理講解思路,設計專門實驗,對代碼進行調試,在教學過程中進行實踐,與各領域專傢討論等,纔最終得以完成本書的編寫工作。雖然本書並非十全十美,但是至少筆者已經全力以赴、認真對待瞭。請讀者在字裏行間去感受筆者的良苦用心,感受筆者對行業的焦慮、對從業者的忠告。
本書特色
那麼,有瞭這樣的寫作背景後,應該通過怎樣的寫作方式纔能夠更好地傳播這些技術及思想呢?筆者通過這些年來的實際研發管理經驗以及一綫培訓講師的經驗得到瞭啓發。要有效地傳播知識,特彆是技術,最好的方式並非眉飛色舞地演講,而是讓讀者實戰,進而總結思路、優化思路,獲得進一步突破。所以本書在寫作之初就定瞭一個基調:以項目為導嚮,以實驗為依托,進行全程實戰。一切知識點的講解和思路的梳理都是為書中的項目和實驗做準備的。測試開發本來就是一門實戰齣真知的手藝,所以,如果讀者隻是單純地抄寫代碼、使用工具,而沒有形成一套解決問題的思路和方法,那也注定無法學習到本書的精髓。
也正是因為如此,筆者在經過長期的實踐後,總結齣瞭一套人纔培養模式,我們稱之為“PBET人纔培養模式”。此模式由六大核心要素構成,並成功應用於筆者所在機構“蝸牛學院”的實際教學應用當中。筆者也希望以這樣的方式結閤本書的實際演練,為技術管理者提供一些關於團隊培養的新思路,具體方式如下。
(1) 項目驅動。通過貫穿項目進行連續的學習,可以更好地幫助學習者積纍實戰經驗。
(2) 任務驅動。項目的長期性將導緻反饋周期變長,所以項目應分為諸多任務進行。
(3) 團隊化培養。傳統培養模式強調個人能力的培養,而實際項目更強調團隊作戰。
(4) 對比式教學。利用不同的技術手段實現相同的功能,幫助學習者理解技術細節。
(5) 可視化教學。麵對空洞的概念或邏輯等,應讓其可視化,進而幫助學習者理解。
(6) 場景式教學。通過設定特定場景下的特定問題,進而探求各種可能的解決方案。
本書內容
全書共分為7個項目,項目之間的內容貫穿始終。
項目1主要為讀者講解自動化測試體係、筆者在自動化測試領域的思考以及為瞭後續的項目能夠順利完成所必備的環境搭建內容。
項目2是基於一個ATM機模擬係統,通過對該項目的講解,讓讀者瞭解Java開發的核心知識,為後續的測試開發項目打好編程基本功。
項目3是基於一個小規模的Java程序,為讀者詳細講解代碼級接口測試的核心知識,並配閤JUnit/TestNG兩個業界常用的單元測試框架為讀者進行演示。
項目4是基於筆者多年前研發的一套管理係統,為讀者深入講解協議級接口測試技術,也是本書非常重要的內容之一。
項目5主要專注於界麵級黑盒測試自動化,包括對象識彆原理及代碼實現、Selenium WebDriver的核心對象及使用,也同時為讀者介紹Appium的用法。
項目6主要關注協議級性能測試,以及如何利用原生的Java代碼開發一套性能測試腳本,同時為讀者講解JMeter這款接口性能測試工具的核心用法。
項目7主要為讀者講解筆者自主研發的一套自動化測試框架CBT的核心部分的實現思路,幫助讀者對自動化測試框架有一個深入的理解和認識,並且能夠在實際的項目中運用起來。
本書在寫作過程中得到瞭清華大學齣版社的大力支持。這裏也要特彆感謝我的同事李懿、陳南、陳華、鬍平、程萃等。最後,我要感謝“蝸牛學院”的學員們。正是由於我們無數日夜的教學和討論,纔有瞭本書的案例和思路。另外,特彆感謝杭州的甘麗平、上海的孫姣陽、成都的陳樂、上海的黃亮亮、深圳的黃小芮,他們在本書的寫作過程中提齣瞭寶貴的意見和建議。
當然,這裏更要感謝我的傢人,特彆是我的夫人和孩子給予瞭我很大的理解和支持。特謹以此書獻給我的夫人和孩子,希望他們能夠為他們最親的人感到驕傲。
讀者對象
(1) 軟件測試工程師、測試架構師和測試主管。
(2) 相關培訓機構的老師和學員。
(3) 自動化測試開發愛好者和從業者。
(4) Java編程愛好者及研發人員。
(5) 大中專院校的老師和學生。
由於圖書篇幅所限,針對本書還有大量補充實驗,讀者可以訪問“強哥學堂”或“蝸牛筆記”獲取更多補充內容。最後,由於編著者經驗和水平有限,導緻書中難免會有錯誤或不當之處,歡迎讀者批評、指正,提齣寶貴意見。
編著者2018年2月
自動化測試開發全程實戰 下載 mobi pdf epub txt 電子書 格式 2024
自動化測試開發全程實戰 下載 mobi epub pdf 電子書自動化測試開發全程實戰 mobi epub pdf txt 電子書 格式下載 2024