淺談兼容性測試
作者 | 曾文浩
?兼容性測試的概念
兼容性測試是一種軟件測試,用于確保構建的系統/應用程序/網站與其他各種對象(如其他網絡瀏覽器、硬件平臺、用戶、操作系統等)的兼容性。這種類型的測試有助于了解產品在特定環境中的表現。
為了方便理解,可以把硬件,軟件,平臺等對象抽象成測試設備這個概念。結合項目上兼容性測試的實踐經驗可以提取出以下特征:
- 在交付項目中,被測對象往往對測試設備有較大的依賴。以測試一個WEB產品為例子,一般需要考慮:瀏覽器,瀏覽器版本,操作系統,屏幕尺寸,分辨率大小等。有時候也需要考慮硬件設備參數和型號。任何差別都可能出現測試結果不符合預期的情況。
- 兼容性是其他測試類型的前提。在敏捷測試象限里,不同的測試類型根據四個維度進行了劃分,兼容性測試雖然沒有出現在其中,但是在進行不同類型的測試之前,測試主體和測試設備需要保持一種“穩定”狀態才可以開展。我把這種“穩定”的狀態視作兼容性是其他測試的必要不充分條件。
- 越多的測試設備意味著越多的資源消耗。在測試人員測試熟練程度固定的情況下,每增加一個測試設備都會增加其工作量,更不用說開發成本和采購、搭建測試環境的成本。
- 沒有任何一個產品會追求兼容所有可用設備,基本上所有項目都會根據產品定位、業務類型、用戶群體等維度對測試設備進行限制,從而達成交付目標。這個過程常常在售前或者啟動階段完成。

準備測試設備清單
顯然,在當今設備、平臺碎片化的現實中,如何確定測試設備對于項目進行兼容性測試有著關鍵作用。從以下幾個方面可以篩選和確認出兼容性測試設備清單:
1.基于市場定位和產品定位
市場定位,是指企業對目標消費者或目標消費者市場的選擇;而產品定位,是指企業對用什么樣的產品來滿足目標消費者或目標消費市場的需求。從理論上講,應該先進行市場定位,然后才進行產品定位。產品定位是對目標市場的選擇與企業產品結合的過程,即將市場定位企業化、產品化的工作。
在測試人員設計兼容性測試設備初期,需要考慮產品定位的背景輸入,從而限制測試設備類別。
一般來說,企業期望產品適配多端,從項目成本和風險平坦的角度,會對項目進行拆分,以較小單元分階段完成產品開發。拆分會進一步限制測試設備種類。例如,一個資訊類的科技公司希望開發出基于用戶關系,專注興趣社區的即時分享傳播信息,并與他人互動的社交媒體平臺。在iOS生態完善,目標用戶使用量大、用戶體驗更好的前提下,業務側可能針對性給予開發團隊這樣的輸入:需要開發在主流iOS設備安裝和使用的APP。
2. 基于交付目標
交付目標需要考慮交付本身各種條件和制約因素,可能存在如業務價值、技術復雜度、產品類型、用戶類別、市場定位等維度。從這些關鍵維度可以提取兩種搜集測試設備的方法:
(1) 主動搜集
調研:根據地域、競品分析、操作系統市場占有率、瀏覽器市場占有率等條件對測試設備做調研。主要通過咨詢公司獲取相關的行業報告,或者通過大數據平臺獲取相關數據。

