進(jìn)一步確定所述當(dāng)前重試次數(shù)是否小于重試次數(shù)閾值,若小于,則重新對所述出現(xiàn)錯誤的服務(wù)器運(yùn)行所述目標(biāo)測試用例;否則,結(jié)束所述當(dāng)前Web測試任務(wù)。
[0050]本發(fā)明實施例提供的Web測試方法與測試機(jī),Web測試任務(wù)觸發(fā)后,測試機(jī)依次從Web測試任務(wù)等待隊列中取出Web測試任務(wù),對于當(dāng)前Web測試任務(wù),確定該當(dāng)前Web測試任務(wù)對應(yīng)的測試用例及需要運(yùn)行該些測試用例的服務(wù)器的地址列表,并遍歷該地址列表,向當(dāng)前遍歷到的服務(wù)器發(fā)送Web請求,以運(yùn)行測試用例,在目標(biāo)測試用例運(yùn)行錯誤后,生成錯誤信息,并根據(jù)該錯誤信息確定錯誤出現(xiàn)的次數(shù)。該過程中,在任意目標(biāo)測試用例運(yùn)行錯誤后,對程序日志進(jìn)行分析和處理以獲取錯誤信息,根據(jù)錯誤信息確定出同一錯誤出現(xiàn)的次數(shù),從而提高對錯誤的處理速度。
【附圖說明】
[0051]圖1為本發(fā)明Web測試方法所適用的自動化測試系統(tǒng)架構(gòu)圖;
[0052]圖2為本發(fā)明Web測試方法實施例一的流程圖;
[0053]圖3為本發(fā)明Web測試方法實施例二的流程圖;
[0054]圖4為本發(fā)明測試機(jī)實施例一的結(jié)構(gòu)示意圖;
[0055]圖5為本發(fā)明測試機(jī)實施例二的結(jié)構(gòu)示意圖。
【具體實施方式】
[0056]為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0057]圖1為本發(fā)明Web測試方法所適用的自動化測試系統(tǒng)架構(gòu)圖。如圖1所示,該Web測試系統(tǒng)架構(gòu)包括測試機(jī)、歷史數(shù)據(jù)庫以及服務(wù)器集合。其中,測試機(jī)為部署了自動化測試框架、測試用例與配置文件的測試機(jī),自動化測試框架例如為Sikuli或Selenium等UI自動化測試框架,配置文件可以視為與測試用例相分離的測試數(shù)據(jù)。歷史數(shù)據(jù)庫中存儲了歷史Web測試任務(wù)中,出現(xiàn)的錯誤的相關(guān)信息,如次數(shù)、上次出現(xiàn)時間t0、重試次數(shù)等。服務(wù)器集合由多臺Web服務(wù)器組合而成,每個服務(wù)器都具有等價的地位,可以單獨(dú)對外提供Web服務(wù)、響應(yīng)外部的Web請求。當(dāng)服務(wù)器集合中一臺或幾臺服務(wù)器不可用時,只要有一臺可用,對外部的服務(wù)就不會中斷。下面,在此自動化測試系統(tǒng)架構(gòu)的基礎(chǔ)上,對本發(fā)明Web測試方法進(jìn)行詳細(xì)說明。具體的,可參加圖2。
[0058]圖2為本發(fā)明Web測試方法實施例一的流程圖。本實施例的執(zhí)行主體為測試機(jī),適用于當(dāng)測試用例運(yùn)行錯誤時,需要對測試結(jié)果進(jìn)行分析以確定出錯誤出現(xiàn)的次數(shù)的場景。具體的,本實施例包括如下步驟:
[0059]101、確定當(dāng)前Web測試任務(wù)的測試用例及運(yùn)行所述測試用例的至少一個服務(wù)器的地址。
[0060]一般來說,可通過人工觸發(fā)方式、定時觸發(fā)方式等觸發(fā)Web測試任務(wù),存在同一時間多個Web測試任務(wù)被觸發(fā)的情況,以及某一項Web測試任務(wù)被觸發(fā)的同時,其他Web測試任務(wù)未執(zhí)行完畢的情況。因此,在執(zhí)行Web測試任務(wù)之前,對至少一項Web測試任務(wù)進(jìn)行調(diào)度以生成Web測試任務(wù)等待隊列,即若當(dāng)前有其他Web測試任務(wù)正在運(yùn)行,則將當(dāng)前觸發(fā)的Web測試任務(wù)放入測試等待隊列中,等測試機(jī)空閑時依次處理。
[0061]具體的,當(dāng)Web測試任務(wù)被觸發(fā)時,首先判斷測試機(jī)上是否存在進(jìn)行中的Web測試任務(wù)、測試機(jī)用于記錄測試過程的程序日志是否被占用、Web測試任務(wù)等待隊列中是否存在待開始的Web測試任務(wù)。若測試機(jī)上不存在正在進(jìn)行的Web測試任務(wù)、程序日志未被占用、Web測試任務(wù)等待隊列中不存在待開始的Web測試任務(wù),則對當(dāng)前觸發(fā)的Web測試任務(wù)進(jìn)行測試。否則,若測試機(jī)上存在正在進(jìn)行的Web測試任務(wù),則將當(dāng)前觸發(fā)的Web測試任務(wù)放入Web測試任務(wù)等待隊列,等待下一個輪詢時間再次判斷測試機(jī)上是否存在進(jìn)行中的Web測試任務(wù);若程序日志處于被占用的狀態(tài),則繼續(xù)等待下一次輪詢,直到定時器到時或程序日志未被占用時,開始對當(dāng)前觸發(fā)的Web測試任務(wù)進(jìn)行測試;若Web測試任務(wù)等待隊列中存在待開始的Web測試任務(wù),則將當(dāng)前觸發(fā)的Web測試任務(wù)放入Web測試任務(wù)等待隊列,下一個輪詢時間,判斷當(dāng)前時間是否滿足對Rb測試任務(wù)進(jìn)行測試的條件,若滿足,則按照時間順序從Web測試任務(wù)等待隊列中取出最早放入的Web測試任務(wù),開始執(zhí)行測試,若不滿足,則繼續(xù)等待下一個輪詢。該過程可以理解為對Web測試任務(wù)進(jìn)行調(diào)度的過程。
[0062]本步驟中,當(dāng)測試機(jī)空閑時,例如執(zhí)行完上一個Web測試任務(wù)后,從Web測試任務(wù)等待隊列中取出一個Web測試任務(wù),作為當(dāng)前Web測試任務(wù),確定出該當(dāng)前Web測試任務(wù)的測試用例,并根據(jù)測試用例的范圍,確定該測試用例對應(yīng)的至少一個服務(wù)器的地址,從而得到一個地址列表。該過程中,一個Web測試任務(wù)對應(yīng)的測試用例至少為一個,各個測試用例對應(yīng)的地址列表存儲在配置文件中。另外,若服務(wù)器設(shè)置了登陸賬號與密碼,則還可以讀取配置文件以獲取地址列表中的各個服務(wù)器的登陸賬號與密碼等。
[0063]102、根據(jù)所述服務(wù)器的地址向?qū)?yīng)的每個服務(wù)器發(fā)送Web請求,以在所述Web服務(wù)器上運(yùn)行所述測試用例。
[0064]本步驟中,測試機(jī)依次遍歷地址列表中的各個服務(wù)器,向當(dāng)前遍歷到的服務(wù)器發(fā)送Web請求,以運(yùn)行該些測試用例。例如,在進(jìn)行頁面登錄功能的過程中,打開登錄頁面,通過Selenium提供的元素定位方法如身份標(biāo)識(Identity,id)、姓名(name)、連接(link)、XML路徑語言(xpath)、層疊樣式表(css)等,找到用戶名輸入框,在頁面用戶名輸入框輸入用戶名;采用同樣的方式定位密碼輸入框,在密碼輸入框中輸入密碼,定位并點擊登錄按鈕,完成登錄動作。該過程中,元素定位方法和其對應(yīng)的值、用戶名、用戶密碼,均可以在配置文件中定義,這樣可以降低測試人員維護(hù)代碼的成本,提高代碼復(fù)用性。
[0065]103、若接收到任意目標(biāo)測試用例在服務(wù)器上運(yùn)行錯誤的消息,則生成錯誤信息。
[0066]本步驟中,對于當(dāng)前遍歷到的每一臺服務(wù)器,當(dāng)一個Web測試任務(wù)執(zhí)行完畢后,首先判斷本次測試結(jié)果是否成功:若成功,則本次測試結(jié)束;若失敗,則對測試結(jié)果進(jìn)行分析。具體的,若Web測試任務(wù)中的所有測試用例都運(yùn)行成功,則開始對地址列表中的下一個服務(wù)器執(zhí)行Web測試任務(wù);否則,若任意一個目標(biāo)測試用例,即至少一個測試用例中的任意一個測試用例在當(dāng)前正在遍歷到的服務(wù)器上運(yùn)行錯誤,則在接收到服務(wù)器發(fā)送的測試用例在該服務(wù)器上運(yùn)行錯誤的消息后,終止Web測試任務(wù),或者終止存在運(yùn)行錯誤的測試用例,并生成錯誤信息。上述步驟101?103,可以理解為對Web測試任務(wù)進(jìn)行執(zhí)行的過程。
[0067]104、根據(jù)所述錯誤信息,確定所述錯誤出現(xiàn)的次數(shù)。
[0068]在獲取到錯誤信息后,根據(jù)該錯誤信息,確定該錯誤在歷史數(shù)據(jù)庫中出現(xiàn)的次數(shù)。
[0069]本步驟可以理解為對Web測試任務(wù)的測試結(jié)果進(jìn)行分析以確定出錯誤出現(xiàn)的次數(shù)的過程。
[0070]本發(fā)明實施例提供的Web測試方法,Web測試任務(wù)觸發(fā)后,測試機(jī)依次從Web測試任務(wù)等待隊列中取出Web測試任務(wù),對于當(dāng)前Web測試任務(wù),確定該當(dāng)前Web測試任務(wù)對應(yīng)的測試用例及需要運(yùn)行該些測試用例的服務(wù)器的地址列表,并遍歷該地址列表,向當(dāng)前遍歷到的服務(wù)器發(fā)送Web請求,以運(yùn)行測試用例,在目標(biāo)測試用例運(yùn)行錯誤后,生成錯誤信息,并根據(jù)該錯誤信息確定錯誤出現(xiàn)的次數(shù)。該過程中,在任意目標(biāo)測試用例運(yùn)行錯誤后,對程序日志進(jìn)行分析和處理以獲取錯誤信息,根據(jù)錯誤信息確定出同一錯誤出現(xiàn)的次數(shù),從而提高對錯誤的處理速度。
[0071]下面,用一個具體的流程圖上述實施例中,對Web測試任務(wù)的測試結(jié)果進(jìn)行分析以確定出錯誤出現(xiàn)的次數(shù)的過程進(jìn)行詳細(xì)說明。具體的,可參見圖3,圖3為本發(fā)明Web測試方法實施例二的流程圖。
[0072]請參照圖3,本實施例包括如下步驟:
[0073]201、目標(biāo)測試用例在服務(wù)器上運(yùn)行錯誤,生成錯誤信息,進(jìn)一步生成目標(biāo)錯誤標(biāo)識碼。
[0074]具體的,錯誤信息包括:程序日志目錄信息,時間戳,出現(xiàn)錯誤的服務(wù)器的地址,所述生成錯誤信息之后,需要根據(jù)所述程序日志目錄信息,確定記錄所述錯誤的程序日志;根據(jù)所述時間戳與所述出現(xiàn)錯誤的服務(wù)器的地址,匹配所述程序日志,從而獲得發(fā)生所述錯誤時的詳細(xì)信息,所述詳細(xì)信息包括:錯誤類型、目標(biāo)測試用例的名稱、拋出異常的代碼段,以及發(fā)生錯誤是的統(tǒng)一資源定位符(Uniform Resoure Locator,URL)、頁面Cookie信息等;根據(jù)所述目標(biāo)測試用例的名稱、