實(shí)施例提供一種批量移動終端的測試方式,首先用戶可選擇需要進(jìn)行測試的移動終端,以及可針對不同移動終端進(jìn)行測試用例的設(shè)置,例如,用戶可為每臺移動終端選擇不同的測試用例,也可以為多臺移動終端選擇相同的測試用例。具體的,用戶可以通過腳本分發(fā)模塊基于測試服務(wù)器提供的特定界面輸入測試指令;所述腳本分發(fā)模塊接收到測試指令時(shí),顯示移動終端以及測試用例的選擇界面,以供用戶基于所述選擇界面進(jìn)行移動終端以及對應(yīng)測試用例的選擇,用戶可根據(jù)實(shí)際需要進(jìn)行移動終端以及測試用例的選擇,例如,在同批次的10臺手機(jī)的穩(wěn)定性測試中,3臺手機(jī)對應(yīng)前述多媒體播放穩(wěn)定性測試用例,2臺手機(jī)對應(yīng)網(wǎng)頁瀏覽穩(wěn)定性測試用例,5臺手機(jī)對應(yīng)短信收發(fā)穩(wěn)定性測試用例。在完成測試用例選擇之后,腳本分發(fā)模塊基于測試用例與測試腳本之間的映射關(guān)系,獲取各個(gè)移動終端對應(yīng)的測試腳本,并將獲取的測試腳本分發(fā)至各測試腳本對應(yīng)的移動終端,供其執(zhí)行并返回執(zhí)行日志。
[0108]進(jìn)一步的,基于第三實(shí)施例,提出本發(fā)明測試腳本生成裝置的第四實(shí)施例,在本實(shí)施例中,所述測試腳本生成裝置還包括故障定位模塊,用于在接收到所述移動終端返回的執(zhí)行日志時(shí),獲取所述移動終端執(zhí)行所述測試腳本期間的運(yùn)行日志;以及基于獲取的所述運(yùn)行日志進(jìn)行故障定位。
[0109]需要說明的是,移動終端在工作過程中,實(shí)時(shí)記錄其執(zhí)行控制指令進(jìn)行的操作、以及其執(zhí)行操作時(shí)的相關(guān)運(yùn)行參數(shù)等,生成運(yùn)行日志。本實(shí)施例中,故障定位模塊在基于測試服務(wù)器在接收到移動終端返回的測試腳本的執(zhí)行日志時(shí),基于所述執(zhí)行日志包括的時(shí)間信息,獲取所述移動終端執(zhí)行所述測試腳本期間的運(yùn)行日志,以根據(jù)所述執(zhí)行日志包括的控制指令的執(zhí)行結(jié)果,以及所述運(yùn)行日志中所述移動終端執(zhí)行所述控制指令的相關(guān)運(yùn)行參數(shù),進(jìn)行故障定位,研發(fā)人員可以根據(jù)故障定位的結(jié)果盡早排除故障。
[0110]例如,當(dāng)對基于Android系統(tǒng)的手機(jī)進(jìn)行穩(wěn)定性測試時(shí),故障定位模塊可通過調(diào)用手機(jī)的Logcat類獲取手機(jī)執(zhí)行測試腳本期間的運(yùn)行日志,以進(jìn)行故障定位。
[0111]進(jìn)一步的,本實(shí)施例提供了運(yùn)行日志獲取工具,該運(yùn)行日志獲取工具內(nèi)嵌于移動終端的系統(tǒng)運(yùn)行,故障定位模塊可通過調(diào)用該運(yùn)行日志獲取工具提取移動終端執(zhí)行測試腳本期間的運(yùn)行日志。
[0112]進(jìn)一步的,基于第一實(shí)施例,提出本發(fā)明測試腳本生成裝置的第五實(shí)施例,在本實(shí)施例中,所述測試腳本生成裝置還包括更新模塊,用于在接收到更新指令時(shí),更新測試步驟與控制指令之間的映射關(guān)系。
[0113]可以理解的是,隨著技術(shù)進(jìn)步,MTBF測試標(biāo)準(zhǔn)也是不斷更新的。本實(shí)施例中,在MTBF測試標(biāo)準(zhǔn)更新時(shí),觸發(fā)更新指令,更新模塊更新測試步驟與控制指令之間的映射關(guān)系。例如,更新后的MTBF測試標(biāo)準(zhǔn)的視頻播放功能使用情況測試步驟刪減了音量調(diào)節(jié)動作,則需要相應(yīng)更新測試步驟與控制指令之間的映射關(guān)系。本發(fā)明實(shí)施例通過更新測試步驟與控制指令之間的映射關(guān)系,能夠滿足用戶不斷變化的測試需求。
[0114]本發(fā)明進(jìn)一步提供一種測試腳本生成方法,參照圖5,在本發(fā)明測試腳本生成方法的第一實(shí)施例中,所述測試腳本生成方法包括:
[0115]步驟S10,獲取預(yù)設(shè)平均故障間隔時(shí)間MTBF測試流程中各個(gè)測試步驟對應(yīng)的控制指令;
[0116]本實(shí)施例提供的測試腳本生成方法,可以應(yīng)用于手機(jī)、筆記本電腦、數(shù)字廣播接收器、PDA(個(gè)人數(shù)字助理)、PAD (平板電腦)、PMP (便攜式多媒體播放器)等移動終端的MTBF(Mean Time Between Failure,平均故障間隔時(shí)間)測試中,例如,在進(jìn)行批量手機(jī)的MTBF測試時(shí),基于Uiautomator框架編寫測試腳本,可供不同屏幕大小的手機(jī)執(zhí)行,而無需重復(fù)編寫測試腳本。
[0117]需要說明的是,不同的通信運(yùn)營商擁有各自的MTBF測試標(biāo)準(zhǔn),例如國外的AT&T和我國的中國移動的MTBF測試標(biāo)準(zhǔn)不同,具體由測試用例體現(xiàn)。以下實(shí)施例以基于Android系統(tǒng)的移動終端為例進(jìn)行說明。
[0118]考慮到Uiautomator提供了基于控件和坐標(biāo)的操作方式,可以模擬實(shí)現(xiàn)幾乎UI (User Interface,用戶界面)層所有的人工操作,而且可以直接調(diào)用系統(tǒng)的API函數(shù),能夠方便和輕易的將測試用例轉(zhuǎn)化為測試腳本,因此,本實(shí)施例優(yōu)選采用Uiautomator進(jìn)行測試腳本的開發(fā)。
[0119]MTBF測試的是手機(jī)的常用基本功能,整套測試用例可按使用功能分成以下幾類:通信類、信息類、郵件類、瀏覽器和下載類、多媒體類以及個(gè)人服務(wù)類,此外,還包括針對不同的手機(jī)的專用測試用例,例如,針對努比亞手機(jī)的穩(wěn)定性專用測試用例。每個(gè)大類下又包括數(shù)個(gè)用例,每個(gè)用例又可根據(jù)動作是否需要重復(fù)執(zhí)行,而分成數(shù)個(gè)子例,最后,子例將成為最小的測試單元,子例是動作的集合,一個(gè)子例里面至少存在一個(gè)動作。本領(lǐng)域技術(shù)人員可以理解的是,自動化測試的重點(diǎn)在于將前述測試用例包括的動作由控制指令來模擬人工執(zhí)行,這些控制指令的集合構(gòu)成測試腳本。
[0120]本實(shí)施例首先將預(yù)設(shè)測試用例拆分為控制指令的集合,具體的,不同的測試用例對應(yīng)不同的穩(wěn)定性測試流程,而不同的測試流程包括不同的測試步驟,例如,某測試手機(jī)多媒體播放穩(wěn)定性的測試用例對應(yīng)的測試流程包括主菜單的顯示以及快捷鍵,菜單的順序,視頻播放功能使用情況三個(gè)測試步驟。前述測試步驟可以拆分為至少一個(gè)獨(dú)立的動作,例如,可將視頻播放功能使用情況部分拆分為:選擇任意節(jié)目開始播放,節(jié)目播放時(shí)點(diǎn)擊暫停,節(jié)目暫停時(shí)點(diǎn)擊播放,節(jié)目播放時(shí)點(diǎn)擊停止,節(jié)目播放停止時(shí)點(diǎn)擊播放,節(jié)目播放時(shí)點(diǎn)擊全屏和節(jié)目播放時(shí)點(diǎn)擊音量調(diào)節(jié)等獨(dú)立動作。在將整個(gè)測試流程拆分為動作的集合之后,將動作轉(zhuǎn)換為控制指令。
[0121]步驟S20,基于Uiautomator框架獲取各所述控制指令的執(zhí)行控件的標(biāo)識信息;
[0122]本實(shí)施例中,基于Uiautomator框架獲取各所述控制指令的執(zhí)行控件的標(biāo)識信息。可選地,可通過層關(guān)系法和類索引法來標(biāo)識各所述控制指令對應(yīng)的執(zhí)行控件,為其分配唯一標(biāo)識信息,從而可根據(jù)標(biāo)識信息實(shí)現(xiàn)基于控件的操作。
[0123]步驟S30,基于所述預(yù)設(shè)MTBF測試流程包括的控制指令,以及各所述控制指令的執(zhí)行控件的標(biāo)識信息,生成所述預(yù)設(shè)MTBF測試流程的測試腳本。
[0124]本實(shí)施例中,在將測試用例拆分為控制指令,以及獲取到各所述控制指令的執(zhí)行控件的標(biāo)識信息之后,使用JAVA進(jìn)行測試腳本的編寫,最后得到j(luò)ar包形式的測試腳本。本領(lǐng)域技術(shù)人員可以理解的是,將編寫的測試腳本分發(fā)至移動終端,接收到測試腳本的移動終端將自動執(zhí)行測試腳本,即自動執(zhí)行MTBF測試的測試用例。
[0125]此外,為了統(tǒng)計(jì)測試腳本的執(zhí)行結(jié)果,本實(shí)施例在測試腳本中引入了斷言機(jī)制,其實(shí)現(xiàn)如下:在判斷用例的操作是否成功的關(guān)鍵點(diǎn),插入檢查點(diǎn),并預(yù)置正確的結(jié)果,作為斷言的判斷標(biāo)準(zhǔn),當(dāng)測試執(zhí)行到相應(yīng)的動作的時(shí)候,斷言會主動和預(yù)置的結(jié)果相匹配,并給出結(jié)論。具體的,斷言的方式有多種,本實(shí)施例主要采用控件的對比,在控件對比失效的情況下,輔助字符串匹配,在部分無字符串的的情況下,采用圖片的對比。斷言的結(jié)果,作為動作是否成功執(zhí)行判斷依據(jù),統(tǒng)計(jì)每個(gè)動作的結(jié)果,從而得每條子例的結(jié)果,最后得到所有的用例的結(jié)果,并得到整體測試用例的測試結(jié)果。
[0126]本實(shí)施例提供的測試腳本生成方法,基于Uiautomator框架進(jìn)行測試腳本的編寫,實(shí)現(xiàn)了基于控件的人工動作模擬,無需針對不同屏幕大小的移動終端重復(fù)編寫測試腳本,能夠有效提尚測試腳本的編與效率。
[0127]進(jìn)一步的,基于第一實(shí)施例,提出本發(fā)明測試腳本生成方法的第二實(shí)施例,在本實(shí)施例中,上述步驟S20包括:
[0128]基于Uiautomator框架獲取各所述控制指令的執(zhí)行控件的描述信息,其中,所述描述信息包括控件的文本信息、尺寸信息、位置信息以及是否可點(diǎn)擊;
[0129]分別基于各所述執(zhí)行控件的描述信息,生成各所述執(zhí)行控件的唯一標(biāo)識信息。
[0130]本實(shí)施例中,首先基于Uiautomator框架提供的功能獲取各所述控制指令的描述信息,其中,所述描述信息包括控件的文本信息、尺寸信息、位置信息以及是否可點(diǎn)擊。然后分別基于各所述執(zhí)行控件的描述信息,生成各所述執(zhí)行控件的唯一標(biāo)識信息??蛇x地,執(zhí)行控件的標(biāo)識可通過如下方式實(shí)現(xiàn):
[0131]1、層級關(guān)系法(Indexlist)
[0132]移動終端用戶界面的所有控件元素是以層級關(guān)系排列的,例如,一個(gè)frame中包括兩個(gè)view,其中第一個(gè)view包括兩個(gè)button,每個(gè)控件元素都有一個(gè)index,用于標(biāo)識其在父元素中的位置(Ο-based),例如前述兩個(gè)button,若想標(biāo)識第一個(gè)button,那么它的Indexlist就是:000,第O個(gè)frame中的第O個(gè)view中的第O個(gè)button元素。
[0133]2、類索引法(ClassIndex)
[0134]移動終端用戶界面的所有控件元素都是分類的,例如frame、view以及button等,可以統(tǒng)計(jì)出所有元素類型出現(xiàn)的次數(shù),并編號,例如:
[0135]Frame:frameO、frame 1、frame2、frame 3......
[0136]View:viewO、viewl、view2、view3、view4......
[0137]Button:buttonO、buttonl、button2、button3......
[0138]當(dāng)解析所有元素的時(shí)候,每次出現(xiàn)一個(gè)同類型的元素,就統(tǒng)計(jì)這個(gè)元素出現(xiàn)的次數(shù),這個(gè)次數(shù)就是Classindex,既將層級結(jié)構(gòu)扁平化展示。
[0139]進(jìn)一步的,基于第一或第二實(shí)施例,提出本發(fā)明測試腳本生成方法的第三實(shí)施例,在本實(shí)施例中,上述步驟S30之后,還包括:
[0140]在接收到測試指令時(shí),將所述測試腳本發(fā)送至移動終端,以供所述移動終端執(zhí)行接收的測試腳本,并返回執(zhí)行所述測試腳本生成的執(zhí)行日志;
[0141]接收并基于所述移動終端返回的執(zhí)行日志生成測試報(bào)告。
[0142]需要說明的是,本實(shí)施例的實(shí)現(xiàn)基于測試服務(wù)器和移動終端之間的通訊連接,參照圖4,可選地,為了確保在測試腳本的執(zhí)行過程中移動終端能夠有足夠的電流輸入,本實(shí)施例在測試服務(wù)器和移動終端之間添加了硬件設(shè)備穩(wěn)壓器,并由穩(wěn)壓器負(fù)責(zé)所述測試服務(wù)器以及所述移動終端之間的數(shù)據(jù)交互。
[0143]下面以多媒體播放穩(wěn)定性的測試用例對本實(shí)施例做詳細(xì)說明:
[0144]參照圖4,在測試開始前,