劉 偉,譚凱琳,丁長松
(湖南中醫藥大學管理與信息工程學院,湖南長沙,410208)
Android性能測試工具Emmagee的優化研究
劉 偉,譚凱琳,丁長松
(湖南中醫藥大學管理與信息工程學院,湖南長沙,410208)
Emmagee是目前常用的開源APP客戶端性能測試工具之一,它具有測試流程簡單、使用方便、可擴展性好、采集數據較為全面等優點,但在實際使用中也暴露出一些問題。針對這些問題,本文提出了相應的優化方案,從執行自動化測試和自動控制被測程序執行時間兩個方面對Emmagee進行優化,實際應用結果表明,優化后的Emmagee具有更好的實用性。
Android; 性能測試;測試工具;Emmagee
近年來,隨著APP移動應用的迅猛發展,APP應用的性能也越來越受到人們的關注,人們對于APP的性能要求也越來越高。在競爭激烈的移動互聯網時代,只有保障良好并流暢的用戶體驗和可靠的性能方可留住用戶,并在市場競爭中獲利。因此,APP應用性能測試備受關注。
性能測試是通過某種特定的方式對被測試系統按照一定的測試策略進行施壓,獲取該系統的響應時間、運行效率、資源利用情況等各項性能指標,來評價系統是否滿足用戶性能需求的過程。性能測試的目的是為了驗證被測應用是否達到了相應的性能指標,并就相關的測試結果,分析出被測應用存在的問題以及性能瓶頸。APP客戶端性能測試主要的測試內容有CPU、內存、流量、電量、幀率等;測試內容中多項屬于測試資源占用或消耗情況,測試結果更能體現應用真實環境下的系統缺陷。APP客戶端性能測試不同服務器端性能測試,主要用于判斷應用程序在移動終端上運行的情況,以及相關的運行效果是否滿足特定的用戶需求。其中,客戶端性能測試可以發現程序中隱含的問題或沖突。例如:長時間的測試執行可能導致程序發生由于內存泄露而引起的失敗。
APP客戶端性能測試的主要測試指標包括CPU占有率、內存占用、耗電量、動畫幀率(FPS)、流量消耗、閃退、兼容適配,常用的測試方法包括基準測試、真機適配測試、負載測試、壓力測試、競爭測試、數據庫容量測試、滲入測試、峰谷測試等。常用的測試工具有GT、iTest、LoadRunner、NeoLoad、APT、Emmagee等。其中,Emmagee是網易杭州研究院QA團隊開發的用于測試指定Android應用性能的小工具。
Emmagee是一款能夠監控被測應用CPU占有率、內存占用、流量資源消耗情況的性能測試APP,該工具可以實現基于用戶真實的應用操作來進行數據采集功能。Emmagee可以檢測被測應用占用的CPU使用率以及總體CPU使用量、檢測被測應用占用的內存量以及占用的總體內存百分比、檢測應用從啟動開始到當前時間消耗的流量總值和檢測應用從啟動開始到當前時間消耗的電量總值。Emmagee將測試數據存入到.CSV文件中,同時存儲在手機存儲中,在Emmagee中用戶可以選擇開啟浮窗功能,浮窗中實時顯示被測應用占用性能數據信息。
Emmagee的使用非常簡單,在安裝Emmagee APP后,啟動Emmagee,列表中會默認加載手機安裝的所有應用,選擇需要測試的應用,點擊“開始測試”,被測應用會自動啟動;測試完成后回到Emmagee主界面,點擊“結束測試”,測試結果會保存在手機指定的CSV文件中。
Emmagee具有測試流程簡單,能夠較為直觀、準確地觀察到數據的變化情況;無需集成對應的SDK,在打開應用中選中被測應用即可進行測試操作;開源工具,便于二次開發;可采集較為全面的手機數據等優點。但是通過分析與研究,Emmagee也存在測試功能覆蓋不全面、不能實現定制測試需求、測試自動化程度低、測試數據處理程序繁瑣、不能自動控制測試時間和不能記錄已觸發事件等問題,尚需不斷優化和完善。
本節將從執行自動化測試和自動控制被測程序執行時間兩個方面對Emmagee進行優化。
3.1執行自動化測試
利用Emmegee進行測試時,除了應用待機場景外,均需人為進行交互操作才能達到測試目的。一般情況下,每個場景測試時長為十分鐘,整輪場景測下來,需全程進行手動交互操作,耗費的時間較多,造成大量時間和人力的浪費。如果能夠實現自動化測試,將極大提升使用Emmegee進行測試的效率,當前APP測試工具的自動化是業界關注的焦點之一。

圖1 自動化測試優化方案類圖

