安卓設(shè)備的跨進(jìn)程自動化測試方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例涉及計算機(jī)技術(shù),尤其涉及一種安卓(英文:Android)設(shè)備的跨進(jìn)程自動化測試方法和裝置。
【背景技術(shù)】
[0002]當(dāng)前常見的Android設(shè)備的模擬按鍵和觸屏事件的自動化測試方法有Monkey,MonkeyRunner, Adb shell 腳本,Robotium 等方式。
[0003]具體的,Monkey方法的本質(zhì)是使用Adb shell命令,隨機(jī)模擬按鍵或觸屏事件,需要USB連接Android設(shè)備。Monkeyrunner是一個應(yīng)用程序編程接口(英文!Applicat1nProgramming Interface,簡稱:API)工具包,可以基于Python模塊和程序開發(fā)一整套系統(tǒng),以此來控制Android設(shè)備,需要USB連接Android設(shè)備進(jìn)行測試。Adb shell腳本是將設(shè)備通過USB連接在電腦上,模擬按鍵和觸屏事件進(jìn)行自動化測試。Robotium,對Android設(shè)備的每個應(yīng)用程序的進(jìn)行黑盒自動化、模擬操作和手勢進(jìn)行測試。
[0004]然而,現(xiàn)存的測試方法,或者需要獨占USB,將Android設(shè)備連接在測試設(shè)備上,或者只能對每個Android設(shè)備的應(yīng)用程序一一進(jìn)行測試,使對于Android設(shè)備的測試場景比較局限,并且測試穩(wěn)定性較低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供的安卓設(shè)備的跨進(jìn)程自動化測試方法和裝置,解決了現(xiàn)有技術(shù)中對安卓設(shè)備的測試方法中需要獨占USB、或者只能對每個應(yīng)用程序進(jìn)行單獨測試,導(dǎo)致的測試穩(wěn)定性較低的問題。
[0006]本發(fā)明實施例第一方面提供一種安卓設(shè)備的跨進(jìn)程自動化測試方法,包括:
[0007]根據(jù)預(yù)先設(shè)置待測設(shè)備的測試用例,調(diào)用所述待測設(shè)備的應(yīng)用程序編程接口 API,將所述測試用例分解為與每個按鍵觸屏事件對應(yīng)的動作組成的動作序列;
[0008]根據(jù)測試需求和所述動作序列,定制至少一個按鍵觸屏事件序列;其中,每個按鍵觸屏事件序列中包括至少一個按鍵觸屏事件對應(yīng)的動作;
[0009]獲取所述待測設(shè)備的訪問權(quán)限,并根據(jù)預(yù)先設(shè)置的測試次數(shù),重復(fù)執(zhí)行所述至少一個按鍵觸屏事件序列中每個按鍵觸屏事件對應(yīng)的動作并記錄每個按鍵觸屏事件的日志。
[0010]本發(fā)明實施例第二方面提供一種安卓設(shè)備的跨進(jìn)程自動化測試裝置,包括:
[0011]處理模塊,用于根據(jù)預(yù)先設(shè)置待測設(shè)備的測試用例,調(diào)用所述待測設(shè)備的應(yīng)用程序編程接口 API,將所述測試用例分解為與每個按鍵觸屏事件對應(yīng)的動作組成的動作序列;
[0012]所述處理模塊還用于根據(jù)測試需求和所述動作序列,定制至少一個按鍵觸屏事件序列;其中,每個按鍵觸屏事件序列中包括至少一個按鍵觸屏事件對應(yīng)的動作;
[0013]獲取模塊,用于獲取所述待測設(shè)備的訪問權(quán)限;
[0014]所述處理模塊還用于根據(jù)所述訪問權(quán)限、預(yù)先設(shè)置的測試次數(shù),重復(fù)執(zhí)行所述至少一個按鍵觸屏事件序列中每個按鍵觸屏事件對應(yīng)的動作并記錄每個按鍵觸屏事件的日
ο
[0015]本發(fā)明實施例提供的安卓設(shè)備的跨進(jìn)程自動化測試方法和裝置,通過根據(jù)之前對設(shè)備測試經(jīng)驗來設(shè)置測試用例,調(diào)用待測設(shè)備隱藏的API將測試用例分解為與按鍵觸屏事件對應(yīng)的多個動作的序列,然后根據(jù)測試需求以及動作序列定制對待測設(shè)備用于測試的按鍵觸屏事件序列,獲取待測設(shè)備的觸屏操作權(quán)限并執(zhí)行按鍵觸屏事件序列中的事件,完成對待測設(shè)備的測試,該測試過程不需要連接USB,且由于按鍵和按鍵觸屏事件是獨立于被控制程序的,所以可以同時跨進(jìn)程控制多個應(yīng)用程序,有效提高了自動化測試的穩(wěn)定性。
【附圖說明】
[0016]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0017]圖1為本發(fā)明安卓設(shè)備的跨進(jìn)程自動化測試方法實施例一的流程圖;
[0018]圖2為本發(fā)明安卓設(shè)備的跨進(jìn)程自動化測試方法實施例二的流程圖;
[0019]圖3為本發(fā)明安卓設(shè)備的跨進(jìn)程自動化測試裝置實施例一的結(jié)構(gòu)示意圖。
【具體實施方式】
[0020]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0021]本發(fā)明實施例提供的技術(shù)方案可以用于對安卓系統(tǒng)的各類終端設(shè)備進(jìn)行模擬按鍵和按鍵觸屏事件的自動化測試,該類設(shè)備包括:手機(jī)、平板、智能終端等,也可以參照該方式對其他系統(tǒng)類型的設(shè)備進(jìn)行測試。
[0022]圖1為本發(fā)明安卓設(shè)備的跨進(jìn)程自動化測試方法實施例一的流程圖,如圖1所示,本實施例提供的安卓設(shè)備的跨進(jìn)程自動化測試方法的具體步驟為:
[0023]SlOl:根據(jù)預(yù)先設(shè)置待測設(shè)備的測試用例,調(diào)用所述待測設(shè)備的應(yīng)用程序編程接口 API,將所述測試用例分解為與每個按鍵觸屏事件對應(yīng)的動作組成的動作序列。
[0024]在本實施例中,針對Android設(shè)備,可以使用Android隱藏API調(diào)用,將Android設(shè)備的測試用例分解為一組獨立連續(xù)的動作序列,將動作序列映射為按鍵或者按鍵觸屏事件。
[0025]S102:根據(jù)測試需求和所述動作序列,定制至少一個按鍵觸屏事件序列;其中,每個按鍵觸屏事件序列中包括至少一個按鍵觸屏事件對應(yīng)的動作。
[0026]在本實施例中,按鍵或按鍵觸屏事件序列,可以根據(jù)測試需求進(jìn)行任意的定制:按鍵事件可以通過事件行為(按下,抬起,長按),以及Androd系統(tǒng)的待測設(shè)備提供的鍵值進(jìn)行定制。
[0027]S103:獲取所述待測設(shè)備的訪問權(quán)限,并根據(jù)預(yù)先設(shè)置的測試次數(shù),重復(fù)執(zhí)行所述至少一個按鍵觸屏事件序列中每個按鍵觸屏事件對應(yīng)的動作并記錄每個按鍵觸屏事件的日志。
[0028]在本實施例中,在序列定制中,可加入自動化測試常用的重復(fù)次數(shù),以及模擬事件之間的等待時間,待測設(shè)備根據(jù)重復(fù)次數(shù)或者等待時間,按順序執(zhí)行按鍵觸屏事件序列中的每個動作,并根據(jù)現(xiàn)有的記錄方式,記錄下執(zhí)行動作的日志,以供測試人員根據(jù)該日志確定待測設(shè)備的情況。
[0029]本實施例提供的安卓設(shè)備的跨進(jìn)程自動化測試方法,通過根據(jù)之前對設(shè)備測試經(jīng)驗來設(shè)置測試用例,調(diào)用待測設(shè)備隱藏的API將測試用例分解為與按鍵觸屏事件對應(yīng)的多個動作的序列,然后根據(jù)測試需求以及動作序列定制對待測設(shè)備用于測試的按鍵觸屏事件序列,獲取待測設(shè)備的觸屏操作權(quán)限并執(zhí)行按鍵觸屏事件序列中的事件,完成對待測設(shè)備的測試,該測試過程不需要連接USB,且由于按鍵和按鍵觸屏事件是獨立于被控制程序的,所以可以同時跨進(jìn)程控制多個應(yīng)用程序,有效提高了自動化測試的穩(wěn)定性。
[0030]圖2為本發(fā)明安卓設(shè)備的跨進(jìn)程自動化測試方法實施例二的流程圖,如圖2所示,在上述實施例一的基礎(chǔ)上,該安卓設(shè)備的跨進(jìn)程自動化測試方法的具體實現(xiàn)步驟為:
[0031]S201:根據(jù)所述待測設(shè)備的系統(tǒng)平臺版本,獲取所述待測設(shè)備的系統(tǒng)平臺源代碼,完成所述API調(diào)用。
[0032]S202:獲取所述待測設(shè)備的按鍵和觸屏的控制權(quán)限。
[0033]在本實施例中,根據(jù)Android系統(tǒng)的待測設(shè)備所使用的Android平臺版本,獲取相應(yīng)Android平臺源代碼,完全編譯獲得classes, jar,我們使用jar包中IWindowManager接口(自Android V4.2后,接口改為IInputManager),在待測設(shè)備的應(yīng)用程序中使用該接口的方法,獲得對按鍵和觸屏的控制權(quán)。
[0034]S203:根據(jù)預(yù)先設(shè)置待測設(shè)備的測試用例,調(diào)用所述待測設(shè)備的應(yīng)用程序編程接口 API,將所述測試用例分解為與每個按鍵觸屏事件對應(yīng)的動作組成的動作序列。
[0035]在本實施例中,可以使用Android隱藏API調(diào)用,將Android設(shè)備的測試用例分解為一組獨立連續(xù)的動作序列,將動作序列映射為按鍵或者觸屏事件,即該按鍵觸屏事件既包括按鍵事件也包括觸屏事件。
[0036]S204:根據(jù)測試需求查詢所述動作序列,獲取所述測試需求對應(yīng)的至少一個動作。
[0037]S205:根據(jù)所述測試需求對應(yīng)的至少一個動作和所述待測設(shè)備的觸屏的X軸和Y軸的像素點,獲取所述測試需求對應(yīng)的每個動作對應(yīng)的像素點集合。
[0038]在本實施例中,按鍵觸屏事件可以通過觸屏行為(按下,抬起,移動,長按),以及屏幕的X軸和Y軸的像素點進(jìn)行定制。
[0039]S206:將所述測試需求對應(yīng)的所述每個動作對應(yīng)的像素點集合按照所述測試需求定制生成至少一個按鍵觸屏事件序列;其中,每個所述按鍵觸屏事件序列包括至少一個按鍵觸屏事件的動作對應(yīng)的像素點集合。
[0040]在本實施例中,按鍵或按鍵觸屏事件序列,可以根據(jù)測試需求進(jìn)行任意的定制:按鍵事件可以通過事件行為(按下,抬起,長按),以及Androd設(shè)備提供的鍵值進(jìn)行定制;在序列定制中,可加入自動化測試常用的重復(fù)次數(shù),以及模擬事件之間的等待時間。一組按鍵和觸屏決定的按鍵觸屏事件序列的組合可以進(jìn)一步抽象為一個動作原語。比如一個組呼的操作可以由一組固定的按鍵和按鍵觸屏事件序列組合而成。
[0041]S207:根據(jù)所述待測設(shè)備的系統(tǒng)平臺版本,獲取所述待測設(shè)備的系統(tǒng)平臺簽名。
[0042]在本實施例中,為了獲得對相應(yīng)平臺的底層設(shè)備訪問權(quán)限,還需要獲得平臺的簽名。
[0043]S208:根據(jù)所述待測設(shè)備的系統(tǒng)平臺簽名進(jìn)行平臺簽名操作,獲取所述待測設(shè)備的訪問權(quán)限。
[0044]在本實施例中,測試中使用了模擬按鍵和觸屏事件接口,Android規(guī)定如果應(yīng)用使用了該接口,就必須對應(yīng)用進(jìn)行Android平臺簽名,簽名后的測試程序才能夠安裝到Android設(shè)備中。
[0045]所述待測設(shè)備的訪問權(quán)限