最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

安卓系統(tǒng)穩(wěn)定性的自動(dòng)化測試方法及裝置與流程

文檔序號:11154855閱讀:862來源:國知局
安卓系統(tǒng)穩(wěn)定性的自動(dòng)化測試方法及裝置與制造工藝

本發(fā)明涉及安卓測試領(lǐng)域,具體是涉及一種安卓系統(tǒng)穩(wěn)定性的自動(dòng)化測試方法及裝置。



背景技術(shù):

穩(wěn)定性測試是移動(dòng)端產(chǎn)品專線測試中的重要一項(xiàng)測試,是指移動(dòng)端產(chǎn)品在一段較長的時(shí)間(通常不少于8個(gè)小時(shí))進(jìn)行反復(fù)、長期的操作,并在這種壓力測試下系統(tǒng)資源是否占用異常,是移動(dòng)端產(chǎn)品發(fā)版上線的一個(gè)重要質(zhì)量標(biāo)準(zhǔn)。

在Android(安卓)自動(dòng)化測試中,有時(shí)候需要對一個(gè)軟件進(jìn)行壓力測試,檢查該軟件的性能。如果是人工進(jìn)行測試的話,效率會(huì)低很多,而且會(huì)比較枯燥。這時(shí),Android系統(tǒng)中的一個(gè)命令行工具M(jìn)onkey,可以減輕很多重復(fù)而又繁瑣的工作。Monkey是安卓系統(tǒng)自帶的一款穩(wěn)定性和壓力測試工具。Monkey工具像一只調(diào)皮的猴子,在APP(APPlication,應(yīng)用)中亂按、亂摸、亂滾、亂跳。Monkey測試是Android平臺下自動(dòng)化測試的一種快速有效的手段,通過Monkey工具可以模擬用戶觸摸屏幕、滑動(dòng)軌跡球、按鍵等操作來對模擬器或者手機(jī)設(shè)備上的軟件進(jìn)行壓力測試,檢測該軟件的穩(wěn)定性、健壯性。它的原理是向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流(如按鍵輸入、觸摸輸入、手勢輸入等),實(shí)現(xiàn)對正在開發(fā)的應(yīng)用程序進(jìn)行壓力測試。

Monkey工具可以隨機(jī)產(chǎn)生事件,不帶任何主觀性,并且使用方便。但是,也由于這種隨機(jī)性,使得傳統(tǒng)的Monkey測試只能作為穩(wěn)定性測試工具。在Monkey測試中,由于事件的隨機(jī)性,導(dǎo)致難以分析出性能隱患。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明的目的是為了克服上述背景技術(shù)的不足,提供一種安卓系統(tǒng)穩(wěn)定性的自動(dòng)化測試方法及裝置,能夠分析出性能隱患。

本發(fā)明提供一種安卓系統(tǒng)穩(wěn)定性的自動(dòng)化測試方法,包括以下步驟:

S1、建立安卓測試項(xiàng)目工程;

S2、導(dǎo)入靜態(tài)庫;

S3、修改安卓測試項(xiàng)目工程的配置文件;

S4、在安卓測試項(xiàng)目工程的測試代碼目錄中,新建JUnit測試用例,植入性能數(shù)據(jù)打點(diǎn)的腳本,獲取當(dāng)前移動(dòng)終端內(nèi)存和CPU信息,將獲取的內(nèi)存和CPU信息作為動(dòng)態(tài)廣播文件,通過廣播消息發(fā)出動(dòng)態(tài)廣播文件,記錄在移動(dòng)終端的本地文件中;

S5、添加支持檢查清單的配置項(xiàng);

S6、執(zhí)行:搜集測試過程中的動(dòng)態(tài)廣播文件,將動(dòng)態(tài)廣播文件處理成便于展示的靜態(tài)文件,存放到本地,測試完成后生成報(bào)告上傳至WEB服務(wù)器,WEB服務(wù)器生成基礎(chǔ)性能報(bào)告及崩潰信息;

S7、顯示基礎(chǔ)性能報(bào)告的信息。

