開發與維運

APP 兼容性(1)- 概述

眾所周知,Android系統的碎片化非常嚴重,目前市面上的不同廠商、不同品牌的手機差異化都非常大,而且各大手機廠商百家爭鳴,每年都要推出數款乃至數十款手機。在這個情況下,怎麼保證我們的APP得以正常運行,擁有良好的體驗,成為開發者極為頭痛的事情!!!

UC研發效能組長期為UC業務提供自動化測試報障,這個問題自然也是我們持續在研究的,我們巖鼠平臺也提供了方便的APP兼容性測試,於是我拉上研發小哥哥決定製作系列乾貨文章,為大家揭祕【APP兼容性該怎麼測】。

兼容性面臨的問題

不同的系統版本

Android的版本非常多,並且還在持續演進,目前最新是Android Q正式版本,而低版本如Android 4.x版本也還是有一定份額,所以大部分應用也是需要兼容Android 4.0及以上,但是Android系統的向下兼容性並不是特別好,所以開發者需要使用SDK進行向下兼容來解決不同系統版本的兼容性問題。

image.png

Android各個版本市場份額(2019.05)

2.各品牌的ROM兼容性

Android因為其開源的特性,國內的廠商都會定製自己的ROM,如小米的MIUI、OPPO的ColorOS、VIVO的FuntouchOS、華為的EMUI、魅族的Flyme、一加的H2OS等等,這些ROM和Android原生ROM差異已經越來越大,同時具有一些自己的特性,給移動開發者帶來非常大的困擾。

3.分辨率問題

繼全面屏手機推出後,目前手機的分辨率真的是五環八門,劉海屏、水滴屏、挖孔屏,還有摺疊屏等等。從分辨率尺寸來說也有數十種之多,不同分辨率的設備上呈現出來的效果也不盡相同,如果沒有進行適配,可能就會給用戶帶來很糟糕的體驗。

4.硬件不同

硬件架構主要是CPU了,目前主要是高通、海思、聯發科三個廠商,但是具體的型號也有數十種之多。

高通芯片系列:https://www.jianshu.com/p/f0a440ad0185

MTK芯片系列:https://zhuanlan.zhihu.com/p/39305123

海思芯片:麒麟910、麒麟920、麒麟930、麒麟950、麒麟960、麒麟970、麒麟980、麒麟990

綜上,要做一款質量好,體驗優的APP,必然要面對很大的挑戰,除了以上提到的技術上挑戰之外,在落地測試驗證的時候,還會遇到更艱難的問題——覆蓋熱門機型的成本。

我們要保證大部分的用戶體驗,一般測試熱門的TOP100~TOP300手機,如果直接採購,這個手機成本就超過百萬了,大部分團隊很難把所有的TOP機型湊齊。

UC的兼容性測試怎麼做

我們在實際開發中,往往不會一個一個機型版本去測試適配,更多還是用主流的機型進行開發驗證。那麼就需要在測試環節、發佈前驗證環節加入自動化兼容性測試的把關,通過自動化測試快速的進行問題檢測。

自動化兼容性測試要求在手機上自動化執行【安裝-啟動-測試-卸載】這個完整的流程,並且要求測試的準確性和效率。

本文先概要介紹下這幾個步驟主要做什麼,以及會面臨的問題,後續文章將繼續詳細介紹各個難題如何突破。

1.安裝

兼容性第一步是安裝,由於不同廠商以及應用商店都有準入的檢查,所以安裝只能成功不能失敗。那麼安裝過程都有哪些問題呢?

2.啟動

啟動過程中,需要檢查啟動的時間,因為啟動速度是用戶的第一體感,如果啟動非常慢的話,很難給用戶帶來好的感觀。啟動一般容易出現以下問題:

  • 無法啟動,主頁面都沒辦法啟動
  • 啟動崩潰,啟動後直接就出現崩潰
  • 啟動後的活動頁等無法跳過
  • 啟動速度非常慢

3.登錄

登錄問題其實是所有APP在自動化測試時都要面臨的問題,因為基本上都沒有標準的控件,並且都有自身產品的獨特設計,所以在登錄時非常容易出現問題。

  • 自身賬號無法登錄
  • 調用第三方登錄無法登錄

4.遍歷

在做自動遍歷的時候,很多人都想到說不能完全覆蓋我的APP的全部場景,但是實際APP變化特別快,並且APP種類多,如果都需要準備每個APP的功能用例,那成本就太高了。所以我們採用自動遍歷的方案,針對APP來進行基礎的可用性檢查,同時收集各類數據反饋遍歷了哪些頁面,發現了哪些問題。

5.數據可視化

怎麼知道測試的效果是否可靠呢,這裡需要對測試數據進行可視化

  • Activity覆蓋次數
  • 點擊的控件記錄
  • 各種性能數據
  • CPU
  • 內存
  • 幀率
  • 網絡

6.卸載

完成全部測試後,千萬不要遺漏最後一點,就是APP能否正常被卸載,否則容易被誤認為是病毒軟件。

免費試用

巖鼠平臺兼容性測試,當前開放免費試用,歡迎體驗
巖鼠雲設備平臺

系列文章:
APP兼容性(2)- 揭祕巖鼠智能遍歷

Leave a Reply

Your email address will not be published. Required fields are marked *