app測試
app功能測試和app自動化測試
===============================
(一)app手工測試
app手工測試:就是在app上進行手工測試(手點)
app自動化測試使用程式碼或工具來代替手工測試(python+appium)
(二)web測試和app測試區別?( 重點)
(1)單純從功能測試的層面上來講的化,app測試、web測試在流程和功能測試上是沒有區別
(2)根據兩者載體不一樣,區別:
web專案:b/s 架構,基於瀏覽器的;web測試只要更新伺服器端,客戶端就會同步更新
app專案 :c/s 架構 必須在客戶端;app修改了服務端,則客戶端使用者所有核心版本都要進行迴歸測試一遍。
(3)效能方面:
web專案 需檢測響應時間,cpu,
app專案 需檢測響應時間,cpu,還要考慮流量,電量
(4)相容性方面
web專案:
瀏覽器(火狐、谷歌、IE等)、版本:ie8、ie10
作業系統(Windows7、Windows10、Linux等)
app專案:
裝置系統: iOS(ipad、iphone)、Android(三星、華為、聯想等) 、Windows(Win7、Win8)、OSX(Mac)、鴻蒙系統、mac
手機裝置可根據 手機型號、解析度不同
相對於 Wed 專案,
APP有專項測試:
干擾測試:中斷,來電,簡訊,關機,重啟等
弱網路測試(模擬2g、3g、4g,wifi網路狀態以及丟包情況);網路切換測試(網路斷開後重連、3g切換到4g/wifi 等)
安裝、更新、解除安裝
安裝:需考慮安裝時的中斷、弱網、安裝後刪除安裝檔案等情況(手動安裝、自動安裝)
解除安裝:需考慮 解除安裝後是否刪除app相關的檔案
更新:分強制更新、非強制更新、增量包更新、斷點續傳、弱網狀態下更新
介面操作:關於手機端測試,需注意手勢,橫豎屏切換,多點觸控,前後臺切換
安全測試:安裝包是否可反編譯程式碼、安裝包是否簽名、許可權設定,例如訪問通訊錄等
邊界測試:可用儲存空間少、沒有SD卡/雙SD卡、飛航模式、系統時間有誤、第三方依賴(QQ、微信登入)等
許可權測試:設定某個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的包)(ios的字尾名:.ipa)
在網上可以看到的包是(生產包)
app 的包下載(灰度包,測試包),開發提交程式碼,合併程式碼,透過jenkins 構建,生成測試包:
生成的方式:
第一種:一個連線(url)的方式 (下載灰度包)
第二種:二維碼的形式 (下載灰度包)
=============================
(五)app測試流程:(和H模型一樣)
1、看需求,分析需求
2、寫用例 (自動化指令碼的編寫)
3、搭建環境(部署好app自動化環境)
4、測試(透過jenkins打包生成最新的apk包,下載後安裝到模擬器或手機中)
5、測試,開發修改bug
6、重新提交版本,在打包,在進行測試
7、輸出測試報告
=============================
(六)app自動化工具appium 的優點?
優點:
(1)支援多種應用程式
(2)測試物件無需編譯
(3)指令碼實現多樣化以及工具的多樣
(4)支援跨平臺
缺點::
(1)工具必須依賴電腦才能實現自動化
(2)工具只能用於ui自動化測試
==========================
定位元素:
from appium import webdriver
from time import *
cs={
'platformName':'Android', #平臺系統:Android or Ios
'deviceName':'OPPO R17', #裝置名稱
'platformVersion':'android-5.1W', #平臺版本
'appPackage':'com.moji.mjweather', #包名
'appActivity':'com.moji.mjweather.LauncherActivity', #activity
'unicodeKeyboard': True, #使用unicode編碼方式傳送字串 }
'resetKeyboard':True} #是將鍵盤隱藏起來
dx=webdriver.Remote("http://127.0.0.1:4723/wd/hub",cs)
sleep(10)
# dx.find_element_by_id("com.moji.mjweather:id/jc").click() #同意進入
# dx.find_element_by_id("com.moji.mjweather:id/azz").send_keys("北京市")
#dx.find_element_by_android_uiautomator()#
dx.find_element_by_android_uiautomator('new UiSelector().text("北京市")').click()