敬宗儒
(德勤勤躍數字科技(上海)有限公司,上海 200120)
隨著移動互聯網的高速發展,人們對于移動應用軟件的需求呈現爆發式增長。近幾年來,我國的移動應用軟件開發能力大大提高,層出不窮的各類移動應用軟件在各行業領域都得到了廣泛的應用。移動應用軟件市場的成熟在創造機遇的同時也對應用軟件質量以及用戶使用體驗提出了更高的要求。面對應用軟件同質化嚴重問題,市場亟須通過提升應用及服務質量來形成差異化競爭,提高生存能力。根據相關數據顯示,2015 年,我國的移動應用軟件的市場規模突破了200億美元;2017 年,移動應用下載量達到了1600 億次。依據移動應用市場報告統計與預測數據顯示,2021 年,全球移動應用市場規模達到7893.29 億元(人民幣)。在2021-2027 預測期間內,預計全球移動應用市場將以8.63%的復合年增長率增長,并預測至2027 年全球移動應用市場總規模將會達到12970.5 億元。開發移動應用所面臨主要問題是開發成本、開發周期及工作量,利用自動化測試技術可以大大縮短移動應用軟件開發周期,加快版本的更新速度。本文將從手機應用測試的類型、兼容性測試面臨的挑戰以及兩種自動化測試方法三方面展開闡述。
手機應用軟件測試大致包括以下幾類測試:功能測試;兼容性測試;交叉事件測試,PUSH 推送測試;穩定性測試;性能測試等,下面將列舉幾種進行說明。
1.應用軟件功能測試,即對移動應用的各項功能進行全面測試,以確定其能否通過驗證。軟件功能測試應當依據開發設計文檔,并結合產品需求來開展相關工作。例如:測試微博發布功能,應當考慮是否添加話題、圖片、文字長度等;發布操作的用戶體驗是否達到預期要求,圖片選擇等操作是否合理等;另外,發布微博必須與服務器發生交互,所以網絡因素也是要考慮的。
2.移動應用軟件的兼容性,即為系統內部發生改變、不同的環境下是否可以正常運行。例如:安卓應用程序的兼容性能細分為兩個部分,一個是向前兼容,另一個是向后兼容[1]。若出現兼容性問題,會引起運行異常、功能失效、程序崩潰或卡頓等,導致程序無法正常的運行。所以,移動應用軟件測試需要考慮手機分辨率、系統版本和手機型號等因素,另外還要考慮到不同網絡制式、手機硬件(手機按鈕及耳機藍牙設備)和手機軟件(定位、地圖APP 等)的兼容性。
3.APP 穩定性測試。因為APP 是在手機操作系統中安裝使用,為確保軟件可以穩定地、無差錯地運行,必須要開展穩定性測試,這里一般都會用到Monkey 軟件,該軟件是在命令的基礎上運行,利用這項工具進行長時間的運行APP,以此來檢測APP 會不會出現假死(ANR)或者崩潰的問題。此外,還需進行弱網測試,也就是在運行軟件在網絡不佳的情況下,通過這種方式驗證軟件是否發出異常信號、閃退等,通常會模擬各種弱網環境開展測試工作,目前模擬弱網環境所用到的工具主要有fiddler、charles 等。
在移動APP 的各項測試中,兼容性測試尤其重要。兼容性測試,即不同應用程序、硬件產品、操作系統、網絡環境中,測試移動應用軟件的運行情況。開展兼容性測試的目的是為確保開發出的應用軟件能夠正常的運行,同時確保其安裝和卸載的順利。兼容性測試主要分為兩大方面:硬件和軟件。簡單來說,在硬件方面,主要測試應用軟件與目標硬件之間的兼容性;軟件方面,主要測試應用軟件與主流操作版本之間的兼容性。硬件平臺是軟件運行的基礎,無論是計算機還是嵌入式產品,都需要硬件平臺支持。但即使是同一類硬件(如顯卡),也有不同的生產廠商,因此在軟件設計的時候必須考慮如何兼容不同生產廠商的產品。軟件兼容是指待發布軟件與常用軟件在同一環境下使用時,相互之間的影響。計算機中常用的軟件有下載類軟件、即時通信類軟件、壓縮解壓類軟件、文檔編輯類軟件、位圖圖像處理類軟件、矢量圖圖像制作類軟件、動畫制作類軟件、殺毒類軟件、光盤刻錄類軟件、系統鏡像類軟件、多媒體播放軟件等其他類軟件。在移動應用軟件的安裝與卸載測試完成之后,軟件將開始測試其各個運行環節,運用UI 適配方式對應用截面與初始設計的一致性展開測試。利用圖像與文字識別技術,將預估條件提前設置,可以獲得精準的測試結果,由此能夠更加精細地、準確地定位和分析存在的問題。
不同型號、不同品牌的平板電腦、智能手機,其無論是驅動程序,還是硬件及操作系統均存在一定的區別,為此一些移動應用可能在某一品牌或某一型號智能手機上能夠正常運行,但無法在另一品牌或型號的設備上運行[2]。所以,為保障移動應用能夠穩定地運行,則需要全面測試移動應用在各個移動設備上的兼容性。現階段,我國市場的智能手機超過1.3 萬種,因為測試時間、測試成本等諸多因素的制約,無法測試全部的移動設備。所以,目前移動應用兼容性測試需要面對的難題和挑戰就是如何兼顧測試成本、測試周期的同時,確保測試的質量和測試的全面性。
現階段,移動應用兼容性所面臨的難題如下所述:
1.操作系統碎片化嚴重。終端設備、系統版本的更新與升級,加之各自的差異化,導致碎片化的問題尤為突出,難以確保移動應用的兼容性,開發者在開發應用程序過程中很難發現一些潛在的兼容性問題,這就導致問題識別、確定和修復面臨著諸多困難。
2.手工測試具有一定的局限性。開發移動應用過程中,需要在不同的設備上測試開發出的程序,整個過程需要耗費大量的時間和人力成本,且極易出現疏漏。當移動應用程序正式投入應用,若出現問題開發者要及時地進行修復,這也為開發者的工作帶來了較大挑戰。
3.第三方庫的應用存在諸多不確定性。一般情況下,需要通過第三方庫來實現移動應用的經濟價值,例如廣告、GooglePaly 服務等。但是,第三方庫與這些應用程序的功能演化往往是不同步的,為此第三方庫在升級新版本時,就需要測試這些應用功能的兼容性,以確保軟件的各項功能可以正常使用。大量應用第三方庫,導致應用程序發生兼容性的問題尤為常見[3]。一旦出現兼容性的問題,會導致程序運行異常,甚至會出現系統崩潰的情況。上述的這些問題在實踐中較為常見。為提高用戶體驗,確保移動應用功能的正常運行,必須要解決移動應用兼容性問題;采取傳統的測試方法,需要耗費大量的人力和時間成本,而采用基于云端的自動化測試方法將會大大提高測試效率,降低測試成本。
傳統兼容性測試手段,即為測試人員會初步確定測試的范圍,主要依據用戶的特征進行定向選擇,首先會采購一些主流型號的手機,然后搭建測試的環境,采取人工的方式進行測試,兼容性測試包括兩個維度,一個是系統版本,另一個是移動設備;若需要對市面上的主流硬件設備和系統進行兼容性測試,就需要購買大量的硬件,若需要全面測試這兩個維度,就需要耗費大量的人力、物力和財力,因此都是在部分主流設備上進行全量測試,對其主要功能的用例做到全面覆蓋,主要功能用例測試則會擴大測試的范圍,并對各個功能點的兼容性測試結果進行手動記錄,這里可以看出人的主觀因素對測試的結果會產生較大的影響,其緣由是人的主觀意識對測試結果的影響較大,未采取專業化的方式展現最終結果,那么必定會影響到開發人員對程序的修改和調整。
傳統兼容性測試方法,通常會用到一些工具,且需要耗費一定的時間。該測試手段對設備的類型要求較高,需要詳細的記錄各個維度的日志,截取保存對應圖像,因此測試的工作量較大,采用基于云端的自動化兼容測試方法,可以有效避免人工開展大量的重復性勞動,有效提高測試的效率和準確性,控制整個開發的成本,縮短開發周期。基于云端的自動化兼容測試系統主要由構建層、管理層、資源池層與物理資源層四個層級所組成。第一層級屬于應用服務層,面向服務的對象為用戶,在Web 平臺上可以直接訪問底層資源,其主要起到封裝底層架構與資源的作用,為此資源分配以及功能實現等問題無需用戶考慮。第二層是管理層,其主要用于管理資源、任務、用戶和安全;其可以保障任務的順利運行、資源配置的合理、權限及環境穩定等。第三層能夠實現抽象與管理整個平臺的物理資源,整個物理資源均封裝在資源池內,資源類型主要包括存儲、計算和設備資源。第四層為物理資源層,如存儲器、物理主機、模擬器和終端設備,屬于云端自動化兼容測試的實體層。
因為基于云端的兼容性測試平臺可以提供大量的真機與終端模擬器,所以用戶采取遠程調用的手段,在調交測試項目、測試腳本的過程中用到瀏覽器,測試云就可以匯總和統計全部的資源,并獲得完整的兼容調度,將測試任務分配至運動,最終獲得執行結果的報告。
目前,我國常用的云測試平臺主要有:Testin 云測、testbird、百度MTC 等,具體如下所述:
Testin 共計部署的安卓和蘋果系統終端分別達到了六百部和八十部,軟件開發人員將設計的應用提交給平臺,并確定測試的機型和網絡,那么就能完成自動化測試,整個過程不需要人工操作,包含錯誤、報警等各種測試的日志和標準測試報告會自動形成,其內容涵蓋了中央處理器、啟動時間、截圖、內存及日志等。目前,Testin 主要支持的系統:Robotium、JUnit、Athrun 以及Testin SDK,不單單支持安卓系統,還支持蘋果系統的自動化測試框架的只有Testin SDK。
TestBird 可以應用在目前大部分的安卓設備、全系列所有型號的ios 終端設備上,且可以在Web 應用、H5、Hybird 混合上運行,能夠統計、對比和分析數據,還能夠自動形成包含錯誤、報警等各種測試日志及標準測試報告,為此在錯誤定位方面可以給開發人員帶來極大的便利。
百度移動云測試中心(MTC)部署了30 部蘋果系統終端,以及300 余部安卓系統終端,但是其對自身除外的測試腳本不予支持,這就導致百度移動云測試中心(MTC)的應用范圍具有一定的局限性。
騰訊優測(Utest)僅能用于測試安卓終端設備的兼容性,且基本滿足市面上絕大多數安卓設備的兼容性測試需求,在H5 混合應用、游戲及應用領域得到了廣泛應用,利用遠程鏈接測試設備就可以開展兼容性測試,然而其不支持測試。
阿里 MQC 共計部署的安卓和蘋果系統終端分別達到了一百多部和十部,支持腳本測試,但不支持人工測試,主要在阿里自主操作系統YunOS 中開展測試。于支持Robotium 和增強后的APPium,即為自動化測試框架,后者支持安卓和蘋果設備[4]。
隨著移動應用市場的快速發展,應用程序開發日益增多,其兼容性問題也會變得更加突出,有效解決兼容性問題,能夠確保開發移動應用的順利運行,避免影響到用戶體驗,其中使用合適的兼容性測試軟件,可以提高員工的工作效率,給到客戶更有競爭力的產品優勢及體驗感,同時也能通過更有效的操作減少運營成本。本文主要深入探討了兼容性測試的各項問題,同時對我國現有的自動化兼容性測試平臺進行了逐一介紹,并指出各種的優劣勢。隨著移動設備的種類日益增多,碎片化問題會變得越來越嚴重,為了滿足日漸增長的移動應用測試的需求,開展移動應用的兼容性測試工作迫在眉睫,且具有挑戰性的任務。在不久的將來,自動化測試技術不斷發展,相關的測試手段更加的成熟,自動化測試可以運用到各種移動應用軟件的測試場景中,并且測試的成本會大大降低,測試精準度也會變得越來越高。筆者堅信隨著技術的不斷發展,移動應用兼容性測試技術可以為移動應用市場的健康發展保駕護航。