圖3 優化前后測試流程的對比圖
在Emmegee的優化研究中,本文設計并實現了自動化測試功能。當用戶啟動被測APP后,測試工具可自動運行被測應用,完成交互操作。啟動測試工具后,可選擇手動執行測試或自動執行測試,默認自動執行測試。在優化方案中,提供了一個專門的Monkey類負責自動化測試的實現,優化后的類圖如圖1所示。
在圖1中,Monkey類用于自動啟動待測APP,核心代碼片段如圖2所示。

圖2 自動執行測試核心代碼片段
在圖2所示代碼中,motionevent屬性用于存儲屏幕動作,touchevent屬性用于存儲屏幕觸發點。用戶可在設置中選定是否手動執行測試,若手動執行測試,則與優化前執行流程一致。默認為自動測試,執行優化后的代碼。整體測試流程對比情況如圖3所示。
以某游戲APP為例,假設測試人員不間斷操作測試,圖4為優化前后測試工具Emmagee完成測試需要花費的時間對比圖,從圖中可以得知,優化后的工具為測試人員節省了不少時間,提升了測試人員的工作效率。
3.2自動控制被測程序執行時間
在測試過程中,為了保證場景的一致性以及數據的可靠性,需要確保除因變量外其余測試環境和操作一致。一般情況下,流量、電量消耗與被測應用啟動的時間成正比,故在相關場景測試中,需嚴格把控時間的一致,才能確保數據的有效性和可對比性。初始版的測試工具Emmagee無法控制測試時間,測試人員在測試時需要一邊進行計時、一邊操作測試。經常由于操作不及時或者誤操作等原因,導致數據準確性不高。
本文提出了一種自動控制被測程序執行時間的方案。在Emmagee工具中添加時間控制功能,可設定測試時長,時間一到則自動停止對應用的測試,并把相關測試數據以.CSV文件格式保存在手機SD卡中,達到控制被測程序執行時間的目的,核心代碼片段如圖5所示。

圖4 工具優化前后測試需花費時間對比

圖5 自動控制被測程序執行時間核心代碼片段
網易公司推出的Emmagee是目前常用的APP客戶端性能測試工具之一,Emmagee具有測試流程簡單、使用方便、可擴展性好、采集數據較為全面等優點,在業界得到廣泛的應用。但是在實際使用中也存在一些問題,本文針對這些問題,利用Emmagee可擴展性好、二次開發方便的特點,對Emmagee進行了優化和改進,取得了較好的效果。
(1) 針對測試自動化程度低的問題,擴展了Emmagee的功能,設計并實現了專門負責自動化測試的類,用戶可選擇手動執行測試或自動執行測試,實現了自動化測試功能。實際應用結果表明,優化后的工具可以節省測試時間,提高測試效率。
(2) 針對不能自動控制測試時間這一問題,在Emmagee中添加時間控制,用戶自行設定測試時長并自動將測試數據存儲到手機SD卡中,達到控制被測程序執行時間的目的。
在今后的工作中,將針對Emmagee工具存在的其他問題,提出相應的解決方案,包括實現可定制化測試、更合理地處理測試數據及報告、添加并完善測試功能、記錄觸發事件等,進一步提高Emmagee的易用性和實用性。
[1] 陳曄.大話移動APP測試:Android與iOS應用測試指南 [M].北京: 清華大學出版社, 2014.
[2] NetEase,Inc.Releases.NetEase/Emmagee.GitHub [EB/OL]. 2015-12-30 [2016-6-10].https://github.com/NetEase/ Emmagee/releases.
[3] 宋春雨. Android平臺自動化測試的研究與實踐 [D]. 北京:北京郵電大學, 2012.
[4] 馮靖超. 基于Android系統的自動化測試平臺的設計與實現[D]. 長春: 吉林大學, 2015.
[5] 楊怡君, 黃大慶. Android手機自動化性能測試工具的研究與開發 [J]. 計算機應用, 2012, 32(2):554-556.
劉偉,男,1982年生,博士,高級工程師,主要研究方向為軟件工程和數據挖掘;
譚凱琳,女,1996年生,計算機科學與技術專業本科生;
丁長松,男,1975年生,博士,副教授,碩士生導師,主要研究方向為云計算和大數據處理。
The Optimized Research on Android Performance Test Tool Emmagee
Liu Wei,Tan Kailin,Ding Changsong
(School of Management and Information Engineering,Hunan University of Chinese Medicine,Changsha,Hunan,410208)
Emmagee is one of the commonly-used open source APP (Application) client performance test tools,it has many advantages,such as simple testing process,using easily,good scalability and collecting many kinds of data.But there are many problems in practical use.In order to solve these problems,some optimized solutions are proposed in this paper.The first one is to implement the automated test and the second one is to control the test time.Practical application results show that the Emmagee has better practicability after optimizing.
Android;performance test;test tools;Emmagee
TP311.5
A