接口 102可以與存儲器150相耦合。該存儲器150可以包括高速隨機(jī)存取存儲器和/或非易失性存儲器,例如一個或多個磁盤存儲設(shè)備,一個或多個光學(xué)存儲設(shè)備,和/或閃存存儲器(例如NAND,N0R)。存儲器150可以存儲操作系統(tǒng)152,例如Android、1S或是Windows Phone之類的操作系統(tǒng)。該操作系統(tǒng)152可以包括用于處理基本系統(tǒng)服務(wù)以及執(zhí)行依賴于硬件的任務(wù)的指令。存儲器150還可以存儲應(yīng)用154。這些應(yīng)用在操作時,會從存儲器150加載到處理器104上,并在已經(jīng)由處理器104運(yùn)行的操作系統(tǒng)之上運(yùn)行,并利用操作系統(tǒng)以及底層硬件提供的接口實現(xiàn)各種用戶期望的功能,如即時通信、網(wǎng)頁瀏覽、圖片管理等。應(yīng)用可以是獨立于操作系統(tǒng)提供的,也可以是操作系統(tǒng)自帶的。
[0027]根據(jù)本發(fā)明的一個實施例,提供了一種具有基于文本執(zhí)行自動化測試裝置的移動終端100,可以通過布置在移動終端100上的基于文本執(zhí)行自動化測試裝置300實現(xiàn)該功能。根據(jù)某些實施例,該裝置300作為一種應(yīng)用存儲于應(yīng)用154中。
[0028]圖2示出了根據(jù)本發(fā)明一個實施例的在移動終端100上基于文本執(zhí)行自動化測試方法200的流程圖。
[0029]如圖2所示,該方法始于步驟S210。在步驟S210中,根據(jù)預(yù)定文本規(guī)則編寫測試步驟并保存為測試文本。在這里,預(yù)定文本規(guī)則包括根據(jù)操作動作預(yù)定義的動作語句、控制語句、斷言語句、語句分隔符。其中,動作語句用來聲明測試人員想要執(zhí)行的某個動作;控制語句用來控制動作;斷言語句用來作結(jié)果判斷,來判斷執(zhí)行測試結(jié)果;語句分隔符用來修飾前面三種語句。例如,“點擊坐標(biāo)(360,100)”,按規(guī)則需要寫成:點擊I坐標(biāo)I 360 1100,其中“I”就是語句分隔修飾符。
[0030]下面詳細(xì)闡述該預(yù)定義的文本規(guī)則。
[0031](I)動作語句。包括:點擊、長按、滑動、打開、截屏、等待、輸入等操作動作。
[0032]其中“點擊”又可以分為:點擊屏幕坐標(biāo)、點擊物理按鍵、點擊文本對象。具體地,
[0033]點擊屏幕坐標(biāo):以語句分隔修飾符“ I ”來分割X,y坐標(biāo)。例如,點擊I坐標(biāo)360 I 720 ;
[0034]點擊物理按鍵:定義物理按鍵包含HOME、MENU、BACK、CAMERA、POWER(滅屏/亮屏)、V0LUME_UP、V0LUME_D0WN等七個按鍵。要求按鍵部分為英文大寫。例如,點擊I按鍵
HOME ;
[0035]點擊文本對象:例如,點擊I文本I設(shè)置。
[0036]“長按”又可以分為:長按屏幕坐標(biāo)和長按文本對象。具體地,
[0037]長按屏幕坐標(biāo):以“ I ”來分割X,y坐標(biāo)。例如,長按I坐標(biāo)I 360 | 720 ;
[0038]長按文本對象:例如,長按I文本I設(shè)置。
[0039]“滑動”操作分為以下兩種:
[0040]左右方向滑動:直接寫出滑動的方向,例如,滑動I從左到右、滑動I從右到左;
[0041]滑動屏幕坐標(biāo):滑動I坐標(biāo)I fromXl fromYl toX| toY。例:滑動I坐標(biāo)100 1100 I 600 11200。
[0042]“打開”操作分為以下兩種:
[0043]打開應(yīng)用程序:打開I程序名稱。例如,打開I聯(lián)系人;
[0044]打開狀態(tài)欄:打開I狀態(tài)欄。
[0045]“截屏”操作可以分為以下兩種:
[0046]無備注的截屏方式:例如,截屏;
[0047]添加備注的截屏方式:例:截屏I備注內(nèi)容。
[0048]“等待”操作要定義等待的時間:等待I等待時間(ms),例如,等待|1000。
[0049]“輸入”操作:輸入I要輸入的文本I要輸入的位置。例如,要表示在屏幕坐標(biāo)點(100, 300)的位置輸入“測試測試”四個字,可以表示為:輸入I測試測試100 I 300o (2)控制語句。包括:循環(huán)、外循環(huán)、內(nèi)循環(huán)、等待消失、等待出現(xiàn)、異常中斷等操作動作。
[0050]其中,“循環(huán)”操作是控制整個語句中的循環(huán)情況,通過循環(huán)語句可以定義測試文本中的測試運(yùn)行參數(shù)。例如,循環(huán)110{截屏}表示連續(xù)10次截屏。
[0051]“外循環(huán)”是指控制整條Case的外循環(huán)。一般在一個測試腳本中僅出現(xiàn)I次,建議放于首行。例如,外循環(huán)I 2。
[0052]“內(nèi)循環(huán)”是指控制部分Case步驟循環(huán),一般放在要循環(huán)步驟之前,在一個測試腳本中可出現(xiàn)多次,但不可嵌套循環(huán)。并且在寫法中需明確指定該語句之后的幾行以及循環(huán)次數(shù)。例如,內(nèi)循環(huán)I 3 I 2表示將該語句之后的3行語句循環(huán)2次。
[0053]“等待出現(xiàn)”指在某一段特定的時間內(nèi),等待某一個文本對象出現(xiàn)后進(jìn)行下一個操作。例如,等待出現(xiàn)I文本I設(shè)置I表示當(dāng)文本出現(xiàn)時,進(jìn)行設(shè)置。
[0054]“等待消失”指在某一段特定的時間內(nèi),等待某一個文本對象消失后進(jìn)行下一個操作。例如,等待消失I文本I設(shè)置I表示當(dāng)文本對象結(jié)束后,進(jìn)行設(shè)置。
[0055]“異常中斷”指當(dāng)測試腳本拋出異常,如點擊了不存在的對象、或者發(fā)生錯誤,如驗證某個對象存在時,設(shè)定是否中斷當(dāng)前Case。默認(rèn)為不中斷。例如,異常中斷I是。
[0056](3)斷言語句,在測試中,常會進(jìn)行一些驗證操作,判斷某種情況或狀態(tài)是否存在,此時就需要引入斷言語句。包括如下兩種:
[0057]驗證存在,例如存在文本對象,驗證存在I文本I設(shè)置;
[0058]驗證不存在,例如不存在文本對象,驗證不存在I文本I設(shè)置。
[0059](4)語句分割修飾符,用諸如“ I,,、“#,,、“ {} ”、“ O ”、“,”等符號來斷句。例如,
[0060]1:用來分割動作與動作對象、控制與控制對象、斷言與斷言對象;
[0061]#:用來注釋文本;
[0062]{}:用來控制循環(huán)部分,{}內(nèi)的語句將循環(huán)執(zhí)行;
[0063]():用來修飾對象,如坐標(biāo)(100,100);
[0064],:用來分割對象。
[0065]根據(jù)上述預(yù)定義的文本規(guī)則編寫測試步驟,然后保存為測試文本。根據(jù)本發(fā)明的實施方式,測試文本可以是txt、doc, excel等格式。如圖4示出了根據(jù)本發(fā)明一個實施例的測試文本的示意圖。
[0066]應(yīng)當(dāng)注意的是,在本發(fā)明中,可以在PC上寫好測試文本然后將文本導(dǎo)入到移動終端,由移動終端完成后續(xù)的解析和驅(qū)動測試任務(wù);也可以在移動終端中編寫測試文本并保存,然后開啟測試。對于在何種設(shè)備上完成測試文本的編寫工作并不做限制,這與傳統(tǒng)的由PC生成相應(yīng)指令去驅(qū)動移動終端進(jìn)行各種操作的測試方式不同,本方案中,移動終端可以獨立完成自動化測試,一方面降低了測試成本的投入,另一方面也避免了 PC和移動終端進(jìn)行數(shù)據(jù)傳輸時的一些不穩(wěn)定因素,例如測試過程中連接斷開。
[0067]隨后在步驟S220中,啟動測試,通過中間件解析測試文本,得到測試腳本。根據(jù)本發(fā)明的一個實施例,中間件就是一個可執(zhí)行的jar文件,一般情況下,該jar文件被放置在移動終端100應(yīng)用中的assets文件夾中,作為一種資源文件形式進(jìn)行處理。當(dāng)需要開啟自動化測試、解析測試文本時,響應(yīng)于測試命令(例如,測試人員可以通過點擊移動終端100中的響應(yīng)按鍵開啟自動化測試),會將該中間件導(dǎo)出至指定目錄,例如,規(guī)定指定目錄的路徑為/sdcard/autotest/Script,當(dāng)然,該路徑可以自定義,根據(jù)本發(fā)明的一個實施例,將中間件導(dǎo)出至一個名為Script的目錄下,在該目錄下可以自己通過路徑形式來組織文本套件。例如,針對移動終端100中的聯(lián)系人寫50個自動化測試文本腳本,可以放在/sdcard/autotest/Script/contacts/路徑下,其中contacts為用戶自己設(shè)置的文件夾路徑。在執(zhí)行的時候可以選擇執(zhí)行contacts下所有的文本腳本,從而達(dá)到管理文本腳本的目的。
[0068]移動終端100通過執(zhí)行shell命令,調(diào)用該中間件,識別測試文本中的操作動作,并通過中間件將所識別的操作動作解析成腳本語言,得到測試腳本。
[0069]隨后在步驟S230中,逐句解析測試腳