已創(chuàng)建的相對應(yīng)的進(jìn)程。
[0077]當(dāng)執(zhí)行引擎上有相對應(yīng)的進(jìn)程啟動后,控制處理模塊將獲得的測試用例,發(fā)送給該執(zhí)行節(jié)點中已啟動的相對應(yīng)的進(jìn)程,以使得該相對應(yīng)的進(jìn)程在獲得測試實例后,可以立即執(zhí)行該測試用例,以完成測試實例的自動化測試。
[0078]優(yōu)選的,所述執(zhí)行節(jié)點的操作系統(tǒng)可以是Linux操作系統(tǒng),或者,還可以是Windows操作系統(tǒng)。
[0079]優(yōu)選的,所述執(zhí)行節(jié)點中預(yù)先部署的瀏覽器內(nèi)核可以為利用前端自動化測試工具PhantomJS實現(xiàn)。PhantomJS是一個無界面的、包含瀏覽器內(nèi)核(Webkit)和JS API的腳本解釋器,屬于真實的瀏覽器。
[0080]優(yōu)選的,所述執(zhí)行節(jié)點中預(yù)先部署的執(zhí)行引擎可以利用CasperJS實現(xiàn)。CasperJS是基于PhantomJS的導(dǎo)航腳本和測試工具??梢灶A(yù)先利用PhantomJS語法編寫測試實例,并在該執(zhí)行引擎上執(zhí)行。
[0081]需要說明的是,PhantomJS可以支持并行的創(chuàng)建并開啟多個進(jìn)程,利用多個進(jìn)程來執(zhí)行測試用例,這意味著一個執(zhí)行節(jié)點可以同時執(zhí)行多個測試用例。
[0082]另外,CasperJS基于PhantomJS編寫,提供的函數(shù)比較多,人工編寫測試用例時,可以使用CasperJS提供的函數(shù),從而簡化了編程過程。
[0083]傳統(tǒng)的技術(shù)方案中,Selenium作為自動化測試工具時,Selenium不能支持多進(jìn)程,且Selenium的穩(wěn)定性比較差。而超文本傳輸協(xié)議(Hyper Text Transfer Protocol,HTTP)單元(HTTPUnit)或者超文本標(biāo)記語言(Hyper Text Mark-up Language,HTML)單元(HTMLUnit)屬于模擬瀏覽器,不屬于真正的瀏覽器,因此作為自動化測試工具對測試實例進(jìn)行自動化測試時,測試的準(zhǔn)確性比較低。
[0084]因此,本發(fā)明實施例提供的技術(shù)方案中,利用PhantomJS和CasperJS作為自動化測試工具,與傳統(tǒng)的技術(shù)方案中,利用Selenium、HTTPUnit等瀏覽器作為自動化測試工具的方案相比,可以實現(xiàn)提高測試的準(zhǔn)確性,以及,將測試用例的執(zhí)行時間節(jié)約70%以上,大大提高自動化測試效率。
[0085]可以理解的是,業(yè)務(wù)線在平臺上創(chuàng)建了海量的測試用例,同時該平臺可以為多個業(yè)務(wù)平臺提供了遠(yuǎn)程API,使得目前每天的測試用例的執(zhí)行次數(shù)在百萬左右,執(zhí)行次數(shù)的峰值能夠達(dá)到240萬次。如果利用現(xiàn)有技術(shù)中,一個執(zhí)行節(jié)點上的一個進(jìn)程對所有測試用例進(jìn)行自動化測試,將無法滿足如此規(guī)模的測試用例的執(zhí)行需求。然而,本發(fā)明實施例所提供的自動化測試系統(tǒng)中包含至少一個執(zhí)行節(jié)點,且每個執(zhí)行節(jié)點中部署的執(zhí)行引擎上可以利用至少一個進(jìn)程并行執(zhí)行測試用例,每個進(jìn)程之間互不干擾,從而實現(xiàn)在同一個執(zhí)行節(jié)點上可以多進(jìn)程的并行執(zhí)行測試實例的自動化測試,這樣,服務(wù)器中消息隊列中的測試用例,可以實時被某執(zhí)行節(jié)點提取,并被迅速執(zhí)行,因此執(zhí)行能力大大提高,從而提高海量測試用例的執(zhí)行效率,提高測試的準(zhǔn)確性和測試質(zhì)量。
[0086]另外,本發(fā)明實施例中,自動化測試系統(tǒng)采用分布式架構(gòu),具有良好的可伸縮行和擴(kuò)展性。如果需要提高進(jìn)一步該系統(tǒng)的執(zhí)行能力,只需要增加執(zhí)行節(jié)點,并在新增加的執(zhí)行節(jié)點上簡單部署并啟動程序即可,新增加的執(zhí)行節(jié)點會自動注冊到服務(wù)器,并在注冊成功后主動從服務(wù)器提取測試用例,以及自動啟動相應(yīng)的進(jìn)程來執(zhí)行測試用例。
[0087]實施例四
[0088]基于上述實施例一所提供的自動化測試方法、實施例二以及實施例三,本發(fā)明實施例中,S102之后,還可以包括步驟:
[0089]所述執(zhí)行節(jié)點獲得所述相對應(yīng)的進(jìn)程執(zhí)行所述測試用例的執(zhí)行結(jié)果,以及向所述服務(wù)器發(fā)送所述執(zhí)行結(jié)果。
[0090]進(jìn)一步的,所述服務(wù)器在從所述執(zhí)行節(jié)點獲得所述測試用例的執(zhí)行結(jié)果后,可以向相對應(yīng)的客戶端發(fā)送該測試用例的執(zhí)行結(jié)果,以使得客戶端可以向用戶展現(xiàn)所述測試用例的執(zhí)行結(jié)果。
[0091]優(yōu)選的,所述測試用例的執(zhí)行結(jié)果可以為執(zhí)行失敗或者執(zhí)行成功。
[0092]優(yōu)選的,所述執(zhí)行節(jié)點中的控制處理模塊可以從執(zhí)行引擎上執(zhí)行測試用例的進(jìn)程,獲得該測試用例的執(zhí)行結(jié)果,然后將該執(zhí)行結(jié)果發(fā)送到服務(wù)器。其中,所述控制處理模塊可以在獲得一定數(shù)量的測試用例的執(zhí)行結(jié)果后,才向服務(wù)器發(fā)送執(zhí)行結(jié)果,或者,控制處理模塊也可以在本次測試任務(wù)中所有測試用例都測試完畢后,將所在執(zhí)行節(jié)點中執(zhí)行的所有測試用例的執(zhí)行結(jié)果一并發(fā)送到服務(wù)器,本發(fā)明實施例對測試用例的執(zhí)行結(jié)果的上報方式不進(jìn)行特別限定。
[0093]實施例五
[0094]本發(fā)明實施例進(jìn)一步給出實現(xiàn)上述方法實施例中各步驟及方法的裝置實施例。
[0095]請參考圖4,其為本發(fā)明實施例所提供的執(zhí)行節(jié)點的功能方塊圖。如圖所示,所述執(zhí)行節(jié)點包括:
[0096]控制處理模塊401,用于獲得測試用例;
[0097]測試執(zhí)行模塊402,用于啟動相對應(yīng)的進(jìn)程,以使得所述相對應(yīng)的進(jìn)程執(zhí)行所述測試用例;
[0098]其中,所述執(zhí)行節(jié)點的數(shù)目為至少一個,每個所述執(zhí)行節(jié)點相對應(yīng)的進(jìn)程的數(shù)目為至少一個,從而多進(jìn)程完成所述測試用例的自動化測試。
[0099]優(yōu)選的,所述執(zhí)行節(jié)點的數(shù)目為一個,所述執(zhí)行節(jié)點相對應(yīng)的進(jìn)程的數(shù)目為至少兩個;或者,
[0100]所述執(zhí)行節(jié)點的數(shù)目為至少兩個,每個所述執(zhí)行節(jié)點相對應(yīng)的進(jìn)程的數(shù)目為至少
—個°
[0101]優(yōu)選的,所述控制處理模塊401,具體用于:
[0102]向服務(wù)器進(jìn)行注冊,所述服務(wù)器上有所述服務(wù)器預(yù)先從相對應(yīng)的客戶端獲得的測試用例;
[0103]對注冊過的所述服務(wù)器上的測試用例進(jìn)行掃描,以確定所述執(zhí)行節(jié)點可支持的測試用例;
[0104]從所述服務(wù)器獲得所述執(zhí)行節(jié)點可支持的測試用例。
[0105]優(yōu)選的,若所述測試用例為針對Web頁面的測試用例,所述測試執(zhí)行模塊402為瀏覽器內(nèi)核,所述執(zhí)行節(jié)點還包括執(zhí)行引擎403 ;
[0106]所述瀏覽器內(nèi)核402,具體用于:在所述執(zhí)行引擎403上創(chuàng)建所述相對應(yīng)的進(jìn)程,以及啟動創(chuàng)建的所述相對應(yīng)的進(jìn)程;或者,啟動已創(chuàng)建的所述相對應(yīng)的進(jìn)程;
[0107]所述控制處理模塊401,還用于:將所述測試用例,發(fā)送給所述執(zhí)行節(jié)點中已啟動的所述相對應(yīng)的進(jìn)程,以使得所述相對應(yīng)的進(jìn)程執(zhí)行所述測試用例。
[0108]優(yōu)選的,所述執(zhí)行節(jié)點注冊過的服務(wù)器的數(shù)目為至少一個;和/或,每個所述服務(wù)器相對應(yīng)的客戶端的數(shù)目為至少一個。
[0109]可選的,所述控制處理模塊401,還用于:獲得所述相對應(yīng)的進(jìn)程執(zhí)行所述測試用例的執(zhí)行結(jié)果,以及向所述服務(wù)器發(fā)送所述執(zhí)行結(jié)果。
[0110]由于本實施例中的各單元能夠執(zhí)行圖1所示的方法,本實施例未詳細(xì)描述的部分,可參考對圖1的相關(guān)說明。
[0111]本發(fā)明實施例的技術(shù)方案具有以下有益效果:
[0112]本發(fā)明實施例中,可以同時利用多個進(jìn)程,分別執(zhí)行測試用例,以完成測試用例的自動化測試。與現(xiàn)有技術(shù)中,利用單執(zhí)行節(jié)點且單進(jìn)程的方