Android與iOS測試注意點

憂鬱,灑脫發表於2019-04-10

App測試中Android和IOS測試區別

  1. 解析度測試:

  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就比較少了;

  1. 手機作業系統:

  ios較少且不能降級,只能單向升級;新的ios系統中的資源庫不能完全相容低版本中的ios系統中的應用,低版本ios系統中的應用呼叫了新的資源庫,會直接導致閃退(Crash);

  Android較多;

  1. 操作習慣:

  Android,Back(返回)鍵是否被重寫,測試點選Back(返回)鍵後的反饋是否正確;應用資料從記憶體移動到SD卡後能否正常執行等;

  1. push(資訊推送)測試:

  Android:點選home鍵,程式後臺執行時,此時接收到push,點選後喚醒應用,此時是否可以正確跳轉;

  ios,點選home鍵關閉程式和螢幕鎖屏的情況(紅點的顯示);

  1. 安裝解除安裝測試:

  Android的下載和安裝的平臺、工具和渠道比較多;

  ios主要有app store,iTunes和testflight下載;

  1. 升級測試:

  可以被升級的必要條件:新舊版本具有相同的簽名;新舊版本具有相同的包名;有一個標示符區分新舊版本(如版本號),對於Android若有內建的應用需檢查升級之後內建文  件是否匹配(如內建的輸入法)

測試注意點:

  1. 併發(中斷)測試:另一個應用的啟動、視訊音訊的播放,來電、使用者正在輸入等,語音、錄音等的播放時強制其他正在播放的要暫停;
  2. 資料來源的測試:輸入、選擇、複製、語音輸入,安裝不同輸入法輸入等;
  3. push(推送)測試:在開關機、待機狀態下執行推送,訊息先死及其推送跳轉的正確性;應用在開發、未開啟狀態、應用啟動且在後臺執行的情況下是push顯示和跳轉否正確;推送訊息閱讀前後數字的變化是否正確;多條推送的合集的顯示和跳轉是否正確;
  4. 分享跳轉:分享後的文案是否正確;分享後跳轉是否正確,顯示的訊息來源是否正確;
  5. 觸屏測試:同時觸控不同的位置或者同時進行不同操作,檢視客戶端的處理情況,是否會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在各種環境下的訪問是否正常

相關文章