在上述技術(shù)方案的基礎(chǔ)上,步驟S1中,使用Java語言建立安卓測試項(xiàng)目工程。

在上述技術(shù)方案的基礎(chǔ)上,步驟S2中還包括以下步驟:當(dāng)檢測到當(dāng)前界面為關(guān)注的活動(dòng)時(shí),通過與移動(dòng)終端上的視圖服務(wù)通信,獲取該活動(dòng)的控件信息,得到指定的控件的坐標(biāo)信息;點(diǎn)擊該坐標(biāo),即回到指定的界面。

在上述技術(shù)方案的基礎(chǔ)上,步驟S5中的配置項(xiàng)包括:指定觸摸事件的百分比;滑動(dòng)事件;軌跡球事件;導(dǎo)航事件;系統(tǒng)按鍵事件;活動(dòng)之間的切換;指定產(chǎn)生隨機(jī)事件的種子值;指定打印信息的詳細(xì)級別;忽略崩潰;忽略超時(shí);忽略安全異常;發(fā)生錯(cuò)誤后直接殺掉進(jìn)程。

在上述技術(shù)方案的基礎(chǔ)上,所述基礎(chǔ)性能報(bào)告中的圖表用結(jié)點(diǎn)記錄執(zhí)行的事件。

本發(fā)明還提供一種安卓系統(tǒng)穩(wěn)定性的自動(dòng)化測試裝置,該裝置包括工程建立單元、靜態(tài)庫導(dǎo)入單元、配置文件修改單元、測試用例新建單元、配置單元、執(zhí)行單元、顯示單元;

工程建立單元用于:建立安卓測試項(xiàng)目工程;

靜態(tài)庫導(dǎo)入單元用于:導(dǎo)入靜態(tài)庫;

配置文件修改單元用于:修改安卓測試項(xiàng)目工程的配置文件;

測試用例新建單元用于:在安卓測試項(xiàng)目工程的測試代碼目錄中,新建JUnit測試用例,植入性能數(shù)據(jù)打點(diǎn)的腳本,獲取當(dāng)前移動(dòng)終端內(nèi)存和CPU信息,將獲取的內(nèi)存和CPU信息作為動(dòng)態(tài)廣播文件,通過廣播消息發(fā)出動(dòng)態(tài)廣播文件,記錄在移動(dòng)終端的本地文件中;

配置單元用于:添加支持檢查清單的配置項(xiàng);

執(zhí)行單元用于:搜集測試過程中的動(dòng)態(tài)廣播文件,將動(dòng)態(tài)廣播文件處理成便于展示的靜態(tài)文件,存放到本地,測試完成后生成報(bào)告上傳至WEB服務(wù)器,WEB服務(wù)器生成基礎(chǔ)性能報(bào)告及崩潰信息;

顯示單元用于:顯示基礎(chǔ)性能報(bào)告的信息。

在上述技術(shù)方案的基礎(chǔ)上,所述工程建立單元使用Java語言建立安卓測試項(xiàng)目工程。

在上述技術(shù)方案的基礎(chǔ)上,所述靜態(tài)庫導(dǎo)入單元還用于:當(dāng)檢測到當(dāng)前界面為關(guān)注的活動(dòng)時(shí),通過與移動(dòng)終端上的視圖服務(wù)通信,獲取該活動(dòng)的控件信息,得到指定的控件的坐標(biāo)信息;點(diǎn)擊該坐標(biāo),即回到指定的界面。

在上述技術(shù)方案的基礎(chǔ)上,所述配置項(xiàng)包括:指定觸摸事件的百分比;滑動(dòng)事件;軌跡球事件;導(dǎo)航事件;系統(tǒng)按鍵事件;活動(dòng)之間的切換;指定產(chǎn)生隨機(jī)事件的種子值;指定打印信息的詳細(xì)級別;忽略崩潰;忽略超時(shí);忽略安全異常;發(fā)生錯(cuò)誤后直接殺掉進(jìn)程。

在上述技術(shù)方案的基礎(chǔ)上,所述基礎(chǔ)性能報(bào)告中的圖表用結(jié)點(diǎn)記錄執(zhí)行的事件。

