前言
? ? 作為測試行業(yè)已經(jīng)混了很長一段時間的混子,前陣子接到Lead的要求,讓我們沒事搞搞自動化。。。只有我有Mac機器(單位配的臺式機裝Windows,灰常不好用,這Mac是自帶來上班的。。。)然后就把IOS的自動化扔給我了。。。。作為一個零Siwft + Object-C基礎(chǔ)的菜鳥,只能硬著頭皮上。
因為是零基礎(chǔ),不能保證所介紹的100%正確,因此需要讀者自備甄別功能,若能幫助到想入門IOS自動化的同行,不勝榮幸!
為什么選UI Testing作為測試框架?
其實一開始是打算用Appium去做的,畢竟之前做過基于Java/C#的Selenium Web UI/API自動化,應(yīng)該都是差不多的(關(guān)鍵是能用JAVA寫啊,能省不少事!)。也確實做過點調(diào)研,無奈發(fā)現(xiàn)Appuim不太給力,如圖,Appium的官網(wǎng)上,能提供的最新版本是1.5.3(圖1),最后的更新時間是2016-06-08,而現(xiàn)在已經(jīng)是2017-02 了,已經(jīng)整整半年沒更新了,在使用Appium進行調(diào)研的時候發(fā)現(xiàn)一個致命傷,幾個月前Xcode進行了更新到8了,而Appium沒有更新跟上,導(dǎo)致當(dāng)我運行demo的時候,出現(xiàn)error(圖2)也不知道啥時候能修復(fù)這個問題。因此放棄Appium。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖1-Appium最新版本1.5.3
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2-當(dāng)前的Appium顯示不支持新版本得Xcode
之前看了一個鵝廠的帖子,介紹了他們的測試框架,也是用的UI Testing,說的很牛掰,而且UI Testing 是XCode自帶(寫過自動化會明白,自動化的用例會failed,很多時候都是環(huán)境引起的,包括測試框架本身都是不穩(wěn)定因素,用例本身不一定是主要因素),因此看好UI Testing,想著穩(wěn)定第一!然后。。。。義無反顧跳進了這個坑,現(xiàn)在被坑的體無完膚,衣帶漸寬終不悔啊~
入坑一段時間后發(fā)現(xiàn)的UI Testing的一些優(yōu)點和缺點:
優(yōu)點:
1. 原生自帶,穩(wěn)定性杠杠的
2.入門很簡單,點一下就可以錄制,代碼自動寫(雖然這功能不怎么用)。
3. 很容易定位元素。
缺點:
1. 需要源代碼編譯,UI Testing需要在IOS工程上新建一個target,但事實上不是所有公司都這么open允許測試人員往上面提交代碼的,絕大部分公司還是死腦筋的認(rèn)為測試人員只是點點鼠標(biāo)那種沒有技術(shù)含量(我一直認(rèn)為黑盒測試要做好是很有技術(shù)含量的,探索性測試必須腦子要好使),或者就算自動化也就像Selenium只要安裝包就能跑起來 ,一句話就是不要動開發(fā)的代碼:-( 。。。因此,我也就只能偷偷問開發(fā)要了份copy(論跟開發(fā)搞好關(guān)系的重要性)。
2. 語言限制,學(xué)習(xí)門檻高。XCode的工程,用的是Swift,如果沒相關(guān)經(jīng)驗,就得額外去學(xué)習(xí)這門語言,增加學(xué)習(xí)成本。Siwft還經(jīng)歷了2個大版本,還有兼容性的問題。如果是全新工程,建議用最新的。在使用過程中還會遇到跟Object-C交互的場景(還需要去源代碼寫東西,這個之后講),學(xué)習(xí)這2種語言也需要成本。。。
3. 可以找到的資料比較少。入門的demo很好找,但是想深入了解,并不像JAVA那樣好找,真的不好找,更要命的時候當(dāng)你找到別人的例子的時候,發(fā)現(xiàn)敲進去XCode已經(jīng)不認(rèn)了,新版的Swift已經(jīng)將函數(shù)名,使用特性什么的更新了。。囧,查Apple Developer ? 測試方面的介紹非常少,不好查。
4. 測試框架本身就有很讓人吐血的先天不足。沒有主動截圖功能!沒有主動截圖功能!沒有主動截圖功能!日志功能極其渣!日志功能極其渣!日志功能極其渣!
好了,如果這些缺點都能忍受的話(或者你實在找不到好用的IOS 自動化測試框架)。下一章就開工開搞。