移動端測試知識概覽
1.移動端測試是什么
移動端測試是指對移動應用進行的測試,即實體的特性滿足需求的程度
2.移動端測試分類
1.app功能測試
兼容性測試、異常測試、升級安裝卸載測試、健壯性測試
2.App自動化測試
? ? 優點
1.高效數據絕對正確
2.不需要人工干預
3.回歸測試
3.主流的移動端自動化工具
1.Robotium:支持java,僅支持Android系統,不支持跨應用
2.Macaca:支持java,Python,Node,js,支持Android和ios系統,支持跨應用
3.Appium:支持java,c#,php,perl,rubyPython,Node,js,支持Android和ios系統,支持跨應用
4.UIAutomatorviewer手機控件查看工具
1.工具簡介:用來掃描和分析Android應用程序的UI控件的工具
2.how使用
1.進入SDK目錄下的tools目錄,打開uiautomatorviewer
2.電腦連接真機或打開android模擬器
3.啟動待測試app
4.點擊uiautomatorviewer的左上角Device Screenshot,會生成app當前頁面的UI控件截圖
5.選擇截圖上需要查看的控件,即可瀏覽該控件的id,class,text,坐標等信息
APP移動端測試高級
1.Appium介紹
Appium是一個移動端的自動化框架,可用于測試原生應用、移動網頁應用和混合型應用,且是跨平臺的
2.環境搭建
需準備:jdk1.6.0、android-sdk_r24.3.4-windows、python2.7、appium1.4.13.1、Node.js、Appium-Python-Client
Appium庫安裝:
# 安裝
pipinstallAppium-Python-Client
# 檢驗是否成功
piplist
3.Appium使用
1.打開模擬器或者真機的應用
①打開手機應用
②打開Appium
③創建一個python項目,并創建一個文件
④將下面代碼復制到文件中
⑤獲取當前應用包名和啟動activity并修改文件
2.腳本內啟動其他app:driver.start_activity(appPackage,appActivity)
3.關閉app:driver.close_app()? # 關閉當前操作的app,不會關閉驅動對象
4.關閉驅動對象:driver.quit()
4.App基礎操作API
1.前值代碼
# server 啟動參數
desired_caps={}
desired_caps['platformName']='Android'
desired_caps['platformVersion']='5.1'
desired_caps['deviceName']='192.168.56.101:5555'
desired_caps['appPackage']='com.android.settings'
desired_caps['appActivity']='.Settings'
desired_caps['unicodeKeyboard']=True
desired_caps['resetKeyboard']=True
# 聲明driver對象
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
2.安裝APK到手機:driver.install_app(app_path)
3.手機中移除App:driver.remove_app(app_id)
4.判斷APP是否已安裝:driver.is_app_installed(bundle_id)
5.從手機中拉取文件:
importbase64
data=driver.pull_file(path)# 返回數據為base64編碼
print(str(base64.b64decode(data),'utf-8'))# base64解碼
6.獲取當前屏幕內元素結構:driver.page_source?
5.手機空間查看工具uiautomatorviewer
1.工具簡介:用來掃描和分析Android應用程序的UI控件的工具
2.how使用:1.進入SDK目錄下的tools目錄,打開uiautomatorviewer
2.電腦連接真機或打開android模擬器
3.啟動待測試app
4.點擊uiautomatorviewer的左上角Device Screenshot,會生成app當前頁面的UI控件截圖
5.選擇截圖上需要查看的控件,即可瀏覽該控件的id,class,text,坐標等信息
6.App元素定位操作
1.Appium常用元素定位方式
id→id屬性值 :find_element/s_by_id(id_value) # id_value:為元素的id屬性值
class→class屬性值:find_element/s_by_class_name(class_value) # class_value:為元素的class屬性值
xpath→xpath表達式:find_element/s_by_xpath(xpath_value) # xpath_value:為可以定位到元素的xpath語句