android自動化測試_uiautomator方案實現要點

testingba發表於2014-02-18


 

 

android的自動化測試方案,弄了好久了。

 


Monkeyrunner物件引用速度太慢,過於簡陋;

Robotium不能跨應用(不知道現在最新情況如何),即便能夠跨應用我都不是太想用他,太麻煩,而且畢竟不是親生的,稍微google搞點動作,就夠他一陣忙亂的;


Google在sdk4.0以後提供了一個自動化解決方案uiautomator:

優點:可以跨應用了;這可是親生的;

缺點:必須sdk4.0以上版本;要想實現的好,最好有開發配合;java專案編譯為jar後需要push到手機才能執行,也就是說必須列印日誌暴力除錯。

 

一直有研究和簡單使用,但是一直沒有推向生產使用,理由很簡單,價效比不夠高,每行程式碼都需要自己去檢視元素物件的引用方法一點點的編寫,太麻煩了。

 

但是這個解決方案畢竟是可以解決android的自動化測試的。

 

不過要想走得順暢並不容易,需要關注幾個要點:

1.      需要一個工具,開啟原始碼檔案後,將所有的佈局檔案開啟,寫入contentDescription屬性,如果不寫這個屬性也能物件引用,但是會很麻煩,你需要去找各種不同的屬性進行引用,既然人家已經提供了這個屬性,目的就是讓你方便引用的,所以最好充分利用,寫完後,要留心,因為listview的行佈局檔案是一個,也就是說如果程式碼執行後,你的listview控制元件的每行的contentDescription屬性都會是一樣的,需要使用其他的屬性進行引用,最好呢是在程式碼中修改該屬性;

2.      上述方法搞定了靜態控制元件後,找到開發,確定哪些是動態生成的,在程式碼中加入動態物件的屬性,編譯通過後,提交到版本庫;

3.      建立長效機制,這個是最重要的,以後每次增加了新的模組,開發都要給控制元件提供該屬性的唯一值,開發測試可以約定一個命名方式。

 

這個解決方案的成敗關鍵是開發測試的充分溝通和長效機制的運作,要不然就會出現下面的情形:

開發把程式碼扔給測試就不管了,每次版本釋出,都需要給所有的靜態物件加上contentDescription屬性,動態物件測試歷盡千辛萬苦才引用到,然後執行。試想想,要是版本頻繁釋出,這樣根本就無法正常運轉下去。

 

但是這個方案是一個可行的可用的解決方案。

 

參考工具:

這個vbs指令碼是通過指定專案檔案目錄,自動搜尋下面所有的layout目錄,找到所有的佈局檔案,將佈局檔案中的每個元素都加上contentDescription屬性,以便uiautomator進行物件識別和引用操作。

http://download.csdn.net/detail/testingba/6931865



 

 

 

 

相關文章