新四季網

一種對被測應用程式進行功能遍歷的測試方法

2023-06-03 04:41:06 3

一種對被測應用程式進行功能遍歷的測試方法
【專利摘要】本發明的一種對被測應用程式進行功能遍歷的測試方法,包括以下步驟:S1:測試客戶端與被測設備端建立連接關係;S2:所述測試客戶端啟動所述被測設備端的被測應用程式;S3:所述測試客戶端在執行過程中不斷地獲取所述被測設備端的所有界面上的所有控制項元素的位置信息,並將獲取的所有所述控制項元素存儲到相應的控制項元素隊列中;S4:逐個對所述控制項元素隊列中位於隊首的控制項元素進行點擊出列操作,直到所述控制項元素隊列中的所有所述控制項元素都被點擊出列;S5:所述客戶端啟動所述手機端的新被測應用程式,跳轉到步驟S3。該測試方法不要求對被測應用程式進行預處理操作,可以對無法獲取apk文件的被測應用程式進行功能遍歷。
【專利說明】一種對被測應用程式進行功能遍歷的測試方法

【技術領域】
[0001] 本發明涉及一種對被測應用程式進行功能遍歷的測試方法,屬於測試【技術領域】。

【背景技術】
[0002] 測試工具Instrumentation是安卓系統的核心測試框架,在這個核心測試框架 下,測試應用程式可以精確控制被測應用程式。Instrumentation核心測試框架通過將測 試應用程式和主程序運行在同一個進程來實現對被測應用程式的控制,例如,使用測試工 具Instrumentation,可以在主程序啟動之前,倉ij建模擬的系統對象,如Context ;控制應用 程序的多個生命周期;發送UI事件給應用程式;在執行期間檢查程序狀態。
[0003] 使用測試工具instrumentation對被測應用程式進行測試時要求測試應用程式 和被測應用程式的籤名保持一致,由於應用開發商通常不提供自己應用程式的籤名文件等 信息,所以一般的方法是將被測應用程式的apk文件(安裝文件)進行解壓縮,將apk文件 中的籤名文件替換成與測試應用程式相同的籤名文件後重新打包,經過這樣預處理之後就 可以通過測試應用程式來對被測應用程式進行控制。
[0004] 現有的功能遍歷技術是基於安卓系統提供的測試工具Instrumentation進行籤 名測試來實現,主要步驟是在獲取到被測應用程式的apk文件(Android Package,安卓安裝 包)之後,使用上述的步驟對被測應用程式進行預處理,將被測應用程式的籤名文件替換 成與測試客戶端的測試應用程式相同的籤名文件並重新打包,使測試應用程式獲取對被測 應用程式進行操作的權限。
[0005] 因此,如果使用測試工具instrumentation基於籤名測試的對被測應用程式進行 功能遍歷的測試,需要首先對被測應用程式進行預處理獲取到被測應用程式的apk文件, 對apk文件進行上述替換籤名文件的預處理後才能進行測試。這種測試方法能夠直接通 過安卓系統提供的API接口(Application Programming Interface,應用程式編程接口) 直接獲取界面的信息並進行功能遍歷,省去了對原始界面信息進行分析的操作,但是,一方 面,該方法要求每次功能遍歷的測試需要獲取被測應用程式的apk文件,只能測試能獲取 到apk文件的被測應用程式,對於無法獲取apk文件的被測應用程式,例如從PC端對手機 端執行adb install命令將應用程式安裝在手機中,通過這種方式安裝到手機中的應用程 序不能在手機中獲得apk文件,則無法進行功能遍歷測試。


【發明內容】

[0006] 本發明所要解決的技術問題是現有的功能遍歷技術對於無法獲取apk文件的被 測應用程式無法進行功能遍歷測試的問題,從而提供一種對被測應用程式進行功能遍歷的 測試方法。
[0007] 為解決上述技術問題,本發明是通過以下技術方案實現的: 一種對被測應用程式進行功能遍歷的測試方法,包括以下步驟: S1 :測試客戶端與被測設備端建立連接關係; 52 :所述測試客戶端啟動所述被測設備端的被測應用程式; 53 :所述測試客戶端在執行過程中不斷地獲取所述被測設備端的所有界面上的所有控 件元素的位置信息,並將獲取的所有所述控制項元素存儲到相應的控制項元素隊列中; 54 :逐個對所述控制項元素隊列中位於隊首的控制項元素進行點擊出列操作,直到所述控 件元素隊列中的所有所述控制項元素都被點擊出列; 55 :所述客戶端啟動所述手機端的新被測應用程式,跳轉到步驟S3。
[0008] 所述的測試方法,所述步驟S3中,將所述被測設備端的每一個所述界面存儲到界 面隊列中,將每個所述界面中的所有控制項元素存儲到每個所述界面對應的界面控制項元素隊 列中。
[0009] 所述的測試方法,所述步驟S4中,進一步包括: 541 :查找所述界面隊列中位於隊首的界面; 542 :逐個對所述界面隊列中位於隊首的界面對應的所述界面控制項元素隊列的位於隊 首的控制項元素進行點擊出列操作,直到所述界面控制項元素隊列中的所有所述控制項元素都被 點擊出列,所述界面控制項元素隊列中的所有所述控制項元素都被點擊出列後,所述界面隊列 中位於隊首的所述界面出列; S43:所述客戶端結束掉前功能遍歷的操作路徑並關閉所述被測應用程式進程。
[0010] 所述的測試方法,還進一步包括在遍歷被測應用程式時輸出每一步操作結果的步 驟。
[0011] 所述的測試方法,被測設備端為安卓智慧型手機。
[0012] 所述的測試方法,所述步驟S1進一步包括如下步驟: 511 :啟動手機端的viewserver ; 512 :pc端與所述手機端的viewserver建立socket連接。
[0013] 所述的測試方法,所述步驟S3中, 531 :所述pc端通過所述socket連接向所述手機端的viewserver發送dump命令; 532 :所述手機端以類似json的格式將所述手機界面信息以字符流的形式發送給所述 pc端; S33:所述pc端對獲取的以字符流的形式存在的所述手機界面信息進行解析,得到所 述手機端的所述手機界面信息,所述手機界面信息包括所述控制項元素的位置信息。
[0014] 所述的測試方法,所述PC端使用monkey對所述當前手機界面的所述控制項元素進 行觸發操作。
[0015] 本發明的上述技術方案相比現有技術具有以下優點: (1)本發明的一種對被測應用程式進行功能遍歷的測試方法,包括以下步驟:S1 :測試 客戶端與被測設備端建立連接關係;S2 :所述測試客戶端啟動所述被測設備端的被測應用 程序;S3 :所述測試客戶端在執行過程中不斷地獲取所述被測設備端的所有界面上的所有 控制項元素的位置信息,並將獲取的所有所述控制項元素存儲到相應的控制項元素隊列中;S4 : 逐個對所述控制項元素隊列中位於隊首的控制項元素進行點擊出列操作,直到所述控制項元素隊 列中的所有所述控制項元素都被點擊出列;S5 :所述客戶端啟動所述手機端的新被測應用程 序,跳轉到步驟S3。該測試方法不要求對被測應用程式進行預處理操作,可以對無法獲取 apk文件的被測應用程式進行功能遍歷;由於不用對被測應用程式進行任何預處理操作, 最大限度地保證了不會對被測應用程式產生影響。
[0016] (2)本發明所述的對被測應用程式進行功能遍歷的測試方法,所述步驟S3中將所 述被測設備端的每一個所述界面存儲到界面隊列中,將每個所述界面中的所有控制項元素存 儲到每個所述界面對應的界面控制項元素隊列中;每個界面中的所有控制項元素構成界面控制項 元素隊列,對被測應用程式採用分界面、分隊列的方法,對不需要點擊操作的控制項元素不進 行點擊操作,加快遍歷速度。
[0017] (3)本發明所述的對被測應用程式進行功能遍歷的測試方法,在所述被測應用程 序進行功能遍歷時輸出每一步遍歷操作,使測試人員可以通過查看輸出結果檢查對被測應 用程序的所有遍歷操作並可以發現被測應用程式的漏洞進行後續處理。