與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)如下:

(1)本發(fā)明結(jié)合性能專項(xiàng)工具,進(jìn)一步挖掘性能隱患。本發(fā)明使用Java語言建立Android Test Project(安卓測試項(xiàng)目)工程,隨機(jī)測試Advanced Monkey(聰明的猴子測試工具)原理上結(jié)合JUnit測試,JUnit是Java語言的一個(gè)單元測試框架;在運(yùn)行測試過程中,記錄被測APP的crash(崩潰)棧信息,以及native crash(底層崩潰)信息,同時(shí),根據(jù)配置項(xiàng),Advanced Monkey會(huì)輸出性能報(bào)告。測試人員使用本發(fā)明中的Advanced Monkey做穩(wěn)定性測試,可以根據(jù)報(bào)告中的crash信息,找出導(dǎo)致crash的操作步驟,同步搜集性能數(shù)據(jù),根據(jù)性能數(shù)據(jù),分析出性能隱患,從而彌補(bǔ)手工測試涵蓋不到的地方。

(2)本發(fā)明基于Robotium自動(dòng)測試框架,開發(fā)了大型的Robotium test case(基于Robotium的測試用例),來對App進(jìn)行activity(活動(dòng))深度遍歷和節(jié)點(diǎn)操作,并開發(fā)了Advanced Monkey App(聰明的猴子測試應(yīng)用)工具。Robotium是一款國外的Android自動(dòng)化測試框架,主要針對Android平臺的應(yīng)用進(jìn)行黑盒自動(dòng)化測試,它提供了模擬各種手勢操作(點(diǎn)擊、長按、滑動(dòng)等)、查找和斷言機(jī)制的API(Application Programming Interface,應(yīng)用編程接口),能夠?qū)Ω鞣N控件進(jìn)行操作。Robotium結(jié)合Android官方提供的測試框架達(dá)到對應(yīng)用程序進(jìn)行自動(dòng)化的測試。本發(fā)明能夠準(zhǔn)確識別頁面上的操作,避免無效點(diǎn)擊。

(3)本發(fā)明支持Checklist(檢查清單)配置,能夠提供簡單的功能驗(yàn)證。

附圖說明

圖1是本發(fā)明實(shí)施例中安卓系統(tǒng)穩(wěn)定性的自動(dòng)化測試方法的流程圖。

具體實(shí)施方式

下面結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)描述。

參見圖1所示,本發(fā)明實(shí)施例提供一種安卓系統(tǒng)穩(wěn)定性的自動(dòng)化測試方法,包括以下步驟:

S1、使用Java語言建立一個(gè)Android Test Project(安卓測試項(xiàng)目)工程;

S2、導(dǎo)入Advanced Monkey所需的lib(靜態(tài)庫),robotium-solo.jar和douyu-common.jar,douyu-common.jar包所實(shí)現(xiàn)的功能是準(zhǔn)確識別頁面上的操作,避免無效點(diǎn)擊;

一般進(jìn)入一個(gè)模塊會(huì)有一個(gè)固定的入口,退出這個(gè)模塊,也會(huì)退回到這個(gè)固定入口界面。增加一個(gè)判斷,即在每次操作之后都去檢查當(dāng)前的界面是否為該界面,如果是,則去點(diǎn)擊這個(gè)入口控件,就回到了這個(gè)模塊,繼續(xù)測試;這樣即可保證穩(wěn)定性測試一直在這個(gè)模塊中進(jìn)行。

具體實(shí)現(xiàn)方式是:當(dāng)檢測到當(dāng)前界面為關(guān)注的activity(活動(dòng))時(shí),通過與手機(jī)上的View Server(視圖服務(wù))通信,獲取該activity的控件信息,得到指定的控件的坐標(biāo)信息;點(diǎn)擊這個(gè)坐標(biāo),即回到了指定的界面。

S3、修改Android Manifest.xml文件(安卓測試項(xiàng)目工程的一個(gè)配置文件),具體修改內(nèi)容:修改instrumentation TAG中的name和targetPackage(對應(yīng)字段名)字段,字段內(nèi)容填充分別為引入jar(將已經(jīng)寫好的類進(jìn)行封裝)包的包名com.douyu.TestRunner和待測應(yīng)用包名air.tv.douyu.android(APP應(yīng)用包名)。

