所述錯(cuò)誤類型以及所述拋出異常的代碼段,生成目標(biāo)錯(cuò)誤標(biāo)識(shí)碼。例如,對(duì)目標(biāo)測(cè)試用例的名稱、錯(cuò)誤類型以及拋出異常的代碼段這三個(gè)字符串進(jìn)行哈希(Hash)運(yùn)行,從而生成目標(biāo)錯(cuò)誤標(biāo)識(shí)碼,該錯(cuò)誤標(biāo)識(shí)碼可以記為key。
[0075]202、確定歷史Web測(cè)試任務(wù)對(duì)應(yīng)的錯(cuò)誤標(biāo)識(shí)碼中是否存目標(biāo)錯(cuò)誤標(biāo)識(shí)碼。
[0076]本步驟中,根據(jù)所述目標(biāo)錯(cuò)誤標(biāo)識(shí)碼以及歷史Web測(cè)試任務(wù)對(duì)應(yīng)的錯(cuò)誤標(biāo)識(shí)碼,確定所述錯(cuò)誤出現(xiàn)的次數(shù)。該過程中,查詢歷史數(shù)據(jù)以確定歷史Web測(cè)試任務(wù)對(duì)應(yīng)的錯(cuò)誤標(biāo)識(shí)碼中是否存在目標(biāo)錯(cuò)誤標(biāo)識(shí)碼key,即是否存在相同的key,若不存在,則執(zhí)行步驟203;否貝IJ,若執(zhí)行步驟206。
[0077]步驟203、確定錯(cuò)誤出現(xiàn)的次數(shù)為I。
[0078]若歷史Web測(cè)試任務(wù)對(duì)應(yīng)的錯(cuò)誤標(biāo)識(shí)碼中不存在目標(biāo)錯(cuò)誤標(biāo)識(shí)碼,則說明該錯(cuò)誤是首次出現(xiàn)的新的錯(cuò)誤,即錯(cuò)誤出現(xiàn)的次數(shù)為I。
[0079 ]步驟204、在歷史數(shù)據(jù)庫(kù)中增加該錯(cuò)誤。
[0080]本步驟中,在歷史數(shù)據(jù)庫(kù)中新增一條記錄,包括本次運(yùn)行錯(cuò)誤的目標(biāo)錯(cuò)誤標(biāo)識(shí)碼、程序拋出異常時(shí)間tl、出錯(cuò)次數(shù)置1(次數(shù)為I)、目標(biāo)測(cè)試用例的名稱、異常拋出的代碼段等。
[0081 ]步驟205、根據(jù)所述錯(cuò)誤,發(fā)出告警信息。
[0082]由于該錯(cuò)誤為首次出現(xiàn)的新的錯(cuò)誤,其嚴(yán)重程度與影響范圍未知,因此,需要針對(duì)該錯(cuò)誤發(fā)出告警信息。告警信息包括:當(dāng)前服務(wù)器的信息、第一測(cè)試用例名稱、錯(cuò)誤類型、拋出異常的代碼段等內(nèi)容,并通過預(yù)設(shè)的短信、郵件等方式向測(cè)試人員發(fā)出告警信息。當(dāng)然,也可以先確定該錯(cuò)誤的錯(cuò)誤類型是否屬于告警類型,若屬于,則發(fā)出告警信息,否則,不告塾目ο
[0083]步驟206、確定出現(xiàn)該錯(cuò)誤的時(shí)間間隔是否大于時(shí)間間隔閾值。
[0084]若歷史數(shù)據(jù)庫(kù)中,歷史Web測(cè)試任務(wù)對(duì)應(yīng)的錯(cuò)誤標(biāo)識(shí)碼中存在該目標(biāo)標(biāo)識(shí)碼,即存在相同的key,說明該錯(cuò)誤在歷史測(cè)試中曾經(jīng)出現(xiàn)過,查詢歷史數(shù)據(jù)庫(kù)確定該錯(cuò)誤的上次出現(xiàn)時(shí)間tO。另外,通過查詢歷史數(shù)據(jù)庫(kù)還可以確定該錯(cuò)誤的出現(xiàn)次數(shù)count、錯(cuò)誤類型type、目標(biāo)測(cè)試用例名稱、錯(cuò)誤分類、錯(cuò)誤段代碼等。通過讀取配置文件可以獲取該錯(cuò)誤的時(shí)間間隔閾值T、重試次數(shù)閾值N、錯(cuò)誤出現(xiàn)次數(shù)閾值K以及告警類型(Fail Type)等,接下來根據(jù)所述時(shí)間間隔,確定所述錯(cuò)誤出現(xiàn)的次數(shù)。其中,出現(xiàn)該錯(cuò)誤的時(shí)間間隔為t1-to。
[0085]本步驟中,若tl_tO>T,則說明該錯(cuò)誤在當(dāng)前服務(wù)器上和其他服務(wù)器上并不是連續(xù)發(fā)生的,執(zhí)行步驟207;否則,若tl-tO < T,則執(zhí)行步驟212。
[0086]步驟207、查詢歷史數(shù)據(jù)庫(kù)以獲取所述錯(cuò)誤出現(xiàn)的次數(shù),將該次數(shù)重置為1,并將上次出現(xiàn)時(shí)間to更新為當(dāng)前的程序異常拋出時(shí)間tl。
[0087]208、確定該錯(cuò)誤的錯(cuò)誤類型是否屬于告警類型。
[0088]本步驟中,讀取配置文件以確定告警類型,并確定該錯(cuò)誤的錯(cuò)誤類型是否屬于立即告警類型,若不屬于,則執(zhí)行步驟209;否則,若屬于,則執(zhí)行步驟205,然后,執(zhí)行步驟211。
[0089]步驟209、確定當(dāng)前重試次數(shù)。
[0090]具體的,查詢歷史數(shù)據(jù)庫(kù)以確定重試次數(shù),并將該重試次數(shù)加I,以獲取當(dāng)前重試次數(shù)。
[0091]步驟210、確定當(dāng)前重試次數(shù)是否小于重試次數(shù)閾值N,若是,則執(zhí)行步驟201;否貝1J,執(zhí)行步驟211。
[0092]步驟211、結(jié)束Web測(cè)試任務(wù)。
[0093]步驟212、當(dāng)前統(tǒng)計(jì)到的該錯(cuò)誤的出現(xiàn)次數(shù)是否小于錯(cuò)誤次數(shù)發(fā)生閾值,若是,則執(zhí)行步驟213;否則,執(zhí)行步驟214。
[0094]步驟213、在歷史數(shù)據(jù)庫(kù)中將錯(cuò)誤出現(xiàn)的次數(shù)加I,并將上次出現(xiàn)時(shí)間tO更新為當(dāng)前的程序異常拋出時(shí)間tl,然后,執(zhí)行步驟208。
[0095]本步驟中可以確定,錯(cuò)誤出現(xiàn)的次數(shù)為當(dāng)前統(tǒng)計(jì)到的次數(shù)加I。
[0096]步驟214、在歷史數(shù)據(jù)庫(kù)中將錯(cuò)誤出現(xiàn)的次數(shù)初始化為O,并將上次出現(xiàn)時(shí)間tO初始化為O,然后,執(zhí)行步驟205。
[0097]本步驟中可以確定,錯(cuò)誤出現(xiàn)的次數(shù)為O。
[0098]步驟205、根據(jù)所述錯(cuò)誤,發(fā)出告警信息,然后,執(zhí)行步驟211。
[0099]需要說明的是,圖3中出現(xiàn)的兩個(gè)步驟205,實(shí)質(zhì)上是同一個(gè)步驟,之所以出現(xiàn)兩次,是為了使圖中線條不交叉、使圖更為清楚。
[0100]圖4為本發(fā)明測(cè)試機(jī)實(shí)施例一的結(jié)構(gòu)示意圖。本實(shí)施例提供的測(cè)試機(jī)是與本發(fā)明圖2實(shí)施例對(duì)應(yīng)的裝置實(shí)施例,具體實(shí)現(xiàn)過程在此不再贅述。具體的,本實(shí)施例提供的測(cè)試機(jī)包括:
[0101]處理模塊11,用于確定當(dāng)前Web測(cè)試任務(wù)的測(cè)試用例及運(yùn)行所述測(cè)試用例的至少一個(gè)服務(wù)器的地址;
[0102]發(fā)送模塊12,用于根據(jù)所述處理器模塊確定的所述服務(wù)器的地址向?qū)?yīng)的每個(gè)服務(wù)器發(fā)送Web請(qǐng)求,以在所述Web服務(wù)器上運(yùn)行所述測(cè)試用例;
[0103]錯(cuò)誤信息生成模塊13,用于若接收到任意目標(biāo)測(cè)試用例在所述發(fā)送模塊12發(fā)送Web請(qǐng)求的服務(wù)器上運(yùn)行錯(cuò)誤的消息,則生成錯(cuò)誤信息;
[0104]確定模塊14,用于根據(jù)所述錯(cuò)誤信息生成模塊13生成的所述錯(cuò)誤信息,確定所述錯(cuò)誤出現(xiàn)的次數(shù)。
[0105]本發(fā)明實(shí)施例提供的測(cè)試機(jī),Web測(cè)試任務(wù)觸發(fā)后,測(cè)試機(jī)依次從Web測(cè)試任務(wù)等待隊(duì)列中取出Web測(cè)試任務(wù),對(duì)于當(dāng)前Web測(cè)試任務(wù),確定該當(dāng)前Web測(cè)試任務(wù)對(duì)應(yīng)的測(cè)試用例及需要運(yùn)行該些測(cè)試用例的服務(wù)器的地址列表,并遍歷該地址列表,向當(dāng)前遍歷到的服務(wù)器發(fā)送Web請(qǐng)求,以運(yùn)行測(cè)試用例,在目標(biāo)測(cè)試用例運(yùn)行錯(cuò)誤后,生成錯(cuò)誤信息,并根據(jù)該錯(cuò)誤信息確定錯(cuò)誤出現(xiàn)的次數(shù)。該過程中,在任意目標(biāo)測(cè)試用例運(yùn)行錯(cuò)誤后,對(duì)程序日志進(jìn)行分析和處理以獲取錯(cuò)誤信息,根據(jù)錯(cuò)誤信息確定出同一錯(cuò)誤出現(xiàn)的次數(shù),從而提高對(duì)錯(cuò)誤的處理速度。
[0106]可選的,在本發(fā)明一實(shí)施例中,所述錯(cuò)誤信息包括:程序日志目錄信息,時(shí)間戳,出現(xiàn)錯(cuò)誤的服務(wù)器的地址,所述測(cè)試機(jī)還包括:目標(biāo)錯(cuò)誤標(biāo)識(shí)碼生成模塊15,具體的,可參見圖5,圖5為本發(fā)明測(cè)試機(jī)實(shí)施例二的結(jié)構(gòu)示意圖。
[0107]請(qǐng)參照?qǐng)D5,本發(fā)明實(shí)施例中,目標(biāo)錯(cuò)誤標(biāo)識(shí)碼生成模塊15,用于在所述錯(cuò)誤信息生成模塊13生成所述錯(cuò)誤信息后,根據(jù)所述程序日志目錄信息,確定記錄所述錯(cuò)誤的程序日志,根據(jù)所述時(shí)間戳與所述出現(xiàn)錯(cuò)誤的服務(wù)器的地址,匹配所述程序日志,從而獲得發(fā)生所述錯(cuò)誤時(shí)的詳細(xì)信息,所述詳細(xì)信息包括:錯(cuò)誤類型、目標(biāo)測(cè)試用例的名稱、拋出異常的代碼段,根據(jù)所述目標(biāo)測(cè)試用例的名稱、所述錯(cuò)誤類型以及所述拋出異常的代碼段,生成目標(biāo)錯(cuò)誤標(biāo)識(shí)碼;
[0108]所述確定模塊14,用于根據(jù)所述目標(biāo)錯(cuò)誤標(biāo)識(shí)碼生成模塊15生成的所述目標(biāo)錯(cuò)誤標(biāo)識(shí)碼以及歷史Web測(cè)試任務(wù)對(duì)應(yīng)的錯(cuò)誤標(biāo)識(shí)碼,確定所述錯(cuò)誤出現(xiàn)的次數(shù)。
[0109]可選的,在本發(fā)明一實(shí)施例中,所述確定模塊14,具體用于若所述歷史Web測(cè)試任務(wù)的錯(cuò)誤標(biāo)識(shí)碼中不存在所述目標(biāo)錯(cuò)誤標(biāo)識(shí)碼,則確定所述錯(cuò)誤出現(xiàn)的次數(shù)為I。
[0110]可選的,在本發(fā)明一實(shí)施例中,所述詳細(xì)信息還包括:程序異常拋出時(shí)間tl,所述確定模塊14,具體用于若所述歷史web測(cè)試任務(wù)的錯(cuò)誤標(biāo)識(shí)碼中存在所述目標(biāo)錯(cuò)誤標(biāo)識(shí)碼,則確定所述錯(cuò)誤的上次出現(xiàn)時(shí)間tO;根據(jù)所述程序異常拋出時(shí)間tl與所述上次出現(xiàn)時(shí)間t0,確定出現(xiàn)述所述錯(cuò)誤的時(shí)間間隔;根據(jù)所述時(shí)間間隔,確定所述錯(cuò)誤出現(xiàn)的次數(shù)。
[0111]可選的,在本發(fā)明一實(shí)施例中,所述確定模塊14,具體用于若所述時(shí)間間隔大于時(shí)間間隔閾值,則將所述錯(cuò)誤出現(xiàn)的次數(shù)重置為I,并將所述上次出現(xiàn)時(shí)間to更新為當(dāng)前的程序異常拋出時(shí)間tl。
[0112]可選的,在本發(fā)明一實(shí)施例中,所述確定模塊14,具體用于當(dāng)所述時(shí)間間隔小于等于時(shí)間間隔閾值時(shí),若當(dāng)前統(tǒng)計(jì)的次數(shù)小于所述錯(cuò)誤發(fā)生次數(shù)閾值,則將所述錯(cuò)誤出現(xiàn)的次數(shù)加I,并將所述上次出現(xiàn)時(shí)間to更新為當(dāng)前的程序異常拋出時(shí)間tl。
[0113]可選的,在本發(fā)明一實(shí)施例中,所述確定模塊14,具體用于當(dāng)所述時(shí)間間隔小于等于時(shí)間間隔閾值時(shí),若當(dāng)前統(tǒng)計(jì)的次數(shù)大于等于所述錯(cuò)誤發(fā)生次數(shù)閾值,則將所述錯(cuò)誤出現(xiàn)的次數(shù)初始化為O,并將所述上次出現(xiàn)時(shí)間to初始化為O。
[0114]再請(qǐng)參照?qǐng)D5,在本發(fā)明一實(shí)施例中,測(cè)試機(jī)還包括:
[0115]告警模塊16,用于在所述確定模塊14根據(jù)所述錯(cuò)誤信息,確定所述錯(cuò)誤出現(xiàn)的次數(shù)之后,根據(jù)所述錯(cuò)誤類型與告警類型,確定是否發(fā)出告警信息。
[0116]可選的,在本發(fā)明一實(shí)施例中,所述告警模塊16,具體用于若所述錯(cuò)誤類型屬于所述告警類型,則發(fā)出所述告警信息;否則,若所