多測師肖sir_高階金牌講師_第2個月第17講app搭建之安裝(001)
技術標籤:多測師肖sir第二個月課程
我們主要講解app自動化環境的搭建以及定位和app測試
================================================================
app
原生+H5
===================================================================
(一)app測試
手工app測試和自動化app測試
手工app測試:就是點的地方不同,一個在bs結構上點,在cs結構上點(或模擬器或H5)
自動化app測試:用程式碼來代替手工點
面試題:web和app測試的區別?你會app測試?
例如:
web與app測試的區別
單純從功能測試的層面上來講的話,APP 測試、web 測試 在流程和功能測試上是沒有區別的。
根據兩者載體不一樣,則區別如下:
系統結構方面
web專案,b/s架構,基於瀏覽器的;web測試只要更新了伺服器端,客戶端就會同步會更新。
app專案,c/s結構的,必須要有客戶端;app 修改了服務端,則客戶端使用者所有核心版本都需要進行迴歸測試一遍。
效能方面
web專案 需監測 響應時間、CPU、Memory
app專案 除了監測 響應時間、CPU、Memory外,還需監測 流量、電量等
相容方面
web專案:
- 瀏覽器(火狐、谷歌、IE等)
- 作業系統(Windows7、Windows10、Linux等)
- 裝置系統: iOS(ipad、iphone)、Android(三星、華為、聯想等) 、Windows(Win7、Win8)、OSX(Mac)
- 手機裝置可根據 手機型號、解析度不同
相對於 Wed 專案,APP有專項測試 - 干擾測試:中斷,來電,簡訊,關機,重啟等
- 弱網路測試(模擬2g、3g、4g,wifi網路狀態以及丟包情況);網路切換測試(網路斷開後重連、3g切換到4g/wifi 等)
- 安裝、更新、解除安裝
安裝:需考慮安裝時的中斷、弱網、安裝後刪除安裝檔案等情況
解除安裝:需考慮 解除安裝後是否刪除app相關的檔案
更新:分強制更新、非強制更新、增量包更新、斷點續傳、弱網狀態下更新 - 介面操作:關於手機端測試,需注意手勢,橫豎屏切換,多點觸控,前後臺切換
- 安全測試:安裝包是否可反編譯程式碼、安裝包是否簽名、許可權設定,例如訪問通訊錄等
- 邊界測試:可用儲存空間少、沒有SD卡/雙SD卡、飛航模式、系統時間有誤、第三方依賴(QQ、微信登入)等
- 許可權測試:設定某個App是否可以獲取該許可權,例如是否可訪問通訊錄、相簿、照相機等
測試工具方面
自動化工具:APP 一般使用 Appium; Web 一般使用 Selenium
效能測試工具:APP 一般使用 JMeter; Web 一般使用 LR、JMeter
注意點:特別是在app上的資料的快取和程序,經常影響我們測試資料;
===================================================================
(二)app系統分類
在市面上app測試流行,分為安卓端和ios端(ios端必須要maos系統,還要企業級的證書,再公司一般不會用ios做自動化)
開發人員都是用模擬器,(1、模擬手機種類多,2、連線穩定 3、執行穩定 )
面試題:app中ios和安卓區別?
① 兩者執行機制不同:IOS採用的是沙盒執行機制,安卓採用的是虛擬機器執行機制。
iphone沙盒機制解釋:應用程式位於檔案系統的嚴格限制部分,程式不能直接訪問其他應用程式。以防毒軟體中的沙盒技術解釋一下。“沙盒”技術是發現可疑行為後讓程式繼續執行,當發現的確是病毒時才會終止。“沙盒”技術的實踐運用流程是:讓疑似病毒檔案的可疑行為在虛擬的“沙盒”裡充分表演,“沙盒”會記下它的每一個動作;當疑似病毒充分暴露了其病毒屬性後,“沙盒”就會執行“回滾”機制:將病毒的痕跡和動作抹去,恢復系統到正常狀態。
安卓虛擬機器機制解釋:android本身不是為觸控式螢幕打造的,所以所有的應用都是執行在一個虛擬的環境中,由底層傳輸資料到虛擬機器中,再由虛擬機器傳遞給使用者UI,任何程式都就可以輕鬆訪問其他程式檔案。
② 兩者後臺制度不同:IOS中任何第三方程式都不能在後臺執行;安卓中任何程式都能在後臺執行,直到沒有記憶體才會關閉。
③ IOS中用於UI指令許可權最高,安卓中資料處理指令許可權最高。
④ ios系統流暢性更具優勢。Android系統採用虛擬機器的執行機制,需要消耗更多系統資源。Android系統使用一段時間後容易出現卡頓,而ios系統則很少出現卡頓現象,並且Android系統的桌面靈敏性不如ios系統。
⑤ Android的程式語言是JAVA,而iOS的則為Objective-C。Objective-C的優勢是效率高但比較“唯一”,而JAVA的優勢則是跨平臺不過執行效率相對偏低。
⑥ 操作介面來講,ios系統介面單一。而Android的介面可以根據自己的喜好來設定,更加多樣化。
⑦ 省電的角度來講,ios系統更加省電。這是系統機制決定的。Android會佔用更多的資源來支撐系統執行,導致了它會比較費電。
===================================================================
(三)app測試包(字尾名是.apk)
app的包下載(灰度包,測試包) 開發打包以後,會給你地址url;
app的包apk包,一般開發好了
(1)打包,jenkins自動打包,打包以後有一個連線地址下載,
(2)打包以後地址生成一個二維碼,掃碼下載、
比如:線上生成網站:https://cli.im/
多測師官網論壇
=================================================================
(四)app測試流程(H模型一樣的)
(1)看需求,分析需求
(2)寫測試計劃(自動化用例場景設計)
(3)寫用例( 自動化指令碼的編寫)
(4)搭建環境(需要app測試包)
(5)測試(測試前:冒煙測試,測試中:執行用例 測試後:寫報告)
(6)修改bug以後,又要重新打包,安裝新的app包在測試;
(五)app端的ui自動化測試流程
1、開啟模擬器
2、dos命令下,連結模擬器 ,adb connect
3、啟動uiautomatorviewer.bat 工具定位元素
4、pycharm中編寫自動化指令碼(去定位)
5、開啟appiun 點選開始(埠,ip配置)
7、執行自動化指令碼
(六)appium工具的優缺點
優點:
1、支援多種應用程式
2、測試物件無需編譯
3、指令碼實現多樣化以及工具的多樣
4、支援跨平臺
缺點:
1、該工具必須依賴電腦才能實現自動化
2、該工具只能用於ui自動化測試
==============================================================
一、App自動化測試環境用途:
主要用於做App端的UI自動化測試、熟悉adb相關命令(a表示安卓,表示debug ,b表示橋)
adb是和手機相連線二、所需要的工具包:
jdk1.8 #之前已安裝過則不需重複安裝
Android-SDK #軟體開發工具組 ,裡面存放一些類,函式
appium
AppiumPythonClient #appinm的python的客戶端
node.js #
夜神或逍遙模擬器 #用到模擬器來做自動化,或再真機上測試
baiduyuedu_3760.apk #要測一個安卓包,,百度閱讀的apk包
第一步:裝sdk
詳解:SDK (Software Development Kit)翻譯成中文就是"軟體開發工具組"
是用來幫一個 產品 或 平臺 開發應用程式的工具組,由產品的廠商提供給開發者使用的。
通常是 某一家廠商 針對某一 平臺 或 系統 或 硬體 所釋出出來用以開發應用程式的工具組,在這個工具包裡面,可能包含了各式各樣的開發工具,模擬器等。給 Android平臺 使用的 Android SDK 就是用來開發 Android系統上面的應用程式。
sdk存放了類,函式,
SDK下包的說明:
1、:build-tools :建立工具
2、:extras:擴充套件的附加包
3、:platforms:你安裝下載的所有Android平臺,分版本存放
4、:platform-tools:平臺相關的工具
5、:tools:應用Android平臺進行開發所需要的一些開發工具
(1)步驟:開啟sdk:
(2)檢視sdk下資料夾
三、App自動化測試環境搭建全部流程:
1)安裝Android-SDK
先解壓adt-bundle-windows-x86_64-20140702.zip檔案得到如下三個檔案和資料夾
2)安裝Android-SDK首先需要配置ANDROID_HOME和path
a.電腦右下角點選Windows圖示-選擇計算機 空白處右鍵屬性左側欄選擇高階系統設定環境變數使用者變數增加ANDROID_HOME
b.然後把sdk的路徑放入變數值(以自己的路徑為準,如下為我的sdk路徑)
E:\講課文件\課件\第二個月課件\手機APP自動化相關包\搭建環境需要的安裝包\adt-bundle-windows-x86_64-20140702\sdk
4)配置path路徑 (如下3個路徑都需要新增,中間以;分號分割)我的路徑如下
(以自己的路徑為準):
E:\講課文件\課件\第二個月課件…\adt-bundle-windows-x86_64-20140702\sdk\platform-tools
(其中有adb)
E:\講課文件\課件\第二個月課件…\adt-bundle-windows-x86_64-20140702\sdk\tools
(其中有模擬器和定位工具)
;%ANDROID_HOME%\platformtools;%ANDROID_HOME%\tools
5)配置aapt的環境變數 (以自己的實際路徑為準)
E:\講課文件\課件\第二個月課件…\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-4.4W
檢視adb命令的變數;
為什麼要設定變數?
因為我要設定目錄下所有的 程式
第二步:安裝appium
2.1、什麼是appium?
Appium是一個移動端的自動化框架,可用於測試原生應用,移動網頁應用和混合型應用,且是跨平臺的。可用於IOS和Android以及firefox的作業系統。原生的應用是指用android或ios的sdk編寫的應用,移動網頁應用是指網頁應用,類似於ios中safari應用或者Chrome應用或者類瀏覽器的應用。混合應用是指一種包裹webview的應用,原生應用於網頁內容互動性的應用。
重要的是Appium是跨平臺的,何為跨平臺,意思就是可以針對不同的平臺用一套api來編寫測試用例。
2、2appium的原理?
appium工具是一個c/s模式,
appium自動化框架的組成?
appium客戶端組成:Python客戶端通過pycharm編寫自動化,客戶端使用Python語言編寫指令碼,
appium伺服器
2.3安裝appium、雙擊appium圖示安裝完成會顯示appium主介面如下:點選右上角三角形按鈕啟動appium服務
a.安裝appium
b.開啟appium程式
c.啟動appium服務(如下圖)
出現started on字樣表示服務
啟動成功。
2.3線上安裝python操作客戶端(dos視窗下安裝)
pip install AppiumPythonClient 如果安裝報錯(pip升級後再安裝:python m pip install upgrade pip)出現如下圖表示安裝成功。
python m pip install upgrade pip 升級安裝pip
8)安裝node.js
a.雙擊如下圖安裝node.js
b.下載完成之後在dos視窗輸入node -v出現如下即安裝成功
9)app自動化測試環境檢查
a.輸入cmd進入dos視窗輸入:appium-doctor(顯示如下圖就表示環境搭建成功)
以上表示安裝成功。
報錯:
b.如果顯示 “appiumdoctor”不是內部或外部命令 (appium的安裝路徑以自己的路徑為準) 需要把appium的安裝路徑E:\講課文件\課件\第二個月課件…\appium-1.4\node_m odules.bin配置到環境變數 配置好環境後再次輸入:appiumdoctor 顯示正常
=================================================================
10)安裝夜神模擬器:(安裝不成功則可選擇安裝逍遙模擬器,成功的忽略這條) a.找到夜神模擬器的安裝包雙擊
b.進入dos視窗輸入命令:adb connect 127.0.0.1:62001 (顯示如下圖表示已經連線上夜神模擬器了)
c.安裝好了執行模擬器發現很慢可以進行BIOS設定開啟VT 按照這個網址進行設定 http://www.xyaz.cn/help/vt.html
開機按F2按鈕找到SecurityIntel Virtualization Technology改為 Enabled按F10儲存退出。
11)往夜神模擬器安裝需要被測試的軟體
a.安裝測試包 adb install + 包名的絕對路徑 (或者進入包所在的目錄下面安裝)
例如:adb install D:\app\appnew\duoceshi.apk 安裝bao
D:\app\appnew\dangbei1.apk 當貝
D:\app\appnew\baiduwangpan_589.apk 百度網盤
b.安裝完會顯示在逍遙模擬器當中
12)做APP自動化測試需要獲取包名和appActivity
a.用aapt d badging + 安裝包所在的絕對路徑 C:\Users\Administrator>aapt d badging E:\講課文件\課件\第二個月課件\手機APP自動化相關包\搭建環境需要的安裝包\baiduyuedu_3760.apk 結果如下: package: name=‘com.baidu.yuedu’ versionCode=‘3760’ versionName='3.7.6
舉例:aapt d badging D:\app\appnew\duoceshi.apk
正確結果:
c.其他的adb命令 adb shell pm list packages 檢視已安裝的應用 adb uninstall package:com.baidu.yuedu 解除安裝百度閱讀App
=====================================================================
搭建環境的總結:
1、安裝JDK
2、安裝SDK
並且配置環境
3、安裝node.js
4、安裝appium
5、安裝appium-doctor
6、安裝appiumlibrary
7、驗證環境
8、模擬器
=====================================================================
ADB常用的指令:
檢視當前連線裝置 : adb devices
進入到shell : adb shell #ctrl+c 退出
檢視日誌 : adb logcat #ctrl+c 停止
安裝apk檔案 : adb install xxx.apk
解除安裝APP : adb uninstall +包名
例如:adb uninstall com.baidu.netdisk
檢視包名 : aapt d badging +包的路徑
往手機SDCard傳遞檔案:adb push 檔名 手機端SDCard路徑
例如:(1)adb push D:/bao/sql11.txt /data
adb push 本地檔案路徑 安卓裝置路徑
從手機端下載檔案 : adb pull + 檔案
例如:(2)adb pull /init D:/bao
SDCard
檢視手機端安裝的所有包名:adb shell pm list packages
啟動Activity : adb shell am start 包名/完整Activity路徑
舉例:
包名: com.dangbeimarket
activity包名:leanback-launchable-activity: name='com.dangbeimarket.activity.WelcomeActivity
螢幕截圖 : adb shell screencap
例如:adb shell screencap -p {路徑} 可以 儲存 到 手機本地然後 傳回電腦
例如: adb shell screencap -p /data/123.png
(1)儲存圖片到sdcard
adb shell /system/bin/screencap -p /sdcard/aa.png
(2)pull拉取到本地
adb pull /sdcard/aa.png D:\bao
啟動adb server命令 :adb start-server
停止adb server命令 :adb kill-server
例如:
以上都沒有沒有明顯的顯示,
檢視adb版本 :adb version
例如:
指定adb server網路埠:adb -p start-server
預設埠為5037
讓裝置在 5555 埠監聽 TCP/IP 連線:adb tcpip 5555
adb tcpip網路除錯
拓展知識:
把手機usb和連線線和電腦端連線起來,輸入下面命令
1\手機和PC在同一網段的情況下:
adb tcpip 5555
2) 、adb shell ifconfig 檢視手機網路IP
3)、在電腦上ping 手機網路ip
4) 、 adb connect ip (Android 裝置ip)
2\手機和PC不在同一網段的情況下
我們需要用手機的 終端模擬器和ssh工具 反向代理。
通過 IP 地址連線裝置:adb connect
例如:連結:adb connect 127.0.0.1:62001
斷開無線連線 : adb disconnect
例如: