江南機電設(shè)計研究所 賈俊輝
?
基于Android平臺的動態(tài)行為檢測軟件的設(shè)計與實現(xiàn)
江南機電設(shè)計研究所 賈俊輝
【摘要】隨著Android系統(tǒng)的普及,新興的移動軟件產(chǎn)業(yè)獲得快速發(fā)展。然而,基于Android平臺的軟件檢測技術(shù)與方法卻相對滯后,原有的軟件測評方式不能很好地對Android平臺軟件進行各種指標檢測。本項目在Android 應(yīng)用開發(fā)技術(shù)、多線程開發(fā)技術(shù)、Linux系統(tǒng)監(jiān)測技術(shù)研究的基礎(chǔ)上,自主開發(fā)了Android檢測軟件“Android Scan”,該軟件具備App事件監(jiān)聽、實時檢測數(shù)據(jù)、系統(tǒng)資源監(jiān)聽、數(shù)據(jù)記錄等功能,該工具能夠作為Android軟件壓力檢測、臨界測試的測試輔助軟件,為測試人員提供數(shù)據(jù)分析支持。
【關(guān)鍵詞】動態(tài)檢測;Android應(yīng)用技術(shù);多線程
Android移動應(yīng)用軟件檢測平臺在國內(nèi)已經(jīng)有了一部分研究成果,但是,普遍的研究成果都沒有對UI功能測試提供很好的支持;并且,對于一些尚未發(fā)布的移動設(shè)備或者軟件應(yīng)用來說,采用商業(yè)檢測平臺,對商業(yè)私密性也不能得到很好的保護。
國外常見工具如Google提供的Android SDK中,給出了三種自動化測試工具,即Monkey、MonkeyRunner 和Instrumentation。其中,Monkey是一個隨機壓力測試工具。Monkey通過向系統(tǒng)發(fā)送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),對應(yīng)用程序進行壓力測試。由于Monkey測試使用的事件流數(shù)據(jù)流是隨機不能進行自定義,因此Monkey不符合可控測試的要求。MonkeyRunner是由Python編寫的測試工具,可以通過編寫Python代碼調(diào)用Android的API,從而達到自動化測試的目的;Instrumentation可理解為一種沒有圖形界面的、具有啟動能力、用于監(jiān)控其他類的工具類。然而,MonkeyRunner與Instrumentation框架對測試人員的代碼編寫能力較高,并且腳本編寫環(huán)境要求多變復(fù)雜,對于測試項目而言成本較高。
本項目在Android應(yīng)用開發(fā)技術(shù)、多線程開發(fā)技術(shù)、Linux系統(tǒng)監(jiān)測技術(shù)研究的基礎(chǔ)上,自主開發(fā)了Android檢測軟件“Android Scan”,該軟件具備App事件監(jiān)聽、實時檢測數(shù)據(jù)、系統(tǒng)資源監(jiān)聽、數(shù)據(jù)記錄等功能。該工具能夠作為Android軟件壓力檢測的測試輔助軟件,為測試人員提供數(shù)據(jù)分析支持。
Android系統(tǒng)是一個權(quán)限分離的系統(tǒng)。Android Scan利用Linux已有的權(quán)限管理機制,通過為每一個App分配不同的uid和gid,從而使得不同的App之間的私有數(shù)據(jù)和訪問達到隔離的目的。與此同時,利用Android提供的permission機制,用來對App可以執(zhí)行的某些具體操作進行權(quán)限細分和訪問控制,進而利用Android的權(quán)限機制進行權(quán)限安全分析。
Android Scan主要采用進行輔助壓力測試。壓力測試通過接入外部設(shè)備在短時間內(nèi)發(fā)送大量信息,同時并接收大量的信息,來驗證同一個軟件是否可以同時多個窗口進行操作,操作時軟件對該情況進行的處理及響應(yīng)等。并且,通過長時間使軟件持續(xù)運行,檢測溫度、電壓等數(shù)據(jù)等,用來評估系統(tǒng)與軟件可靠性。
Android Scan采用JAVA語言在Eclipse 3.5.1、Android Development Tools平臺上開發(fā),可以實時監(jiān)視目標App、采集目標動態(tài)數(shù)據(jù),包括:硬件信息、 App權(quán)限、App包數(shù)據(jù)信息、內(nèi)存消耗、CPU使用信息、網(wǎng)絡(luò)流量數(shù)據(jù)、電量數(shù)據(jù)、溫度、存儲消耗、電壓等數(shù)據(jù)信息。并且,通過記錄監(jiān)測數(shù)據(jù),保存原始數(shù)據(jù),為評價與統(tǒng)計分析提供數(shù)據(jù)依據(jù)。Android Scan的設(shè)計架構(gòu)方法如圖1所示。
圖1 Android Scan的設(shè)計架構(gòu)
Android Scan啟動以后,會通過App事件監(jiān)聽線程實時監(jiān)測目標手機軟件的目標動態(tài)信息,并將目標動態(tài)信息如 App權(quán)限、App包數(shù)據(jù)信息、內(nèi)存消耗、CPU使用信息、網(wǎng)絡(luò)流量數(shù)據(jù)、反饋到Android Scan實時檢測數(shù)據(jù)界面之中,再將其傳入數(shù)據(jù)記錄模塊。同時,系統(tǒng)資源監(jiān)聽線程將Android系統(tǒng)總內(nèi)存消耗、總CPU使用、總網(wǎng)絡(luò)流量數(shù)據(jù)、電量數(shù)據(jù)、溫度、存儲消耗、電壓等信息記錄到數(shù)據(jù)記錄模塊中。最后,退出Android Scan后會將數(shù)據(jù)記錄器中的數(shù) 據(jù)生成文本文件,測試人員可以利用腳本工具將數(shù)據(jù)文本生成報表。
本項目在Android 應(yīng)用開發(fā)技術(shù)、多線程開發(fā)技術(shù)、Linux系統(tǒng)監(jiān)測技術(shù)研究的基礎(chǔ)上,自主開發(fā)了Android檢測軟件“Android Scan”,該軟件具備App事件監(jiān)聽、實時檢測數(shù)據(jù)、系統(tǒng)資源監(jiān)聽、數(shù)據(jù)記錄等功能。該工具能夠作為Android軟件壓力檢測、臨界測試的測試輔助軟件,為測試人員提供數(shù)據(jù)分析支持。Android Scan在UI上進行實時檢測,解決了國內(nèi)普遍的研究成果都沒有對UI功能測試提供很好的支持的問題;同時,該軟件為自主開發(fā),可以很好地保護用戶商業(yè)私密性。并且,在實際應(yīng)用之中結(jié)合FindBugs、LogCat、MonkeyRunner、LoadRunner等,可以搭建成為Android軟件測試工具平臺。通過該平臺,實現(xiàn)Android軟件靜態(tài)、動態(tài)、并發(fā)、負載性能、異常處理等方面的檢測。
參考文獻
[1]盧建軍,蘇寧.淺談手機軟件測試的流程與策略[J].制造業(yè)自動化,2012(15):12-17.
[2]尤永康,劉乃琦.自動化回歸測試在 Java 項目中的實現(xiàn)[J].計算機應(yīng)用,2005,25(1).
[3]謝紅霞,吳紅梅.基于Android 的自動化測試的設(shè)計與實現(xiàn)[J].Computer Era,2012(2).
賈俊輝(1987—),男,貴州貴陽人,碩士,現(xiàn)供職于江南機電設(shè)計研究所,助理工程師,研究方向:軟件測試。
作者簡介: