本發明涉及軟件技術領域,特別是涉及一種APP測試方法和一種APP測試裝置。
背景技術:
APP(Application,應用程序)是指智能手機的第三方應用程序,是目前被人們廣泛使用的一種工具。
在一款APP的使用過程中,該APP的開發商需要不斷對APP的各UI界面進行測試,以測試系統的穩定性。目前常用測試方法是monkey測試,monkey(monkey是Android中的一個命令行工具,可以運行在模擬器里或實際設備中)測試是Android系統自帶的一種命令行測試工具,可以運行在模擬器里或實際設備中,monkey測試的原理是:利用socket(套接字)通訊的方式模擬用戶觸摸屏幕、滑動Trackball、按鍵等操作對APP程序進行穩定性的測試,向系統發送偽隨機的事件流、數據流,實現對正在開發的應用程序進行測試。
但是,由于monkey測試時使用的事件流、數據流是完全隨機的,不受人工控制的,例如,monkey程序在模擬用戶操作對多個頁面點擊測試的過程中,其中,各頁面含有多個UI(User Interface,用戶界面)界面元素,如果對于某個頁面,只需要測試其中的一個UI界面元素時,而由于monkey在對該頁面的點擊過程總是完全隨機的,可能需要很多次點擊操作才能點擊到上述UI界面元素從而獲取到測試數據,或者根本獲取相應UI界面元素的測試數據。因此在先技術中,無效點擊次數多,并且可能漏測關鍵的UI界面元素,測試效率低。
技術實現要素:
鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的APP測試方法和相應的APP測試裝置。
依據本發明的一個方面,提供了一種APP測試方法,包括:
針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略;
在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素;
從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試;
將各Activity的各UI界面元素的測試結果輸出。
優選地,在所述針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略的步驟之前,還包括:
獲取待測試應用的各個Activity的view布局結構所對應的結構樹;
接收對結構樹的各個節點所配置的測試策略;
根據所述對結構樹的各個節點所配置的測試策略,生成針對所述應用的測試模板配置信息。
可選地,所述獲取待測試應用的各個Activity的view布局結構所對應的結構樹的步驟包括:
通過調用Hierarchy Viewer工具的各布局結構獲取API,獲取待測試應用的各個Activity的view布局結構所對應的結構樹。
可選地,所述從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試的步驟包括:
將當前激活的Activity中的UI界面元素,與測試模板配置信息中的各Activity中的UI界面元素進行匹配,確定允許觸發的UI界面元素;
對各UI界面元素,按照相應的測試策略觸發所述UI界面元素進行測試。
可選地,所述對所述應用的各個Activity的各UI界面元素的測試策略包括:
各Activity中允許觸發的UI界面元素、各UI界面元素的觸發位置、各 UI界面元素的觸發操作類型、各UI界面元素的觸發順序。
可選地,所述對各UI界面元素,按照相應的測試策略觸發所述UI界面元素進行測試的步驟包括:
對于存在觸發順序的UI界面元素,按照所述觸發順序觸發所述UI界面元素進行測試;
對于相互之間不存在觸發順序的UI界面元素,隨機觸發各UI界面元素進行測試。
可選地,所述對所述應用的各個Activity的各UI界面元素的測試策略,還包括:
對各Activity的觸發比例,和/或對各UI界面元素的觸發次數。
可選地,所述對各UI界面元素,按照相應的測試策略觸發所述UI界面元素進行測試的步驟,還包括:
記錄所述UI界面元素所在的Activity的被觸發數量;和/或記錄所述UI界面元素被觸發的數量。
根據本發明的另一個方面,還提供了一種APP測試裝置,包括:
測試模板配置信息加載模塊,適于針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略;
UI界面元素獲取模塊,適于在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素;
測試模塊,適于從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試;
輸出模塊,適于將各Activity的各UI界面元素的測試結果輸出。
優選地,在所述測試模板配置信息加載模塊之前,還包括:
結構樹獲取模塊,適于獲取待測試應用的各個Activity的view布局結構所對應的結構樹;
測試策略接收模塊,適于接收對結構樹的各個節點所配置的測試策略;
測試模板配置信息生成模塊,適于根據所述對結構樹的各個節點所配置的測試策略,生成針對所述應用的測試模板配置信息。
優選地,所述結構樹獲取模塊包括:
結構樹獲取子模塊,適于通過調用Hierarchy Viewer工具的各布局結構獲取API,獲取待測試應用的各個Activity的view布局結構所對應的結構樹。
優選地,所述測試模塊包括:
UI界面元素觸發確定子模塊,適于將當前激活的Activity中的UI界面元素,與測試模板配置信息中的各Activity中的UI界面元素進行匹配,確定允許觸發的UI界面元素;
UI界面元素測試子模塊,適于對各UI界面元素,按照相應的測試策略觸發所述UI界面元素進行測試。
優選地,所述對所述應用的各個Activity的各UI界面元素的測試策略包括:
各Activity中允許觸發的UI界面元素、各UI界面元素的觸發位置、各UI界面元素的觸發操作類型、各UI界面元素的觸發順序。
優選地,所述UI界面元素測試子模塊包括:
UI界面元素順序測試子模塊,適于對于存在觸發順序的UI界面元素,按照所述觸發順序觸發所述UI界面元素進行測試;
UI界面元素隨機測試子模塊,適于對于相互之間不存在觸發順序的UI界面元素,隨機觸發各UI界面元素進行測試。
優選地,所述對所述應用的各個Activity的各UI界面元素的測試策略,還包括:
對各Activity的觸發比例,和/或對各UI界面元素的觸發次數。
優選地,所述UI界面元素測試子模塊還包括:
界面元素觸發數量記錄子模塊,適于記錄所述UI界面元素所在的Activity的被觸發數量;和/或記錄所述UI界面元素被觸發的數量。
根據本發明的另一個方面,還提供了一種APP測試設備,包括:
存儲器,加載有多條可執行指令;
處理器,執行所述多條可執行指令;所述多條指令包括執行以下步驟的方法:
針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略;
在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素;
從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試;
將各Activity的各UI界面元素的測試結果輸出。
本發明實施例可以對待測試的應用加載相應的測試模版配置信息,該測試模版配置信息中包括了對該應用的各個Activity的各UI界面元素的測試策略,并在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素,提取測試模版配置信息中對當前Activity中UI界面元素的測試策略,并依據各UI界面元素的測試邏輯對各UI界面元素進行測試。解決了在先技術中,無效點擊次數多,并且可能漏測關鍵的UI界面元素,測試效率低的問題,取得了可以精確的控制對哪些UI界面元素進行點擊,降低無效點擊次數,提高了UI界面的測試效率的效果。
上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠更明顯易懂,以下特舉本發明的具體實施方式。
附圖說明
通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1是本發明實施例提供的一種APP測試方法的步驟流程圖;
圖2是本發明實施例提供的一種APP測試方法的步驟流程圖;
圖3是本發明實施例提供的一種APP測試方法的步驟流程圖;
圖4是本發明實施例提供的一種APP測試裝置的結構框圖;
圖5是本發明實施例提供的一種APP測試裝置的結構框圖;
圖6是本發明實施例提供的一種APP測試裝置的結構框圖;及
圖7是本發明實施例提供的一種APP測試設備的結構框圖。
具體實施方式
下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。
實施例一
參照圖1,示出了根據本發明一個實施例的一種APP測試方法實施例的步驟流程圖,具體可以包括如下步驟:
步驟S110:針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略。
本發明實施例可以應用于針對各種類型APP的UI界面元素被點擊時的穩定性進行測試。針對APP的測試是基于UI層面的自動化測試,也即基于APP顯示界面的控件層面,主要是通過獲取當前顯示窗口的視圖信息,然后在當前視圖內查找目標控件,并根據控件屬性信息來實現對應用的自動化測試。Instrumentation是目前常用的測試方法,其是通過將測試APK(Android Package,應用程序包文件)和被測APK運行在同一進程中,通過Java的反射機制,來獲取當前窗口中的所有視圖,并根據視圖信息查找到目標控件的屬性信息,并計算出目標控件中心點坐標,然后利用Instrumentation內部API(Application Programming Interface,應用程序編程接口),實現對目標控件的點擊操作,并由此產生一個輸入事件。Instrumentation測試方法常見的應用模式可以包括:Hierachyview+monkey、uiautomator等等。
在應用程序中,Activity是一個應用程序組件,提供一個屏幕,用戶可以用來交互為了完成某項任務。Activity可以用于處理應用程序的整體性工作,為用戶顯示指定的頁面。在各Activity都有相應的UI(User Interface)界面,UI界面即向用戶所能看到的APP顯示頁面。本發明實施例中的UI界面元素是指UI界面中相應的控件(如點擊按鈕)。
針對待測試的APP應用程序,可以預先針對該APP應用程序預先設置對應的測試模版配置信息,該測試模版配置信息可以包括對該應用的各個Activity中的各UI界面的測試策略,該測試策略如,針對各Activity,設定允許觸發的UI界面元素,設定UI界面元素的觸發位置,設定對UI界面元素的觸發操作類型、設定不同Activity的UI界面元素之間的測試順序等等,對于測試模版配置信息中包含的對待測試應用的各個Activity的各UI界面的測試策略示例將在實施例三中進行詳細說明。
在實際應用中,本發明實施例可設置一個測試策略配置窗口,該測試策略窗口中可以展示各Activity、該Activity中的UI界面元素的信息,Activity以及UI界面元素之間的層級關系。
在實際應用中,本領域技術人員可以根據實際需要自行設置針對待測試應用的各個Activity的各UI界面元素的測試策略,本發明對此不加以限制。
在配置了對于一個APP的測試模板配置信息之后,本發明實施例在對APP的UI界面元素測試之前,先加載相應的測試模板配置信息。
步驟S120:在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素。
本發明實施例中,在啟動的待測試應用后,激活APP的主頁面的Activity,那么可以獲取該Activity中的UI界面元素,按照測試模板配置信息包括的該Activity的各UI界面元素的測試策略,對相應的UI界面元素進行測試。當點擊了某個UI界面元素,進入到其他頁面,則激活相應頁面的Activity,然后可以獲取該Activity中的UI界面元素,測試模板配置信息包括的該Activity的各UI界面元素的測試策略,對相應的UI界面元素進行測試。
步驟S130:從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試。
本發明實施例中,各UI界面元素的測試邏輯可以是針對UI界面元素預先設置相應的點擊次數,例如,針對某UI界面元素M設置觸發次數為10次,在對APP進行一次測試的整個過程中,當對該UI界面元素M的觸發次數達到10次時,則對APP的當前UI界面元素M不再執行觸發操作。各UI界面元素的測試邏輯也可以是針對UI界面元素預先設置針對APP的UI界面中不同元素的觸發順序,例如,針對某UI界面元素M,首先對該UI界面元素M執行觸發操作,然后針對點擊該UI界面元素M對應的第二層次UI界面中的界面元素再設置相應的觸發順序,進而根據該觸發順序對該第二層次UI界面中的UI界面元素執行相應地觸發操作等等。
在實際應用中,本領域技術人員可以根據實際需要自行設置針對各UI界面元素的測試邏輯,本發明對此不加以限制。
步驟S140:將各Activity的各UI界面元素的測試結果輸出。
本發明實施例中,在對待測試應用的激活的Activity中的UI界面元素測試依據測試策略測試完成之后,對于測試過程中各UI界面元素的觸發次數以及相應的測試信息在各對應的Activity中都有相應地信息記錄,將各Activity中針對各UI界面元素的測試信息進行分析,并依據分析結果查找該APP所對應的系統的穩定性是否存在問題。
在本發明實施例中,如果對于APP啟動后,對某個UI界面元素測試時,APP崩潰,則重啟該APP,繼續按照測試模板配置信息進行測試。
本發明實施例通過對待測試的應用加載相應的測試模版配置信息,該測試模版配置信息中包括了對該應用的各個Activity的各UI界面元素的測試策略,并在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素,提取測試模版配置信息中對當前Activity中UI界面元素的測試策略,并依據各UI界面元素的測試邏輯對各UI界面元素進行測試。解決了在先技術中,無效點擊次數多,并且可能漏測關鍵的UI界面元素,測試效率低的問題, 可以精確的控制對哪些UI界面元素進行點擊,降低無效點擊次數,提高了UI界面的測試效率。
實施例二
參照圖2,示出了根據本發明一個實施例的一種APP測試方法實施例的步驟流程圖,具體可以包括如下步驟:
步驟S210:獲取待測試應用的各個Activity的view布局結構所對應的結構樹。
在本發明實施例中,可以為用戶提供一個測試模板配置信息的配置界面,然后獲取待測試應用的各個Activity的view布局結構所對應的結構樹展示在該配置界面中,那么用即可在該配置界面中,基于結構樹對各個節點進行配置。
本發明實施例中,view即各Activity中對應的顯示界面,每個Activity都有對應的view,Activity用于控制view中的事件響應,例如,針對頁面控件的點擊事件等等可以在Activity中實現,將控件顯示給用戶,則用view實現。也即view是具體的顯示頁面布局,各個應用中的Activity的布局結構是由相應的結構樹(view tree)構成的。以360手機助手APP為例,在其啟動后,激活的Activity渲染的view中,包含有控件“推薦”、“游戲”、“軟件”等控件,這些控件即為本發明實施例的UI界面元素。
而在當前view結構的控件下對應有相應的子view,則當前顯示頁面為父view。例如,觸發控件“軟件”時,激活下一級Activity,該Activity渲染的顯示界面即為子view,在該子view中也可以有相應的控件,如“特權福利”、“首發”、等控件。相應地,在觸發該子view的控件后,則激活再下一級Activity,該Activity渲染的頁面為該子view的子view,以此類推。從而,各個Activity即是按照這種view結構樹構成了view布局結構所對應的結構樹。
優選地,所述步驟S210可以包括:
子步驟S2102:通過調用Hierarchy Viewer工具的各布局結構獲取API, 獲取待測試應用的各個Activity的view布局結構所對應的結構樹。
本發明實施例中,Hierarchy Viewer是一種可視化的布局優化工具,可以用于調試和調整顯示界面。在APP啟動之后,可以從android SDK工具包中,通過命令行的方式啟動Hierarchy Viewer。具體的,可以在android SDK工具包下的tools目錄下,在命令行方式下運行Hierarchy Viewer,進而可以通過Load View Hierarchy查看界面的控件層次。其中,該Load View Hierarchy即為一個布局結構獲取API。在主窗口中,點擊每一個控件時,將可以看到關于這個控件的詳細信息,相應的,在該空間的上方彈出一個窗口,該窗口中除了可以顯示該控件的實際效果圖外,還可以顯示該控件的屬性信息,及與該控件對應的子控件的數目等,相應地,本領域技術人員可以根據實際需要將所需的與控件關聯的信息在窗口中進行展現,本發明對此不加以限制。
因此,通過Hierarchy Viewer工具,調用相應布局結構獲取API,可以獲取到APP的各個Activity的view布局結構所對應的結構樹。在本發明實施例中,將Hierarchy Viewer的調整顯示界面進行了改進,增加了對結構樹進行配置的輸入框、按鈕等功能。
步驟S220:接收對結構樹的各個節點所配置的測試策略。
本發明實施例中,在展示前述結構樹的界面中,結構樹的各個節點包括了UI界面元素,Activity等。可以為用戶提供測試策略配置工具,用戶可以通過測試策略配置工具對每個Activity的UI界面元素的測試策略進行配置。比如勾選哪些UI界面元素允許被測試,各個UI界面元素的測試次數或者測試比例,各個Activity中UI界面元素的測試總比例、各層級的UI界面元素的測試順序等。
步驟S230:根據所述對結構樹的各個節點所配置的測試策略,生成針對所述應用的測試模板配置信息。
在用戶配置完畢后,點擊配置界面中的保存按鈕,則可以基于步驟S220的配置生成針對該APP的測試模板配置信息,該測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略。
步驟S240:針對待測試的應用,加載相應的測試模板配置信息。
步驟S250:在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素。
步驟S260:從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試。
步驟S270:將各Activity的各UI界面元素的測試結果輸出。
本發明實施例中,在啟動待測試應用之后,可以根據待測試應用中當前激活的Activity中的UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對UI界面元素進行相應地測試,并返回各Activity中的各UI界面元素的測試結果。
本發明實施例通過獲取待測試應用的各個Activity的view布局結構對應的結構樹,為結構樹的各個節點配置對應的測試策略,并通過對待測試的應用加載相應的測試模版配置信息,該測試模版配置信息中包括了對該應用的各個Activity的各UI界面元素的測試策略,并在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素,提取測試模版配置信息中對當前Activity中UI界面元素的測試策略,并依據各UI界面元素的測試邏輯對各UI界面元素進行測試。解決了在先技術中,無效點擊次數多,并且可能漏測關鍵的UI界面元素,測試效率低的問題,可以精確的控制對哪些UI界面元素進行點擊,降低無效點擊次數,提高了UI界面的測試效率。并且,可以給用戶提供配置界面,讓用戶能夠可視化的基于Activity的view布局結構所對應的結構樹,對應用的各個Activity的各UI界面元素配置測試策略,操作方便。
實施例三
參照圖3,示出了根據本發明一個實施例的一種APP測試方法實施例的步驟流程圖,具體可以包括如下步驟:
步驟S310:針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試 策略。
步驟S320:在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素。
本發明實施例中,針對待測試的應用加載相應的測試模版配置信息,該測試模版配置信息可以包括對所述應用的各個Activity的各UI界面元素的測試策略,并在待測試應用啟動之后,獲取該應用中當前激活的Activity的UI界面元素,然后進入步驟S330。
在實際應用中,APP啟動后,激活主頁面的Activity,當根據測試模板配置信息對該Activity的某個UI界面元素進行測試時,如果激活了下一層的Activity,則根據測試模板配置信息對該下一層的Activity中的UI界面元素進行測試,以此類推。
步驟S330:將當前激活的Activity中的UI界面元素,與測試模板配置信息中的各Activity中的UI界面元素進行匹配,確定允許觸發的UI界面元素。
本發明實施例中,可以預先對待測試的應用加載相應的測試模版配置信息,該測試模版配置信息中可以包括針對各Activity中具體的UI界面元素,在待測試應用啟動之后,將當前激活的Activity中的UI界面元素與待測試應用中加載的測試模版配置信息中各Activity中的UI界面元素進行匹配,以選擇出匹配上的UI界面元素用于進行觸發操作。例如,對待測試應用加載的測試模版配置信息中針對一個Activity的某UI界面的UI界面元素包含:A、B、C,而該UI界面中的UI界面元素包含A、B、C、D、E、F六個,則從該UI界面元素中只對UI界面元素A、B、C進行觸發操作。當然如果對UI界面元素A、B、C的某個進行觸發操作時,激活了另一個Activity,則繼續匹配該Activity中允許測試的UI界面元素,對匹配上的進行測試。
在本發明實施例中,可以限定觸發操作的點擊區域只在允許測試的UI界面元素的區域之上,因此可以避免觸發不允許測試的UI界面元素。
步驟S340:對各UI界面元素,按照相應的測試策略觸發所述UI界面元素進行測試。
本發明實施例中,在選取與待測試應用的測試模版配置信息中相匹配的UI界面元素之后,根據其它相應的針對各UI界面元素的測試策略對相應的UI界面元素進行測試,具體情況可以包括如下優選實施例的方式。
優選地,所述對所述應用的各個Activity的各UI界面元素的測試策略可以包括:
各Activity中允許觸發的UI界面元素、各UI界面元素的觸發位置、各UI界面元素的觸發操作類型、各UI界面元素的觸發順序。
本發明實施例中,待測試應用的各個Activity的各UI界面元素的測試策略可以包括:各Activity中允許觸發的UI界面元素,例如,某Activity中包含有兩個UI界面,分別為:UI界面1、UI界面2,在UI界面1中允許被觸發的UI界面元素為UI界面元素A和UI界面元素B,在UI界面2中允許被觸發的UI界面元素為UI界面元素C和UI界面元素D等等。
待測試應用的各個Activity的各UI界面元素的測試策略還可以包括:各UI界面元素的觸發位置,各UI界面元素在顯示界面都有相應的位置坐標,通過獲取可以被觸發UI界面元素的在當前界面的中心點坐標,并依據該中心點坐標設置對應的針對UI界面元素的觸發策略,例如,某個可以被觸發的UI界面元素在當前界面的中心點坐標為:(25,25),則設置在觸發到該中心點坐標時,即為觸發該UI界面元素。各UI界面元素的觸發位置,也可以是各UI界面元素在顯示界面相應的區域范圍,則可以通過獲取各區域的對應的頂點坐標,設置各UI界面元素可被觸發的位置,例如,某個UI界面元素可被觸發的UI界面元素在當前界面的可被觸發的區域頂點坐標為:(10,15)(10,20)(20,15)(20,20),則設置在觸發到這些頂點坐標時,即為觸發該UI界面元素等等。
待測試應用的各個Activity的各UI界面元素的測試策略還可以包括:各UI界面元素的觸發操作類型,可以設置可被觸發的UI界面元素的觸發操作為點擊操作,也可以設置可被觸發的UI界面元素的觸發操作為滑動操作等等。待測試應用的各個Activity的各UI界面元素的測試策略還可以包括:各UI界面元素的觸發順序,例如,針對某個UI界面中可被觸發的UI界面 元素A和UI界面元素B,可以設置先對UI界面元素A執行觸發操作,然后再對UI界面元素B執行操作。
相應地,在實際應用中,本領域技術人員可以根據實際需要自行設置針對UI界面元素的測試策略,本發明對此不加以限制。
優選地,所述步驟S340可以包括:
子步驟S3402:對于存在觸發順序的UI界面元素,按照所述觸發順序觸發所述UI界面元素進行測試;
本發明實施例中,針對各UI界面元素設置對應的觸發順序,在觸發該UI界面元素后,激活下一層的Activity,而在該Activity中包含了該層Activity的UI界面元素,相應的,可以對這些UI界面元素設置對應的觸發順序,并按照觸發順序對這些UI界面元素進行測試,其他情況以此類推。例如,Activity1中包含有可被觸發的UI界面元素A和UI界面元素B,觸發UI界面元素A后對應有Activity1下一層的Activity1-1,Activity1-1中包含有UI界面元素C和UI界面元素D,可以設置UI界面元素A和UI界面元素B的觸發順序是先觸發UI界面元素A,而UI界面元素C和UI界面元素D的觸發順序是先觸發UI界面元素C,則在進行測試的過程中,先觸發Activity1中的UI界面元素A,在觸發UI界面元素A之后,則激活Activity 1-1,再對Activity1-1中的UI界面元素C執行觸發操作,然后再對UI界面元素D執行觸發操作,之后,觸發Activity1-1中用于返回的UI界面元素以激活Activity1,對Activity1的UI界面元素B執行相應的觸發操作,然后對UI界面元素B對應的Activity中的UI界面元素按照相應的觸發順序執行對應的觸發操作,以完成對UI界面元素的測試。可以理解的,對于存在觸發順序的UI界面元素,是按照對應的順序執行UI界面元素的測試,在最底層的Activity中的UI界面元素測試完成后,返回,執行倒數第二層Activity中UI界面元素的測試,以此類推,直至對所有UI界面元素的測試完成。
子步驟S3404:對于相互之間不存在觸發順序的UI界面元素,隨機觸發各UI界面元素進行測試。
本發明實施例中,對于不存在觸發順序的各UI界面元素,則可以依據 系統隨機的選擇UI界面元素進行測試。
優選地,所述對所述應用的各個Activity的各UI界面元素的測試策略,還可以包括:
對各Activity的觸發比例,和/或對各UI界面元素的觸發次數。
本發明實施例中,對各Activity的觸發比例是指在預先設置了對應用中的所有的Activity的觸發總數之后,針對各個Activity可以對各Activity觸發的數量所占觸發總數的比例。待測試應用中的各個Activity的各UI界面元素的測試策略可以包括如下三種情況:
第一種情況是:待測試應用中的各個Activity的各UI界面元素的測試策略只包括:對各Activity的觸發比例,例如,待測試應用中有三個Activity,分別是:ActivityM、ActivityN和ActivityP,在一次測試時,對該待測試應用預先設置的觸發次數為100次,可以預先對上述三個Activity分別配置對應的觸發比例,如觸發ActivityM的比例為50%,觸發ActivityN的比例為40%,觸發ActivityP的比例為10%,則在該次的測試過程中,觸發ActivityM中的UI界面元素的次數為50次,觸發ActivityN中的UI界面元素的次數為40次,觸發ActivityP中的UI界面元素的次數為10次。
第二種情況是:待測試應用的各個Activity的各UI界面元素的測試策略只包括:對各UI界面元素的觸發次數,例如,針對某個UI界面中的三個UI界面元素,為UI界面元素A配置10次的最大觸發次數,為UI界面元素B配置20次的最大觸發次數,為UI界面元素C配置35次的最大觸發次數,則在整個測試的過程中,針對UI界面元素測試的整個過程中,對每個UI界面元素的觸發次數可以少于或者等于所配置的最大觸發次數,但不會大于所配置的最大觸發次數。
第三種情況是:待測試應用的各個Activity的各UI界面元素的測試策略同時包括:對各Activity的觸發比例及對各UI界面元素的觸發次數,此種情況下,為所有的Activity配置了觸發總數,并按照觸發總數為各UI界面元素分別配置了對應的觸發次數,在一次測試完成時,對各UI界面元素的觸發次數與預先配置的各UI界面元素的觸發次數相同,例如,待測試應 用中有三個Activity,分別是:ActivityM、ActivityN和ActivityP,ActivityM中包含有UI界面元素A、UI界面元素B,ActivityN中包含有UI界面元素C,ActivityP中包含有UI界面元素D,在一次測試時,對該待測試應用預先設置的觸發次數為100次,可以預先對上述三個Activity分別配置對應的觸發比例,如觸發ActivityM的比例為50%,觸發ActivityN的比例為40%,觸發ActivityP的比例為10%,則在該次的測試過程中,觸發ActivityM中的UI界面元素的次數為50次,觸發ActivityN中的UI界面元素的次數為40次,觸發ActivityP中的UI界面元素的次數為10次,相應的,可以設置UI界面元素A的觸發次數為10次,UI界面元素的觸發次數則為40次,UI界面元素C的觸發次數為40次,UI界面元素D的觸發次數為10次,則在一次測試的整個過程中,對各UI界面元素的觸發次數與預先設置的針對各UI界面元素的觸發次數相同。
優選地,所述步驟S340還可以包括:
子步驟S3406:記錄所述UI界面元素所在的Activity的被觸發數量;和/或記錄所述UI界面元素被觸發的數量。
本發明實施例中,對待測試應用的各UI界面元素的測試過程中,可以針對各UI界面元素所在的Activity的被觸發數量進行記錄,還可以對各UI界面元素被觸發的數量進行記錄,還可以同時對UI界面元素所在的Activity的被觸發數量和各UI界面元素被觸發的數量進行記錄。
在只對各UI界面元素所在的Activity的被觸發數量進行記錄的情況下,在測試完成時,可以根據該記錄中的觸發Activity的信息與預先配置的測試策略進行匹配,當對部分Activity的觸發數量小于預先配置的觸發數量時,則對這些Activity執行再次的測試工作,當對Activity的觸發數量等于預先配置的觸發數量時,則測試工作完成。例如,對ActivityM預先配置了30次的觸發數量,在一次測試完成時,根據記錄中的信息,發現對該ActivityM的觸發數量為20次,則對該ActivityM配置對應的測試策略,即對該ActivityM配置10次的觸發數量,并執行再次的測試。
在只對UI界面元素被觸發的數量進行就的情況下,在測試完成時,可 以根據該記錄中的觸發UI界面元素的信息與預先配置的測試策略進行匹配,當對部分UI界面元素的觸發數量小于預先配置的觸發數量時,則對這些UI元素界面執行再次的測試工作。例如,對UI界面元素A預先配置的觸發數量是10次,在一次測試完成時,根據記錄中的信息,發現對該UI界面元素A的觸發數量為8次,則對該UI界面元素配置2次的觸發數量,并執行再次的測試。
在同時對UI界面元素所在的Activity的被觸發數量和UI界面元素被觸發的數量進行記錄的情況下,在一次測試過程中,只要在記錄的信息中,存在對Activity和UI界面元素的兩個或者其中之一的測試數量少于預先配置的測試策略中設置的觸發數量時,則對這部分的Activity及UI界面元素再分配對應的測試策略,并執行再次的測試。
步驟S350:將各Activity的各UI界面元素的測試結果輸出。
本發明實施例中,依據上述測試策略對各Activity的各UI界面元素的測試完成之后,將各Activity的各UI界面元素的測試結果輸出,并對測試結果進行分析,以確定是否存在系統不穩定的問題。
在一次測試完成之后,還可以針對各Activity及各UI界面元素的被觸發數量與預先配置的測試策略中的針對相應的Activity及UI界面元素的被觸發數量是否相等,如果其中存在部分Activity及部分UI界面元素的被觸發數量少于預先配置的測試策略中的觸發數量時,則挑選出這部分的Activity及UI界面元素,并為這部分的Activity及UI界面元素再重新配置對應的測試策略,進行再次的測試,再次測試的方式與上述實施例中的測試方式相同,本發明實施例在此不加加以贅述。
本發明實施例通過對待測試的應用加載相應的測試模版配置信息,該測試模版配置信息中包括了對該應用的各個Activity的各UI界面元素的測試策略,并在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素,提取測試模版配置信息中對當前Activity中UI界面元素的測試策略,并依據各UI界面元素的測試邏輯對各UI界面元素進行測試。解決了在先技術中,無效點擊次數多,并且可能漏測關鍵的UI界面元素,測試效率低的問題, 取得了可以精確的控制對哪些UI界面元素進行點擊,降低無效點擊次數,提高了UI界面的測試效率的效果。
對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明實施例并不受所描述的動作順序的限制,因為依據本發明實施例,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優選實施例,所涉及的動作并不一定是本發明實施例所必須的。
實施例四
參照圖4,示出了根據本發明一個實施例的一種APP測試裝置實施例的結構框圖,具體可以包括如下模塊:
測試模板配置信息加載模塊410,適于針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略;
UI界面元素獲取模塊420,適于在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素;
測試模塊430,適于從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試;
輸出模塊440,適于將各Activity的各UI界面元素的測試結果輸出。
實施例五
參照圖5,示出了根據本發明一個實施例的一種APP測試裝置實施例的結構框圖,具體可以包括如下模塊:
結構樹獲取模塊510,適于獲取待測試應用的各個Activity的view布局結構所對應的結構樹。
優選地,所述結構樹獲取模塊510可以包括:
結構樹獲取子模塊5102,適于通過調用Hierarchy Viewer工具的各布局結構獲取API,獲取待測試應用的各個Activity的view布局結構所對應的結構樹。
測試策略接收模塊520,適于接收對結構樹的各個節點所配置的測試策略。
測試模板配置信息生成模塊530,適于根據所述對結構樹的各個節點所配置的測試策略,生成針對所述應用的測試模板配置信息。
測試模板配置信息加載模塊540,適于針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略。
UI界面元素獲取模塊550,適于在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素。
測試模塊560,適于從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試。
輸出模塊570,適于將各Activity的各UI界面元素的測試結果輸出。
實施例六
參照圖6,示出了根據本發明一個實施例的一種APP測試裝置實施例的結構框圖,具體可以包括如下模塊:
測試模板配置信息加載模塊610,適于針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略。
UI界面元素獲取模塊620,適于在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素。
測試模塊630,適于從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試。
優選地,所述測試模塊630可以包括:
UI界面元素觸發確定子模塊6302,適于將當前激活的Activity中的UI界面元素,與測試模板配置信息中的各Activity中的UI界面元素進行匹配,確定允許觸發的UI界面元素;
UI界面元素測試子模塊6304,適于對各UI界面元素,按照相應的測試策略觸發所述UI界面元素進行測試。
優選地,所述對所述應用的各個Activity的各UI界面元素的測試策略包括:
各Activity中允許觸發的UI界面元素、各UI界面元素的觸發位置、各UI界面元素的觸發操作類型、各UI界面元素的觸發順序。
優選地,所述UI界面元素測試子模塊6304包括:
UI界面元素順序測試子模塊63042,適于對于存在觸發順序的UI界面元素,按照所述觸發順序觸發所述UI界面元素進行測試;
UI界面元素隨機測試子模塊63044,適于對于相互之間不存在觸發順序的UI界面元素,隨機觸發各UI界面元素進行測試。
優選地,所述對所述應用的各個Activity的各UI界面元素的測試策略,還可以包括:
對各Activity的觸發比例,和/或對各UI界面元素的觸發次數。
優選地,所述UI界面元素測試子模塊6304還可以包括:
界面元素觸發數量記錄子模塊63046,適于記錄所述UI界面元素所在的Activity的被觸發數量;和/或記錄所述UI界面元素被觸發的數量。
輸出模塊640,適于將各Activity的各UI界面元素的測試結果輸出。
對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
實施例七
參照圖7,示出了根據本發明一個實施例的一種APP測試設備700實施 例的結構框圖,具體可以包括:
存儲器710,加載有多條可執行指令;
處理器720,執行所述多條可執行指令;所述多條指令包括執行以下步驟的方法:
針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略;
在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素;
從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試;
將各Activity的各UI界面元素的測試結果輸出。
優選地,本發明實施例的多條可執行指令還可包括前述各個步驟的方法,本發明實施例不對其加以限定。
在此提供的算法和顯示不與任何特定計算機、虛擬系統或者其它設備固有相關。各種通用系統也可以與基于在此的示教一起使用。根據上面的描述,構造這類系統所要求的結構是顯而易見的。此外,本發明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現在此描述的本發明的內容,并且上面對特定語言所做的描述是為了披露本發明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節。然而,能夠理解,本發明的實施例可以在沒有這些具體細節的情況下實踐。在一些實例中,并未詳細示出公知的方法、結構和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發明方面中的一個或多個,在上面對本發明的示例性實施例的描述中,本發明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映 的那樣,發明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發明的單獨實施例。
本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發明的范圍之內并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發明的各個部件實施例可以以硬件實現,或者以在一個或者多個處理器上運行的軟件模塊實現,或者以它們的組合實現。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數字信號處理器(DSP)來實現根據本發明實施例的APP測試設備中的一些或者全部部件的一些或者全部功能。本發明還可以實現為用于執行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產品)。這樣的實現本發明的程序可以存儲在計算機可讀介質上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網網站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發明進行說明而不是對本發明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換 實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。
本發明公開了A1、一種APP測試方法,包括:
針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略;
在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素;
從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試;
將各Activity的各UI界面元素的測試結果輸出。
A2、如A1所述的方法,在所述針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略的步驟之前,還包括:
獲取待測試應用的各個Activity的view布局結構所對應的結構樹;
接收對結構樹的各個節點所配置的測試策略;
根據所述對結構樹的各個節點所配置的測試策略,生成針對所述應用的測試模板配置信息。
A3、如A2所述的方法,所述獲取待測試應用的各個Activity的view布局結構所對應的結構樹的步驟包括:
通過調用Hierarchy Viewer工具的各布局結構獲取API,獲取待測試應用的各個Activity的view布局結構所對應的結構樹。
A4、如A1所述的方法,所述從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所 述UI界面元素進行測試的步驟包括:
將當前激活的Activity中的UI界面元素,與測試模板配置信息中的各Activity中的UI界面元素進行匹配,確定允許觸發的UI界面元素;
對各UI界面元素,按照相應的測試策略觸發所述UI界面元素進行測試。
A5、如A4所述的方法,所述對所述應用的各個Activity的各UI界面元素的測試策略包括:
各Activity中允許觸發的UI界面元素、各UI界面元素的觸發位置、各UI界面元素的觸發操作類型、各UI界面元素的觸發順序。
A6、如A5所述的方法,所述對各UI界面元素,按照相應的測試策略觸發所述UI界面元素進行測試的步驟包括:
對于存在觸發順序的UI界面元素,按照所述觸發順序觸發所述UI界面元素進行測試;
對于相互之間不存在觸發順序的UI界面元素,隨機觸發各UI界面元素進行測試。
A7、如A5所述的方法,所述對所述應用的各個Activity的各UI界面元素的測試策略,還包括:
對各Activity的觸發比例,和/或對各UI界面元素的觸發次數。
A8、如A7所述的方法,所述對各UI界面元素,按照相應的測試策略觸發所述UI界面元素進行測試的步驟,還包括:
記錄所述UI界面元素所在的Activity的被觸發數量;和/或記錄所述UI界面元素被觸發的數量。
本發明還公開了B9、一種APP測試裝置,包括:
測試模板配置信息加載模塊,適于針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略;
UI界面元素獲取模塊,適于在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素;
測試模塊,適于從所述測試模板配置信息中提取對當前Activity中UI 界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試;
輸出模塊,適于將各Activity的各UI界面元素的測試結果輸出。
B10、如B9所述的裝置,在所述測試模板配置信息加載模塊之前,還包括:
結構樹獲取模塊,適于獲取待測試應用的各個Activity的view布局結構所對應的結構樹;
測試策略接收模塊,適于接收對結構樹的各個節點所配置的測試策略;
測試模板配置信息生成模塊,適于根據所述對結構樹的各個節點所配置的測試策略,生成針對所述應用的測試模板配置信息。
B11、如B10所述的裝置,所述結構樹獲取模塊包括:
結構樹獲取子模塊,適于通過調用Hierarchy Viewer工具的各布局結構獲取API,獲取待測試應用的各個Activity的view布局結構所對應的結構樹。
B12、如B9所述的裝置,所述測試模塊包括:
UI界面元素觸發確定子模塊,適于將當前激活的Activity中的UI界面元素,與測試模板配置信息中的各Activity中的UI界面元素進行匹配,確定允許觸發的UI界面元素;
UI界面元素測試子模塊,適于對各UI界面元素,按照相應的測試策略觸發所述UI界面元素進行測試。
B13、如B12所述的裝置,所述對所述應用的各個Activity的各UI界面元素的測試策略包括:
各Activity中允許觸發的UI界面元素、各UI界面元素的觸發位置、各UI界面元素的觸發操作類型、各UI界面元素的觸發順序。
B14、如B13所述的裝置,所述UI界面元素測試子模塊包括:
UI界面元素順序測試子模塊,適于對于存在觸發順序的UI界面元素,按照所述觸發順序觸發所述UI界面元素進行測試;
UI界面元素隨機測試子模塊,適于對于相互之間不存在觸發順序的UI界面元素,隨機觸發各UI界面元素進行測試。
B15、如B13所述的裝置,所述對所述應用的各個Activity的各UI界面元素的測試策略,還包括:
對各Activity的觸發比例,和/或對各UI界面元素的觸發次數。
B16、如B15所述的裝置,所述UI界面元素測試子模塊還包括:
界面元素觸發數量記錄子模塊,適于記錄所述UI界面元素所在的Activity的被觸發數量;和/或記錄所述UI界面元素被觸發的數量。
本發明還公開了C17、一種APP測試設備,包括:
存儲器,加載有多條可執行指令;
處理器,執行所述多條可執行指令;所述多條指令包括執行以下步驟的方法:
針對待測試的應用,加載相應的測試模板配置信息;所述測試模板配置信息包括對所述應用的各個Activity的各UI界面元素的測試策略;
在待測試應用啟動后,獲取當前激活的Activity中的UI界面元素;
從所述測試模板配置信息中提取對當前Activity中UI界面元素的測試策略,并根據各UI界面元素的測試邏輯對所述UI界面元素進行測試;
將各Activity的各UI界面元素的測試結果輸出。