S4、在安卓測試項(xiàng)目工程的src文件(測試代碼目錄)中,新建JUnit Test Case,該類需繼承com.douyu.BaseCase類(繼上面douyu-common.jar中的類引用),并在新建的Case中添加初始化操作,同時(shí),結(jié)合性能專項(xiàng)工具,進(jìn)一步挖掘性能隱患,植入性能數(shù)據(jù)打點(diǎn)的Python腳本,Python是一種面向?qū)ο蟆⒔忉屝陀?jì)算機(jī)程序設(shè)計(jì)語言,是將整個(gè)自動(dòng)化過程程序化的腳本語言。Python腳本實(shí)現(xiàn)的功能是在每個(gè)操作完成后執(zhí)行adb shell dumpsys meminfo和adb shell dumpsys cpuinfo命令,即獲取當(dāng)前手機(jī)內(nèi)存和CPU信息,將獲取的內(nèi)存和CPU信息作為動(dòng)態(tài)廣播文件,通過廣播消息發(fā)出動(dòng)態(tài)廣播文件,記錄在手機(jī)本地文件中,詳情報(bào)告可以見步驟S7。

S5、添加支持檢查清單的配置項(xiàng)

支持Checklist配置,提供簡單的功能驗(yàn)證:執(zhí)行Monkey命令時(shí)需要配置各個(gè)事件的比例,本發(fā)明優(yōu)化的思路就是將業(yè)務(wù)操作寫成自動(dòng)化腳本,然后將該腳本抽象成一個(gè)Monkey事件,并且可以配置執(zhí)行比例。

由于原生monkey測試技術(shù)的改進(jìn)需要擴(kuò)展monkey命令參數(shù),為了實(shí)現(xiàn)這點(diǎn),需要對安卓官方自帶的monkey.jar包進(jìn)行源碼修改,然后重新編譯生成一個(gè)新的monkey.jar包。下面的介紹是針對新monkey.jar生成以后用戶的配置步驟。

(1)根據(jù)安卓不同平臺版本,將對應(yīng)平臺的monkey.jar push到/data/local/tmp/monkey.jar

(2)生成以下可執(zhí)行文件/data/local/tmp/monkey(手機(jī)中的目錄文件地址)

(3)對data/local/tmp/monkey(手機(jī)中的目錄文件地址)增加執(zhí)行權(quán)限

(4)使用該擴(kuò)展功能的monkey運(yùn)行命令詳細(xì)做法如下:

在項(xiàng)目中新建assets文件夾,添加config.properties(配置文件)文件。在config.properties文件中添加支持檢查清單的配置項(xiàng),設(shè)置輸出報(bào)告的位置,默認(rèn)為/mnt/sdcard/report/(路徑地址)目錄,并設(shè)置自動(dòng)登錄開關(guān),分別設(shè)置初始自動(dòng)登錄時(shí)輸入的用戶名和密碼。然后在自動(dòng)化測試App上編輯下面編輯框所需內(nèi)容,即Advanced Config.properties中對應(yīng)的內(nèi)容。

在Advanced Config.properties文件中添加支持檢查清單的配置項(xiàng),均可選,若不填,則默認(rèn)值,默認(rèn)值即為上面Monkey參數(shù)框里面的值,對于通常的App默認(rèn)值即為多次測試實(shí)驗(yàn)提取較佳值。

配置項(xiàng)包括:

--pct-touch:指定觸摸事件的百分比,例如:--pct-touch 5%;

相關(guān)的還有以下option(選項(xiàng)):

--pct-motion<percent>(滑動(dòng)事件);

--pct-trackball<percent>(軌跡球事件);

--pct-nav<percent>(導(dǎo)航事件up/down/left/right);

--pct-majornav<percent>(主要導(dǎo)航事件back key、menu key);

--pct-syskeys<percent>(系統(tǒng)按鍵事件Home、Back、startCall、endCall、volumeControl);

