iOS測試指南

iOS測試指南

《iOS 測試指南》是一本專注於 iOS 測試領域的書。其中重點講述了各個測試階段的具體實踐方法,並且通過持續集成串聯了各個測試階段的活動。《iOS 測試指南》中所有的測試實踐並非紙上談兵,而是出自於筆者實際工作中的探索和實踐。在測試實例上有一定的簡化,是為了脫離複雜的業務。《iOS 測試指南》的重點在於對方法的介紹。以下幾個方面的讀者可能會受益:有一定技術功底的測試工程師;有一定經驗的移動測試工程師;iOS開發工程師;測試技術愛好者。

內容簡介

1. 國內iOS移動測試領域首本本權威著作,來自豆瓣的一線實戰經驗。
2. 開源的測試工具ynm3k之父潛心製作,帶你走出iOS App的“裸奔”時代。

作者簡介

羋峮,發音(mi jun),但是輸入法需要輸入(mi qun)。具體為什麼我不想太較真了,害怕最後發現自己把自己的名字讀錯30年的尷尬。也可以叫我老羋,或者厚臉皮(豆瓣的ID)等。不管名字叫什麼或者暱稱是什麼,我就是我,一個想混進程式設計師隊伍未果的非主流測試工程師

專業推薦

媒體推薦

由於Xcode對自動化測試和持續集成的支持一直不太好,所以業界有許多套用開發都是通過測試人員手工測試的方式來保證質量的。作者羋峮不但具有多年測試經驗,並且開源了自己所實現的iOS自動化測試工具ynm3k。他在本書中對iOS測試中蘋果公司已有的解決方案和第三方開源工具做了詳細的介紹,這對於業界同行將相關測試工具引入iOS開發過程中,並保證套用質量非常有幫助。推薦每一個從事iOS測試工作的朋友閱讀本書。
—— 唐巧
資深iOS開發,InfoQ編輯
非常認同書中的一句話:“一個高質量的軟體系統是設計和開發出來的,並不是測試出來的”。如果你是個有追求的iOS開發人員,那么本書值得你好好讀一讀。本書由淺入深地介紹了很多iOS測試所涉及的工具用法和理論知識,相信等你將這些技巧融入平時的工作以後,在Coding的過程中會變得更輕鬆、更快樂。
——虞冰
資深系統架構師, 百姓網技術總監
移動網際網路就是網際網路,移動測試必然是2014年的測試技術熱點。iOS作為移動終端的主流平台,其測試就成為重中之重。本書將iOS測試的方方面面,如單測、界面測試、持續集成等都給出了實際操作指導,內容緊貼業界一線的最新實踐,是測試人員學習iOS測試的必讀書籍。
—— 吳穹
敏捷專家,Agilean聯合創始人
羋峮在iOS測試領域耕耘多年,如今他將自己多年來的經驗和心得付諸書面,乃是測試界同仁之福。整本書輕鬆易讀,由淺入深,引導讀者一步步地了解、熟悉和掌握iOS測試。我向所有有志於從事iOS測試工作的人推薦本書!
—— 徐毅
敏捷轉型顧問,敏捷測試顧問

名人推薦

由於Xcode對自動化測試和持續集成的支持一直不太好,所以業界有許多套用開發都是通過測試人員手工測試的方式來保證質量的。作者羋嵋不但具有多年測試經驗,並且開源了自己所實現的iOS自動化測試工具ynm3k。他在本書中對iOS測試中蘋果公司已有的解決方案和第三方開源工具做了詳細的介紹,這對於業界同行將相關測試工具引入iOS開發過程中,並保證套用質量非常有幫助。推薦每一個從事iOS測試工作的朋友閱讀本書。
——唐巧資深iOS開發,InfoQ編輯,iOS開發部落格
非常認同書中的一句話: “一個高質量的軟體系統是設計和開發出來的,並不是測試出來的”。如果你是個有追求的iOS開發人員,那么本書值得你好好讀一讀。本書由淺入深地介紹了很多iOS測試所涉及的工具用法和理論知識,相信等你將這些技巧融入平時的工作以後,在Coding的過程中會變得更輕鬆、更快樂。
——虞冰資深系統架構師,百姓網技術總監
移動網際網路就是網際網路,移動測試必然是2014年的測試技術熱點。iOS作為移動終端的主流平台,其測試就成為重中之重。本書將iOS測試的方方面面,如單測、界面測試、持續集成等都給出了實際操作指導。內容緊貼業界一線的最新實踐,是測試人員學習iOS測試的必讀書籍。
——吳穹敏捷專家,Agilean聯合創始人
羋峮在iOS測試領域耕耘多年,如今他將自己多年來的經驗和心得付諸書面,乃是測試界同仁之福。整本書輕鬆易讀,由淺入深,引導讀者一步步地了解、熟悉和掌握iOS測試。我向所有有志於從事iOS測試工作的人推薦本書!
——徐毅敏捷轉型顧問,敏捷測試顧問,譯者

圖書目錄

第1章軟體測試與iOS測試
1.1什麼是軟體測試
1.1.1測試活動何時展開
1.1.2軟體測試與軟體缺陷
1.1.3軟體測試與軟體質量
1.2軟體測試的類型
1.2.1單元測試
1.2.2集成測試
1.2.3系統測試
1.3iOS平台的一些性
1.4iOS測試需要做么
第2章iOS環境準備
2.1開發測試設備
2.2安裝和設定Xcode
2.3iOS開發者書
2.4知識的準備
第3章iOS單元測試
3.1單元測試工具
3.1.1OCUnit
3.1.2GHUnit
3.1.3GTM
3.2單元測試實踐
3.2.1實踐項目介紹
3.2.2Model的單元測試
3.2.3Controller和View的單元測試
3.3單元測試的擴展工具
3.3.1OCHamcrest
3.3.2OCMockito
第4章iOS的UI自動化測試
4.1UIAutomation的運行
4.2Instruments工具的簡要介紹
4.3UIAutomation入門
4.3.1UIAutomation腳本開發之前
4.3.2UIAutomation腳本編輯
4.3.3UIAutomation實踐
4.3.4UIAutomation腳本的錄製
4.3.5UIAutomation在真實設備上的運行
4.4深入了解UIAutomationAPI
4.4.1Logger日誌輸出
4.4.2Element和ElementArray
4.4.3手勢動作的模擬
4.4.4延時處理
4.4.5Target對象的一些系統級別的操作
4.5測試用例的組織
4.6第三方測試工具介紹
4.6.1TuneupJs的使用
4.6.2ynm3k的使用
第5章iOSWeb應用程式的自動化測試
5.1使用Selenium進行iOSWeb自動化測試
5.1.1WebDriver原理結構
5.1.2iPhoneDriver實踐
5.1.3iPhoneDriver的缺陷
5.2使用Appium進行iOSWeb自動化測試
5.2.1Appium初窺
5.2.2Appium實踐
5.3Appium常用方法介紹
5.3.1Appium控制項定位方法
5.3.2Appium控制項操作方法
第6章iOS的持續集成
6.1持續集成工具
6.1.1Jenkins和Hudson
6.1.2Jenkins的安裝和使用
6.1.3Jenkins相關外掛程式介紹
6.2iOS持續集成實踐
6.2.1iOSWeb自動化測試的持續集成
6.2.2iOSUI自動化測試的持續集成
6.2.3iOS單元測試的持續集成
第7章iOS測試策略及測試方法
7.1iOS測試策略
7.2兼容性測試
7.3網路流量測試
7.4升級測試
7.5性能測試
7.6穩定性測試
第8章iOS測試框架實踐
8.1iOS測試框架總覽
8.2UIAutomation擴展工具實踐
8.3UIAutomation驅動測試框架介紹
8.3.1UIAutomation驅動類測試框架介紹
8.3.2Appium測試實踐
8.4非UIAutomation測試框架實踐
8.5BDD測試框架介紹
8.5.1Frank測試實踐
8.5.2再談BDD
8.6自動化測試框架剖析
第9章Xcode5測試的新特性
9.1Xcode5中的單元測試
9.1.1XCTest測試框架
9.1.2便捷的單元測試管理
9.1.3XCTestRefactoringTool
9.1.4新版本的命令和持續集成
9.2iOS持續集成工具OSXServer
9.2.1安裝配置OSXServer
9.2.2Web端的Bots設定和持續集成
9.2.3Xcode5和OSXServer的雙劍合璧