圖一 2022年1月到2023年1月期間中國區手機和平板供應商的市場占有率(數據來源:https://gs.statcounter.com/)
埋點:對于已經發布的產品采用埋點技術,獲取用戶使用設備等信息作為兼容性測試的數據支撐
圖二 通過埋點技術統計的終端用戶訪問某特定網站設備使用情況示例圖
(2) 被動搜集
主流發布:獲取移動設備廠商設備發布動態,預測新設備對于產品是否影響,從而影響測試設備是否兼容的決策。
產品反饋:對于已經發布的產品,從線上用戶反饋的兼容性問題。
3. 基于技術
在明確產品定位和交付目標的前提下,開發團隊會確定開發過程的技術選型,不同的技術選型對于運行設備也有要求。下圖是基于聊天的智能團隊協作工具Teams對設備的最低要求。對于低于該要求的硬件、軟件的測試設備不再具有測試價值。

圖三 Teams用戶手冊關于安裝和使用對設備的最低要求
(圖片來源:https://learn.microsoft.com/en-us/microsoftteams/hardware-requirements-for-the-teams-app)
4. 測試目標
在測試策略層面,不同的測試類型對于測試設備選型也有影響。對于WEB項目,更加側重于界面布局,組件交互邏輯、屏幕自適應、元素字體、瀏覽器渲染時間(性能)等UI測試,所以需要考慮設備屏幕大小、分辨率、瀏覽器類型、瀏覽器版本、操作系統等因素;對于APP項目,更加側重于下載、安裝、卸載、功能、交互等功能測試,所以更多需要考慮操作系統、硬件參數等因素。
需要注意的是,測試目標和測試設備選型是強耦合的關系,測試目標旨在保障項目高質量交付,可以進行靈活變化。如果識別到某測試機型已經不具備測試價值,或者不同型號機型表現類似,應該和業務團隊和開發團隊進行溝通和調整。

圖四 常見設備屏幕尺寸表
如上圖所示,如果從屏幕尺寸大小、分辨率相同的角度,同一廠商屏幕參數類似,選擇一種機型就可滿足測試條件。
5. 測試資源
在測試設備基本明確的前提下,需要考慮當前交付團隊的測試資源。越多的測試設備也意味著會消耗更多的測試資源(有些時候測試策略也會很大程度的影響測試資源的消耗,比如測試策略設計了迭代內回歸,也在增加著測試人員的工作量)??梢钥紤]區分測試設備的優先級,對一到兩個設備進行主測,其余設備進行happypath測試?;蛘邍L試協調更多的測試資源到當前項目。抑或者對類型重復、出錯率較小的設備進行刪減并與客戶和團隊進行溝通。
組建測試設備資源池
在確定測試設備資源之后,接下來測試人員會思考如何得到可用的設備,一般有以下方法:
1. 虛擬
模擬器主要透過硬件或軟件使得一臺計算機系統(稱作主host)在行為上類似于另外一臺設備或程序(稱作客戶guest)。模擬器一般允許在主系統上運行給客戶系統設計的軟件或者外部設備。虛擬機(VM)是計算機系統的仿真器,通過軟件模擬具有完整硬件系統功能的、運行在一個完全隔離環境中的完整計算機系統,能提供物理計算機的功能。
- 常用的Android模擬器有android studio emulator,bluestack,genymotion,Nox App Player,MEmu App Player,koplayer
- 常用的iOS模擬器有xcode simulator
- 常用的虛擬機有Parallels,VMware Fusion,VirtualBox,QEMU
一般來說不用刻意對虛擬技術進行定義和區別,測試人員更側重于這種技術帶來的結果,即可以通過軟件/工具創造一個符合測試設備軟件/硬件的環境。市場上手機、平板的配置五花八門,這個時候虛擬設備往往不能取代真機,而常常用于開發、測試環節的debug。但是對于PC、Mac來說系統因素一般是產品運行的關鍵,開發和測試一般會傾向使用虛擬機完成工作任務。

圖五 VMware Fusion使用虛擬技術實現在macOS上使用Windows 11
(圖片來源:https://blogs.vmware.com/teamfusion/2021/10/fusion-12-2-now-available.html)
2. 真機
真實的搭載操作系統的硬件設備,可以是電腦、平板、手機。測試人員從終端用戶的角度,對真機進行測試往往能發現真實場景下的兼容性問題。通過從市場完成采購,或者從設備平臺進行租賃是常見的獲取方法。真機常見于手機、平板等可移動設備的測試。
3. 云測試平臺
云測試是基于云平臺提供測試服務的新模式。面向企業及開發者,通過云端調配和使用測試工具、測試設備、測試工程師,以解決企業軟件和系統的功能、兼容、性能、安全等全周期的測試需求。通過網絡協議等手段便可以在本地連接托管到機房的目標真機進行測試活動。具有設備多、便捷、弱維護成本、即用型等特點。一般情況云測平臺提供的是托管在機房的可移動手機、平板的真機。

圖六 一些常見的云測試平臺對比
執行兼容性測試方法
基于應用場景進行測試方法選型
人工測試即全手工測試,可能會依賴第三方的工具完成測試目標。手工測試工作量大,資源消耗嚴重,但是能發現明顯的兼容問題,比較適合測試設備少、測試功能點復雜的場景。
自動化測試,通過selenium、appium、cypress等自動化測試框架,實現測試用例的自動化,完成特定場景下兼容的驗證。自動化測試較手動測試完成速度快,能節省人工成本,但是由于自動化測試用例的顆粒度較大,當前仍然無法完全取代手動測試。
手動測試和自動測試可以同時存在于同一個項目的交付周期里,靈活調整執行方法,在某些程度上可以釋放測試資源,提高測試效率和節約成本。

圖七 某項目背景下手動測試和自動測試結合的可持續測試流程
最后
兼容性測試并不是簡單的以執行為主的測試類型,確定兼容性測試策略需要系統地對整個測試周期進行層級劃分,基于數據或者事實基礎在層級之間設置篩選條件,并且建立層級之間持續反饋的渠道和方法。

圖八 兼容性測試的分層思路
測試人員從測試策略的角度,不僅需要了解兼容性測試的對象從產品層到業務層的篩選方式,也需要從測試目標、測試資源、技術實現的角度篩選可測對象列表,在執行層面通過虛擬、云測平臺、真機等方式組建起測試設備資源,利用手動、自動或者相結合的測試方式,靈活地進行兼容性測試的交付。兼容性測試涉及到大量的設備、技術、執行方式的選型,完善兼容性測試是一個不斷摸索和實踐的過程。






















