今天看到了下面這篇部落格,是淘測試開發的iOS自動化測試載入器,非常值得學習應用:
InstrumentDriver,對iOS自動化測試說 Yes!
InstrumentDriver 是 Mobile自動化小組最近實現的基於 instrument,針對 iOS 的自動化測試架構,目前支援 java 語言編寫測試案例。 研究過iOS自動化測試的同學肯定對 instrument UI Automation 有所耳聞,或者已經使用它進行自動化測試實踐。iOS 4.0 開始,蘋果官方提供了
UI Automation 以支援應用的UI自動化測試。不過4.0版本並不支援錄製功能,只能根據提供的API文檔編寫 javascript 測試指令碼,instrument 驅動指令碼在應用上類比使用者行為。
InstrumentDriver 的實現有以下功能特點:
1. C/S 模式運行。 架構分為Server端和Client端,雙方進行socket通訊傳遞訊息:Client端(Mobile)負責請求測試步驟運行,並返回運行結果;Server端(Java用例)負責響應Client請求並接受測試步驟的運行結果。C/S模式的實現,甚至可以脫離Mac在PC上編寫、調試測試案例(運行肯定離不開Mac系統),在熟悉的window環境下,讓用例編寫更加得心應手。
2. 純Java語言編寫測試案例,很好的相容了instrument js格式的API。 InstrumentDriver 用Java實現了各元素類型的之間的繼承關係以及各元素類型所提供的操作方法,還擴充了一些更便於使用的操作,如滑動操作等。熟悉instrument js文法格式的測試人員可以很快用java語言實現測試案例。
3. 提供了清晰的控制項樹狀結構列印及便利的元素尋找方法。 可以樹狀結構列印出當前視窗的所有元素或某一元素下的所有子項目。輸出屬性中不僅包括各元素的基本屬性(name,value,label,rect等),更包括代表該元素的guid,用例中直接使用該guid屬性即可代表該元素進行相應操作。findElemenByText及相關重載方法可以很方便的根據元素的顯示文本,類型,索引組合尋找該元素,極大提升了用例的自描述性和可維護性,也更好的簡化了用例的編寫。
4. Debug模式和非Debug模式運行
用例可以debug模式和非debug模式兩種方式運行。debug模式通訊時傳遞json對象或數組,返回後執行個體化為具體對象。可以調試指令碼,查看相關對象的屬性值。非debug模式僅在需要操作UI元素或擷取UI元素屬性的時候才通訊,較大的提升了運行速度(debug模式的2倍左右)。可以這麼認為:用例debug模式通過後,非debug模式也能運行通過。
5. Junit方式運行測試案例 InstrumentDriver 以大家熟悉的Junit方式驅動測試案例,具備了Junit單元測試的所有優點。可以更好結合其它工具進行持續整合和資料準備。如結合svn,maven,hudson進行持續整合,通過iTest進行資料準備等。
代碼和文檔下載: http://code.taobao.org/p/athrun/src/trunk/iOS/InstrumentDriver/