本發(fā)明涉及安卓設(shè)備自動(dòng)化測(cè)試操作領(lǐng)域,特別是一種實(shí)現(xiàn)安卓設(shè)備穩(wěn)定性自動(dòng)化測(cè)試的方法。
背景技術(shù):
隨著消費(fèi)群眾對(duì)安卓設(shè)備(如手機(jī)、平板電腦)質(zhì)量的要求越來越高,所以安卓設(shè)備的高穩(wěn)定性至關(guān)重要。安卓設(shè)備穩(wěn)定性測(cè)試投入的人力、物力也越來越多。傳統(tǒng)的手工測(cè)試方法,特別在穩(wěn)定性測(cè)試方面有準(zhǔn)確率低下、效率低下等缺點(diǎn),實(shí)現(xiàn)安卓設(shè)備穩(wěn)定性自動(dòng)化測(cè)試是一種必然趨勢(shì)。
目前在安卓(android)設(shè)備穩(wěn)定性自動(dòng)化測(cè)試中,主要采用Monkey測(cè)試工具,Monkey是SDK中自帶的一種自動(dòng)化測(cè)試工具,是一種隨機(jī)測(cè)試工具。
其缺點(diǎn)在于,Monkey自動(dòng)化測(cè)試只能進(jìn)行隨機(jī)測(cè)試,不能按照之前設(shè)計(jì)的手工測(cè)試用例,真實(shí)模擬人工操作進(jìn)行穩(wěn)定性測(cè)試,以及無法控制測(cè)試結(jié)果和評(píng)估實(shí)際安卓設(shè)備的穩(wěn)定性能。
因此,現(xiàn)有的安卓設(shè)備穩(wěn)定性自動(dòng)化測(cè)試技術(shù)還有待改進(jìn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種實(shí)現(xiàn)安卓設(shè)備穩(wěn)定性自動(dòng)化測(cè)試的方法,以克服現(xiàn)有技術(shù)中存在的缺陷。
為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:一種實(shí)現(xiàn)安卓設(shè)備穩(wěn)定性自動(dòng)化測(cè)試的方法,提供一待檢測(cè)安卓設(shè)備以及通過micro-usb線與該待檢測(cè)安卓設(shè)備相連的計(jì)算機(jī),所述計(jì)算機(jī)搭載有一自動(dòng)化測(cè)試系統(tǒng),按照如下步驟實(shí)現(xiàn):
步驟S1:通過所述自動(dòng)化測(cè)試系統(tǒng)中的控制測(cè)試模塊篩選進(jìn)行穩(wěn)定性自動(dòng)化測(cè)試的項(xiàng)目;
步驟S2:通過所述自動(dòng)化測(cè)試系統(tǒng)中的連接模塊檢測(cè)所述待檢測(cè)安卓設(shè)備是否與所述計(jì)算正常連接;
步驟S3:所述控制測(cè)試模塊通過uiautomatorviewer,獲取所述待檢測(cè)安卓設(shè)備的控件信息;
步驟S4:所述控制測(cè)試模塊根據(jù)手工穩(wěn)定性測(cè)試用例的操作要求,如點(diǎn)擊、滑動(dòng)、輸入文本等,根據(jù)所述控件信息,進(jìn)行手工模擬自動(dòng)測(cè)試,獲取測(cè)試結(jié)果為Pass或Fail;
步驟S5:所述控制測(cè)試模塊編寫批處理文件,且一個(gè)批處理文件用于啟動(dòng)一項(xiàng)自動(dòng)化測(cè)試;
步驟S6:所述控制測(cè)試模塊進(jìn)行自動(dòng)化測(cè)試,依次按自動(dòng)化測(cè)試項(xiàng)目的順序運(yùn)行所述批處理文件;
步驟S7:測(cè)試結(jié)束,通過所述自動(dòng)化測(cè)試系統(tǒng)中的測(cè)試結(jié)果模塊保存測(cè)試結(jié)果,統(tǒng)計(jì)測(cè)試結(jié)果,計(jì)算成功率,并通過成功率評(píng)估,導(dǎo)出穩(wěn)定性等級(jí)。
進(jìn)一步的,在本發(fā)明一實(shí)施例中,在所述步驟S1中,所述進(jìn)行穩(wěn)定性自動(dòng)化測(cè)試的項(xiàng)目包括:無線網(wǎng)絡(luò)壓力測(cè)試、有線網(wǎng)絡(luò)壓力測(cè)試、藍(lán)牙壓力測(cè)試、多媒體壓力測(cè)試以及相機(jī)壓力測(cè)試;通過所述控制測(cè)試模塊添加或刪除自動(dòng)化測(cè)試的項(xiàng)目,并設(shè)置自動(dòng)化測(cè)試的項(xiàng)目的測(cè)試順序。
進(jìn)一步的,在本發(fā)明一實(shí)施例中,在所述步驟S2中,還包括如下步驟:
步驟21:所述連接模塊通過所述待檢測(cè)安卓設(shè)備的安卓設(shè)備版本號(hào)獲取開發(fā)者選項(xiàng)項(xiàng)目;
步驟22:所述連接模塊調(diào)整所述開發(fā)者選項(xiàng)為USB調(diào)試;
步驟23:所述連接模塊調(diào)用所述計(jì)算機(jī)cmd命令adb devices,檢測(cè)安卓設(shè)備是否正常連接所述計(jì)算機(jī)。
進(jìn)一步的,在本發(fā)明一實(shí)施例中,在所述步驟S3中,所述控制測(cè)試模塊通過SDK中自帶的uiautomatorviewer獲取如下控件信息:text信息、resource-id信息、content-desc信息、checkable信息以及scrollable信息。
進(jìn)一步的,在本發(fā)明一實(shí)施例中,在所述步驟S5中,所述批處理文件為bat文件,采用基于windows操作系統(tǒng)的批處理命令編制,一個(gè)bat文件啟動(dòng)一項(xiàng)自動(dòng)化測(cè)試,并對(duì)應(yīng)測(cè)試項(xiàng)目進(jìn)行編名,以用于選取以及啟動(dòng)。
進(jìn)一步的,在本發(fā)明一實(shí)施例中,在所述步驟S5中,還包括如下步驟:
步驟51:所述控制測(cè)試模塊編寫批處理文件,進(jìn)入計(jì)算機(jī)中的Android SDK tools路徑下;
步驟52:根據(jù)自動(dòng)化測(cè)試的項(xiàng)目名稱以及SDK版本號(hào)在設(shè)置的保存路徑下創(chuàng)建測(cè)試項(xiàng)目;
步驟53:進(jìn)入創(chuàng)建的測(cè)試項(xiàng)目路徑下,調(diào)用ant編譯腳本命令,生成測(cè)試項(xiàng)目jar包;該測(cè)試項(xiàng)目jar包生成在測(cè)試項(xiàng)目bin文件夾下,且所述自動(dòng)化測(cè)試系統(tǒng)中的上傳模塊將所生成的測(cè)試項(xiàng)目jar包上傳至所述待檢測(cè)安卓設(shè)備。
進(jìn)一步的,在本發(fā)明一實(shí)施例中,在所述步驟S6中,通過所述控制測(cè)試模塊設(shè)置每項(xiàng)自動(dòng)化測(cè)試項(xiàng)目間隔時(shí)間;自動(dòng)化測(cè)試開始后,自動(dòng)調(diào)用編寫的批處理文件,完成一個(gè)自動(dòng)化測(cè)試項(xiàng)目后,自動(dòng)跳轉(zhuǎn)至下一個(gè)測(cè)試項(xiàng)目,期間可暫停測(cè)試或繼續(xù)測(cè)試。
進(jìn)一步的,在本發(fā)明一實(shí)施例中,在所述步驟S7中,通過穩(wěn)定性自動(dòng)化測(cè)試結(jié)果得到成功率,以此評(píng)估穩(wěn)定性等級(jí):
成功率≥95%,穩(wěn)定性很好,幾乎不出現(xiàn)錯(cuò)誤;
85%≤成功率<95%,穩(wěn)定性較好,有微小的錯(cuò)誤,不會(huì)影響系統(tǒng)的功能;
75%≤成功率<85%,穩(wěn)定性一般,輕微降低了系統(tǒng)的性能,但系統(tǒng)仍能工作;
65%≤成功率<75%,穩(wěn)定性較差,嚴(yán)重降低了系統(tǒng)的性能;
成功率<65%,穩(wěn)定性很差,系統(tǒng)已經(jīng)無法正常工作。
相較于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:本發(fā)明其優(yōu)點(diǎn)在于能真實(shí)地模擬手工測(cè)試,對(duì)安卓設(shè)備進(jìn)行穩(wěn)定性自動(dòng)化測(cè)試,彌補(bǔ)了Monkey只能進(jìn)行隨機(jī)測(cè)試的弊端,解決了手動(dòng)穩(wěn)定性測(cè)試方面繁雜的任務(wù)量,大大的提高了測(cè)試效率。并能系統(tǒng)地管理自動(dòng)化測(cè)試,實(shí)現(xiàn)一鍵自動(dòng)化測(cè)試,測(cè)試結(jié)束,保存測(cè)試結(jié)果,最后評(píng)估并導(dǎo)出穩(wěn)定性等級(jí)。能完美地代替手工測(cè)試,提高了自動(dòng)化測(cè)試的效率。
附圖說明
圖1為本發(fā)明實(shí)現(xiàn)安卓設(shè)備穩(wěn)定性自動(dòng)化測(cè)試的方法的流程圖。
具體實(shí)施方式
下面結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行具體說明。
本發(fā)明提供一種實(shí)現(xiàn)安卓設(shè)備穩(wěn)定性自動(dòng)化測(cè)試的方法,提供一待檢測(cè)安卓設(shè)備以及通過micro-usb線與該待檢測(cè)安卓設(shè)備相連的計(jì)算機(jī),計(jì)算機(jī)搭載有一自動(dòng)化測(cè)試系統(tǒng),按照如下步驟實(shí)現(xiàn):
步驟S1:通過自動(dòng)化測(cè)試系統(tǒng)中的控制測(cè)試模塊篩選進(jìn)行穩(wěn)定性自動(dòng)化測(cè)試的項(xiàng)目;
步驟S2:通過自動(dòng)化測(cè)試系統(tǒng)中的連接模塊檢測(cè)待檢測(cè)安卓設(shè)備是否與計(jì)算正常連接;
步驟S3:控制測(cè)試模塊通過uiautomatorviewer,獲取待檢測(cè)安卓設(shè)備的控件信息;
步驟S4:控制測(cè)試模塊根據(jù)手工穩(wěn)定性測(cè)試用例的操作要求,如點(diǎn)擊、滑動(dòng)、輸入文本等,根據(jù)控件信息,進(jìn)行手工模擬自動(dòng)測(cè)試,獲取測(cè)試結(jié)果為Pass或Fail;
步驟S5:控制測(cè)試模塊編寫批處理文件,且一個(gè)批處理文件用于啟動(dòng)一項(xiàng)自動(dòng)化測(cè)試;
步驟S6:控制測(cè)試模塊進(jìn)行自動(dòng)化測(cè)試,依次按自動(dòng)化測(cè)試項(xiàng)目的順序運(yùn)行批處理文件;
步驟S7:測(cè)試結(jié)束,通過自動(dòng)化測(cè)試系統(tǒng)中的測(cè)試結(jié)果模塊保存測(cè)試結(jié)果,統(tǒng)計(jì)測(cè)試結(jié)果,計(jì)算成功率,并通過成功率評(píng)估并導(dǎo)出穩(wěn)定性等級(jí)。
進(jìn)一步的,在本實(shí)施例中,在步驟S1中,進(jìn)行穩(wěn)定性自動(dòng)化測(cè)試的項(xiàng)目包括:無線網(wǎng)絡(luò)壓力測(cè)試、有線網(wǎng)絡(luò)壓力測(cè)試、藍(lán)牙壓力測(cè)試、多媒體壓力測(cè)試以及相機(jī)壓力測(cè)試等;通過控制測(cè)試模塊添加或刪除自動(dòng)化測(cè)試的項(xiàng)目,并設(shè)置自動(dòng)化測(cè)試的項(xiàng)目的測(cè)試順序。
進(jìn)一步的,在本實(shí)施例中,控制測(cè)試模塊通過自動(dòng)化測(cè)試平臺(tái)實(shí)現(xiàn),其可以利用MFC/QT等作為界面平臺(tái),C++語言作為程序語言進(jìn)行開發(fā)。
進(jìn)一步的,在本實(shí)施例中,無線網(wǎng)絡(luò)壓力測(cè)試如下:
連接無線網(wǎng)絡(luò),wifi on/off 200次,判斷是否能正常連上網(wǎng)絡(luò)。
連接無線網(wǎng)絡(luò),播放在線視頻,每隔5分鐘截屏,判斷播放畫面是否無異常。
連接無線網(wǎng)絡(luò),連續(xù)訪問新聞網(wǎng)頁/視頻網(wǎng)頁100次,判斷是否無異常。
連接無線網(wǎng)絡(luò),進(jìn)入網(wǎng)頁,每隔15秒刷新一次網(wǎng)頁,判斷是否無異常。
進(jìn)一步的,在本實(shí)施例中,在步驟S2中,還包括如下步驟:
步驟21:連接模塊通過待檢測(cè)安卓設(shè)備的安卓設(shè)備版本號(hào)獲取開發(fā)者選項(xiàng)項(xiàng)目,連接模塊連續(xù)觸發(fā)安卓設(shè)備版本號(hào)5次,出現(xiàn)開發(fā)者選項(xiàng);
步驟22:連接模塊調(diào)整開發(fā)者選項(xiàng)為USB調(diào)試;
步驟23:連接模塊調(diào)用計(jì)算機(jī)cmd命令adb devices,檢測(cè)安卓設(shè)備是否正常連接計(jì)算機(jī)。
進(jìn)一步的,在本實(shí)施例中,在步驟S3中,控制測(cè)試模塊通過SDK中自帶的uiautomatorviewer獲取如下控件信息:text信息、resource-id信息、content-desc信息、checkable信息以及scrollable信息,利用上述控件信息對(duì)自動(dòng)化測(cè)試代碼進(jìn)行預(yù)先設(shè)計(jì)。
進(jìn)一步的,在本實(shí)施例中,控制測(cè)試模塊進(jìn)行無線網(wǎng)絡(luò)壓力測(cè)試,測(cè)試要求為wifi 連續(xù)on/off 200次,判斷網(wǎng)絡(luò)是否能正常連接,設(shè)計(jì)代碼如下:
public class demo6 extends UiaAutomatorTestCase{
public void testDemo() throws UiObjectNotFoundException, InterruptedException, RemoteException {
int m=0,n=0;
getUiDevice().wakeUp();//喚醒安卓設(shè)備
getUiDevice().pressHome();//回到主頁面
UiObject menu= new UiObject(new UiSelector().descriptionContains("應(yīng)用"));
menu.click();//點(diǎn)擊應(yīng)用
UiObject setting= new UiObject(new UiSelector().text("設(shè)置"));
setting.clickAndWaitForNewWindow();
UiObject wifi=new UiObject(new UiSelector().resourceId("com.
android.settings:id/switchWidget").instance(0));//wifi開關(guān)
if(!wifi.isChecked())
{wifi.click();//點(diǎn)擊wifi開關(guān)
sleep(5000);//等待5秒
}
UiObject NetWork-id=new UiObject(new UiSelector().text(
"ASUStest"));//網(wǎng)絡(luò)ID
NetWork-id.click;
UiObject Password=new UiObject(new UiSelector().resourceId
("com.android.settings:id/password"));//網(wǎng)絡(luò)密碼輸入框
Password.setText("lwy123456")//輸入密碼
UiObject Link= new UiObject(new UiSelector().text("連接"));
Link.click();//連接網(wǎng)絡(luò)
sleep(10000);
for(int i=1;i<=200;i++)
{
boolean flag;
if(wifi.isChecked())
{
wifi.click();
}
wifi.click;
sleep(1000);
flag=internetstate();//判斷網(wǎng)絡(luò)連接情況
if(!flag)
{
System.out.println("第"+i+"次測(cè)試"+": Return:Fail");
m++;
}
}
if(m==0)
{
System.out.println("Return:Pass");
}
}
public boolean internetstate()//判斷網(wǎng)絡(luò)連接情況
{
int status = 0;
Process p = null;
try {
p = Runtime.getRuntime().exec("ping -c 1 " + "www.baidu.com");
} catch (IOException e) {
e.printStackTrace(); }
try {
status = p.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
if (status == 0) {
return true;
}
else
{
return false;
}
}
}
進(jìn)一步的,在本實(shí)施例中,在步驟S5中,批處理文件為bat文件,采用基于windows操作系統(tǒng)的批處理命令編制,一個(gè)bat文件啟動(dòng)一項(xiàng)自動(dòng)化測(cè)試,并對(duì)應(yīng)測(cè)試項(xiàng)目進(jìn)行編名,以便選取并啟動(dòng)。
進(jìn)一步的,在本實(shí)施例中,在步驟S5中,還包括如下步驟:
步驟51:控制測(cè)試模塊編寫批處理文件,進(jìn)入計(jì)算機(jī)中的Android SDK tools路徑下;
步驟52:根據(jù)自動(dòng)化測(cè)試的項(xiàng)目名稱以及SDK版本號(hào)在設(shè)置的保存路徑下創(chuàng)建測(cè)試項(xiàng)目;
步驟53:進(jìn)入創(chuàng)建的測(cè)試項(xiàng)目路徑下,調(diào)用ant編譯腳本命令,生成測(cè)試項(xiàng)目jar包;該測(cè)試項(xiàng)目jar包生成在測(cè)試項(xiàng)目bin文件夾下,且自動(dòng)化測(cè)試系統(tǒng)中的上傳模塊將所生成的測(cè)試項(xiàng)目jar包上傳至待檢測(cè)安卓設(shè)備。
進(jìn)一步的,按照如下方式實(shí)現(xiàn):
@echo off
d:
cd D:\sdk\tools
echo "start create build file...”
cd D:\Users\LWY\workspace\ stress-test
call android create uitest-project -n stress-test -t 7 -p D:\Users\LWY\workspace\ stress-test
echo "success create uitest-project "
call ant build
進(jìn)一步的,在本實(shí)施例中,在步驟S6中,通過控制測(cè)試模塊設(shè)置每項(xiàng)自動(dòng)化測(cè)試項(xiàng)目間隔時(shí)間;自動(dòng)化測(cè)試開始后,自動(dòng)調(diào)用編寫的批處理文件,完成一個(gè)自動(dòng)化測(cè)試項(xiàng)目后,自動(dòng)跳轉(zhuǎn)至下一個(gè)測(cè)試項(xiàng)目,期間可暫停測(cè)試或繼續(xù)測(cè)試。
進(jìn)一步的,在本實(shí)施例中,在步驟S7中,通過穩(wěn)定性自動(dòng)化測(cè)試結(jié)果得到成功率,以此評(píng)估穩(wěn)定性等級(jí):
成功率≥95%,穩(wěn)定性很好,幾乎不出現(xiàn)錯(cuò)誤;
85%≤成功率<95%,穩(wěn)定性較好,有微小的錯(cuò)誤,不會(huì)影響系統(tǒng)的功能;
75%≤成功率<85%,穩(wěn)定性一般,輕微降低了系統(tǒng)的性能,但系統(tǒng)仍能工作;
65%≤成功率<75%,穩(wěn)定性較差,嚴(yán)重降低了系統(tǒng)的性能;
成功率<65%,穩(wěn)定性很差,系統(tǒng)已經(jīng)無法正常工作。
進(jìn)一步的,本實(shí)施例采用的安卓設(shè)備穩(wěn)定性自動(dòng)化測(cè)試的方法,能真實(shí)地模擬手工測(cè)試,對(duì)安卓設(shè)備進(jìn)行穩(wěn)定性自動(dòng)化測(cè)試,克服了現(xiàn)有技術(shù)的不足。并能系統(tǒng)地管理自動(dòng)化測(cè)試,實(shí)現(xiàn)一鍵自動(dòng)化測(cè)試,測(cè)試結(jié)束,保存測(cè)試結(jié)果,最后評(píng)估并導(dǎo)出穩(wěn)定性等級(jí)。
以上是本發(fā)明的較佳實(shí)施例,凡依本發(fā)明技術(shù)方案所作的改變,所產(chǎn)生的功能作用未超出本發(fā)明技術(shù)方案的范圍時(shí),均屬于本發(fā)明的保護(hù)范圍。