序言

推薦序一 你的iOS App還在裸奔么?
2014年3月的TIOBE程式語言排行榜,Objective-C排行第三位,緊隨C語言和Java之後,甚至在C++前面。其他這三種語言,都是有著非常廣泛的套用場景和悠久的使用歷史的。Objective-C的誕生也並不晚,但是僅在近年才開始流行,而且Objective-C幾乎只用於iOS/Mac平台開發。所以,這一排行榜多少能告訴我們iOS開發到底有多熱。2013年7月,蘋果公司CEO Tim Cook宣布僅在中國就有50萬iOS開發者。然而,這個行業的開發水平和測試水平到底怎么樣呢?我在新浪微博簡單地做了一個調查,34.5%的人說他們完全沒有任何測試;44.8%的團隊有獨立測試人員;而有單元測試、UI自動化測試、持續集成的團隊就屈指可數了。那么,在這個平台下測試不重要嗎?我覺得恰恰相反。任何App要想在蘋果的AppStore上架,都需要經過蘋果的審核員的審核,不管你是世界五百強的大公司,還是小作坊,都會一視同仁,絕無例外。如果你的App沒有經過良好的測試,被審核員發現有閃退、崩潰或者其他嚴重質量問題,他們會毫不猶豫地拒絕你的App。而你則需要修改App,重新提交,這往往就意味著再等7~8天的排隊才有機會被審核。如果你的運氣好,Bug沒有被審核員發現,或者說,在審核員審核的環境下,你的App表現良好,你的App就成功上架了。但是如果它在用戶的iPhone/iPad上面發生閃退、崩潰,等等,其實你會更倒霉。因為憤怒的用戶會迅速讓你收穫大量的1星,即使你好不容易做了一年的好評度,也會一下子跌落谷底。如果你熟悉AppStore的話,就知道這往往意味著你的下載量將一落千丈,你的App也
有可能從此無人問津。
App這個形式和網站類套用最大的區別就是,如果網站的程式設計師發現某個頁面有一個小Bug,修改後,經過合理的內部審核流程,它的一個部署腳本就可以升級代碼,用戶在刷這個頁面和那個頁面之間的空隙,這個升級就完成了。而iOS App出現了問題以後,不管你修改得多快,都需要被蘋果的審核員審核,這往往需要7~14天,然後,你往往需要在用戶方便的時候,通過重新下載整個App的方式得到更新(雖然iOS 7.0後,更新普遍可以自動在後台完成,但是時間周期仍舊是這么長)。所以,對iOS開發者強調測試的重要性,我覺得說100遍、1萬遍都不嫌多,都有其現實意義。但是為什麼還有那么多團隊和個人開發者沒有進行完善的測試呢?懶、僥倖心理、怕麻煩一定是少不了的。還有,我覺得就是一般的入門書、教程,甚至包括蘋果的官方文檔,講到的測試部分都太簡單,缺乏可操作性。
所以,當我得知本書的作者羋峮在寫這樣一本專注於iOS平台測試工具和方法的書的時候,我很高興,而他邀請我做序的時候,我感到十分榮幸。最早知道羋峮時,他還在豆瓣的測試團隊工作,他做了一個開源的測試工具ynm3k(要你命3000)。僅僅是這個充滿幽默感的名字就征服了我。後來我了解了一下這個工具,由此我才知道原來在iOS下也是可以進行UI自動化測試的。在此之前,我只是經常跟人們在一起人云亦云地說:“嗯,單元測試是好,但是iOS開發主要都是UI邏輯,這可怎么測試呢?”不經過完善的測試,我們的App其實就是在裸奔,會不會出問題,會出什麼樣的問題,完全看運氣。在以前,我們可以有這樣或那樣的藉口,甚至可以直接說,我就是找不到資料嘛,學不會那還能怎么辦呢?
現在,有了這本書,對不起,沒有藉口了,請把這本書帶回家,仔細閱讀,
按照這本書改善你的開發測試流程,別再讓你的App裸奔了……
郝培強
OurCoders.com創始人
2014年3月11日於上海
推薦序二
前幾天羋峮告訴我,他完成了一本與iOS測試相關的書,希望我能寫個推薦序。羋峮在豆瓣的測試團隊時,就一直專注於移動App和移動Web套用的測試。經常能夠見到他鼓搗各種工具,用充滿創意的方式將小工具連線起來解決實際問題,當然,最讓人稱道的,是他對移動測試的熱情。
讀完了羋峮這本不算厚的書,不覺眼前一亮。這本書並沒有刻意地為了拔高而選擇一些生澀的主題,而是系統性地介紹了移動測試的方方面面:對於移動App的測試,本書介紹了如何搭建移動App測試的環境,如何進行移動App的單元測試,如何選擇和使用UI自動化測試方案;對於移動Web套用的測試,本書介紹了如何使用Selenium和Appium輕鬆地完成這類套用的測試;此外,羋峮還格外體貼地在書中介紹了如何使用持續集成(CI)更好地搭建持續測試的環境——在Web開發中引入持續集成並不少見,但在移動套用開發中發揮持續集成的威力,這可是真有些挑戰的!
隨著移動網際網路漸入佳境,越來越多的組織和個人開始進入移動網際網路領域。在測試行業內,越來越多的測試者開始關心移動套用的測試。移動套用明顯有不同於Web套用和桌面套用的特點,移動開發平台(iOS、Android,也許還可以算上WP)自身的特性,設備的兼容性(即使是iOS的開發者,現在也不得不考慮兼容性的問題了),移動設備本身的某些特性(網路連線,互動特性等)都給移動套用的測試帶來了新的挑戰。明顯能夠看到,移動套用的測試已經成為測試領域的熱點,近期在各個渠道也頗能見到一些與移動套用測試相關的介紹文章。然而,大部分我讀到的介紹性的文章都是對某工具的介紹,或是某個具體的測試手段,雖然熱鬧非凡,但對那些希望系統性地一窺移動套用測試門徑的測試者來說,實在是不堪大用。從這一點上來說,羋峮的這本《iOS測試指南》算是恰逢其時。本書這些扎紮實實來自一線實踐的內容,一定能夠讓對這方面有興趣的工程師系統性地了解移動套用測試。當然,移動套用的測試熱才剛剛在測試領域內興起,這本《iOS測試指南》為這個方向開了個好頭。我期望能夠有越來越多的測試者(包括開發者)願意深入到這個方向中,研究如何能夠不斷提高移動套用開發的效率和質量,幫助組織以最小的成本實現目標。我也更期望有越來越多的人願意用圖書的方式記錄和分享自己的心得,為這個值得重視的領域添磚加瓦。
段念
豆瓣工程副總裁
2014年3月9日於北京
致謝
本書的成稿離不開許多人的幫助和支持。首先是家人的支持。對於一個1歲多孩子的父親,利用業餘時間完成一本書的編寫是非常困難的。我美麗的妻子不但承擔了日常所有的家務,還要獨立養育孩子,甚是辛苦。如果沒有她的理解和支持,本書與讀者見面的時候可能iPhone 9都發布了。同樣,我還要感謝我的父母、岳父、岳母和朋友,沒有他們的鼓勵我同樣不會完成本書。
當然,還要感謝俠少和任曉露編輯。俠少負責扮黑臉,認真嚴格地對初稿進行修改,修改意見一度多於書稿字數。雖然那些改進意見都是正確的,但是由於數量過多,有時無法接受。這時曉露編輯就出現了,並且給了我無限的鼓勵。就是在這樣的不斷重複中,我完成了書稿。在此,真心感謝博文視點的每一位編輯。
對本書中的iOS測試方法,我在豆瓣的工作期間幾乎都實踐過。在此,我還要感謝豆瓣的每一位移動開發工程師。因為沒有你們高質量的代碼,我不可能玩出這么多花哨的小技巧。當然,最應該感謝的是解彥博和耿新躍兩位老師。如果不是當初兩位老師給了我去豆瓣工作的機會,本書的成稿更是無從談起。
最後,感謝本書的每一位讀者,感謝你們對本書的關注和支持。

相關詞條

熱門詞條

聯絡我們