--pct-appswitch<percent>(activity之間的切換);

--pct-anyevent<percent>(任意事件);

-s:指定產(chǎn)生隨機(jī)事件的種子值,相同的種子值產(chǎn)生相同的事件序列,例如:-s 200;

-v:指定打印信息的詳細(xì)級別,一個(gè)-v增加一個(gè)級別,默認(rèn)級別為0;

-p:指定有效的package(如不指定,則對系統(tǒng)中所有package有效),一個(gè)-p對應(yīng)一個(gè)有效package,如:-p com.ckt-p com.ckt.asura;

-c:activity必須至少包含一個(gè)指定的category,才能被啟動(dòng),否則啟動(dòng)不了;

--throttle:每個(gè)事件結(jié)束后的間隔時(shí)間——降低系統(tǒng)的壓力(如不指定,系統(tǒng)會(huì)盡快的發(fā)送事件序列),例如:--throttle 100;

--dbg-no-events:初始化啟動(dòng)的activity,但是不產(chǎn)生任何事件。

--hprof:指定該項(xiàng)后在事件序列發(fā)送前后會(huì)立即生成分析報(bào)告——一般建議指定該項(xiàng)。

--ignore-crashes:忽略崩潰;

--ignore-timeouts:忽略超時(shí);

--ignore-security-exceptions:忽略安全異常;

--kill-process-after-error:發(fā)生錯(cuò)誤后直接殺掉進(jìn)程;

--monitor-native-crashes:跟蹤本地方法的崩潰問題;

--wait-dbg:知道連接了調(diào)試器才執(zhí)行monkey測試。

S6、執(zhí)行

搜集測試過程中的動(dòng)態(tài)廣播文件,將動(dòng)態(tài)廣播文件處理成便于展示的靜態(tài)文件,存放到本地,測試完成后生成報(bào)告上傳至WEB服務(wù)器,WEB服務(wù)器生成基礎(chǔ)性能報(bào)告及crash信息。

通過Run as Android Junit Test(運(yùn)行方式)方式執(zhí)行,執(zhí)行完成后會(huì)自動(dòng)執(zhí)行上傳操作,就會(huì)把手機(jī)里的文件上傳到自動(dòng)化平臺WEB服務(wù)器,并通過WEB服務(wù)器查看Advanced Monkey的輸出報(bào)告。

S7、顯示基礎(chǔ)性能報(bào)告的信息

(1)基礎(chǔ)性能報(bào)告

根據(jù)配置項(xiàng),Advanced Monkey會(huì)輸出性能報(bào)告到輸出報(bào)告目錄中。性能報(bào)告是以performance(性能)開頭的html或xml文件。

Html格式的性能報(bào)告中,首先會(huì)列出被測app的相關(guān)信息,包括包名、Uid(用戶唯一標(biāo)識)和同Uid下的每一個(gè)進(jìn)程的Pid(進(jìn)程唯一標(biāo)識)和進(jìn)程名等。

隨后列出CPU(Central Processing Unit,中央處理器)、內(nèi)存、流量的圖表。CPU圖表中記錄了每一個(gè)進(jìn)程的CPU占用率,內(nèi)存圖表中記錄了每個(gè)進(jìn)程PSS(Proportional Set Size,實(shí)際使用的物理內(nèi)存,包含共享庫占用的內(nèi)存)和USS(Unique Set Size,進(jìn)程獨(dú)自占用的物理內(nèi)存,不包含共享庫占用的內(nèi)存)的占用情況,流量圖表中記錄了流量總使用情況和兩個(gè)采集點(diǎn)之間的流量差值。

基礎(chǔ)性能報(bào)告中的圖表用node(結(jié)點(diǎn))記錄Advanced Monkey執(zhí)行的事件,可以用來輔助定位造成曲線波動(dòng)的操作。

