App測試中Android和IOS測試區別
- 解析度測試:
Android端種類多常見的手機解析度:
(4:3 VGA 640480 (Video Graphics Array) QVGA 320240 (Quarter VGA) HVGA 480320 (Half-size VGA) SVGA 800600 (Super VGA)
5:3 WVGA 800*480 (Wide VGA)
16:9 FWVGA 854480 (Full Wide VGA) HD 19201080 High Definition QHD 960540 720p 1280720 標清 1080p 1920*1080 高清)再加上不同的手機品牌;
ios就比較少了;
- 手機作業系統:
ios較少且不能降級,只能單向升級;新的ios系統中的資源庫不能完全相容低版本中的ios系統中的應用,低版本ios系統中的應用呼叫了新的資源庫,會直接導致閃退(Crash);
Android較多;
- 操作習慣:
Android,Back(返回)鍵是否被重寫,測試點選Back(返回)鍵後的反饋是否正確;應用資料從記憶體移動到SD卡後能否正常執行等;
- push(資訊推送)測試:
Android:點選home鍵,程式後臺執行時,此時接收到push,點選後喚醒應用,此時是否可以正確跳轉;
ios,點選home鍵關閉程式和螢幕鎖屏的情況(紅點的顯示);
- 安裝解除安裝測試:
Android的下載和安裝的平臺、工具和渠道比較多;
ios主要有app store,iTunes和testflight下載;
- 升級測試:
可以被升級的必要條件:新舊版本具有相同的簽名;新舊版本具有相同的包名;有一個標示符區分新舊版本(如版本號),對於Android若有內建的應用需檢查升級之後內建文 件是否匹配(如內建的輸入法)
測試注意點:
- 併發(中斷)測試:另一個應用的啟動、視訊音訊的播放,來電、使用者正在輸入等,語音、錄音等的播放時強制其他正在播放的要暫停;
- 資料來源的測試:輸入、選擇、複製、語音輸入,安裝不同輸入法輸入等;
- push(推送)測試:在開關機、待機狀態下執行推送,訊息先死及其推送跳轉的正確性;應用在開發、未開啟狀態、應用啟動且在後臺執行的情況下是push顯示和跳轉否正確;推送訊息閱讀前後數字的變化是否正確;多條推送的合集的顯示和跳轉是否正確;
- 分享跳轉:分享後的文案是否正確;分享後跳轉是否正確,顯示的訊息來源是否正確;
- 觸屏測試:同時觸控不同的位置或者同時進行不同操作,檢視客戶端的處理情況,是否會crash等 我: 歸納和總結了Android APP在測試過程中經常出現Bug的關鍵節點,希望對大家有所幫助!
啟動:
1. 啟動入口:桌面正常啟動,最近執行啟動,所有程式列表中啟動,鎖屏快捷啟動
2. 其他入口:從其他程式開啟應用,從外部以檔案形式開啟應用(如果有)
3. 退回:從其他程式退回時回到被測應用,被測應用開啟其他應用再從桌面圖示啟動
以上需要交叉組合測試。
4. 異常啟動:崩潰後啟動,寫檔案時被強制殺程式後啟動,網路請求未收到回包強制殺程式後再啟動,網路超時時啟動(啟動需要有超時機制)
功能介紹,引導圖,流量提示等:
1 全新安裝程式第一次啟動,會有些初始化,或者彈框提示,功能介紹,當外部開啟,比如第三方開啟(一般不算做第一次啟動)後,再啟動程式,檢查該有的動作是否都有。
許可權:
1 當某些許可權被安全軟體或者系統禁止時,是否可以正常使用,需要注意的許可權:麥克風/攝像頭/定位/簡訊息等許可權 —_luguo
2 在做相容性測試時,需要特別注意許可權管理較嚴的Rom,比如魅族在攝像頭等許可權為預設關閉
3 第三方安全軟體彈框請求禁止許可權時,選擇後,是否會影響到被測應用的正常流程
檔案錯誤
1 使用錯誤的檔案型別(但是有正確的字尾名),替代被測應用使用的檔案
2 adb push 從pc上傳到裝置的檔案如果有中文名,會生成一個錯誤的檔案,被測應用需要適應這種錯誤情況
螢幕旋轉:
1 確認哪些介面是需要允許橫屏或者禁止橫屏的
2 將螢幕鎖定為豎屏或者橫屏,在幾個介面跳轉,介面是否正常
3 當適應橫屏時,是否對橫屏進行了適配
流量:
1 首次啟動應用的流量是否符合預期
2 在主介面有很多圖片時,是否已經達到圖片檔案大小與顯示效果的平衡
3 當需要使用較大的網路流量時(載入大圖片,視訊播放緩衝,下載更新包),顯示出當前網速或者進度,對使用者來說更友善
快取(/sdcard/data/com.your.package/cache/):
1. 解除安裝後將刪除快取,其中是否存在不應該刪除的檔案(下載檔案,使用者資料)
2. 快取易被360手機衛士,獵豹清理大師等清理,需檢查該資料夾是否放了適合的檔案
正常中斷:
1. 在所有介面執行鎖屏操作,解鎖後觀察是否正常執行
2. 在所有介面執行長時間鎖屏操作,解鎖後觀察是否正常執行
3. 在所有介面,和所有過程,按home鍵切後臺,再切回時觀察是否正常
4. 在所有的loading過程中,按back鍵
5. 在所有的loading過程中,按home鍵
6. 介面切換動畫時嘗試多次按back鍵
7. 正常的點選動作,嘗試快速按兩次
8. 後攝像頭和前攝像頭無法同時啟動,後攝像頭啟動還包括開啟閃光燈(與手電筒類應用的相容性)
9. 檢查鍵盤展開和收起的時機,與home、back、鎖屏組合測試
10. 從第三方啟動後,home鍵回到桌面,再從桌面開啟被測應用,顯示是否正確(應確定是顯示第三方啟動介面,還是顯示程式正常啟動介面,前者如微信,後者如QQ)
異常中斷:
1. 斷電後重啟
2. 當介面被意外崩潰,是否可以重啟介面,並且恢復到崩潰之前的狀態
3. 來電結束後,返回被測應用介面
4. 在某些特殊情況下,來電後,行動網路會被切斷
使用者體驗:
1. 以最挑剔最無理的使用者角度來使用應用的主打功能
2. 是否每個動作都有反饋
3. 每個按鈕都有按下的狀態
4. 當介面有返回按鈕時,back將執行同樣的操作
5. 當圖片需要網路拉取,或者無圖片時,是否有預設圖片替代
6. 開啟開發者選項,勾選顯示佈局邊界,檢查每一個按鈕的可點選範圍是否合理
多語言:
1. 其他語言的語言習慣(如繁體)
2. 英文注意複數
3. 多語言下,需要特別檢查以圖片形式展示的文案(如果功能引導,啟動引導圖)
4. 一致性。(一方面是代指的一致性,一方面如果有系列應用共用功能的文案也需要保持一致)
5. 如果在簡體下載了一個檔案or建立了一個快捷方式or進行了一筆購買,馬上切換語言去做一次同樣的動作
6. 檢查英文語言下的切斷、斷行是否正確
7. 當文字長度不一致時,UI介面是否能正常適配
升級:
1. 是否有完整的升級策略(強制升級,灰度釋出)
2. 下載升級包過程中是否可以取消
3. 升級包下載是否可以續傳
4. 升級過程是否可以中斷(取消按鈕,back鍵)
5. Android系統第一次安裝非官方市場應用,需要手動取消限制,此過程是否會影響到apk包安裝(正對預裝應用的測試)
6. 在沒有更新或者網路時,需要給予使用者正確的資訊表達
7. 如果升級有忽略本次版本升級,那麼當有新的升級版本時,是否還有提示升級
8. 收到升級提示後,下載了apk並未安裝,同名替換該apk,下次再收到升級提示後,是否正常升級
應用外部升級:
1 應用如果是跳網頁下載安裝包升級,需要在檔名加版本號或者標識,防止瀏覽器下載時有快取,而無法安裝最新版本—_luguo
2 交由系統下載升級安裝包,嘗試進行兩次版本升級
列表:
1. 列表中的文字長度超過限制
2. 點選列表項返回後的列表項的狀態變化(尤其在有多個進度條存在時,需要注意狀態)
3. 上下滑動時,是否可接受卡頓(幀率)
雙卡雙待:
1. 當手機為雙卡雙待時,影響到的功能有:需要獲取手機號碼的功能,如支付;自動讀取簡訊息
網路:
1. 是否以較好的體驗從網路問題導致的資料問題中恢復介面展示資料
2. 是否每個需要網路請求的操作,都有做超時處理,並且測試出他的超時時間
3. 檢查每一個需要網路請求的動作在網路延遲,伺服器發生錯誤時,介面的響應
monkey測試:
1. 必跑monkey,不要僅跑一次,不要到測試後期才跑
2. 更換不同的介面和不同的引數跑monkey
3. 記得記錄所有日誌,如果能有日誌篩選的工具更好
效能測試:
1. cpu佔用,記憶體,流量,耗時等資料,必須有標準和參考值(可以是市場上同類應用的類似操作的表現,或者同應用的不同版本測試)
2 特定操作(一般為主打功能)的壓力測試,一般長時間大批量執行某個動作或者組合,尤其為該動作是通過JNI實現,或者使用了其他第三方sdk。一般寫指令碼或者錄製指令碼。
病毒檢測:
1. apk檔案在PC殺軟上檢測
2. 手機防毒軟體檢測
Android端手機測試體系
1.冒煙測試
跟web端的測試流程一樣,你拿到一個你們開發做出來的apk首先得去冒煙,也就是保證他的穩定性,指定時間內不會崩潰。這款原生sdk自帶的monkey可以當做我們的測試工具。就跟我之前部落格所說的,monkey測試模擬了使用者的按鍵輸入,觸控式螢幕輸入等等,看裝置多久時間出異常。因為它得用到adb命令,那麼同學們可能還得去自學一下adb命令。如果抓到crash(比如記憶體溢位,空指標異常什麼的),及時向你家開發及時反饋,你也可以把它看成一個效能測試工具 - Monkey程式由Android系統自帶,使用Java語言寫成,在Android檔案系統中的存放路徑是:/sdk/sdk/tools/lib/monkey.jar;
-
Monkey.jar程式是由一個名為“monkey”的Shell指令碼來啟動執行,shell指令碼在Android檔案系統中的存放路徑是:/sdk/sdk/tools/bin/monkey;
-
Monkey命令
-
adb shell monkey –help
-
指定一個包: adb shell monkey -p com.example.sellclientapp 100
-
指定多個包:adb shell monkey -p com.htc.Weather –p com.htc.pdfreader -p com.htc.photo.widgets 100
-
不指定包:adb shell monkey 100(說明:Monkey隨機啟動APP併傳送100個隨機事件)
-
要檢視裝置中所有的包,在CMD視窗中執行以下命令:
>adb shell
#cd data/data
#ls(沒有root所以不能用這個屬性)
-
引數: -v
用於指定反饋資訊級別(資訊級別就是日誌的詳細程度),總共分3個級別,分別對應的引數如下表所示:
日誌級別 Level 0
示例 adb shell monkey -p com.htc.Weather –v 100
說明 預設值,僅提供啟動提示、測試完成和最終結果等少量資訊 相應原始碼如圖所示了,這十分有利於除錯了。
- Level 1
示例 adb shell monkey -p com.htc.Weather –v -v 100
-
Level 2
示例 adb shell monkey -p com.htc.Weather –v -v –v 100
-
示例:
Monkey測試1:adb shell monkey -p com.htc.Weather –s 10 100
Monkey 測試2:adb shell monkey -p com.htc.Weather –s 10 100
-
2.安裝,解除安裝測試
這項對web應用可能測得比較少,這一塊很可能歸攏到我在後面講的適配性測試裡面。在不同機型測試你們應用的安裝,以及解除安裝,看看會不會出現問題;
這是個第三方手機助手蔓延的時代,那麼釋出到手機助手上,檢查能不能裝卸也是很重要的
3.線上升級
一個手機apk得順應時代的需求,定期時不時的進行更新,在我第一份工作裡,很重要的一個內容就是測試線上升級功能。
開發給你一個新版本,你得去測試安裝解除安裝,以及功能流程
4.功能測試
你測試了你們apk的功能測試用例。涵蓋三個方面:
4.1業務邏輯測試,測試你家公司apk的業務邏輯流的
4.2功能測試:測試你家apk的功能點的。
4.3與web端的互動測試。很多apk,比如淘寶啊,京東的app,會跟web客戶端進行功能的互動,我想大家都用app來購物,那麼你買的東西能正常在web端檢視到,這就是你的測試點了。大家可以理解這個意思吧。
5.穩定性及異常性測試
穩定性及異常性測試主要兩點;
5.1.互動性測試:客戶端作為手機特性測試,包含被打擾的情況13種,來電,來簡訊,低電量測試等,還要注意手機端硬體上,如:待機,插拔資料線、耳機等操作不會影響客戶端。
5.2.異常性測試:主要包含了斷網、斷電、伺服器異常等情況下,客戶端能否正常處理,保證資料正確性。
其實這一塊又可以跟monkey牽扯到
6.效能測試
測試點跟web應該差不多,比如尖峰效能啊,壓力測試啊,基準效能等等
1.尖峰效能,在一個時間點,你app的使用者量出現井噴現象,有名的雙11搶貓貓活動嘿嘿
2.壓力測試,逐漸加壓
3.基準,壓伺服器端介面及客戶端在不同網路環境下響應速度。主要為258原則
在一塊,我曾幫別人百度到loadrunner測試手機apk,很幸運,他成功解決了他的問題。我的想法或許,android端或許,注意是或許,將app的什麼socket,tcp/IP對映到web端的測試工具上,比如jmeter,來進行測試,這是我的一個猜想。另外的大神或許會給我們好的測試方法意見
7.UI測試
介面易用,簡介,符合使用者者的口味。
8.適配性測試
也就是相容性測試。
1.手機解析度:主流的800480、854480、960540、1280720、1920*1080
2.不同手機版本,2.3,4.2,4.3等等,使用者面儘量測的覆蓋率高一點
3.手機系統,很多手機廠商喜歡在android原生系統的基礎進行修改,你得測試啦
4.手機尺寸:3.4,5.0,4.7等等,這裡我來插一下話,我在自學android開發的時候有時候會想,如何將自己開發的app調到適合這麼多android機型。百分比是個不錯的選擇
9.電量及流量測試
使用者除了你app的基礎功能,適配,UI美觀。還關心耗不耗流量跟電量。一般非喚醒狀態,後臺狀態會比較低耗能。這個測試範圍,得看你的公司定下的基準。廣播貌似可以監控用電量,大家瞭解了可以留言告訴我學習學習哈哈
10.記憶體洩露
這個東西你可以用monkey抓到,當然也可以DDMS抓
11.迴歸測試工具
這個版塊的測試工具為大家介紹monkeyrunner,robotium,appnium。
11.1monkeyrunner
該monkeyrunner工具提供了編寫控制Android裝置或模擬器從Android的程式碼之外程式的API。隨著monkeyrunner,您可以編寫安裝一個Android應用程式或測試包,執行它,傳送擊鍵它,需要它的使用者介面截圖,並將截圖工作站上的Python程式。
指令碼用jython,what is jython?It is A mix of python and Java。因此可以用java api,當然你也可以擴充套件。
11.2appnium
Appium是一個開源、跨平臺的測試框架,可以用來測試原生及混合的移動端應用。Appium支援IOS、Android及FirefoxOS平臺。Appium使用WebDriver的json wire協議,來驅動Apple系統的UIAutomation庫、Android系統的UIAutomator框架。Appium對IOS系統的支援得益於Dan Cuellar’s對於IOS自動化的研究。Appium也整合了Selendroid,來支援老android版本。
跨架構,native hybrid webview
跨裝置:android ios
跨語言:java python ruby
跨app,多個app直接互動
native本地應用,如android的資訊應用
hybrid native跟webview的結合
webview瀏覽器應用
11.3robotium
Robotium是一款國外的Android自動化測試框架,主要針對Android平臺的應用進行黑盒自動化測試,它提供了模擬各種手勢操作(點選、長按、滑動等)、查詢和斷言機制的API,能夠對各種控制元件進行操作。Robotium結合Android官方提供的測試框架達到對應用程式進行自動化的測試。另外,Robotium 4.0版本已經支援對WebView的操作。Robotium對Activity,Dialog,Toast,Menu都是支援的。
robotium底層是android的instrument,通過Solo物件來建立一系列操作。但是隻能android端,不像appnium跨裝置。
這裡擴充套件一下大家的知識面,如何定位元素,我總結了三個,還有其他方法,請大家留言。
針對座標的:
1.monkey的recorder,之前的部落格有詳細講
2.hierarchyviewer:sdk自帶的工具。很多朋友會問商業機為什麼不行,因為谷歌做了安全措施。無版本限制,如果你想測4.2以上版本也可以。注意,開發板或者模擬器可以用。
效率為獲得一個介面的所有節點和圖片時間為10s左右
3.uiautomator,4.2以上android版本的定位利器,可以真機喲。他也是可以做功能測試的
12.網路測試
2G/3G/4G/wifi,移動/電信/聯通,保證APP在各種環境下的訪問是否正常