首先請原諒我,這篇文章其實並沒有什麼乾貨,閱讀這篇文章,大概會浪費你人生中的幾分鐘。不過如果有閒著無聊的,倒是可以看看,畢竟我寫這篇文章也一樣。有的大神號稱沒有乾貨不寫,我倒覺得,有些東西只要寫出來對自己對他人總會有點幫助。
自動化測試?
是的,因為專案看不是特別忙,但是測試特別忙,所以我們臨危受命,調研自動化測試。調研到什麼程度呢?測試能用的程度。好的,走你!
一開始我們選擇測試平臺,就是希望選擇一個簡單的,無論是裝置要求還是操作都要簡單為主。比方說有的測試平臺要原始碼,pass;有的測試平臺要手機越獄,pass;有的測試平臺,不支援啥啥啥,pass。那麼我們最後選擇的就是Appium。(其實最後選擇的不是它)
Appium有幾個優點,1不需要原始碼,2對測試語言要求良好,3好像還挺活躍的。於是我們就開始用Appium測試。Appium分為服務端和客戶端,你在官網下載的dmg是服務端,客戶端其實就是手機了,當然你也可以用命令列下載。首先你就按照官網環境來搭一遍,中間並不是特別難。然後你要先執行1個專案WebDriverAgent。這個專案我覺得官網沒說明白,有一些方法不太合適。其實這個專案你無論是用的Appium桌面版,還是命令列,它都會自己把webDriverAgent專案下載下來。你要做的,就是在這個專案的根資料夾裡,把它找出來。這個專案裡你把證照換成你自己的,然後選擇到webDriverAgentRunner上面執行。不知道為什麼我的配置完證照後,它不顯示profile,不過沒有關係,不影響測試。這個專案執行完後,你會發現就黑了一下而已,不用害怕這是正常現象,你只要配置好服務端就可以真機測試啦。服務端的配置,我直接上圖吧,看圖說話比較簡單:
沒錯,這樣就可以了,其實中間還是有一些環境的問題,需要上issue上面找答案,不過每個人情況應該不一樣,這裡就不贅述了。
airTest自動化測試
本來,馬上就快要交差了,但是我們突然發現了一個比appium更好的測試平臺,真的,谷歌也是這麼說的,airTest。這個好像還是網易搞的,但是用起來真的是很爽,這個直接錄製指令碼,並且airTestIde中文友好,另外你還能直接和客服提要求提問題,體驗真的是不錯。
不過這個對於iOS來說,其實還是有一些問題的,首先它也需要提前執行一個專案appAgent,沒錯就是webDriverAgent,不過是修改過的版本,所以你還是要去下載一遍。其次,Appium的webDriverAgent執行過後安裝在手機裡就行了,不過appAgent需要保持長連結,而且還要有一步埠對映iproxy 8100 8100 。所以目前來看,測試需要買一臺mac電腦是肯定的了。不過這並不代表蘋果手機不能在Windows上面測試,這裡有一個非常蛋疼的方法:你在Mac電腦上面跑完appAgent,並且輸入完命令iproxy 8100 8100後,你用Windows的airTestIde連結你手機的IP地址加8100埠就可以了。所以這需要兩臺電腦測試一臺手機,聊勝於無吧。
然後就是寫python指令碼了,python語言我發現其實學一學還是很有用的。裡面的東西有好多感覺都是想通的,還有一些我覺得正適合從iOS入門的人學。比方說我學ReactNative的時候,裡面的map,還有返回一個promise看的我有點蛋疼,不過看完Python的MAP,還有各種函式特性後,我就有一種雲開見月的感覺。我是用pycharm寫的python,有自動提示,縮排也不錯,而且airTestIDE是不支援python多個指令碼的,就是沒有專案的感覺,你只能執行單個指令碼。所以我們的專案結構就是這樣的,建立一個測試用例集,在裡面弄一個主指令碼,比方說啥啥啥.py,然後在裡面再配置,你要呼叫什麼指令碼,比方說如下程式碼:
這樣我們就可以任意組合各種指令碼,不過在生成報告的時候,你會發現還有一個問題。這個問題就是airTest的做法是1個.ari檔案,只能生成1份測試報告,所以有多個指令碼執行的話沒有辦法弄成1份測試報告。這個就要靠自己想辦法了,後來你可以注意到airtest生成報告用例的檔案在run.py,你要自己寫一個python檔案繼承於它,然後重寫裡面的方法,程式碼我這裡就先不放了,大概上思路就是這樣。
總體上,自動化測試真的沒意思,不過python很有意思。