鐘葉


摘 要:隨著移動互聯網的迅猛發展,移動APP應用逐漸深入。其大多采用迭代開發模式,版本更新速度快,留給測試人員的時間非常有限,使其難以在短時間內對APP進行全面測試。對移動APP測試方法進行梳理與總結,重點從圖形用戶界面測試、系統性測試、基模測試等方面介紹移動APP的測試方法。
關鍵詞:移動平臺;軟件測試;移動APP
DOIDOI:10.11907/rjdk.171344
中圖分類號:TP301
文獻標識碼:A 文章編號文章編號:1672-7800(2017)008-0211-03
0 引言
移動通信技術的不斷完善進一步推動了移動設備的迅速發展,其靈活、方便、易攜帶的特點,使人們對移動設備依賴程度日益提高。中國互聯網絡信息中心(CNNIC)近期發布的第39次《中國互聯網絡發展狀況統計報告》顯示,截至2016年12月,我國手機網民規模達6.95億人,較2015年底增加7 550萬人[1]。
龐大的用戶數量吸引著越來越多的IT企業涉足移動APP領域,市場所投放的APP數量也與日俱增,選擇范圍的擴大使用戶的要求也隨之提高。但現實情況是很多APP的質量并不過關、運行不流暢、響應速度慢,甚至于經常崩潰閃退,讓用戶體驗大打折扣。種種問題的出現使開發者對于APP測試給予了越來越多的重視,而APP的測試和傳統測試相比,無論是技術層面還是理論層面也都將面臨更多挑戰。本文通過文獻分析法,對近年來移動APP測試方法進行梳理總結。
1 圖形用戶界面測試
圖形用戶界面測試,又稱為GUI測試。目前,國內外移動APP測試過程主要是模擬用戶通過圖形用戶界面(GUI)對移動設備的使用過程,比如模擬用戶的誤操作、模擬用戶同時使用手機中多個應用程序時對手機性能的影響等[2]。用戶界面的不斷改進使得用戶操作更為方便,但也使得GUI軟件變得更加復雜,大大增加了測試難度。圖形用戶界面測試日益受到學術界和工業界的重視。然而,目前關于GUI軟件測試的研究還處于初級階段,各種標準和規范也在不斷完善中。GUI測試如表1所示。
D.Amalfitano等[3]于2012年提出了一種使用GUI Ripping的測試方式——AndroidRipper。AndroidRipper基于一種叫作Ripper的用戶界面驅動,該驅動能夠自動地搜索應用程序的圖形界面,其最終目標在于以一種結構化的方式去訓練這些應用程序。不久之后,C S Jensen等[4]于2013年提出了一種雙相的測試技術,它能夠有效地在應用程序中自動地找到事件序列并且達到測試之前所給定的目標。測試步驟為:首先建立一個應用程序中獨立事件處理程序的索引信息;然后根據該索引信息并借助該應用程序的一個UI模型建立事件序列。
很多安卓GUI測試在產生一些隨機或是一般的測試用例方面是有效果的,但是GUI測試始終面臨著一個嚴峻的挑戰:就是如何去發現一個測試用例,它在測試中很難被覆蓋但是又有很大可能出現問題路徑。針對這一挑戰,Ting Su[5]于2016年提出了FSMdroid,這是一種基于模型的安卓GUI測試方法。特別是FSMdroid采用了“馬爾可夫鏈蒙特卡洛(MCMC)取樣算法”迭代地改變隨機模型,最終產生高代碼覆蓋率的多樣化測試用例。
隨著自動化GUI測試要求的不斷提高,盡管人們可以通過枚舉方式列出所有可能進行組合測試。但通常是不可行的,因為這必將導致測試用例的數目快速膨脹。為了解決該問題,Nariman Mirzaei等[6]于同年開發了TrimDroid這一測試工具,這是一種安卓應用的GUI測試框架,能夠以組合化可擴展方式產生測試用例,同時可以進行自動化程序分析。
2 系統性測試
系統性地分析、測試一個應用程序是其在推出前必須經歷的階段,如果一個應用沒有進行較全面的系統測試,一些潛在問題就很有可能導致應用程序運行故障。大部分測試也要求批量地采用實際設備而非模擬設備進行測試,以確保功能的完善性。
之前很多研究主要集中在對安卓應用程序的單元測試上,并沒有從一個體系的角度出發,對其進行端對端的系統測試。由此,R·Mahmood等[7]開發了EvoDroid,它是一種采用演化式測試方法對Android應用程序進行系統性測試的工具。演化測試(Evolutionary Testing)是搜索式測試的一種形式,其核心在于將測試用例的生成過程轉化為一個利用遺傳算法進行啟發式搜索的數值優化問題[8]。但是其局限性在于是本地測試或是單元測試。而EvoDroid很好地克服了此問題,最終取得了較好的測試效果。
當采用實際設備進行測試時,一些非確定性的不標準的控制流、可升縮性以及開銷限制通常使得測試過程十分艱難。并且有的測試人員并不能接觸到所有源碼,以及測試用例的覆蓋率并不高。為了解決這些問題,Tanzirul Azim等[9]開發了一種叫作A3E的測試工具,該工具可以進行強目標性的深度優先搜索測試。這種測試的亮點在于它們在應用程序的字節碼層,采用了一種平穩的、感染性的數據流分析,以此來構建一個高標準的、能夠捕捉活動切換過程中正確轉換的控制流圖,再根據該控制流圖制定出一種能夠快速地、直接地找到各種活動的策略;同時,還制定了一種深度優先探索策略(Depth-first Exploration)以提高測試用例的覆蓋率。
3 基于模型的移動APP測試
一般而言,應用程序主要依靠手動測試,這些測試通常依賴于手工創建和執行測試用例來模擬應用程序的實際使用情況。根據每種情況,測試人員必須手動輸入數據,手動滑動屏幕,點擊按鈕,手動比較實際結果和預期行為。這些都帶來巨大的時間和人工成本,從而促使研究者們開始提出自動化測試的概念,因為種種技術難點,并沒有真正地實現“自動化”。有學者提出一種“基于模型的應用測試”的觀點,正是因為基于模型的測試(MBT)在非移動端的測試取得了良好效果,因此很多學者認為其在移動端可能也具有獨特優勢。endprint
在基模測試的流程里,主要步驟不再是測試設計,而是如何設計一個高效合理的測試模型。因為最終基模測試工具將從一個由用戶指定的測試模型中生成測試用例[10]。如果要得到測試覆蓋率高的測試用例,就必須在測試模型的設計上進行更為全面的考量?;y試主要流程如圖1所示,首先根據需求設計建立模型,這需要花費較長時間,之后模型將自動生成測試用例,包括測試序列和期望輸出,然后用這些測試用例去檢測和核實待測系統,每次嘗試都及時予以反饋,這里也體現了基模測試的優勢,即只需要將失敗的結果反饋給模型或是需求,再對模型進行修正即可,降低了維護成本。
Vignir Gudmundsson等[11]也就此方面也做了一些研究佐證,他們挑選了一個最具代表性的Android應用程序QuizUp進行測試,最終結果顯示,基模測試也能很好地適應于移動端,并且能夠發現一些用傳統測試方法很難發現的問題。Guilherme de Cleva Farto等[12]在2015年提出了結合ESG(Event Sequence Graph)建模技術的基模測試方法,他們采用ESG設計測試模型很好地表現了手機應用在被測試時所體現的特性。Janne Merilinna等[13]利用基模測試方法對手機應用產生測試用例的可能性進行了深入研究,他們開發了一種特定領域的建模語言以及一個咖啡機代碼生成器的實例,并應用基模測試為其產生測試用例,最終結果顯示這種可能性是存在的。
4 其它測試方法
除了上文所提及的測試方法,還有許多學者就移動APP測試提出了自己的觀點。Joseph Chan Joo Keng等[14]提出了MAMBA,即一種檢查Android應用隱私的測試手段。MAMBA根據程序字節碼的靜態分析,執行路徑搜索用戶事件回調函數生成的控制流圖?;谝呀洶l現的路徑,它可以生成由觸發應用執行的用戶事件所組成的測試用例,并迅速轉換應用程序的活動,揭示應用程序中潛在的隱私數據訪問。
當前,Android設備的型號眾多,如何從龐大的設備型號中選出適合特定應用程序的設備,常讓開發者們為難。針對這一問題,Xuan Lu等[15]提出了PRADA,它是一種能夠為每個應用程序選擇適合它的安卓設備,并采用優先排序方法,該方法主要是基于大規模用戶數據的挖掘。PRADA采用協同過濾技術去預測一個應用程序在不同設備上的使用情況,盡管此應用程序可能還沒有真正地投入市場使用。
Android設備硬件資源有限,過度消費資源可能會導致系統崩潰、響應性差、電池消耗過度以及消極的用戶體驗等問題。由此,Hailong Zhang等[16]提出了一種自動探測安卓應用資源缺陷的方法。
5 結語
移動平臺用戶基數的不斷擴大和市場準入規則的參差不齊,導致大量具有質量問題,乃至于安全隱患的移動應用產品涌入市場,將對用戶的隱私、財產造成威脅。這時,對移動應用的質量把控就被提升到了一個舉足輕重的地位。有別于PC端應用,移動APP對網絡條件、適配、用戶體驗等方面提出了更高的要求??偨Y現有文獻發現,移動APP測試未來的發展趨勢可能是:①為了解決需求更新速度快、各種軟件版本管難度大的問題,敏捷測試的方式將更為合適;②目前的移動APP測試尚未實現完全自動化,為了節約資源成本,實現全面自動化測試需要提上日程;③當前很多應用在不同網絡環境、設備型號上運行所產生的差異性也是測試的一個難點。本文主要對圖形用戶界面測試、系統性測試、基模測試等方面的測試方法進行了分析總結,以期為之后的移動引用測試提供理論基礎和新的思考方向。
參考文獻:
[1] 中國互聯網絡信息中心.中國互聯網絡發展狀況統計報告[EB/OL].[2017-1].http://www.cnnic.net.cn/hlwfzyj/hlwxzbg/hlwtjbg/201701/P020170123364672657408.pdf.
[2] 葉強.基于無縫移動引擎(SME)的手機自動測試接口技術的研究與實現[D].北京:北京交通大學,2007.
[3] AMALFITANO D,FASOLINO A R,TRAMONTANA P,et al.Using gui ripping for automated testing of android APPlications[J].Ase,2012,43(9):258-261.
[4] JENSEN C S,PRASAD M R.Automated testing with targeted event sequence generation[C].Proceedings of the 2013 International Symposium on Software Testing and Analysis International Symposium on Software Testing and Analysis,2013:67-77.
[5] SU T.FSM droid:guided gui testing of android APPs[C].Proceedings of the 38th International Conference on Software Engineering Companion,2016:689-691.
[6] MIRZAEI N,GARCIA J,BAGHERI H,et al.Reducing combinatorics in gui testing of android APPlications[C].Proceedings of the 38th International Conference on Software Engineering,2016:559-570.endprint
[7] MAHMOOD R,MIRZAEI N,MALEK S.Evodroid:segmented evolutionary testing of android APPs[C].Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering,2014:599-609.
[8] 謝曉園,許蕾,徐寶文.演化測試技術的研究[J].計算機科學與探索,2008,2(5):449-466.
[9] AZIM T,NEAMTIU I.Targeted and depth-first exploration for systematic testing of android APPs[J].Acm Sigplan Notices,2013,48(10):641-660.
[10] 馬云云,王金波,張弢,等.基于模型的方法在軟件測試領域的應用與發展[J].計算機系統應用,2016,25(6):274-278.
[11] GUDMUNDSSON V,LINDVALL M,ACETO L,et al.Model-based testing of mobile systems[Z].an empirical study on quizup android APP,2016:16-30.
[12] FARTO G D C,ENDO A T.Evaluating the model-based testing approach in the context of mobile applications[J].Electronic Notes in Theoretical Computer Science,2015,314(C):3-21.
[13] MERILINNA J,PUOLITAIVAL O P.Using model-based testing for testing application models in the context of domain-specific modelling[J].Oopsla Workshop on Domain,2009.
[14] KENG J C J,JIANG L,WEE T K,et al.Graph-aided directed testing of android applications for checking runtime privacy behaviours[C].Proceedings of the 11th International Workshop on Automation of Software Test,2016:57-63.
[15] LU X,LIU X,LI H,et al.Prada:prioritizing android devices for APPs by mining large-scale usage data[C].Proceedings of the 38th International Conference on Software Engineering,2016:3-13.
[16] ZHANG H,WU H,ROUNTEV A.Automated test generation for detection of leaks in android applications[C].Proceedings of the 11th International Workshop on Automation of Software Test,2016:64-70.endprint