Xml格式的性能報(bào)告中,每個(gè)operation(操作)為一個(gè)采集點(diǎn),其中記錄了時(shí)間戳、測試手機(jī)總CPU占用率、流量差值、流量總和、節(jié)點(diǎn)上的事件,以及每個(gè)進(jìn)程的Pid、CPU占用率、PSS、USS等,點(diǎn)擊該node可以查看到詳情,通常,我們會(huì)設(shè)定一個(gè)CPU和內(nèi)存的閾值,以通常的測試標(biāo)準(zhǔn)設(shè)定CPU為50%和內(nèi)存占用200MB,如果在執(zhí)行該操作的時(shí)候,性能值超過閾值,那么會(huì)在曲線上標(biāo)注出紅色,需要測試者人工二次確認(rèn)是否是問題,如果是問題,那么提交給開發(fā)去解決,通常情況下超過閾值的事件都需要關(guān)注。

(2)crash信息

Advanced Monkey會(huì)自動(dòng)記錄被測APP的crash棧信息,以及native crash信息。

Crash信息會(huì)輸出在你配置的目錄中,以stack(堆棧信息)為開頭的txt文件。每個(gè)crash單獨(dú)輸出一個(gè)文件。Native crash信息記錄在以dmp開頭的文件中,可以通過google-breakpad(谷歌跨平臺的崩潰轉(zhuǎn)儲(chǔ)和分析模塊工具)進(jìn)行查看。

本發(fā)明實(shí)施例還提供一種安卓系統(tǒng)穩(wěn)定性的自動(dòng)化測試裝置,該裝置包括工程建立單元、靜態(tài)庫導(dǎo)入單元、配置文件修改單元、測試用例新建單元、配置單元、執(zhí)行單元、顯示單元;

工程建立單元用于:使用Java語言建立安卓測試項(xiàng)目工程;

靜態(tài)庫導(dǎo)入單元用于:導(dǎo)入靜態(tài)庫;當(dāng)檢測到當(dāng)前界面為關(guān)注的活動(dòng)時(shí),通過與移動(dòng)終端上的視圖服務(wù)通信,獲取該活動(dòng)的控件信息,得到指定的控件的坐標(biāo)信息;點(diǎn)擊該坐標(biāo),即回到指定的界面;

配置文件修改單元用于:修改安卓測試項(xiàng)目工程的配置文件;

測試用例新建單元用于:在安卓測試項(xiàng)目工程的測試代碼目錄中,新建JUnit測試用例,植入性能數(shù)據(jù)打點(diǎn)的腳本,獲取當(dāng)前移動(dòng)終端內(nèi)存和CPU信息,將獲取的內(nèi)存和CPU信息作為動(dòng)態(tài)廣播文件,通過廣播消息發(fā)出動(dòng)態(tài)廣播文件,記錄在移動(dòng)終端的本地文件中;

配置單元用于:添加支持檢查清單的配置項(xiàng);配置項(xiàng)包括:指定觸摸事件的百分比;滑動(dòng)事件;軌跡球事件;導(dǎo)航事件;系統(tǒng)按鍵事件;活動(dòng)之間的切換;指定產(chǎn)生隨機(jī)事件的種子值;指定打印信息的詳細(xì)級別;忽略崩潰;忽略超時(shí);忽略安全異常;發(fā)生錯(cuò)誤后直接殺掉進(jìn)程;

執(zhí)行單元用于:搜集測試過程中的動(dòng)態(tài)廣播文件,將動(dòng)態(tài)廣播文件處理成便于展示的靜態(tài)文件,存放到本地,測試完成后生成報(bào)告上傳至WEB服務(wù)器,WEB服務(wù)器生成基礎(chǔ)性能報(bào)告及崩潰信息;

顯示單元用于:顯示基礎(chǔ)性能報(bào)告的信息,基礎(chǔ)性能報(bào)告中的圖表用結(jié)點(diǎn)記錄執(zhí)行的事件。

本領(lǐng)域的技術(shù)人員可以對本發(fā)明實(shí)施例進(jìn)行各種修改和變型,倘若這些修改和變型在本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則這些修改和變型也在本發(fā)明的保護(hù)范圍之內(nèi)。

說明書中未詳細(xì)描述的內(nèi)容為本領(lǐng)域技術(shù)人員公知的現(xiàn)有技術(shù)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1