本發(fā)明涉及軟件測(cè)試技術(shù)領(lǐng)域,特別涉及一種跨進(jìn)程測(cè)試的方法、裝置及電子設(shè)備。
背景技術(shù):
當(dāng)前安卓系統(tǒng)的自動(dòng)化測(cè)試工具分為兩大類(lèi),第一類(lèi)是基于Instruments類(lèi)的測(cè)試工具,基于instruments框架可以控制和測(cè)試應(yīng)用程序;第二類(lèi)是非Instruments類(lèi)的測(cè)試工具。
現(xiàn)有技術(shù)中常用的是基于Instruments類(lèi)的測(cè)試工具,例如工具Robotium,測(cè)試用例與被測(cè)程序運(yùn)行于同一進(jìn)程中從而實(shí)現(xiàn)對(duì)被測(cè)應(yīng)用進(jìn)行操作、檢測(cè)等。其中,Robotium是一款A(yù)ndroid自動(dòng)化測(cè)試框架,主要針對(duì)Android平臺(tái)的應(yīng)用進(jìn)行黑盒自動(dòng)化測(cè)試,它提供了模擬各種手勢(shì)操作(點(diǎn)擊、長(zhǎng)按、滑動(dòng)等)、查找和斷言機(jī)制的API,能夠?qū)Ω鞣N控件進(jìn)行操作。
基于此,本發(fā)明的發(fā)明人發(fā)現(xiàn),基于Instruments類(lèi)的測(cè)試工具穩(wěn)定性較高,但是只能對(duì)每個(gè)設(shè)備的應(yīng)用程序一一進(jìn)行測(cè)試,導(dǎo)致對(duì)于Android設(shè)備的測(cè)試場(chǎng)景比較局限,無(wú)法實(shí)現(xiàn)對(duì)跨進(jìn)程的事件注入的測(cè)試。例如進(jìn)程A需要調(diào)用進(jìn)程B,且進(jìn)程A將點(diǎn)擊事件注入進(jìn)程B;若利用基于Instruments類(lèi)的測(cè)試工具進(jìn)行測(cè)試,則不能測(cè)試上述的進(jìn)程A將點(diǎn)擊事件注入進(jìn)程B。
公開(kāi)于該背景技術(shù)部分的信息僅僅旨在增加對(duì)本發(fā)明的總體背景的理解,而不應(yīng)當(dāng)被視為承認(rèn)或以任何形式暗示該信息構(gòu)成已為本領(lǐng)域一般技術(shù)人員所公知的現(xiàn)有技術(shù)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種跨進(jìn)程測(cè)試的方法、裝置及電子設(shè)備,從而克服instruments類(lèi)的測(cè)試工具不能實(shí)現(xiàn)跨進(jìn)程測(cè)試的缺陷。
本發(fā)明實(shí)施例提供的一種跨進(jìn)程測(cè)試的方法,包括:獲取基于instruments類(lèi)工具封裝的第一測(cè)試命令,第一測(cè)試命令包括模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù);解析第一測(cè)試命令,并將第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,第二測(cè)試命令包括模擬動(dòng)作指令和模擬動(dòng)作參數(shù);將第二測(cè)試命令發(fā)送至非instruments類(lèi)工具,以使非instruments類(lèi)工具解析第二測(cè)試命令,并根據(jù)模擬動(dòng)作指令和模擬動(dòng)作參數(shù)執(zhí)行模擬操作。
在一種可能的實(shí)現(xiàn)方式中,獲取基于instruments類(lèi)工具封裝的第一測(cè)試命令,包括:獲取在instruments類(lèi)工具中封裝的初始測(cè)試命令,初始測(cè)試命令包括模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù);將初始測(cè)試命令轉(zhuǎn)換為JSON格式的第一測(cè)試命令。
在一種可能的實(shí)現(xiàn)方式中,模擬動(dòng)作參數(shù)包括坐標(biāo)參數(shù)和/或目標(biāo)應(yīng)用的元素標(biāo)識(shí);在模擬動(dòng)作參數(shù)包括坐標(biāo)參數(shù)和目標(biāo)應(yīng)用的元素標(biāo)識(shí)時(shí),根據(jù)模擬動(dòng)作指令和模擬動(dòng)作參數(shù)執(zhí)行模擬操作具體包括:根據(jù)元素標(biāo)識(shí)查找對(duì)應(yīng)的控件元素,獲取控件元素的位置信息;根據(jù)控件元素的位置信息和坐標(biāo)參數(shù),確定對(duì)控件元素的操作區(qū)域;根據(jù)模擬動(dòng)作指令,對(duì)控件元素在操作區(qū)域執(zhí)行相應(yīng)的模擬操作。
在一種可能的實(shí)現(xiàn)方式中,將第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,包括:根據(jù)第一測(cè)試命令生成jar包,并將jar包封裝為第二測(cè)試命令。
在一種可能的實(shí)現(xiàn)方式中,根據(jù)第一測(cè)試命令生成jar包包括:根據(jù)預(yù)設(shè)類(lèi)型的命令將第一測(cè)試命令中的模擬動(dòng)作指令和模擬動(dòng)作參數(shù)傳遞至jar包中。
基于同樣的發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提供一種跨進(jìn)程測(cè)試的裝置,包括:獲取模塊,用于獲取基于instruments類(lèi)工具封裝的第一測(cè)試命令,第一測(cè)試命令包括模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù);轉(zhuǎn)換模塊,用于解析第一測(cè)試命令,并將第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,第二測(cè)試命令包括模擬動(dòng)作指令和相對(duì)應(yīng)的模擬動(dòng)作參數(shù);發(fā)送模塊,用于將第二測(cè)試命令發(fā)送至非instruments類(lèi)工具,以使非instruments類(lèi)工具解析第二測(cè)試命令,并根據(jù)模擬動(dòng)作指令和模擬動(dòng)作參數(shù)執(zhí)行相應(yīng)的模擬操作。
在一種可能的實(shí)現(xiàn)方式中,獲取模塊包括:獲取單元,用于獲取在instruments類(lèi)工具中封裝的初始測(cè)試命令,初始測(cè)試命令包括模擬動(dòng)作指令和與所述模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù);轉(zhuǎn)換單元,用于將初始測(cè)試命令轉(zhuǎn)換為JSON格式的第一測(cè)試命令。
在一種可能的實(shí)現(xiàn)方式中,模擬動(dòng)作參數(shù)包括坐標(biāo)參數(shù)和/或目標(biāo)應(yīng)用的元素標(biāo)識(shí);在所述模擬動(dòng)作參數(shù)包括坐標(biāo)參數(shù)和目標(biāo)應(yīng)用的元素標(biāo)識(shí)時(shí),所述發(fā)送模塊包括:獲取單元,用于根據(jù)所述元素標(biāo)識(shí)查找對(duì)應(yīng)的控件元素,獲取所述控件元素的位置信息;確定單元,用于根據(jù)所述控件元素的位置信息和所述坐標(biāo)參數(shù),確定對(duì)所述控件元素的操作區(qū)域;處理單元,用于根據(jù)所述模擬動(dòng)作指令,對(duì)所述控件元素在所述操作區(qū)域執(zhí)行相應(yīng)的模擬操作。
在一種可能的實(shí)現(xiàn)方式中,轉(zhuǎn)換模塊用于:根據(jù)第一測(cè)試命令生成jar包,并將jar包封裝為第二測(cè)試命令。
在一種可能的實(shí)現(xiàn)方式中,轉(zhuǎn)換模塊用于:根據(jù)預(yù)設(shè)類(lèi)型的命令將所述第一測(cè)試命令中的所述模擬動(dòng)作指令和所述模擬動(dòng)作參數(shù)傳遞至jar包中。
本發(fā)明實(shí)施例提供的一種跨進(jìn)程測(cè)試的方法及裝置,通過(guò)將基于instruments類(lèi)工具封裝的第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,從而實(shí)現(xiàn)跨進(jìn)程測(cè)試。同時(shí),由于第一測(cè)試命令為基于instruments類(lèi)工具封裝而成的命令,具有較高的穩(wěn)定性,從而可以保證第二測(cè)試命令也具有較高的穩(wěn)定性。即該方法在保證測(cè)試穩(wěn)定性的同時(shí),可以實(shí)現(xiàn)跨進(jìn)程測(cè)試。采用JSON格式的第一測(cè)試命令,方便在instruments類(lèi)工具與非instruments類(lèi)工具之間傳輸命令,方法簡(jiǎn)單且效率高。
為實(shí)現(xiàn)上述發(fā)明目的,再一方面,本發(fā)明實(shí)施例提供了一種電子設(shè)備,包括:至少一個(gè)處理器;以及與所述至少一個(gè)處理器通信連接的存儲(chǔ)器;其中,所述存儲(chǔ)器存儲(chǔ)有可被所述至少一個(gè)處理器執(zhí)行的指令,所述指令被所述至少一個(gè)處理器執(zhí)行,以使所述至少一個(gè)處理器執(zhí)行以上各個(gè)方面所述的方法。
為實(shí)現(xiàn)上述發(fā)明目的,再一方面,本申請(qǐng)實(shí)施例還提供了一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,所述計(jì)算機(jī)可執(zhí)行指令用于執(zhí)行以上各個(gè)方面所述的方法。
為實(shí)現(xiàn)上述發(fā)明目的,再一方面,本發(fā)明實(shí)施例提供了一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ)在非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包括程序指令,當(dāng)所述程序指令被計(jì)算機(jī)執(zhí)行時(shí),使所述計(jì)算機(jī)執(zhí)行以上各個(gè)方面所述的方法。
本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書(shū)中闡述,并且,部分地從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在所寫(xiě)的說(shuō)明書(shū)、權(quán)利要求書(shū)、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
附圖說(shuō)明
一個(gè)或多個(gè)實(shí)施例通過(guò)與之對(duì)應(yīng)的附圖中的圖片進(jìn)行示例性說(shuō)明,這些示例性說(shuō)明并不構(gòu)成對(duì)實(shí)施例的限定,附圖中具有相同參考數(shù)字標(biāo)號(hào)的元件表示為類(lèi)似的元件,除非有特別申明,附圖中的圖不構(gòu)成比例限制。
圖1為本發(fā)明實(shí)施例中跨進(jìn)程測(cè)試的方法流程圖;
圖2為本發(fā)明實(shí)施例中獲取第一測(cè)試命令的方法流程圖;
圖3為本發(fā)明實(shí)施例1中跨進(jìn)程測(cè)試的方法流程圖;
圖4為本發(fā)明實(shí)施例中跨進(jìn)程測(cè)試的裝置的結(jié)構(gòu)圖;
圖5為本發(fā)明實(shí)施例中獲取模塊的結(jié)構(gòu)圖;
圖6為本發(fā)明實(shí)施例中發(fā)送模塊的結(jié)構(gòu)圖;
圖7為本發(fā)明實(shí)施例中跨進(jìn)程測(cè)試的電子設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面結(jié)合附圖,對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行詳細(xì)描述,但應(yīng)當(dāng)理解本發(fā)明的保護(hù)范圍并不受具體實(shí)施方式的限制。
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。除非另有其它明確表示,否則在整個(gè)說(shuō)明書(shū)和權(quán)利要求書(shū)中,術(shù)語(yǔ)“包括”或其變換如“包含”或“包括有”等等將被理解為包括所陳述的元件或組成部分,而并未排除其它元件或其它組成部分。
在這里專(zhuān)用的詞“示例性”意為“用作例子、實(shí)施例或說(shuō)明性”。這里作為“示例性”所說(shuō)明的任何實(shí)施例不必解釋為優(yōu)于或好于其它實(shí)施例。
另外,為了更好的說(shuō)明本發(fā)明,在下文的具體實(shí)施方式中給出了眾多的具體細(xì)節(jié)。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,沒(méi)有某些具體細(xì)節(jié),本發(fā)明同樣可以實(shí)施。在一些實(shí)例中,對(duì)于本領(lǐng)域技術(shù)人員熟知的方法、手段、元件未作詳細(xì)描述,以便于凸顯本發(fā)明的主旨。
除非另有其它明確表示,否則在整個(gè)說(shuō)明書(shū)和權(quán)利要求書(shū)中,術(shù)語(yǔ)“包括”或其變換如“包含”或“包括有”等等將被理解為包括所陳述的元件或組成部分,而并未排除其它元件或其它組成部分。
根據(jù)本發(fā)明實(shí)施例,提供了一種跨進(jìn)程測(cè)試的方法,圖1為該方法的流程圖,由電子設(shè)備執(zhí)行,該方法具體包括步驟101-103:
步驟101:獲取基于instruments類(lèi)工具封裝的第一測(cè)試命令,第一測(cè)試命令包括模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù)。
本發(fā)明實(shí)施例中,instruments類(lèi)工具指的是基于instruments類(lèi)的測(cè)試工具,例如工具Robotium等。對(duì)于此類(lèi)測(cè)試工具,測(cè)試操作僅僅局限于待測(cè)應(yīng)用本身,如果待測(cè)應(yīng)用中存在與其他應(yīng)用發(fā)生交互的執(zhí)行邏輯時(shí),這種測(cè)試框架無(wú)法進(jìn)行測(cè)試,即不能實(shí)現(xiàn)調(diào)用其他進(jìn)程參與測(cè)試。例如,即時(shí)通訊進(jìn)程在使用過(guò)程中經(jīng)常需要調(diào)用網(wǎng)頁(yè)瀏覽器、終端相冊(cè)等其他進(jìn)程,instruments類(lèi)工具無(wú)法對(duì)跨進(jìn)程調(diào)用的功能進(jìn)行模擬測(cè)試。
第一測(cè)試命令為基于instruments類(lèi)工具封裝生成的命令,即基于instruments類(lèi)工具可執(zhí)行的測(cè)試命令生成該第一測(cè)試命令。該第一測(cè)試命令包括模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù)。
步驟102:解析第一測(cè)試命令,并將第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,第二測(cè)試命令包括模擬動(dòng)作指令和模擬動(dòng)作參數(shù)。
本發(fā)明實(shí)施例中,解析第一測(cè)試命令即可以確定第一測(cè)試命令中的模擬動(dòng)作指令和相對(duì)應(yīng)的模擬動(dòng)作參數(shù);進(jìn)而根據(jù)該模擬動(dòng)作指令和模擬動(dòng)作參數(shù)確定用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,即根據(jù)該第二測(cè)試命令可以調(diào)用非instruments類(lèi)工具,非instruments類(lèi)工具可以執(zhí)行該第二測(cè)試命令。同時(shí),由于第二測(cè)試命令為基于第一測(cè)試命令轉(zhuǎn)換而來(lái)的命令,故第二測(cè)試命令也包括模擬動(dòng)作指令和相對(duì)應(yīng)的模擬動(dòng)作參數(shù)。
本發(fā)明實(shí)施例中,非instruments類(lèi)工具為不需要基于instruments類(lèi)的測(cè)試工具,例如uiautomator;非instruments類(lèi)工具支持跨進(jìn)程調(diào)用。
步驟103:將第二測(cè)試命令發(fā)送至非instruments類(lèi)工具,以使非instruments類(lèi)工具解析第二測(cè)試命令,并根據(jù)模擬動(dòng)作指令和模擬動(dòng)作參數(shù)執(zhí)行模擬操作。
本發(fā)明實(shí)施例中,在將第二測(cè)試命令發(fā)送至非instruments類(lèi)工具后,非instruments類(lèi)工具即可以解析第二測(cè)試命令并獲取模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù),非instruments類(lèi)工具根據(jù)該模擬動(dòng)作指令和模擬動(dòng)作參數(shù)即可以正確的執(zhí)行相對(duì)應(yīng)的模擬操作。
本發(fā)明實(shí)施例提供的一種跨進(jìn)程測(cè)試的方法,通過(guò)將基于instruments類(lèi)工具封裝的第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,從而實(shí)現(xiàn)跨進(jìn)程測(cè)試。同時(shí),由于第一測(cè)試命令為基于instruments類(lèi)工具封裝而成的命令,具有較高的穩(wěn)定性,從而可以保證第二測(cè)試命令也具有較高的穩(wěn)定性。即該方法在保證測(cè)試穩(wěn)定性的同時(shí),可以實(shí)現(xiàn)跨進(jìn)程測(cè)試。
本發(fā)明另一實(shí)施例提供了一種跨進(jìn)程測(cè)試的方法,包括圖1所示的步驟101到步驟103,其實(shí)現(xiàn)原理和有益效果可以參考圖1所示的實(shí)施例。具體的,參見(jiàn)圖2所示,上述步驟101中的“獲取基于instruments類(lèi)工具封裝的第一測(cè)試命令,第一測(cè)試命令包括模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù)”包括步驟201-202:
步驟201:獲取在instruments類(lèi)工具中封裝的初始測(cè)試命令,初始測(cè)試命令包括模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù)。
步驟202:將初始測(cè)試命令轉(zhuǎn)換為JSON格式的第一測(cè)試命令。
本發(fā)明實(shí)施例中,初始測(cè)試命令為在instruments類(lèi)工具中封裝而成的命令,instruments類(lèi)工具可以執(zhí)行該初始測(cè)試命令。之后將初始測(cè)試命令轉(zhuǎn)換為JSON((JavaScript Object Notation,是一種輕量級(jí)的數(shù)據(jù)交換格式)格式的第一測(cè)試命令,由于JSON采用完全獨(dú)立于語(yǔ)言的文本格式,易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成,方便傳輸該第一測(cè)試命令。
具體的,以鍵值對(duì)結(jié)構(gòu)的JOSN格式為例,若需要測(cè)試點(diǎn)擊操作,此時(shí)在instruments端測(cè)試工具中封裝初始測(cè)試命令clickOnText(x,y),其中x,y參數(shù)為要點(diǎn)擊的坐標(biāo)參數(shù),假設(shè)分別為128和134;之后根據(jù)該初始測(cè)試命令即可以確定鍵值對(duì)結(jié)構(gòu)的第一測(cè)試命令:{action:”clickOnText”,parameters:”128,134”}。
其中,在一種可能的實(shí)現(xiàn)方式中,所述模擬動(dòng)作指令用于模擬用戶操作,其具體可以為:模擬點(diǎn)擊指令、模擬長(zhǎng)按指令、模擬滑動(dòng)指令等。模擬動(dòng)作參數(shù)可以包括坐標(biāo)參數(shù)和/或目標(biāo)應(yīng)用的元素標(biāo)識(shí);其中,坐標(biāo)參數(shù)即對(duì)應(yīng)操作區(qū)域的一個(gè)坐標(biāo);目標(biāo)應(yīng)用的元素標(biāo)識(shí)可以為預(yù)先設(shè)定的模擬動(dòng)作指令的觸發(fā)對(duì)象,例如目標(biāo)應(yīng)用的指定控件的名稱(chēng)、控件ID或其他用于識(shí)別控件的標(biāo)識(shí)信息。
當(dāng)模擬動(dòng)作參數(shù)包括坐標(biāo)參數(shù)和目標(biāo)應(yīng)用的元素標(biāo)識(shí)時(shí),上述步驟103中根據(jù)所述模擬動(dòng)作指令和所述模擬動(dòng)作參數(shù)執(zhí)行模擬操作具體包括:根據(jù)所述元素標(biāo)識(shí)查找對(duì)應(yīng)的控件元素,獲取所述控件元素的位置信息;根據(jù)所述控件元素的位置信息和所述坐標(biāo)參數(shù),確定對(duì)所述控件元素的操作區(qū)域;根據(jù)所述模擬動(dòng)作指令,對(duì)所述控件元素在所述操作區(qū)域執(zhí)行相應(yīng)的模擬操作。
在一種可能的實(shí)現(xiàn)方式中,將第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,包括:根據(jù)第一測(cè)試命令生成jar包,并將jar包封裝為第二測(cè)試命令。具體的,根據(jù)預(yù)設(shè)類(lèi)型的預(yù)設(shè)類(lèi)型的命令將所述第一測(cè)試命令中的所述模擬動(dòng)作指令和所述模擬動(dòng)作參數(shù)傳遞至jar包中,在一種可能的實(shí)現(xiàn)方式中,該預(yù)設(shè)類(lèi)型的命令為adb shell命令,以"adb shell"開(kāi)頭的命令,都可以先執(zhí)行adb shell命令進(jìn)入目標(biāo)設(shè)備的Linux Shell環(huán)境,然后在目標(biāo)設(shè)備的Linux Shell中再執(zhí)行"adb shell"之后的命令。如adb shell dumpsys activity,可以先執(zhí)行adb shell,然后在Linux Shell中再執(zhí)行dumpsys activity。利用adb shell命令可以方便快捷的將第一測(cè)試命令中的參數(shù)傳遞至第二測(cè)試命令中,操作簡(jiǎn)單且效率高。
本發(fā)明實(shí)施例中,根據(jù)第一測(cè)試命令生成的jar包,之后將jar包封裝為第二測(cè)試命令。具體的,一個(gè)第二測(cè)試命令具體可以如下:“adb shell uiautomator runtest UIA.jar–c com.letv.xxx.Test–e{action:”clickOnText”,parameters:”128,134”}”,非instruments類(lèi)工具接收到第二測(cè)試命令后,解析-e參數(shù)中的json{action:”clickOnText”,parameters:”128,134”},找到對(duì)應(yīng)的操作方法ClickOnText并進(jìn)行實(shí)際點(diǎn)擊操作。其中,UIA.jar是根據(jù)第一測(cè)試命令生成的jar包的名字,com.letv.xxx.Test是包名和用以調(diào)用的類(lèi)名;整句命令的作用是批處理腳本調(diào)用jar包進(jìn)行執(zhí)行對(duì)應(yīng)的測(cè)試用例com.letv.xxx.Test。
下面通過(guò)一個(gè)實(shí)施例詳細(xì)介紹該方法的流程。
在本實(shí)施例中,由instruments類(lèi)工具將初始測(cè)試命令轉(zhuǎn)換為第一測(cè)試命令。具體的,參見(jiàn)圖3所示,該方法包括:步驟301-306:
步驟301:instruments類(lèi)工具封裝初始測(cè)試命令,該初始測(cè)試命令包括模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù)。
具體的,實(shí)施例1中以點(diǎn)擊操作為例,該初始測(cè)試命令可以為clickOnText(x,y),其中x,y參數(shù)為要點(diǎn)擊的坐標(biāo)參數(shù),實(shí)施例1中分別為128和134。
步驟302:將初始測(cè)試命令轉(zhuǎn)換為JSON格式的第一測(cè)試命令,并將第一測(cè)試命令發(fā)送至中間調(diào)用服務(wù)。
具體的,第一測(cè)試命令為{action:”clickOnText”,parameters:”128,134”}。
步驟303:中間調(diào)用服務(wù)接收第一測(cè)試命令。
實(shí)施例1中,中間調(diào)用服務(wù)位于instruments類(lèi)工具和非instruments類(lèi)工具之間,用于為二者提供調(diào)用服務(wù)。
步驟304:解析第一測(cè)試命令,并將第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令。
其中,第二測(cè)試命令具體可以如下:“adb shell uiautomator runtest UIA.jar–c com.letv.xxx.Test–e{action:”clickOnText”,parameters:”128,134”}”。
步驟305:中間調(diào)用服務(wù)將第二測(cè)試命令發(fā)送至非instruments類(lèi)工具。
步驟306:非instruments類(lèi)工具解析第二測(cè)試命令,并根據(jù)模擬動(dòng)作指令和模擬動(dòng)作參數(shù)執(zhí)行相應(yīng)的模擬操作。
具體的,非instruments端工具接收到第二測(cè)試命令后,解析第二測(cè)試命令中-e參數(shù)中的json{action:”clickOnText”,parameters:”128,134”},找到對(duì)應(yīng)的操作方法ClickOnText并進(jìn)行實(shí)際點(diǎn)擊操作。
本發(fā)明實(shí)施例提供的一種跨進(jìn)程測(cè)試的方法,通過(guò)將基于instruments類(lèi)工具封裝的第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,從而實(shí)現(xiàn)跨進(jìn)程測(cè)試。同時(shí),由于第一測(cè)試命令為基于instruments類(lèi)工具封裝而成的命令,具有較高的穩(wěn)定性,從而可以保證第二測(cè)試命令也具有較高的穩(wěn)定性。即該方法在保證測(cè)試穩(wěn)定性的同時(shí),可以實(shí)現(xiàn)跨進(jìn)程測(cè)試。采用JSON格式的第一測(cè)試命令,方便在instruments類(lèi)工具與非instruments類(lèi)工具之間傳輸命令,方法簡(jiǎn)單且效率高。
以上詳細(xì)介紹了一種跨進(jìn)程測(cè)試的方法流程,該方法也可以通過(guò)相應(yīng)的裝置實(shí)現(xiàn),下面詳細(xì)介紹該裝置的結(jié)構(gòu)和功能。
本發(fā)明實(shí)施例提供的一種跨進(jìn)程測(cè)試的裝置,參見(jiàn)圖4所示,包括:獲取模塊41、轉(zhuǎn)換模塊42和發(fā)送模塊43。
獲取模塊41用于獲取基于instruments類(lèi)工具封裝的第一測(cè)試命令,第一測(cè)試命令包括模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù)。
轉(zhuǎn)換模塊42用于解析第一測(cè)試命令,并將第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,第二測(cè)試命令包括模擬動(dòng)作指令和模擬動(dòng)作參數(shù)。
發(fā)送模塊43用于將第二測(cè)試命令發(fā)送至非instruments類(lèi)工具,以使非instruments類(lèi)工具解析第二測(cè)試命令,并根據(jù)模擬動(dòng)作指令和模擬動(dòng)作參數(shù)執(zhí)行模擬操作。
在一種可能的實(shí)現(xiàn)方式中,第一測(cè)試命令為JSON格式的命令。
本發(fā)明另一實(shí)施例提供了一種跨進(jìn)程測(cè)試的裝置,包括圖4所示的獲取模塊41、轉(zhuǎn)換模塊42和發(fā)送模塊43,其實(shí)現(xiàn)原理和有益效果可以參考圖4所示的實(shí)施例。其中,本發(fā)明實(shí)施例中,參見(jiàn)圖5所示,獲取模塊41包括:獲取單元411和轉(zhuǎn)換單元412。
獲取單元411用于獲取在instruments類(lèi)工具中封裝的初始測(cè)試命令,初始測(cè)試命令包括模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù)。轉(zhuǎn)換單元412用于將初始測(cè)試命令轉(zhuǎn)換為JSON格式的第一測(cè)試命令。
在一種可能的實(shí)現(xiàn)方式中,模擬動(dòng)作參數(shù)包括坐標(biāo)參數(shù)和/或目標(biāo)應(yīng)用的元素標(biāo)識(shí)。在模擬動(dòng)作參數(shù)包括坐標(biāo)參數(shù)和目標(biāo)應(yīng)用的元素標(biāo)識(shí)時(shí),參見(jiàn)圖6所示,發(fā)送模塊43包括:獲取單元431、確定單元432和處理單元433。
獲取單元431用于根據(jù)元素標(biāo)識(shí)查找對(duì)應(yīng)的控件元素,獲取控件元素的位置信息。
確定單元432用于根據(jù)控件元素的位置信息和坐標(biāo)參數(shù),確定對(duì)控件元素的操作區(qū)域。
處理單元433用于根據(jù)模擬動(dòng)作指令,對(duì)控件元素在操作區(qū)域執(zhí)行相應(yīng)的模擬操作。
在一種可能的實(shí)現(xiàn)方式中,轉(zhuǎn)換模塊42具體用于:根據(jù)第一測(cè)試命令生成jar包,并將jar包封裝為第二測(cè)試命令。
在一種可能的實(shí)現(xiàn)方式中,轉(zhuǎn)換模塊42用于:根據(jù)預(yù)設(shè)類(lèi)型的命令將第一測(cè)試命令中的模擬動(dòng)作指令和模擬動(dòng)作參數(shù)傳遞至jar包中。
本發(fā)明實(shí)施例提供的一種跨進(jìn)程測(cè)試的方法及裝置,通過(guò)將基于instruments類(lèi)工具封裝的第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,從而實(shí)現(xiàn)跨進(jìn)程測(cè)試。同時(shí),由于第一測(cè)試命令為基于instruments類(lèi)工具封裝而成的命令,具有較高的穩(wěn)定性,從而可以保證第二測(cè)試命令也具有較高的穩(wěn)定性。即該方法在保證測(cè)試穩(wěn)定性的同時(shí),可以實(shí)現(xiàn)跨進(jìn)程測(cè)試。采用JSON格式的第一測(cè)試命令,方便在instruments類(lèi)工具與非instruments類(lèi)工具之間傳輸命令,方法簡(jiǎn)單且效率高。
本申請(qǐng)實(shí)施例提供了一種非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì),所述計(jì)算機(jī)存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,該計(jì)算機(jī)可執(zhí)行指令可執(zhí)行上述任意方法實(shí)施例中的處理方法。
圖7是本申請(qǐng)實(shí)施例提供的跨進(jìn)程測(cè)試的方法的電子設(shè)備的硬件結(jié)構(gòu)示意圖,如圖7所示,該設(shè)備包括一個(gè)或多個(gè)處理器610以及存儲(chǔ)器620。圖7中以一個(gè)處理器610為例。該設(shè)備還可以包括:輸入裝置630和輸出裝置640。
處理器610、存儲(chǔ)器620、輸入裝置630和輸出裝置640可以通過(guò)總線或者其他方式連接,圖7中以通過(guò)總線連接為例。
存儲(chǔ)器620作為一種非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),可用于存儲(chǔ)非易失性軟件程序、非易失性計(jì)算機(jī)可執(zhí)行程序以及模塊。處理器610通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器620中的非易失性軟件程序、指令以及模塊,從而執(zhí)行電子設(shè)備的各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述方法實(shí)施例的處理方法。
存儲(chǔ)器620可以包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需要的應(yīng)用程序;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)數(shù)據(jù)等。此外,存儲(chǔ)器620可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤(pán)存儲(chǔ)器件、閃存器件、或其他非易失性固態(tài)存儲(chǔ)器件。在一些實(shí)施例中,存儲(chǔ)器620可選包括相對(duì)于處理器610遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過(guò)網(wǎng)絡(luò)連接至處理裝置。上述網(wǎng)絡(luò)的實(shí)例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動(dòng)通信網(wǎng)及其組合。
輸入裝置630可接收輸入的數(shù)字或字符信息,以及產(chǎn)生信號(hào)輸入。輸出裝置640可包括顯示屏等顯示設(shè)備。
所述一個(gè)或者多個(gè)模塊存儲(chǔ)在所述存儲(chǔ)器620中,當(dāng)被所述一個(gè)或者多個(gè)處理器610執(zhí)行時(shí),執(zhí)行:獲取基于instruments類(lèi)工具封裝的第一測(cè)試命令,第一測(cè)試命令包括模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù);解析第一測(cè)試命令,并將第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,第二測(cè)試命令包括模擬動(dòng)作指令和模擬動(dòng)作參數(shù);將第二測(cè)試命令發(fā)送至非instruments類(lèi)工具,以使非instruments類(lèi)工具解析第二測(cè)試命令,并根據(jù)模擬動(dòng)作指令和模擬動(dòng)作參數(shù)執(zhí)行模擬操作。
在一種可能的實(shí)現(xiàn)方式中,第一測(cè)試命令為JSON格式的命令。
在一種可能的實(shí)現(xiàn)方式中,獲取基于instruments類(lèi)工具封裝的第一測(cè)試命令,包括:獲取在instruments類(lèi)工具中封裝的初始測(cè)試命令,初始測(cè)試命令包括模擬動(dòng)作指令和與模擬動(dòng)作指令對(duì)應(yīng)的模擬動(dòng)作參數(shù);將初始測(cè)試命令轉(zhuǎn)換為JSON格式的第一測(cè)試命令。
在一種可能的實(shí)現(xiàn)方式中,模擬動(dòng)作參數(shù)包括坐標(biāo)參數(shù)和/或目標(biāo)應(yīng)用的元素標(biāo)識(shí);在模擬動(dòng)作參數(shù)包括坐標(biāo)參數(shù)和目標(biāo)應(yīng)用的元素標(biāo)識(shí)時(shí),根據(jù)模擬動(dòng)作指令和模擬動(dòng)作參數(shù)執(zhí)行模擬操作具體包括:根據(jù)元素標(biāo)識(shí)查找對(duì)應(yīng)的控件元素,獲取控件元素的位置信息;根據(jù)控件元素的位置信息和坐標(biāo)參數(shù),確定對(duì)控件元素的操作區(qū)域;根據(jù)模擬動(dòng)作指令,對(duì)控件元素在操作區(qū)域執(zhí)行相應(yīng)的模擬操作。
在一種可能的實(shí)現(xiàn)方式中,將第一測(cè)試命令轉(zhuǎn)換為用于調(diào)用非instruments類(lèi)工具的第二測(cè)試命令,包括:根據(jù)第一測(cè)試命令生成jar包,并將jar包封裝為第二測(cè)試命令。
在一種可能的實(shí)現(xiàn)方式中,根據(jù)第一測(cè)試命令生成jar包包括:根據(jù)預(yù)設(shè)類(lèi)型的命令將第一測(cè)試命令中的模擬動(dòng)作指令和模擬動(dòng)作參數(shù)傳遞至jar包中。
上述產(chǎn)品可執(zhí)行本申請(qǐng)實(shí)施例所提供的方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。未在本實(shí)施例中詳盡描述的技術(shù)細(xì)節(jié),可參見(jiàn)本申請(qǐng)實(shí)施例所提供的方法。
本申請(qǐng)實(shí)施例的電子設(shè)備以多種形式存在,包括但不限于:
(1)移動(dòng)通信設(shè)備:這類(lèi)設(shè)備的特點(diǎn)是具備移動(dòng)通信功能,并且以提供話音、數(shù)據(jù)通信為主要目標(biāo)。這類(lèi)終端包括:智能手機(jī)(例如iPhone)、多媒體手機(jī)、功能性手機(jī),以及低端手機(jī)等。
(2)超移動(dòng)個(gè)人計(jì)算機(jī)設(shè)備:這類(lèi)設(shè)備屬于個(gè)人計(jì)算機(jī)的范疇,有計(jì)算和處理功能,一般也具備移動(dòng)上網(wǎng)特性。這類(lèi)終端包括:PDA、MID和UMPC設(shè)備等,例如iPad。
(3)便攜式娛樂(lè)設(shè)備:這類(lèi)設(shè)備可以顯示和播放多媒體內(nèi)容。該類(lèi)設(shè)備包括:音頻、視頻播放器(例如iPod),掌上游戲機(jī),電子書(shū),以及智能玩具和便攜式車(chē)載導(dǎo)航設(shè)備。
(4)服務(wù)器:提供計(jì)算服務(wù)的設(shè)備,服務(wù)器的構(gòu)成包括處理器、硬盤(pán)、內(nèi)存、系統(tǒng)總線等,服務(wù)器和通用的計(jì)算機(jī)架構(gòu)類(lèi)似,但是由于需要提供高可靠的服務(wù),因此在處理能力、穩(wěn)定性、可靠性、安全性、可擴(kuò)展性、可管理性等方面要求較高。
(5)其他具有數(shù)據(jù)交互功能的電子裝置。
以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助軟件加通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件?;谶@樣的理解,上述技術(shù)方案本質(zhì)上或者說(shuō)對(duì)相關(guān)技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
最后應(yīng)說(shuō)明的是:以上實(shí)施例僅用以說(shuō)明本申請(qǐng)的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本申請(qǐng)進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本申請(qǐng)各實(shí)施例技術(shù)方案的精神和范圍。