qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          批處理腳本實(shí)現(xiàn)android應(yīng)用程序自動(dòng)化測(cè)試

            測(cè)試平臺(tái):兼容android所有平臺(tái)(2.3-4.2)

            測(cè)試背景:由于需要對(duì)產(chǎn)品的SDK做接口測(cè)試,而這些接口需要在app里面調(diào)用,故開(kāi)發(fā)了一個(gè)簡(jiǎn)單的android應(yīng)用(如圖),用來(lái)調(diào)用需要測(cè)試的接口,app中的每個(gè)按鈕其實(shí)都是一個(gè)測(cè)試模塊。

            測(cè)試需求:

            1、由于某些接口在程序第一次安裝打開(kāi)時(shí)調(diào)用,需要實(shí)現(xiàn)自動(dòng)化安裝打開(kāi)關(guān)閉卸載測(cè)試,可設(shè)置重復(fù)次數(shù)。

            2、由于需要測(cè)試接口的穩(wěn)定性,每個(gè)按鈕每天都要跑多篇,所以實(shí)現(xiàn)簡(jiǎn)單點(diǎn)擊的UI自動(dòng)化,循環(huán)點(diǎn)擊。

            3、自動(dòng)檢查收集logcat日志并解析日志結(jié)果;自動(dòng)發(fā)送郵件。

            下面主要講下在windows下如何實(shí)現(xiàn)以上需求。

            一、準(zhǔn)備測(cè)試環(huán)境及測(cè)試文件

            1、安裝Java JDk,設(shè)置好環(huán)境變量

            2、安裝Android SDK,設(shè)置好環(huán)境變量(詳細(xì)步驟略)

            3、準(zhǔn)備被測(cè)apk及測(cè)試所需的一些工具

            接著主要講下測(cè)試主程序如何實(shí)現(xiàn)

            二、啟動(dòng)模擬器,并解鎖

            批處理腳本:

          emulator -avd Galaxy4.2   ::啟動(dòng)模擬器
          ping -n 90 127.0.0.1>nul   ::等待模擬器啟動(dòng)成功,-n 90 為等待時(shí)間,建議設(shè)置大一點(diǎn)
          adb shell input keyevent 82  ::模擬器打開(kāi)后都會(huì)鎖屏,adb模擬鍵盤輸入,解鎖
          ping -n 2 127.0.0.1>nul

            三、腳本參數(shù)初始化

          set appName=TestAndroid.apk                ::被測(cè)程序名稱
          set pkgName=com.example.testandroid  ::被測(cè)程序包名
          set openName=com.example.testandroid.MainActivity ::被測(cè)試程序主activity
          set "times=%1"   ::測(cè)試次數(shù),腳本傳入?yún)?shù)
          xcopy blat.exe C:\Windows\System32\  /Y  ::將郵件工具復(fù)制到系統(tǒng)文件夾下,需關(guān)閉360衛(wèi)士

            四、循環(huán)執(zhí)行安裝打開(kāi)關(guān)閉卸載

          echo 測(cè)試開(kāi)始>source.txt  ::創(chuàng)建一個(gè)source文件記錄日志
          for /l %%a in (1,1,%times%) do (
          adb install TestAndroid.apk   ::安裝apk
          adb shell am start -W -n %pkgName%/%openName%  ::打開(kāi)apk
          call cmd /c close.bat %pkgName%   ::關(guān)閉apk
          adb uninstall %pkgName%    ::卸載apk
          adb logcat -d |findstr "^D/k.*}\>"  ::過(guò)濾logcat,獲取需要的內(nèi)容
          adb logcat -c     ::清除logcat日志
          taskkill /f /im adb.exe)>>source.txt  ::結(jié)束adb進(jìn)程,防止占用source文件
                ::每次操作日志都記錄在source中

            五、處理source.txt提取關(guān)鍵信息,并發(fā)送郵件

          start javaw -jar FileHandler.jar  ::調(diào)用處理日志的jar,這部分需要根據(jù)不同apk自己調(diào)整,若不需要可以刪掉
          ping -n 10 127.0.0.1>nul

          ::以下為發(fā)送郵件的工具blat,詳情見(jiàn)http://blog.csdn.net/qiming_zhang/article/details/6065824
          set from=**@163.com
          set user=**
          set pass=**
          set to=**@**
          set subj=apk安裝卸載測(cè)試結(jié)果
          set mail=result.txt
          set attach=source.txt
          set server=smtp.163.com
          blat -install %server% %from% 3 25
          blat %mail% -to %to% -base64 -charset Gb2312 -subject %subj%  -attacht %attach% -server %server% -f %
          from% -u %user% -pw %pass%

            六、設(shè)置windows定時(shí)任務(wù),參數(shù)填寫為測(cè)試次數(shù)

            經(jīng)過(guò)以上步驟,安裝卸載測(cè)試已經(jīng)完成,接下來(lái)講解如何用adb命令進(jìn)行UI自動(dòng)化測(cè)試

            一、打開(kāi)應(yīng)用,記錄按鈕或text在手機(jī)屏幕坐標(biāo)點(diǎn)

            1、在android 4.0以上版本中,可以實(shí)時(shí)顯示手機(jī)屏幕坐標(biāo)點(diǎn)

            2、點(diǎn)擊設(shè)置-應(yīng)用程序-開(kāi)發(fā)人員工具-指針位置

            3、打開(kāi)應(yīng)用程序,獲取按鈕的坐標(biāo)位置,如圖坐標(biāo)為(138.168)

            二、腳本模擬屏幕點(diǎn)擊事件

          adb shell sendevent /dev/input/event0 3 0 138      ::X坐標(biāo)
          adb shell sendevent /dev/input/event0 3 1 168      ::Y坐標(biāo)
          adb shell sendevent /dev/input/event0 1 330 1      ::按下
          adb shell sendevent /dev/input/event0 0 0 0
          adb shell sendevent /dev/input/event0 1 330 0      ::離開(kāi)
          adb shell sendevent /dev/input/event0 0 0 0

            這樣就模擬了屏幕點(diǎn)擊的事件,若要測(cè)試長(zhǎng)按,設(shè)置等待時(shí)間

            三、腳本模擬鍵盤事件

            如圖,在text中輸入數(shù)字134

            腳本模擬鍵盤事件

          adb shell input keyevent 8
          adb shell input keyevent 10
          adb shell input keyevent 11

            這樣adb模擬的UI自動(dòng)化腳本就可以寫好了,這種寫法的好處在于快捷輕便,適合簡(jiǎn)單邏輯的自動(dòng)化。

            結(jié)語(yǔ):以上就是需求實(shí)現(xiàn)的全過(guò)程,當(dāng)然此方法也可以用再ubuntu、mac之類的Unix系統(tǒng)中,只需將相應(yīng)的批處理語(yǔ)言改成shell語(yǔ)言即可。

          posted on 2013-05-13 09:28 順其自然EVO 閱讀(1510) 評(píng)論(0)  編輯  收藏 所屬分類: android

          <2013年5月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 长海县| 天等县| 湘阴县| 斗六市| 两当县| 子洲县| 安福县| 黔西| 手游| 荔波县| 延川县| 正定县| 宁化县| 大庆市| 荆门市| 定南县| 新郑市| 平邑县| 常宁市| 乐至县| 东源县| 汉阴县| 莱州市| 庄河市| 陇西县| 屯昌县| 三门峡市| 黔江区| 湛江市| 保德县| 隆安县| 巴彦淖尔市| 青龙| 顺平县| 湖南省| 吉隆县| 合作市| 长子县| 凌源市| 六安市| 嘉禾县|