基于Orange的安卓UI自動化學習筆記(一)

背景:前段時間本項目安卓端的QA離職,我接替該同事的工作進行項目安卓端的測試。而測試負責的很大一塊內容就是安卓UI自動化測試,之前安卓端的UI自動化工程集成了若干個測試用例已經能夠在jenkins持續集成平臺上比較穩定地構建和執行了。接下來新版本發布,要繼續維護UI自動化用例,能夠從用戶操作的層面實時地監控安卓端版本的項目質量。對我來說,做好安卓端測試的一個重點就是安卓UI自動化工程的交接和維護。我的情況是僅有java開發基礎,對于android開發沒有涉及過,對于UI自動化更是不懂。因而是個實實在在的菜鳥。可我不會輕易狗帶。一起開始安卓UI自動化學習之旅吧。
我的學習路線是這樣安排的:
(一)本地:能夠獨立完成一個UI自動化工程的建立
(二)本地:命令行執行UI自動化測試用例
(三)本地:ant打包測試工程apk+執行UI自動化用例一體化
(四)jenkins:持續集成平臺成功構建UI自動化工程
(五)jenkins:真機換成模擬器
(六)jenkins:持續集成平臺實現被測apk自動打包編譯+自動化一體化
(七)UI自動化用例編寫語法和規范
本章內容就是第一部分,本地:獨立完成一個UI自動化工程的建立

一,準備工具和材料

在正式開始之前,先梳理一下一個簡單的UI自動化工程所需要的材料。
通常情況下,eclipse和android studio都可以用做開發環境,為了與之前的一致,我選擇使用eclipse開發。被測應用有源碼最好,沒有源碼的時候使用apk一樣可以進行UI自動化測試。UI自動化測試的一個最基礎的框架是robotium,orange是基于robotium的二次封裝,核心的部分沒有改動,只是增加了自動重簽名和在用例運行失敗的時候自動重跑的功能。要清楚的一點是,被測應用是單獨的apk,測試工程也要打包成一個apk,這兩者是獨立的。本文后續用被測應用和測試工程來區分兩者。需要工具和材料僅這些:

(1) 開發環境:eclipse+ADT,可參考教程
(2) 第三方Jar包:robotium,orange
(3) 被測試程序包:重簽名的被測應用apk。
(4)一個真機:將重簽名后的apk安裝到真機上,且數據線連接好真機與PC。
(可利用重簽名工具re-sign.jar。為什么要重簽名呢?本機的eclipse對UI自動化工程打包的時候使用的是本機的debug.keystore簽名文件,一般存放于C:\Users\yourUserName\.android目錄下。而正式發布的被測應用apk通常會使用特定的keystore簽名文件。這兩者不統一,必然是不能用前者去測試后者的。另外注意,發布好的被測應用apk有時候開發者們會選擇gradle打包,這種情況下對apk進行重簽名,會有導致手機上打不開應用。使用ant打包的apk重簽名就OK 。)

二,建立UI自動化工程的整體框架

2.1創建測試工程

前面說過了,測試工程也是一個安卓工程,所以我們需要在eclipse中點擊File-〉New-〉Android Application Project,建立一個安卓工程。

新建安卓工程

填寫安卓工程的相關信息,包括應用名稱和應用包名等。SDK選擇4.0以上,其他使用默認值即可。一路點擊next,直至Finish。

建立安卓工程

2.2配置Build Path

在libs目錄下加入已經準備好的robotium和orange的jar包,如果沒有libs建議可以手動新建,當然不建立也可以。在Build Path中添加libs中的jar包,或者存放于其他文件夾中的jar包。

設置BuildPath

點擊Add JARs,將libs下的幾個jar都加入到BuildPath中。點擊Ok完成即可。


設置BuildPath

2.3配置Manifest.xml

在原有xml的基礎上增加<instrument>、<uses-library>和<uses-permission>標簽,注意instrument標簽中需指定被測應用apk的包名和測試應用apk的包名。

Paste_Image.png

2.4編寫測試用例

由于我們現階段的重點不是語法和規范,是在整體搭建框架上的熟悉,因而我們寫一個最簡單的測試用例。
在project->src->package name處右鍵new->class,輸入測試用例類的名稱,在Superclass處點擊Browse:


在filter欄里填寫ActivityInstrumentationTestCase3,表示我們新建的這個類是ActivityInstrumentationTestCase3這個類的子類,能夠重寫和復用基類的方法。選擇第一個出現的匹配項,點擊OK。測試用例類建立完畢。


剛開始類上面會有小岔號,表示沒有構造函數,后面我們會補充。我們把R.java文件加入進來,在寫測試用例的時候會用到。如果把R.java文件加到com.example.androiduitest這個包下的會,會報錯:R.java文件重復。這是因為安卓工程都會在gen目錄下的com.example.androiduitest包下生成一個R.java文件,當然就會重復咯。所以我們需要再新建一個package,比如com.example.test,把R.java文件放到這個包內就可以。
輸入如下簡單的測試用例代碼:

測試用例

注意構造函數時調用super(A,B),其中A是待測應用的程序包名,B是待測應用的啟動activity。另外馬賽克的部分是對應被測應用的package名字以及被測應用的Activity名字。
具體的測試用例書寫規范與語法,我們可以暫時忽視,到后面的階段再深入。

2.5執行測試用例

在真正執行測試用例前,要做兩個地方的配置,分別是Build Path-> order and export選中需要的jar包,另一個就是run configurations-〉設置好instrumentation。分別如下圖所示:

設置order and export
設置run configurations

此外,還需要在已選擇好的真機設備上安裝上已經重簽名的被測應用apk,利用數據線和adb將真機設備與PC端連接好,且保證屏幕劃開不黑屏。
設置完畢后,就可以執行啦!
在FirssTest.java右鍵run as->Java Junit Test,在彈出的頁面中選擇已安裝好重簽名應用的真機設備,開始執行即可。
執行的時候我們可以看到首先會打一個測試應用的apk安裝到真機設備上,然后就開始測試我們的被測應用,被測應用像是被一個“無影手”一樣操控著打開、點擊某個按鈕、關閉。迄今,我們已經能夠建立一個最最基本的安卓UI自動化測試工程了,接下來就是第二篇,用命令行來執行我們的測試用例了,gogogo!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370

推薦閱讀更多精彩內容