應用程序的測試方法、設備及系統的制作方法
【專利摘要】本發明公開了一種應用程序的測試方法、設備及系統。所述應用程序的測試方法包括:向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序;循環獲取所述待測試應用程序的顯示界面的圖片;識別所述顯示界面圖片,獲得所述顯示界面圖片相應的操作指令;向所述待測試設備發送所述操作指令,使所述待測試應用程序的顯示界面跳轉。采用本發明實施例,能夠提高待測試設備上應用程序的測試效率。
【專利說明】應用程序的測試方法、設備及系統
【技術領域】
[0001]本發明涉及移動通信【技術領域】,尤其涉及一種應用程序的測試方法、設備及系統。
【背景技術】
[0002]在現有技術中,測試應用程序采用的是Monkey工具。Monkey工具是Android中的一個命令行工具,可以運行在模擬器或實際設備中。Monkey工具的測試方法是向手機系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對應用程序的壓力測試。但是,Monkey工具測試時使用的用戶事件流數據流是隨機的,不能進行自定義。而由于其用戶事件流的隨機性,可能導致測試聚集在應用程序的單個顯示界面上,使其測試效率不高。
[0003]還有一些應用程序的測試采用的是MonkeyRunner工具。MonkeyRunner工具提供一個API,使用該API寫出的程序可以在Android代碼之外控制測試設備和模擬器。MonkeyRunner工具還可以執行測試人員編寫的測試腳本,從而達到對應用程序進行安裝、運行、發送模擬擊鍵、截取顯示界面圖片的操作。但是,MonkeyRunner工具測試時,需要測試人員編寫測試腳本,測試過程較為繁瑣。同時,測試腳本的執行過程是固定的,當應用程序的結構發生變化或測試設備發生變化時,測試腳本往往不能適應新的測試環境,從而需要針對不同的測試設備定制不同的測試腳本,使得測試腳本的可重用性較低。而且,MonkeyRunner工具提供的多設備支持功能在具有不同分辨率的測試設備中,表現差強人意,沒有從真正意義上支持多設備。
【發明內容】
[0004]本發明實施例提出一種應用程序的測試方法、設備及系統,能夠提高待測試設備上應用程序的測試效率。
[0005]本發明實施例提供一種應用程序的測試方法,包括:
[0006]向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序;
[0007]循環獲取所述待測試應用程序的顯示界面的圖片;
[0008]識別所述顯示界面圖片,獲得所述顯示界面圖片相應的操作指令;
[0009]向所述待測試設備發送所述操作指令,使所述待測試應用程序的顯示界面跳轉。
[0010]進一步地,所述識別所述顯示界面圖片,獲得所述顯示界面圖片相應的操作指令,具體包括:
[0011]根據圖片識別算法,判斷預先生成的層次結構圖中是否存在與所述顯示界面圖片相似的控件視圖;所述層次結構圖為具有跳轉關系的各個顯示界面的控件視圖;
[0012]若所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖,則根據所述控件視圖中的控件,獲得所述顯示界面圖片相應的操作指令;
[0013]若所述層次結構圖中不存在與所述顯示界面圖片相似的控件視圖,則查詢預先建立的彈窗庫,獲得與所述顯示界面圖片相似的彈窗特征圖;所述彈窗庫為存儲各個彈窗特征圖及其處理邏輯的數據庫;
[0014]根據所述彈窗特征圖的處理邏輯,獲得所述顯示界面圖片相應的操作指令。
[0015]優選地,所述控件視圖包括控件的位置、圖片和類型;
[0016]所述若所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖,則根據所述控件視圖中的控件,獲得所述顯示界面圖片相應的操作指令,具體包括:
[0017]若所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖,則根據所述控件視圖中控件的位置和圖片,識別出所述顯示界面圖片中的控件;
[0018]根據所述控件視圖中控件的類型,獲得觸發所述顯示界面圖片中的控件的操作指令。
[0019]進一步地,在所述向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序之前,還包括:
[0020]接收客戶端發送的所述待測試應用程序的圖片素材;所述圖片素材包括顯示界面圖片素材和控件圖片素材;
[0021]根據控件圖片素材,識別出每個顯示界面圖片素材上控件的位置、圖片和類型;
[0022]將每個顯示界面圖片素材轉換為每個顯示界面的控件視圖;
[0023]向運行設備發送啟動指令,使所述運行設備運行所述待測試應用程序;
[0024]根據所述待測試應用程序運行時顯示界面的跳轉關系,建立各個顯示界面的控件視圖的跳轉關系,獲得具有跳轉關系的控件視圖;所述具有跳轉關系的控件視圖即為層次結構圖。
[0025]進一步地,在所述向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序之前,還包括:
[0026]接收客戶端發送的待測試應用程序的安裝包,以及待測試設備列表;
[0027]向所述待測試設備列表中的待測試設備發送所述安裝包,使所述待測試設備安裝所述待測試應用程序。
[0028]進一步地,所述應用程序的測試方法還包括:
[0029]實時獲取所述待測試設備的性能數據;
[0030]在所述待測試應用程序運行結束時,根據獲取的所述顯示界面圖片和所述性能數據,生成測試報告;
[0031]將所述測試報告發送給客戶端。
[0032]本發明還提供了另外一種測試設備,包括:
[0033]第一啟動模塊,用于向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序;
[0034]顯示界面圖片獲取模塊,用于循環獲取所述待測試應用程序的顯示界面的圖片;
[0035]顯示界面圖片識別模塊,用于識別所述顯示界面圖片,獲得所述顯示界面圖片相應的操作指令;以及,
[0036]操作指令發送模塊,用于向所述待測試設備發送所述操作指令,使所述待測試應用程序的顯示界面跳轉。
[0037]進一步地,所述顯示界面圖片識別模塊具體包括:
[0038]判斷單元,用于根據圖片識別算法,判斷預先生成的層次結構圖中是否存在與所述顯示界面圖片相似的控件視圖;所述層次結構圖為具有跳轉關系的各個顯示界面的控件視圖;
[0039]第一操作指令獲取單元,用于在所述判斷單元判定所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖時,根據所述控件視圖中的控件,獲得所述顯示界面圖片相應的操作指令;
[0040]彈窗特征圖獲取單元,用于在所述層次結構圖中不存在與所述顯示界面圖片相似的控件視圖時,查詢預先建立的彈窗庫,獲得與所述顯示界面圖片相似的彈窗特征圖;所述彈窗庫為存儲各個彈窗特征圖及其處理邏輯的數據庫;以及,
[0041]第二操作指令獲取單元,用于根據所述彈窗特征圖的處理邏輯,獲得所述顯示界面圖片相應的操作指令。
[0042]優選地,所述控件視圖包括控件的位置、圖片和類型;
[0043]所述第一操作指令獲取單元具體包括:
[0044]控件識別子單元,用于在所述判斷單元判定所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖時,根據所述控件視圖中控件的位置和圖片,識別出所述顯示界面圖片中的控件;以及,
[0045]操作指令獲取子單元,用于根據所述控件視圖中控件的類型,獲得觸發所述顯示界面圖片中的控件的操作指令。
[0046]進一步地,所述測試設備還包括:
[0047]第一接收模塊,用于接收客戶端發送的所述待測試應用程序的圖片素材;所述圖片素材包括顯示界面圖片素材和控件圖片素材;
[0048]控件識別模塊,用于根據所述控件圖片素材,識別出每個顯示界面圖片素材上控件的位置、圖片和類型;
[0049]轉換模塊,用于將每個顯示界面圖片素材轉換為每個顯示界面的控件視圖;
[0050]第二啟動模塊,用于向運行設備發送啟動指令,使所述運行設備運行所述待測試應用程序;以及,
[0051]層次結構圖獲取模塊,用于根據所述待測試應用程序運行時顯示界面的跳轉關系,建立各個顯示界面的控件視圖的跳轉關系,獲得具有跳轉關系的控件視圖;所述具有跳轉關系的控件視圖即為層次結構圖。
[0052]進一步地,所述測試設備還包括:
[0053]第二接收模塊,用于接收客戶端發送的待測試應用程序的安裝包,以及待測試設備列表;以及,
[0054]安裝包發送模塊,用于向所述待測試設備列表中的待測試設備發送所述安裝包,使所述待測試設備安裝所述待測試應用程序。
[0055]進一步地,所述測試設備還包括:
[0056]性能數據獲取模塊,用于實時獲取所述待測試設備的性能數據;
[0057]測試報告生成模塊,用于在所述待測試應用程序運行結束時,根據獲取的所述顯示界面圖片和所述性能數據,生成測試報告;以及,
[0058]測試報告發送模塊,用于將所述測試報告發送給客戶端。
[0059]本發明還提供了一種應用程序的測試系統,包括客戶端、測試設備和待測試設備;
[0060]所述測試設備是上述測試設備。
[0061]實施本發明實施例,具有如下有益效果:
[0062]本發明實施例提供的應用程序的測試方法、設備及系統,能夠獲取待測試應用程序的顯示界面的圖片,識別其相應的操作指令,使待測試應用程序的顯示界面自動跳轉,適用于各種類型的應用程序的測試,同時,提高應用程序的測試效率;根據待測試應用程序顯示界面的控件視圖和跳轉關系,自動生成層次結構圖,并利用該層次結構圖使各種類型的應用程序的測試統一化,有效提高測試效率;建立彈窗庫,設置彈窗特征圖及其處理邏輯,用于處理應用程序中的彈窗事件,提高測試的成功率;客戶端只需提供待測試應用程序的圖片素材,無需測試人員編寫測試腳本,即可進行全自動化的測試,節約人力資源,降低學習成本;支持多設備并發測試,有效提高測試效率,節省測試時間。
【專利附圖】
【附圖說明】
[0063]圖1是本發明提供的應用程序的測試方法的第一個實施例的流程示意圖;
[0064]圖2是本發明提供的顯示界面的一個實施例的結構示意圖;
[0065]圖3是本發明提供的具有彈窗事件的顯示界面的一個實施例的結構示意圖;
[0066]圖4是本發明提供的應用程序的測試方法的第二個實施例的部分流程示意圖;
[0067]圖5是本發明提供的圖片素材的一個實施例的結構示意圖;
[0068]圖6是本發明提供的層次結構圖的一個實施例的結構示意圖;
[0069]圖7是本發明提供的任務調度表的一個實施例的結構示意圖;
[0070]圖8是本發明提供的應用程序的測試設備的第一個實施例的結構示意圖;
[0071]圖9是本發明提供的應用程序的測試設備的第二個實施例的部分結構示意圖;
[0072]圖10是本發明提供的應用程序的測試系統的第一個實施例的結構示意圖;
[0073]圖11是本發明提供的應用程序的測試系統的第二個實施例的結構示意圖。
【具體實施方式】
[0074]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0075]參見圖1,是本發明提供的應用程序的測試方法的第一個實施例的流程示意圖。
[0076]本發明實施例提供的應用程序的測試方法包括步驟S101至S104,具體如下:
[0077]S101、向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序。
[0078]具體的,通過ADB命令使待測試設備啟動所述待測試應用程序。
[0079]S102、循環獲取所述待測試應用程序的顯示界面的圖片。
[0080]具體的,待測試應用程序的顯示界面每跳轉一次,都會對顯示界面進行截圖,獲取顯不界面圖片。
[0081]S103、識別所述顯示界面圖片,獲得所述顯示界面圖片相應的操作指令。
[0082]S104、向所述待測試設備發送所述操作指令,使所述待測試應用程序的顯示界面跳轉。
[0083]其中,在步驟S103中,所述識別所述顯示界面圖片,獲得所述顯示界面圖片相應的操作指令,具體包括:
[0084]根據圖片識別算法,判斷預先生成的層次結構圖中是否存在與所述顯示界面圖片相似的控件視圖;所述層次結構圖為具有跳轉關系的各個顯示界面的控件視圖;
[0085]若所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖,則根據所述控件視圖中的控件,獲得所述顯示界面圖片相應的操作指令;
[0086]若所述層次結構圖中不存在與所述顯示界面圖片相似的控件視圖,則查詢預先建立的彈窗庫,獲得與所述顯示界面圖片相似的彈窗特征圖;所述彈窗庫為存儲各個彈窗特征圖及其處理邏輯的數據庫;
[0087]根據所述彈窗特征圖的處理邏輯,獲得所述顯示界面圖片相應的操作指令。
[0088]優選地,所述控件視圖包括控件的位置、圖片和類型。
[0089]具體的,所述若所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖,則根據所述控件視圖中的控件,獲得所述顯示界面圖片相應的操作指令,具體包括:
[0090]若所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖,則根據所述控件視圖中控件的位置和圖片,識別出所述顯示界面圖片中的控件;
[0091]根據所述控件視圖中控件的類型,獲得觸發所述顯示界面圖片中的控件的操作指令。
[0092]需要說明的是,在識別顯示界面中的控件時,先根據控件視圖中控件的坐標來進行識別,若坐標錯位,則采用圖片識別技術,根據控件的圖片來進行識別,使測試具有較高的執行效率和兼容性。
[0093]具體的,控件的類型包括圖像(Image)控件、文本(Textarea)控件和按鈕(Button)控件。在識別出顯示界面中的按鈕控件時,根據該按鈕控件,獲得觸發該按鈕控件所需的操作指令,如點擊指令、滑動指令等。其中,操作指令是根據層次結構圖中控件視圖的跳轉關系進行發送的,使待測試應用程序的顯示界面按照層次結構圖中控件視圖的跳轉關系進行跳轉。若顯示界面圖片上具有多個按鈕控件,查詢該顯示界面圖片在層次結構圖中的狀態信息,根據該狀態信息,獲取觸發相應按鈕控件所需的操作指令,從而使測試過程更具規劃性和可控性,避免盲目地向顯示界面圖片中不同的按鈕控件發送操作指令,使測試的效率更高。
[0094]如圖2所示,在識別出顯示界面圖片中的按鈕控件時,根據層次結構圖,向顯示界面21中的按鈕控件22發送點擊指令,顯示界面21中按鈕控件22處出現手指形狀圖標23,使手指形狀圖標23點擊按鈕控件22,顯示界面21跳轉,從而實現全自動化的測試。
[0095]另外,在根據層次結構圖進行顯示界面跳轉的同時,記錄所有跳轉節點的訪問狀態和正在訪問的路徑信息,在測試遍歷到一個已訪問的跳轉節點時,執行回溯操作,使測試最終遍歷所有可以到達的跳轉節點,提高測試的執行效率。
[0096]在測試過程中,還會出現一些特殊的彈窗事件,而彈窗事件是難以預測的,如在游戲應用程序的測試過程中,會出現臨時活動的推送界面,消息提示界面等。當出現這些彈窗事件時,如果不對其進行處理,則會對測試造成阻礙,甚至導致測試的失敗。因此,可預先建立彈窗庫,用來存儲各個彈窗特征圖及其處理邏輯,同時還存儲有各個彈窗特征圖處理后的目標顯示界面圖片。其中,彈窗特征圖為特殊的顯示界面圖片,處理邏輯為客戶端自定義處理過程,如輸入、點擊、等待等。
[0097]若測試中獲得未知的顯示界面圖片,即層次結構圖中不存在與顯示界面圖片相似的控件視圖,則說明測試中出現了彈窗事件。測試設備查詢彈窗庫中的彈窗特征圖,找到與顯示界面相近似的彈窗特征圖,從而獲得該彈窗特征圖的處理邏輯,使待測試應用程序執行該處理邏輯,將顯示界面跳轉到目標顯示界面,并繼續進行正常測試。
[0098]如圖3所示,在測試過程中,顯示界面31中出現彈窗事件32,測試設備在獲得該顯示界面31的圖片時,未從層次結構圖中找出與該圖片相似的控件視圖,則調用彈窗庫,從彈窗庫中找到與該圖片相似的彈窗特征圖,并根據彈窗特征圖的處理邏輯,向顯示界面31發送點擊指令,使顯示界面31跳轉到目標顯示界面。
[0099]需要說明的是,本實施例的應用程序的測試方法由測試設備實現,所述測試設備部署在計算機上,通過與待測試設備連接,實現對待測試設備上應用程序的測試。所述待測試設備為移動終端。
[0100]參見圖4,是本發明提供的應用程序的測試方法的第二個實施例的流程示意圖。
[0101]與上述第一實施例相比,第二實施例提供的應用程序的測試方法的不同點在于:
[0102]在所述向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序之前,還包括步驟S401至步驟S405,具體如下:
[0103]S401、接收客戶端發送的所述待測試應用程序的圖片素材;所述圖片素材包括顯示界面圖片素材和控件圖片素材。
[0104]需要說明的是,在接收待測試應用程序的圖片素材的同時,還接收客戶端發送的待測試應用程序安裝包,并向運行設備發送安裝包,通過ADB (Android Debug Bridge)命令使該運行設備安裝所述待測試應用程序。其中,運行設備是用于生成層次結構圖的任意一個移動終端。
[0105]在接收到的圖片素材中,顯示界面圖片素材為待測試應用程序各個顯示界面的截圖。控件圖片素材為各個顯示界面中的按鈕圖片素材、圖像圖片素材和文本圖片素材。
[0106]S402、根據所述控件圖片素材,識別出每個顯示界面圖片素材上控件的位置、圖片和類型。
[0107]具體的,米用SIFT (Scale-1nvariant feature transform,尺度不變特征變換匹配算法)圖片識別技術,根據按鈕圖片素材、圖像圖片素材和文本圖片素材分別識別出每個顯示界面圖片素材上的按鈕控件、圖像控件和文本控件,并記錄每個顯示界面圖片素材上的每個控件的位置、圖片和類型。其中,控件的位置為控件的坐標。
[0108]S403、將每個顯示界面圖片素材轉換為每個顯示界面的控件視圖。
[0109]具體的,測試設備循環識別每個顯示界面圖片素材中的控件,從而將每個顯示界面圖片素材轉換為其對應的控件視圖。
[0110]如圖5所示,根據控件圖片素材中的按鈕圖片素材51、圖像圖片素材52和文本圖片素材53分別識別出顯示界面圖片素材54上的按鈕控件55、圖像控件56和文本控件57,從而將顯示界面圖片素材54轉換為控件視圖。測試設備不斷循環轉換,直到將所有顯示界面圖片素材轉換為控件視圖為止。
[0111]S404、向運行設備發送啟動指令,使所述運行設備運行所述待測試應用程序。
[0112]具體的,通過ADB命令使安裝有待測試應用程序的運行設備啟動所述待測試應用程序。
[0113]S405、根據所述待測試應用程序運行時顯示界面的跳轉關系,建立各個顯示界面的控件視圖的跳轉關系,獲得具有跳轉關系的控件視圖;所述具有跳轉關系的控件視圖即為層次結構圖。
[0114]具體的,在待測試應用程序運行時,測試設備對當前顯示界面進行截圖,識別出當前顯示界面的控件視圖,并根據該控件視圖,向運行設備發送操作指令,如點擊或滑動等,使運行設備中的待測試應用程序執行操作。測試設備對運行設備執行操作后的顯示界面再進行截圖、識別和發送操作指令,不斷循環獲得待測試應用程序各個顯示界面之間完整的跳轉關系。根據該跳轉關系,建立各個顯示界面的控件視圖的跳轉關系,輸出具有跳轉關系的控件視圖,從而獲得層次結構圖。其中,層次結構圖為待測試應用程序的測試用例。
[0115]如圖6所示,待測試應用程序的顯示界面具有第一控件視圖61、第二控件視圖62和第三控件視圖63。對待測試應用程序的當前顯示界面進行截圖,并識別出該截圖相似的控件視圖為第一控件視圖61,根據第一控件視圖61中的第一按鈕控件611向待測試應用程序發送操作指令,使待測試應用程序的顯示界面跳轉。測試設備繼續對跳轉后的顯示界面截圖,識別出跳轉后的顯示界面截圖相似的控件視圖為第二控件視圖62,再根據第二控件視圖62中的第三按鈕控件621向待測試應用程序發送操作指令,使待測試應用程序的顯示界面繼續跳轉。如此循環,使待測試應用程序的顯示界面完成全部跳轉,獲得各個控件視圖的完整跳轉關系:觸發第一控件視圖61上的第一按鈕控件611,第一控件視圖61跳轉到第二控件視圖62 ;觸發第二控件視圖62上的第三按鈕控件621,第二控件視圖62跳轉到第三控件視圖63 ;觸發第三控件視圖63的第五按鈕控件631,第三控件視圖63跳轉到第二控件視圖62 ;觸發第二控件視圖62上的第四按鈕控件622,第二控件視圖62跳轉到第一控件視圖61 ;觸發第一控件視圖61上的第二按鈕控件612,第一控件視圖61跳轉到第三控件視圖63。輸出具有跳轉關系的控件視圖,即可獲得層次結構圖。其中,層次結構圖以文件的形式保存,例如可保存為xml文件。
[0116]另外,待測試應用程序的層次結構圖只需生成一次,測試設備將生成的層次結構圖分發到不同的測試設備上,使不同的測試設備能夠直接測試待測試設備上的該應用程序,從而減少網絡數據傳輸量,且可避免重復計算。
[0117]需要說明的是,在1S和Android系統的原生應用中,現有的測試設備可以直接從應用程序的顯示界面中獲取控件的位置和類型,但是對于使用了第三方引擎(如C0C0S2dX、Unity3D等)的應用程序,其顯示界面被渲染成了一張完整的圖片,現有的測試設備不能直接從顯示界面中獲取控件。因此,本發明提供的實施例采用預先生成待測試應用程序的層次結構圖的方法來進行測試,適用于各種類型的應用程序的測試,有效提高測試效率。
[0118]本發明還提供應用程序的測試方法的第三個實施例。
[0119]與上述第一實施例和第二實施例相比,第三實施例提供的應用程序的測試方法的不同點在于:
[0120]在所述向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序之前,還包括:
[0121]接收客戶端發送的待測試應用程序的安裝包,以及待測試設備列表;
[0122]向所述待測試設備列表中的待測試設備發送所述安裝包,使所述待測試設備安裝所述待測試應用程序。
[0123]需要說明的是,客戶端還可以通過服務器向測試設備發送測試請求。其中,測試請求包括待測試應用程序的安裝包和待測試設備列表。具體的,客戶端將測試請求發送給服務器,服務器根據待測試設備列表中的待測試設備,向不同測試設備分發測試任務。若待測試設備處于本地局域網中,則服務器將測試任務標識為本地任務,并將其發送給連接該待測試設備的本地測試設備上;若待測試設備不在本地局域網中,則服務器將該測試任務標識為遠程任務,并將其發送到連接該待測試設備的遠程測試設備上。其中,服務器與遠程測試設備通過Socket進行通訊。
[0124]其中,待測試列表中可包含多個待測試設備,測試設備可多線程并發執行多個測試任務。優選地,一個測試設備上最多啟動與其CPU核心數相同的測試任務。如果測試設備當前的測試任務較多,則將測試任務放入任務隊列中,并生成待測試設備的狀態表,記錄待測試設備的狀態信息,在待測試設備空閑時進行測試。
[0125]如圖7所示,測試設備同時在待測試設備A1、待測試設備A2……和待測試設備An上對待測試應用程序進行測試時,生成任務調度表71,將測試設備具有的測試任務B1、測試任務B2……和測試任務Bn放入任務調度表71中的任務隊列72中。其中,測試設備可以為本地測試設備或遠程測試設備,待測試應用程序可以為待測試應用程序C1、待測試應用程序C2……和待測試應用程序Cn。在任務隊列72中,測試任務B1包含待測試設備A1和待測試應用程序C1的信息;測試任務B2包含待測試設備A2和待測試應用程序C1的信息;測試任務Bn包含待測試設備An和待測試應用程序Cn的信息。同時,任務調度表71中還具有待測試設備狀態表73,用于記錄待測試設備A1、待測試設備A2……和待測試設備An的狀態信息,在待測試設備空閑時對其進行測試。
[0126]本發明還提供應用程序的測試方法的第四個實施例。
[0127]與上述第一實施例、第二實施例和第三實施例相比,第四實施例提供的應用程序的測試方法的不同點在于:
[0128]所述應用程序的測試方法還包括:
[0129]實時獲取所述待測試設備的性能數據;
[0130]在所述待測試應用程序運行結束時,根據獲取的所述顯示界面圖片和所述性能數據,生成測試報告;
[0131]將所述測試報告發送給客戶端。
[0132]具體的,在待測試應用程序運行過程中,實時獲取待測試設備的性能數據,如CPU、內存的占用信息等。在所述待測試應用程序運行結束時,將每張顯示界面圖片與獲取每張顯示界面圖片時的待測試設備性能數據相對應的生成測試報告,使測試人員能夠查看測試過程中出現的問題,且方便發現應用程序的性能瓶頸。同時,實時監控測試過程,使測試人員可實時查詢測試進度,也使測試過程可以重現。
[0133]本發明實施例提供的應用程序的測試方法,能夠獲取待測試應用程序的顯示界面的圖片,識別其相應的操作指令,使待測試應用程序的顯示界面自動跳轉,適用于各種類型的應用程序的測試,同時,提高應用程序的測試效率;根據待測試應用程序顯示界面的控件視圖和跳轉關系,自動生成層次結構圖,并利用該層次結構圖使各種類型的應用程序的測試統一化,有效提高測試效率;建立彈窗庫,設置彈窗特征圖及其處理邏輯,用于處理應用程序中的彈窗事件,提高測試的成功率;客戶端只需提供待測試應用程序的圖片素材,無需測試人員編寫測試腳本,即可進行全自動化的測試,節約人力資源,降低學習成本;支持多設備并發測試,有效提高測試效率,節省測試時間。
[0134]相應地,本發明還提供一種應用程序的測試設備和測試系統,能夠實現上述實施例中的應用程序的測試方法的所有流程。
[0135]參見圖8,是本發明提供的應用程序的測試設備的第一個實施例的結構示意圖,包括:
[0136]第一啟動模塊81,用于向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序;
[0137]顯示界面圖片獲取模塊82,用于循環獲取所述待測試應用程序的顯示界面的圖片;
[0138]顯示界面圖片識別模塊83,用于識別所述顯示界面圖片,獲得所述顯示界面圖片相應的操作指令;以及,
[0139]操作指令發送模塊84,用于向所述待測試設備發送所述操作指令,使所述待測試應用程序的顯示界面跳轉。
[0140]其中,所述顯示界面圖片識別模塊83具體包括:
[0141]判斷單元,用于根據圖片識別算法,判斷預先生成的層次結構圖中是否存在與所述顯示界面圖片相似的控件視圖;所述層次結構圖為具有跳轉關系的各個顯示界面的控件視圖;
[0142]第一操作指令獲取單元,用于在所述判斷單元判定所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖時,根據所述控件視圖中的控件,獲得所述顯示界面圖片相應的操作指令;
[0143]彈窗特征圖獲取單元,用于在所述層次結構圖中不存在與所述顯示界面圖片相似的控件視圖時,查詢預先建立的彈窗庫,獲得與所述顯示界面圖片相似的彈窗特征圖;所述彈窗庫為存儲各個彈窗特征圖及其處理邏輯的數據庫;以及,
[0144]第二操作指令獲取單元,用于根據所述彈窗特征圖的處理邏輯,獲得所述顯示界面圖片相應的操作指令。
[0145]優選地,所述控件視圖包括控件的位置、圖片和類型。
[0146]具體的,所述第一操作指令獲取單元具體包括:
[0147]控件識別子單元,用于在所述判斷單元判定所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖時,根據所述控件視圖中控件的位置和圖片,識別出所述顯示界面圖片中的控件;以及,
[0148]操作指令獲取子單元,用于根據所述控件視圖中控件的類型,獲得觸發所述顯示界面圖片中的控件的操作指令。
[0149]參見圖9,是本發明提供的應用程序的測試設備的第二個實施例。
[0150]與上述第一實施例相比,第二實施例提供的應用程序的測試設備的不同點在于:
[0151]所述應用程序的測試設備還包括:
[0152]第一接收模塊91,用于接收客戶端發送的所述待測試應用程序的圖片素材;所述圖片素材包括顯示界面圖片素材和控件圖片素材;
[0153]控件識別模塊92,用于根據所述控件圖片素材,識別出每個顯示界面圖片素材上控件的位置、圖片和類型;
[0154]轉換模塊93,用于將每個顯示界面圖片素材轉換為每個顯示界面的控件視圖;
[0155]第二啟動模塊94,用于向運行設備發送啟動指令,使所述運行設備運行所述待測試應用程序;以及,
[0156]層次結構圖獲取模塊95,用于根據所述待測試應用程序運行時顯示界面的跳轉關系,建立各個顯示界面的控件視圖的跳轉關系,獲得具有跳轉關系的控件視圖;所述具有跳轉關系的控件視圖即為層次結構圖。
[0157]本發明還提供應用程序的測試設備的第三個實施例。
[0158]與上述第一實施例和第二實施例相比,第三實施例提供的應用程序的測試設備的不同點在于:
[0159]所述應用程序的測試設備還包括:
[0160]第二接收模塊,用于接收客戶端發送的待測試應用程序的安裝包,以及待測試設備列表;以及,
[0161]安裝包發送模塊,用于向所述待測試設備列表中的待測試設備發送所述安裝包,使所述待測試設備安裝所述待測試應用程序。
[0162]本發明還提供應用程序的測試設備的第四個實施例。
[0163]與上述第一實施例、第二實施例和第三實施例相比,第四實施例提供的應用程序的測試設備的不同點在于:
[0164]所述應用程序的測試設備還包括:
[0165]性能數據獲取模塊,用于實時獲取所述待測試設備的性能數據;
[0166]測試報告生成模塊,用于在所述待測試應用程序運行結束時,根據獲取的所述顯示界面圖片和所述性能數據,生成測試報告;以及,
[0167]測試報告發送模塊,用于將所述測試報告發送給客戶端。
[0168]本發明實施例提供的應用程序的測試設備,能夠獲取待測試應用程序的顯示界面的圖片,識別其相應的操作指令,使待測試應用程序的顯示界面自動跳轉,適用于各種類型的應用程序的測試,同時,提高應用程序的測試效率;根據待測試應用程序顯示界面的控件視圖和跳轉關系,自動生成層次結構圖,并利用該層次結構圖使各種類型的應用程序的測試統一化,有效提高測試效率;建立彈窗庫,設置彈窗特征圖及其處理邏輯,用于處理應用程序中的彈窗事件,提高測試的成功率;客戶端只需提供待測試應用程序的圖片素材,無需測試人員編寫測試腳本,即可進行全自動化的測試,節約人力資源,降低學習成本;支持多設備并發測試,有效提高測試效率,節省測試時間。
[0169]參見圖10,是本發明提供的應用程序的測試系統的第一個實施例的結構示意圖,包括客戶端101、測試設備102和待測試設備103 ;
[0170]所述測試設備102是上述應用程序的測試設備,在此不再詳細描述。
[0171]參見圖11,是本發明提供的應用程序的測試系統的第二個實施例的結構示意圖。
[0172]本實施例提供的應用程序的測試系統包括客戶端111、服務器112、第一測試設備113、第二測試設備114、第三測試設備115和多個待測試設備。其中,測試設備配置在計算機上,待測試設備為移動終端。客戶端111接入服務器112,向服務器112發送測試請求;第一測試設備113和第二測試設備114為本地測試設備,分別接入服務器112,接收服務器112發送的本地測試任務;第三測試設備115為遠程測試設備,通過Socket與服務器112進行通訊,接收服務器112發送的遠程任務;每個測試設備接入待測試設備A1、待測試設備A2……和待測試設備An,實現在待測試設備A1、待測試設備A2……和待測試設備An上對待測試應用程序的測試。本發明實施例通過服務器來分發任務,提高測試設備的使用率。
[0173]服務器分別與本地測試設備和遠程測試設備連接,可以將本地測試任務分發給本地測試設備,將遠程測試任務分發給遠程測試設備進行測試,提高測試設備的使用率,同時降低測試設備的購置成本。每個測試設備分別與待測試設備A1、待測試設備A2……和待測試設備An連接,支持多個待測試設備的并發測試,節約測試時間,同時,測試設備可適應對不同分辨率的待測試設備的測試。
[0174]需要說明的是,本發明實施例僅以測試系統包括一個服務器,且該服務器分別與兩個本地測試設備和一個遠程測試設備連接為例進行描述,但在具體實施當中,測試設備可以包括一個或多個服務器,每個服務器可與一個或多個本地測試設備連接,也可與一個或多個遠程測試設備連接,其服務器和測試設備的數量可以根據實際應用來配置。
[0175]本發明實施例提供的應用程序的測試系統,能夠獲取待測試應用程序的顯示界面的圖片,識別其相應的操作指令,使待測試應用程序的顯示界面自動跳轉,適用于各種類型的應用程序的測試,同時,提高應用程序的測試效率;根據待測試應用程序顯示界面的控件視圖和跳轉關系,自動生成層次結構圖,并利用該層次結構圖使各種類型的應用程序的測試統一化,有效提高測試效率;建立彈窗庫,設置彈窗特征圖及其處理邏輯,用于處理應用程序中的彈窗事件,提高測試的成功率;客戶端只需提供待測試應用程序的圖片素材,無需測試人員編寫測試腳本,即可進行全自動化的測試,節約人力資源,降低學習成本;支持多設備并發測試,有效提高測試效率,節省測試時間。
[0176]需要說明的是,在本文中,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
[0177]上述本發明實施例序號僅僅為了描述,不代表實施例的優劣。
[0178]在本申請所提供的幾個實施例中,應該理解到,所揭露的系統和方法可以通過其它的方式實現。例如,以上所描述的系統實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0179]專業人員還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現,為了清楚地說明硬件和軟件的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能宄竟以硬件還是軟件方式來執行,取決于技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的范圍。
[0180]結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(RAM)、內存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或【技術領域】內所公知的任意其它形式的存儲介質中。
[0181]對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或范圍的情況下,在其它實施例中實現。因此,本發明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
【權利要求】
1.一種應用程序的測試方法,其特征在于,包括: 向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序; 循環獲取所述待測試應用程序的顯示界面的圖片; 識別所述顯示界面圖片,獲得所述顯示界面圖片相應的操作指令; 向所述待測試設備發送所述操作指令,使所述待測試應用程序的顯示界面跳轉。
2.如權利要求1所述的應用程序的測試方法,其特征在于,所述識別所述顯示界面圖片,獲得所述顯示界面圖片相應的操作指令,具體包括: 根據圖片識別算法,判斷預先生成的層次結構圖中是否存在與所述顯示界面圖片相似的控件視圖;所述層次結構圖為具有跳轉關系的各個顯示界面的控件視圖; 若所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖,則根據所述控件視圖中的控件,獲得所述顯示界面圖片相應的操作指令; 若所述層次結構圖中不存在與所述顯示界面圖片相似的控件視圖,則查詢預先建立的彈窗庫,獲得與所述顯示界面圖片相似的彈窗特征圖;所述彈窗庫為存儲各個彈窗特征圖及其處理邏輯的數據庫; 根據所述彈窗特征圖的處理邏輯,獲得所述顯示界面圖片相應的操作指令。
3.如權利要求2所述的應用程序的測試方法,其特征在于,所述控件視圖包括控件的位置、圖片和類型; 所述若所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖,則根據所述控件視圖中的控件,獲得所述顯示界面圖片相應的操作指令,具體包括: 若所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖,則根據所述控件視圖中控件的位置和圖片,識別出所述顯示界面圖片中的控件; 根據所述控件視圖中控件的類型,獲得觸發所述顯示界面圖片中的控件的操作指令。
4.如權利要求2或3所述的應用程序的測試方法,其特征在于,在所述向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序之前,還包括: 接收客戶端發送的所述待測試應用程序的圖片素材;所述圖片素材包括顯示界面圖片素材和控件圖片素材; 根據所述控件圖片素材,識別出每個顯示界面圖片素材上控件的位置、圖片和類型; 將每個顯示界面圖片素材轉換為每個顯示界面的控件視圖; 向運行設備發送啟動指令,使所述運行設備運行所述待測試應用程序; 根據所述待測試應用程序運行時顯示界面的跳轉關系,建立各個顯示界面的控件視圖的跳轉關系,獲得具有跳轉關系的控件視圖;所述具有跳轉關系的控件視圖即為層次結構圖。
5.如權利要求1所述的應用程序的測試方法,其特征在于,在所述向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序之前,還包括: 接收客戶端發送的待測試應用程序的安裝包,以及待測試設備列表; 向所述待測試設備列表中的待測試設備發送所述安裝包,使所述待測試設備安裝所述待測試應用程序。
6.如權利要求1所述的應用程序的測試方法,其特征在于,所述應用程序的測試方法還包括: 實時獲取所述待測試設備的性能數據; 在所述待測試應用程序運行結束時,根據獲取的所述顯示界面圖片和所述性能數據,生成測試報告; 將所述測試報告發送給客戶端。
7.—種應用程序的測試設備,其特征在于,包括: 第一啟動模塊,用于向待測試設備發送啟動指令,使所述待測試設備運行待測試應用程序; 顯示界面圖片獲取模塊,用于循環獲取所述待測試應用程序的顯示界面的圖片; 顯示界面圖片識別模塊,用于識別所述顯示界面圖片,獲得所述顯示界面圖片相應的操作指令;以及, 操作指令發送模塊,用于向所述待測試設備發送所述操作指令,使所述待測試應用程序的顯示界面跳轉。
8.如權利要求7所述的應用程序的測試設備,其特征在于,所述顯示界面圖片識別模塊具體包括: 判斷單元,用于根據圖片識別算法,判斷預先生成的層次結構圖中是否存在與所述顯示界面圖片相似的控件視圖;所述層次結構圖為具有跳轉關系的各個顯示界面的控件視圖; 第一操作指令獲取單元,用于在所述判斷單元判定所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖時,根據所述控件視圖中的控件,獲得所述顯示界面圖片相應的操作指令; 彈窗特征圖獲取單元,用于在所述層次結構圖中不存在與所述顯示界面圖片相似的控件視圖時,查詢預先建立的彈窗庫,獲得與所述顯示界面圖片相似的彈窗特征圖;所述彈窗庫為存儲各個彈窗特征圖及其處理邏輯的數據庫;以及, 第二操作指令獲取單元,用于根據所述彈窗特征圖的處理邏輯,獲得所述顯示界面圖片相應的操作指令。
9.如權利要求8所述的應用程序的測試設備,其特征在于,所述控件視圖包括控件的位置、圖片和類型; 所述第一操作指令獲取單元具體包括: 控件識別子單元,用于在所述判斷單元判定所述層次結構圖中存在與所述顯示界面圖片相似的控件視圖時,根據所述控件視圖中控件的位置和圖片,識別出所述顯示界面圖片中的控件;以及, 操作指令獲取子單元,用于根據所述控件視圖中控件的類型,獲得觸發所述顯示界面圖片中的控件的操作指令。
10.如權利要求8或9所述的應用程序的測試設備,其特征在于,所述應用程序的測試設備還包括: 第一接收模塊,用于接收客戶端發送的所述待測試應用程序的圖片素材;所述圖片素材包括顯示界面圖片素材和控件圖片素材; 控件識別模塊,用于根據所述控件圖片素材,識別出每個顯示界面圖片素材上控件的位置、圖片和類型; 轉換模塊,用于將每個顯示界面圖片素材轉換為每個顯示界面的控件視圖; 第二啟動模塊,用于向運行設備發送啟動指令,使所述運行設備運行所述待測試應用程序;以及, 層次結構圖獲取模塊,用于根據所述待測試應用程序運行時顯示界面的跳轉關系,建立各個顯示界面的控件視圖的跳轉關系,獲得具有跳轉關系的控件視圖;所述具有跳轉關系的控件視圖即為層次結構圖。
11.如權利要求7所述的應用程序的測試設備,其特征在于,所述應用程序的測試設備還包括: 第二接收模塊,用于接收客戶端發送的待測試應用程序的安裝包,以及待測試設備列表;以及, 安裝包發送模塊,用于向所述待測試設備列表中的待測試設備發送所述安裝包,使所述待測試設備安裝所述待測試應用程序。
12.如權利要求7所述的應用程序的測試設備,其特征在于,所述應用程序的測試設備還包括: 性能數據獲取模塊,用于實時獲取所述待測試設備的性能數據; 測試報告生成模塊,用于在所述待測試應用程序運行結束時,根據獲取的所述顯示界面圖片和所述性能數據,生成測試報告;以及, 測試報告發送模塊,用于將所述測試報告發送給客戶端。
13.—種應用程序的測試系統,其特征在于,包括客戶端、測試設備和待測試設備; 所述測試設備是如權利要求7至12中任一項所述的應用程序的測試設備。
【文檔編號】G06F11/36GK104484273SQ201410805289
【公開日】2015年4月1日 申請日期:2014年12月19日 優先權日:2014年12月19日
【發明者】翟煦 申請人:廣州博冠信息科技有限公司