對測試用例的具體獲取過程不加限制。
[0058]本發(fā)明實施例中,預置的統(tǒng)一格式可以規(guī)定測試用例編號、測試標題、重要級別、測試輸入、操作步驟、預期結果等測試用例信息的格式,還可以規(guī)定這些測試用例信息之間的順序。綜上,本發(fā)明實施例的上述預置的統(tǒng)一格式能夠使得多線程利用與預置的統(tǒng)一格式相應的用例執(zhí)行方案(例如,預置的統(tǒng)一格式與用例執(zhí)行方案可以是一對一的關系)執(zhí)行所述目標測試用例,而不對具體的預置的統(tǒng)一格式加以限制。
[0059]在本發(fā)明的一種可選實施例中,所述對測試任務中測試用例進行格式轉換的步驟,具體可以包括:
[0060]步驟S11、利用JAVA反射技術對測試任務中測試用例進行格式轉換,得到具有預置的統(tǒng)一格式的目標測試用例。
[0061]JAVA反射技術是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法;這種動態(tài)獲取的信息以及動態(tài)調用對象的方法的功能稱為JAVA反射技術。
[0062]在本發(fā)明的另一種可選實施例中,所述利用JAVA反射技術對測試任務中測試用例進行格式轉換,得到具有預置的統(tǒng)一格式的目標測試用例的步驟S11,具體可以包括:
[0063]步驟S111、利用JAVA反射技術獲取測試任務中測試用例對應測試類的對象方法;
[0064]步驟S112、將所述對象方法轉換為預置的統(tǒng)一格式,得到具有預置的統(tǒng)一格式的目標測試用例。
[0065]在本發(fā)明的一種應用示例中,可以從測試類對應目錄讀取測試類所有的.class (類)文件和.jar (Java歸檔,Java Archive)文件;再進一步從.jar文件中析取.class文件,獲得測試類中所有可能包含的類的定義;基于每一個類,根據(jù).class文件讀取其中的屬性變量和對象方法的定義體;最后輸出測試類的對象方法列表。可以理解,上述僅僅作為利用JAVA反射技術獲取測試任務中測試用例對應測試類的對象方法的應用示例,而不理解為本發(fā)明實施例對于利用JAVA反射技術獲取測試任務中測試用例對應測試類的對象方法的應用限制。
[0066]在本發(fā)明的一種可選實施例中,還可以錄制利用多線程執(zhí)行所述目標測試用例過程中的操作,并將錄制信息轉換為相應的測試腳本,以減少測試腳本的生成成本。其中可以采用QTP(自動測試工具,Quick Test Profess1nal)等自動化測試工具的錄制功能進行上述錄制,本發(fā)明實施例對于具體的錄制過程不加以限制。
[0067]綜上,本發(fā)明實施例可以利用多線程并行執(zhí)行UI的目標測試用例,相對于現(xiàn)有方案在瀏覽器上執(zhí)行相應UI的測試用例,本發(fā)明實施例能夠大大提高UI自動化測試的效率。
[0068]另外,本發(fā)明實施例對測試任務中測試用例進行格式轉換,得到具有預置的統(tǒng)一格式的目標測試用例,能夠使得多線程利用與預置的統(tǒng)一格式相應的用例執(zhí)行方案執(zhí)行所述目標測試用例,這相對于傳統(tǒng)方案根據(jù)不同測試用例編寫眾多用例執(zhí)行方案,本發(fā)明實施例能夠實現(xiàn)測試用例與用例執(zhí)行方案的工程代碼的松散耦合,因此能夠進一步提高測試用例的執(zhí)行效率。
[0069]參照圖2,示出了根據(jù)本發(fā)明一個實施例的一種用戶界面自動化測試方法實施例的步驟流程圖,具體可以包括如下步驟:
[0070]步驟201、對測試任務中測試用例進行格式轉換,得到具有預置的統(tǒng)一格式的目標測試用例;
[0071]步驟202、將所述目標測試用例寫入緩沖區(qū);
[0072]步驟203、利用多線程執(zhí)行所述目標測試用例,具體包括:
[0073]步驟231、各線程在處于空閑狀態(tài)時,掃描所述緩沖區(qū);
[0074]步驟232、在掃描到新的目標測試用例時,從所述緩沖區(qū)中讀取并執(zhí)行所述目標測試用例。
[0075]本實施例可以應用于瀏覽器的頁面的UI自動化測試,特別地,可以應用于瀏覽器的地圖頁面的UI自動化測試。
[0076]相對于圖1所示實施例,本實施例可以將所述目標測試用例寫入緩沖區(qū),并且,各線程在處于空閑狀態(tài)時,可以掃描所述緩沖區(qū),在掃描到新的目標測試用例時,從所述緩沖區(qū)中讀取并執(zhí)行所述目標測試用例;因此能夠實現(xiàn)多線程對于目標測試用例的搶占式和連續(xù)執(zhí)行,從而最大可能地提高測試用例的執(zhí)行效率。
[0077]本發(fā)明實施例中,緩沖區(qū)可用于存儲多個目標測試用例。參照圖3,示出了根據(jù)本發(fā)明一個實施例的一種緩沖區(qū)的結構示意圖,其具體可以包括寫指針和讀指針,其中,寫指針可用于將所述目標測試用例1、目標測試用例2、目標測試用例3等多個目標測試用例寫入緩沖區(qū),讀指針可用于從所述緩沖區(qū)讀取目標測試用例,在實際應用中,各線程可以通過所述讀指針來實現(xiàn)目標測試用例的讀取,并依據(jù)所述目標測試用例執(zhí)行所讀取的目標測試用例。
[0078]在具體實現(xiàn)中,所述緩沖區(qū)具體可以包括:內存緩沖區(qū)和/或持久緩沖區(qū)。其中,所述內存緩沖區(qū)具有讀寫速度快的優(yōu)點;所述持久緩沖區(qū)能夠將數(shù)據(jù)持久化在文件中,從而能夠保證重啟操作后數(shù)據(jù)不丟失。在具體實現(xiàn)中,所述內存緩沖區(qū)可以用隊列、鏈表等數(shù)據(jù)結構實現(xiàn),本發(fā)明實施例對所述內存緩沖區(qū)的具體數(shù)據(jù)結構不加以限制。
[0079]在本發(fā)明的一種可選實施例中,所述將所述目標測試用例寫入緩沖區(qū)的步驟,可以進一步包括:將所述多個目標測試用例循環(huán)寫入所述緩沖區(qū)。本可選實施例可以在寫入速度較快的情況下循環(huán)利用緩沖區(qū),從而實現(xiàn)節(jié)省緩存資源的效果。在具體實現(xiàn)中,為了避免寫入速度超過讀取速度引起的數(shù)據(jù)丟失問題,在將所述多個目標測試用例循環(huán)寫入所述緩沖區(qū)之前,可以對寫指針和讀指針進行比較,如果寫指針所指向的位置超出了讀指針所指向的位置,則將所述多個目標測試用例寫入其它緩沖區(qū),若寫指針所指向的位置未超出讀指針所指向的位置,則將所述多個目標測試用例寫入所述緩沖區(qū)。
[0080]本發(fā)明的另一種可選實施例中,所述緩沖區(qū)可以為持久緩沖區(qū),所述持久緩存區(qū)可以進一步包括單位塊;
[0081]則所述方法還可以包括:
[0082]將所述多個目標測試用例寫入所述持久緩存區(qū)中單位塊后,針對所述單位塊中內容生成相應的第一校驗參數(shù);
[0083]在從所述單位塊中讀取所述目標測試用例后,針對所讀取的目標測試用例生成相應的第二校驗參數(shù);
[0084]判斷所述第二校驗參數(shù)與所述第一校驗參數(shù)是否一致;
[0085]在所述第二校驗參數(shù)與所述第一校驗參數(shù)一致時,執(zhí)行所讀取的目標測試用例;
[0086]在所述第二校驗參數(shù)與所述第一校驗參數(shù)不一致時,丟棄所讀取的目標測試用例。
[0087]當數(shù)據(jù)存儲在SSD (固態(tài)硬盤,Solid State Drives)等持久緩沖區(qū)中時,由于SSD中閃存塊(block)的壽命是有限的,故SSD中難免會出現(xiàn)一些壞的閃存塊,一旦閃存塊成為壞塊,則該閃存塊中數(shù)據(jù)就將不可用。
[0088]為了避免壞塊中數(shù)據(jù)不可用導致整個閃存塊數(shù)據(jù)的不可用,本可選實施例在將所述多個目標測試用例寫入所述持久緩存區(qū)中單位塊后,可以針對所述單位塊中內容生成相應的第一校驗參數(shù),這樣,在從所述單位塊中讀取所述目標測試用例后,針對所讀取的目標測試用例生成相應的第二校驗參數(shù),通過判斷所述第一校驗參數(shù)和第二校驗參數(shù)是否一致來確定所述單位塊是否損壞,在確定所述單位塊損壞后,只是所述單位塊的數(shù)據(jù)不可用,其它數(shù)據(jù)(如與所述單位塊在同一閃存塊的其它單位塊的數(shù)據(jù))還可以正常使用,因此能夠提高存儲數(shù)據(jù)的可靠性。
[0089]在具體實現(xiàn)中,可以米用MD5 (信息摘要算法5,Message-Digest Algorithm 5)、DSA (數(shù)字簽名算法,Digital Signature Algorithm)等認證算法生成所述第一校驗參數(shù)和第二校驗參數(shù),本發(fā)明實施例對生成所述第一校驗參數(shù)和第二校驗參數(shù)的具體方法不加以限制。
[0090]另外,本領域技術人員可以根據(jù)實際情況確定所述單位塊的大小,所述單位塊的大小可以小于閃存塊的大小,例如,SLC(單層單元,Single Layer Cell)中閃存塊的大小為128kb,那么,所述單位塊的大小可以為32kb等等,本發(fā)明實施例對所述單位塊的大小不加以限制。
[0091]參照圖4,示出了根據(jù)本發(fā)明一個實施例的一種用戶界面自動化測試方法實施例的步驟流程圖,具體可以包括如下步驟:
[0092]步驟401、對測試任務中測試用例進行格式轉換,得到具有預置的統(tǒng)一格式的目標測試用例;
[0093]步驟402、利用多線程執(zhí)行所述目標測試用例,具體可以包括:
[0094]步驟421、各線程利用代碼解析器執(zhí)行所述目標測試用例。
[0095]本實施例可以應用于瀏覽器的頁面的UI自動化測試,特別地,可以應用于瀏覽器的地圖頁面的UI自動化測試。
[0096]相對于圖1所示實施例,本實施例可以采用代碼解析器執(zhí)行目標測試用例,上述代碼解析器可以為JS(JavaScript)解析器,如phantomjs、Selenium為JS解析器的一種示例,本發(fā)明實施例對于具體的JS解析器不加以限制。
[0097]綜上,相