【專利附圖】

【附圖說明】
[0018] 為了使本發明的內容更容易被清楚的理解,下面結合附圖,對本發明作進一步詳 細的說明,其中, 圖1是本發明所述一種對被測應用程式進行功能遍歷的測試方法一個實施例的流程 圖; 圖2是本發明所述一種對被測應用程式進行功能遍歷的測試方法的另一個實施例的 流程圖。

【具體實施方式】
[0019] 實施例1 : 本發明所述的一種對被測應用程式進行功能遍歷的測試方法,如圖1所示,其包括以 下步驟: 51 :測試客戶端與被測設備端建立連接關係; 52 :所述測試客戶端啟動所述被測設備端的被測應用程式; S3:所述測試客戶端在執行過程中不斷地獲取所述被測設備端的所有界面上的所有控 件元素的位置信息,並將獲取的所有所述控制項元素存儲到控制項元素隊列中; S4:逐個對所述控制項元素隊列中位於隊首的控制項元素進行點擊出列操作,直到所述控 件元素隊列中的所有所述控制項元素都被點擊出列; S5 :所述客戶端啟動所述手機端的新被測應用程式,跳轉到步驟S3。
[0020] 本實施例中,將所有界面上的控制項元素統一存儲在一個控制項元素隊列中,對所述 控制項元素隊列中位於隊首的控制項元素進行點擊操作,位於隊首的所述控制項元素在點擊操作 後出列,然後對下一個所述控制項元素隊列中位於隊首的控制項元素進行點擊操作,下一個位 於隊首的所述控制項元素在點擊操作後出列,如此繼續點擊所述控制項元素隊列中位於隊首的 控制項元素,直到所述控制項元素隊列中的所有所述控制項元素都被點擊出列,完成對一個被測 應用程式的功能遍歷。這種測試方法不要求對被測應用程式進行預處理操作,可以對無法 獲取apk文件的被測應用程式進行功能遍歷。
[0021] 作為其他實施方式,所述步驟S3中,將所述被測設備端的每一個所述界面存儲到 界面隊列中,將每個所述界面中的所有控制項元素存儲到每個所述界面對應的界面控制項元素 隊列中;所述步驟S4中,進一步包括 : 541 :查找所述界面隊列中位於隊首的界面; 542 :逐個對所述界面隊列中位於隊首的界面對應的所述界面控制項元素隊列的位於隊 首的控制項元素進行點擊出列操作,直到所述界面控制項元素隊列中的所有所述控制項元素都被 點擊出列,所述界面控制項元素隊列中的所有所述控制項元素都被點擊出列後,所述界面隊列 中位於隊首的所述界面出列; 543 :所述客戶端結束掉前功能遍歷的操作路徑並關閉所述被測應用程式進程。
[0022] 這種測試方法將每個界面存儲到所述界面隊列中,將每個所述界面中的所有控制項 元素存儲到每個所述界面對應的界面控制項元素隊列中,對被測應用程式分界面進行控制項點 擊:查找所述界面隊列中位於隊首的界面和所述界面隊列中位於隊首的界面對應的所述界 面控制項元素隊列,對所述界面隊列中位於隊首的界面對應的所述界面控制項元素隊列中的所 有控制項元素逐個進行點擊出列操作,所述界面隊列中位於隊首的界面對應的所述界面控制項 元素隊列中的所有所述控制項元素都被點擊出列後,所述界面隊列中位於隊首的所述界面出 列,對下一個位於隊首的所述界面對應的所述界面控制項元素隊列進行上述操作,直至所述 界面隊列中的所有界面都出列,所述客戶端結束掉前功能遍歷的操作路徑並關閉所述被測 應用程式進程。
[0023] 在實際測試過程中,被測應用程式會出現下述異常情況: (1)、查找所述界面隊列中位於隊首的界面a,界面a對應的界面控制項元素隊列中位於 隊首的控制項元素點擊後出列,本應該繼續點擊界面a對應的界面控制項元素隊列中下一個位 於隊首的控制項元素,但所述被測應用程式出現異常導致跳轉失敗,結果從界面a跳轉到界 面b,導致對界面b對應的界面控制項元素隊列中位於隊首的控制項元素進行點擊操作。
[0024] (2)、在點擊所述控制項元素時檢測到異常,這時,會結束被測應用進程,啟動下一個 被測應用程式,對下一個被測應用程式進行功能遍歷。
[0025] 參見圖2所示,啟動被測應用程式,由於該應用在功能遍歷過程中會由於異常退 出,所以先查看所述被測應用程式是否為第一次進入該被測應用程式,如果是第一次進入 該被測應用程式,獲取當前界面控制項元素並將所述當前界面控制項元素的編號存儲到當前界 面控制項元素隊列中,從所述當前界面控制項元素隊列取出隊首元素,點擊隊首元素對應的控 件元素,該隊首元素對應的控制項元素在點擊後出列,如果沒有異常,重新跳轉到當前界面, 對下一個隊首元素對應的控制項元素進行點擊;但跳轉後的界面會由於跳轉失敗導致跳轉不 到當前界面,所以,判斷跳轉後的當前界面是否訪問過,如果跳轉後的界面沒有訪問過,重 新獲取新的當前界面控制項元素並將新的所述當前界面控制項元素的編號存儲到新的當前界 面控制項元素隊列中,執行上述操作。如果有異常,會結束被測應用進程,啟動下一個被測應 用程序,對下一個被測應用程式進行功能遍歷。
[0026] 如果進入下一個被測應用程式後,發現下一個被測應用程式不是第一次進入應 用,尋找界面隊列的隊首元素,判斷隊首元素對應的界面是否訪問過,如果該界面沒有訪問 過,獲取隊首元素對應的界面的控制項元素並將隊首元素對應的界面的所有控制項元素的編號 存儲到隊首元素對應的界面的界面控制項元素隊列中,執行上述操作。
[0027] 本實施例中,被測設備端為安卓智慧型手機,對所述安卓智慧型手機的應用程式進行 功能遍歷的測試方法,ViewServer是Android智慧型手機通過4939埠提供的服務,測試 客戶端啟動Android客戶端的viewserver,通過命令adb shell service call window對所 述Android客戶端的viewserver進行開啟和關閉;在啟動Android客戶端的ViewServer 服務之後,測試客戶端與所述Android客戶端的ViewServer建立socket連接;在建 立起 socket 連接之後,通過命令 adb shell am start-n breakan. test/breakan. test. TestActivityidong啟動被測應用程式,在測試客戶端通過所述socket (通常也稱作"套接 字",用於描述IP位址和埠,是一個通信鏈的句柄)連接向Android客戶端發送dump命 令(將具備可讀格式的數據從一個儲存體複製到外部),Android客戶端會以類似json的 格式將當前界面信息以字符流的形式返回給pc端,然後測試客戶端對獲取的界面信息進 行解析,獲取要進行操作的界面元素的位置信息,使用monkey (monkey是安卓平臺自動化 測試的一種手段,通過monkey模擬的操作來對設備上的程序進行壓力測試,檢測程序多久 的時間會發生異常)點擊界面控制項元素隊列中位於隊首的控制項元素的位置達到操作手機 的目的。在通過monkey點擊完界面上的一個控制項元素之後,測試客戶端會通過SPFA算法再 次向viewserver請求當前界面的信息,判斷是否到達了新界面後,獲取下一個要點擊的控 件元素的位置信息並通過monkey進行點擊,如此反覆操作直到遍歷到當前界面的所有控 件元素都被點擊過,測試客戶端會結束掉當前功能遍歷的操作路徑並結束被測應用程式進 程。然後測試客戶端會重新啟動被測應用並且沿著之前沒有操作過的遍歷路徑進行遍歷, 直到測試客戶端發現被測應用程式沒有需要被遍歷的路徑,結束本被測應用程式的功能遍 歷。
[0028] 作為其他實施方式,測試客戶端可以通過其他算法再次向viewserver請求當前 界面的信息,例如弗洛伊德算法。
[0029] 實施例2 : 在上述實施例1的基礎上,所述測試方法還進一步包括在所述被測應用程式進行功能 遍歷時輸出每一步遍歷操作的步驟。 本實施例中,該測試方法會在遍歷被測應用程式的同時對每一步遍歷操作進行截圖並 在遍歷操作的所述控制項元素上用方框標識,然後在遍歷操作結束生成的報告中用視頻短片 的形式播放該遍歷操作的所有截圖,使測試人員可以通過觀看視頻的形式檢查對應用的所 有遍歷操作並發現被測應用的漏洞,進一步進行後續處理。 顯然,上述實施例僅僅是為清楚地說明所作的舉例,而並非對實施方式的限定。對於 所屬領域的普通技術人員來說,在上述說明的基礎上還可以做出其它不同形式的變化或變 動。這裡無需也無法對所有的實施方式予以窮舉。而由此所引伸出的顯而易見的變化或變 動仍處於本發明創造的保護範圍之中。
【權利要求】
1. 一種對被測應用程式進行功能遍歷的測試方法,其特徵在於,包括以下步驟: 51 :測試客戶端與被測設備端建立連接關係; 52 :所述測試客戶端啟動所述被測設備端的被測應用程式; 53 :所述測試客戶端在執行過程中不斷地獲取所述被測設備端的所有界面上的所有控 件元素的位置信息,並將獲取的所有所述控制項元素存儲到相應的控制項元素隊列中; 54 :逐個對所述控制項元素隊列中位於隊首的控制項元素進行點擊出列操作,直到所述控 件元素隊列中的所有所述控制項元素都被點擊出列; 55 :所述客戶端啟動所述手機端的新被測應用程式,跳轉到步驟S3。
2. 根據權利要求1所述的測試方法,其特徵在於,所述步驟S3中,將所述被測設備端的 每一個所述界面存儲到界面隊列中,將每個所述界面中的所有控制項元素存儲到每個所述界 面對應的界面控制項元素隊列中。
3. 根據權利要求2所述的測試方法,其特徵在於,所述步驟S4中,進一步包括: 541 :查找所述界面隊列中位於隊首的界面; 542 :逐個對所述界面隊列中位於隊首的界面對應的所述界面控制項元素隊列的位於隊 首的控制項元素進行點擊出列操作,直到所述界面控制項元素隊列中的所有所述控制項元素都被 點擊出列,所述界面控制項元素隊列中的所有所述控制項元素都被點擊出列後,所述界面隊列 中位於隊首的所述界面出列; 543 :所述客戶端結束掉前功能遍歷的操作路徑並關閉所述被測應用程式進程。
4. 根據權利要求1-3任一所述的測試方法,其特徵在於,還進一步包括在遍歷被測應 用程序時輸出每一步操作結果的步驟。
5. 根據權利要求1-4任一所述的測試方法,其特徵在於,被測設備端為安卓智慧型手機。
6. 根據權利要求3-5任一所述的測試方法,其特徵在於,所述步驟S1進一步包括如下 步驟: 511 :啟動手機端的viewserver ; 512 :pc端與所述手機端的viewserver建立socket連接。
7. 根據權利要求6所述的測試方法,其特徵在於,所述步驟S3中, 531 :所述pc端通過所述socket連接向所述手機端的viewserver發送dump命令; 532 :所述手機端以類似json的格式將所述手機界面信息以字符流的形式發送給所述 pc端; S33:所述pc端對獲取的以字符流的形式存在的所述手機界面信息進行解析,得到所 述手機端的所述手機界面信息,所述手機界面信息包括所述控制項元素的位置信息。
8. 根據權利要求3-7任一所述的測試方法,其特徵在於,所述pc端使用monkey對所述 當前手機界面的所述控制項元素進行觸發操作。
【文檔編號】G06F11/36GK104216828SQ201410242761
【公開日】2014年12月17日 申請日期:2014年6月3日 優先權日:2013年6月3日
【發明者】劉偉, 趙頌東 申請人:劉偉, 趙頌東

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