前言
? ? 作為測(cè)試行業(yè)已經(jīng)混了很長(zhǎng)一段時(shí)間的混子,前陣子接到Lead的要求,讓我們沒(méi)事搞搞自動(dòng)化。。。只有我有Mac機(jī)器(單位配的臺(tái)式機(jī)裝Windows,灰常不好用,這Mac是自帶來(lái)上班的。。。)然后就把IOS的自動(dòng)化扔給我了。。。。作為一個(gè)零Siwft + Object-C基礎(chǔ)的菜鳥(niǎo),只能硬著頭皮上。
因?yàn)槭橇慊A(chǔ),不能保證所介紹的100%正確,因此需要讀者自備甄別功能,若能幫助到想入門(mén)IOS自動(dòng)化的同行,不勝榮幸!
為什么選UI Testing作為測(cè)試框架?
其實(shí)一開(kāi)始是打算用Appium去做的,畢竟之前做過(guò)基于Java/C#的Selenium Web UI/API自動(dòng)化,應(yīng)該都是差不多的(關(guān)鍵是能用JAVA寫(xiě)啊,能省不少事!)。也確實(shí)做過(guò)點(diǎn)調(diào)研,無(wú)奈發(fā)現(xiàn)Appuim不太給力,如圖,Appium的官網(wǎng)上,能提供的最新版本是1.5.3(圖1),最后的更新時(shí)間是2016-06-08,而現(xiàn)在已經(jīng)是2017-02 了,已經(jīng)整整半年沒(méi)更新了,在使用Appium進(jìn)行調(diào)研的時(shí)候發(fā)現(xiàn)一個(gè)致命傷,幾個(gè)月前Xcode進(jìn)行了更新到8了,而Appium沒(méi)有更新跟上,導(dǎo)致當(dāng)我運(yùn)行demo的時(shí)候,出現(xiàn)error(圖2)也不知道啥時(shí)候能修復(fù)這個(gè)問(wèn)題。因此放棄Appium。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖1-Appium最新版本1.5.3

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2-當(dāng)前的Appium顯示不支持新版本得Xcode
之前看了一個(gè)鵝廠的帖子,介紹了他們的測(cè)試框架,也是用的UI Testing,說(shuō)的很牛掰,而且UI Testing 是XCode自帶(寫(xiě)過(guò)自動(dòng)化會(huì)明白,自動(dòng)化的用例會(huì)failed,很多時(shí)候都是環(huán)境引起的,包括測(cè)試框架本身都是不穩(wěn)定因素,用例本身不一定是主要因素),因此看好UI Testing,想著穩(wěn)定第一!然后。。。。義無(wú)反顧跳進(jìn)了這個(gè)坑,現(xiàn)在被坑的體無(wú)完膚,衣帶漸寬終不悔啊~
入坑一段時(shí)間后發(fā)現(xiàn)的UI Testing的一些優(yōu)點(diǎn)和缺點(diǎn):
優(yōu)點(diǎn):
1. 原生自帶,穩(wěn)定性杠杠的
2.入門(mén)很簡(jiǎn)單,點(diǎn)一下就可以錄制,代碼自動(dòng)寫(xiě)(雖然這功能不怎么用)。
3. 很容易定位元素。
缺點(diǎn):
1. 需要源代碼編譯,UI Testing需要在IOS工程上新建一個(gè)target,但事實(shí)上不是所有公司都這么open允許測(cè)試人員往上面提交代碼的,絕大部分公司還是死腦筋的認(rèn)為測(cè)試人員只是點(diǎn)點(diǎn)鼠標(biāo)那種沒(méi)有技術(shù)含量(我一直認(rèn)為黑盒測(cè)試要做好是很有技術(shù)含量的,探索性測(cè)試必須腦子要好使),或者就算自動(dòng)化也就像Selenium只要安裝包就能跑起來(lái) ,一句話就是不要?jiǎng)娱_(kāi)發(fā)的代碼:-( 。。。因此,我也就只能偷偷問(wèn)開(kāi)發(fā)要了份copy(論跟開(kāi)發(fā)搞好關(guān)系的重要性)。
2. 語(yǔ)言限制,學(xué)習(xí)門(mén)檻高。XCode的工程,用的是Swift,如果沒(méi)相關(guān)經(jīng)驗(yàn),就得額外去學(xué)習(xí)這門(mén)語(yǔ)言,增加學(xué)習(xí)成本。Siwft還經(jīng)歷了2個(gè)大版本,還有兼容性的問(wèn)題。如果是全新工程,建議用最新的。在使用過(guò)程中還會(huì)遇到跟Object-C交互的場(chǎng)景(還需要去源代碼寫(xiě)東西,這個(gè)之后講),學(xué)習(xí)這2種語(yǔ)言也需要成本。。。
3. 可以找到的資料比較少。入門(mén)的demo很好找,但是想深入了解,并不像JAVA那樣好找,真的不好找,更要命的時(shí)候當(dāng)你找到別人的例子的時(shí)候,發(fā)現(xiàn)敲進(jìn)去XCode已經(jīng)不認(rèn)了,新版的Swift已經(jīng)將函數(shù)名,使用特性什么的更新了。。囧,查Apple Developer ? 測(cè)試方面的介紹非常少,不好查。
4. 測(cè)試框架本身就有很讓人吐血的先天不足。沒(méi)有主動(dòng)截圖功能!沒(méi)有主動(dòng)截圖功能!沒(méi)有主動(dòng)截圖功能!日志功能極其渣!日志功能極其渣!日志功能極其渣!
好了,如果這些缺點(diǎn)都能忍受的話(或者你實(shí)在找不到好用的IOS 自動(dòng)化測(cè)試框架)。下一章就開(kāi)工開(kāi)搞。