前言
? ? 作為測(cè)試行業(yè)已經(jīng)混了很長一段時(shí)間的混子袜茧,前陣子接到Lead的要求锐秦,讓我們沒事搞搞自動(dòng)化。顶考。凌唬。只有我有Mac機(jī)器(單位配的臺(tái)式機(jī)裝Windows并齐,灰常不好用,這Mac是自帶來上班的。况褪。撕贞。)然后就把IOS的自動(dòng)化扔給我了。测垛。捏膨。。作為一個(gè)零Siwft + Object-C基礎(chǔ)的菜鳥食侮,只能硬著頭皮上号涯。
因?yàn)槭橇慊A(chǔ),不能保證所介紹的100%正確锯七,因此需要讀者自備甄別功能链快,若能幫助到想入門IOS自動(dòng)化的同行,不勝榮幸眉尸!
為什么選UI Testing作為測(cè)試框架域蜗?
其實(shí)一開始是打算用Appium去做的,畢竟之前做過基于Java/C#的Selenium Web UI/API自動(dòng)化噪猾,應(yīng)該都是差不多的(關(guān)鍵是能用JAVA寫啊霉祸,能省不少事!)畏妖。也確實(shí)做過點(diǎn)調(diào)研脉执,無奈發(fā)現(xiàn)Appuim不太給力疼阔,如圖戒劫,Appium的官網(wǎng)上,能提供的最新版本是1.5.3(圖1)婆廊,最后的更新時(shí)間是2016-06-08迅细,而現(xiàn)在已經(jīng)是2017-02 了,已經(jīng)整整半年沒更新了淘邻,在使用Appium進(jìn)行調(diào)研的時(shí)候發(fā)現(xiàn)一個(gè)致命傷茵典,幾個(gè)月前Xcode進(jìn)行了更新到8了,而Appium沒有更新跟上宾舅,導(dǎo)致當(dāng)我運(yùn)行demo的時(shí)候统阿,出現(xiàn)error(圖2)也不知道啥時(shí)候能修復(fù)這個(gè)問題。因此放棄Appium筹我。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖1-Appium最新版本1.5.3
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2-當(dāng)前的Appium顯示不支持新版本得Xcode
之前看了一個(gè)鵝廠的帖子扶平,介紹了他們的測(cè)試框架,也是用的UI Testing蔬蕊,說的很牛掰结澄,而且UI Testing 是XCode自帶(寫過自動(dòng)化會(huì)明白,自動(dòng)化的用例會(huì)failed,很多時(shí)候都是環(huán)境引起的麻献,包括測(cè)試框架本身都是不穩(wěn)定因素们妥,用例本身不一定是主要因素),因此看好UI Testing勉吻,想著穩(wěn)定第一监婶!然后。齿桃。压储。。義無反顧跳進(jìn)了這個(gè)坑源譬,現(xiàn)在被坑的體無完膚集惋,衣帶漸寬終不悔啊~
入坑一段時(shí)間后發(fā)現(xiàn)的UI Testing的一些優(yōu)點(diǎn)和缺點(diǎn):
優(yōu)點(diǎn):
1. 原生自帶,穩(wěn)定性杠杠的
2.入門很簡(jiǎn)單踩娘,點(diǎn)一下就可以錄制刮刑,代碼自動(dòng)寫(雖然這功能不怎么用)。
3. 很容易定位元素养渴。
缺點(diǎn):
1. 需要源代碼編譯雷绢,UI Testing需要在IOS工程上新建一個(gè)target,但事實(shí)上不是所有公司都這么open允許測(cè)試人員往上面提交代碼的理卑,絕大部分公司還是死腦筋的認(rèn)為測(cè)試人員只是點(diǎn)點(diǎn)鼠標(biāo)那種沒有技術(shù)含量(我一直認(rèn)為黑盒測(cè)試要做好是很有技術(shù)含量的翘紊,探索性測(cè)試必須腦子要好使),或者就算自動(dòng)化也就像Selenium只要安裝包就能跑起來 藐唠,一句話就是不要?jiǎng)娱_發(fā)的代碼:-( 帆疟。。宇立。因此踪宠,我也就只能偷偷問開發(fā)要了份copy(論跟開發(fā)搞好關(guān)系的重要性)。
2. 語言限制妈嘹,學(xué)習(xí)門檻高柳琢。XCode的工程,用的是Swift润脸,如果沒相關(guān)經(jīng)驗(yàn)柬脸,就得額外去學(xué)習(xí)這門語言,增加學(xué)習(xí)成本毙驯。Siwft還經(jīng)歷了2個(gè)大版本倒堕,還有兼容性的問題。如果是全新工程尔苦,建議用最新的涩馆。在使用過程中還會(huì)遇到跟Object-C交互的場(chǎng)景(還需要去源代碼寫東西行施,這個(gè)之后講),學(xué)習(xí)這2種語言也需要成本魂那。蛾号。。
3. 可以找到的資料比較少涯雅。入門的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è)試框架本身就有很讓人吐血的先天不足。沒有主動(dòng)截圖功能爬立!沒有主動(dòng)截圖功能钾唬!沒有主動(dòng)截圖功能!日志功能極其渣侠驯!日志功能極其渣抡秆!日志功能極其渣!
好了陵霉,如果這些缺點(diǎn)都能忍受的話(或者你實(shí)在找不到好用的IOS 自動(dòng)化測(cè)試框架)琅轧。下一章就開工開搞伍绳。