使用Appium進行自動化測試
搭建Appium測試環境分為三部分。第一部分是使用MyEclipse(也可使用其它IDE)中的Maven新增與Appium有關的jar包;第二部分是安裝Appium server或者desktop版,用於解釋java程式碼;第三部分為安裝Android SDK用於建立虛擬機器器或者連線真機。(因為目前缺少mac機器,無法在蘋果ios進行測試,所以這裡選擇Android作為測試的平臺,最後測試採用的是Android版本號為5.0.2的真機,也可用模擬器)。環境搭建步驟因為網上資料很全,所以不重點說明,可參考http://www.testclass.net/appium/
經過上述步驟已經能夠搭建出基於java client + appium server + android的自動化測試環境。本節將以新建歌單為例,介紹如何使用Appium自動化測試工具對網易雲音樂App進行測試。
通過設定DesiredCapabilities來說明測試的機器、環境、入口等。程式碼如下:
DesiredCapabilities cap=new DesiredCapabilities(); cap.setCapability("automationName", "Appium");//appium做自動化 //cap.setCapability("app", app.getAbsolutePath());//安裝apk cap.setCapability("deviceName", "oppo-oppo_a33-9729eb6b");//裝置名稱 cap.setCapability("platformName", "Android"); //安卓自動化還是IOS自動化 cap.setCapability("platformVersion", "5.1.1"); //安卓作業系統版本 cap.setCapability("appPackage","com.netease.cloudmusic");//被測app的包名 cap.setCapability("appActivity",".activity.LoadingActivity");//被測app的入口Activity名稱 cap.setCapability("noSign", "True"); //不重新簽名apk cap.setCapability("noReset", "True"); //是否不需要重新安裝app cap.setCapability("unicodeKeyboard", true);//使用 Unicode 輸入法 cap.setCapability("resetKeyboard", true); //重置輸入法到原有狀態
其中第3行註釋為設定app的位置,如果待測試app未安裝可以通過指定app的位置直接進行安裝,如果已安裝可以將該行程式碼進行註釋。
第[4-6]行是設定測試的機器資訊。其中裝置名稱中的udid需要通過在cmd命令列下,使用下面的命令得到:
adb devices
第[7-8]行是設定程式的包名和app測試的入口。一般可以在Android原始檔中的AndroidManifest.xml中找到,如果沒有原始碼,先對待測app進行一些操作,然後通過cmd下的命令:
adb shell dumpsys activity activities > log.txt
最後在log.txt中找到相應的資訊,如下圖所示:
其中紅框部分分別為appPackage、appActivity。
第[9-10]行是設定每次測試是否不重新安裝app以及簽名。
第[11-12]行是解決在使用sendKeys()方法時出現無法輸入中文的問題。
測試過程中非常重要的一個環節是如何定位App上的元素,本文使用Android SDK中的uiautomatorviewer工具來輔助尋找定位資訊。uiautomatorviewer可以顯示App頁面上每個元素的class,index,text等,能夠方便找到頁面元素的定位資訊,如下圖所示:
3. 自動化測試程式碼與測試結果
通過2節找到相關元素的定位資訊,並通過以下程式碼,實現自動化新建歌單,歌單名字為“新建立的歌單”。
driver.findElement(By.name("我的")).click();//找到頁面text為"我的"的元素
driver.findElementById("com.netease.cloudmusic:id/ana").click();
driver.findElement(By.name("建立新歌單")).click();
driver.findElementById("android:id/input").sendKeys("新建立的歌單");
driver.findElement(By.name("提交")).click();
將以上程式碼放入迴圈中,不停的新建歌單,直到到達上限。然後在歌單達到上限的基礎上,再測試新建歌單與恢復歌單功能。測試內容及結果如下表所示:
編號 |
用例名稱 |
測試步驟 |
測試結果 |
1 |
歌單上限 |
使用Appium不停新建歌單 |
如圖1所示,歌單上限為1000 |
2 |
歌單達到上限後繼續新建歌單 |
在“歌單上限”測試基礎上,繼續新建歌單 |
如圖2所示,提示已達到上限 |
3 |
歌單達到上限後恢復歌單 |
在“歌單上限”測試基礎上,進行恢復歌單 |
如圖3所示,提示恢復失敗 |