用于自動(dòng)分析和鏈接錯(cuò)誤日志的分析引擎的制作方法
【專利摘要】本發(fā)明提供一種用于分析錯(cuò)誤日志的方法。可以使用自動(dòng)化的系統(tǒng)來(lái)分析并鏈接測(cè)試結(jié)果。在第一實(shí)施例中,可以接收包括與錯(cuò)誤關(guān)聯(lián)的日志數(shù)據(jù)的錯(cuò)誤日志??梢越馕鋈罩緮?shù)據(jù)以將它轉(zhuǎn)換為標(biāo)準(zhǔn)化的格式,從而允許更容易的搜索和比較。一旦被標(biāo)準(zhǔn)化,可以在解析的日志數(shù)據(jù)和從錯(cuò)誤日志獲得的先前錯(cuò)誤之間進(jìn)行自動(dòng)比較。如果在解析的日志數(shù)據(jù)和先前錯(cuò)誤之間找到匹配,那么可以將解析的日志數(shù)據(jù)鏈接到先前錯(cuò)誤,以便在二者之間生成關(guān)系。
【專利說(shuō)明】用于自動(dòng)分析和鏈接錯(cuò)誤日志的分析引擎
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及用于分析錯(cuò)誤日志的方法。
【背景技術(shù)】
[0002]開發(fā)新應(yīng)用可能包括用于確保滿足應(yīng)用目標(biāo)的強(qiáng)度測(cè)試(intensive test)。例如,應(yīng)用設(shè)計(jì)者一般會(huì)進(jìn)行必須要考慮到的質(zhì)量考慮。為了測(cè)試應(yīng)用,應(yīng)用設(shè)計(jì)者撰寫特定的測(cè)試用例,進(jìn)行可用性研究,并且執(zhí)行時(shí)間集中的特設(shè)的測(cè)試以確保滿足設(shè)計(jì)目標(biāo)。為了提高效率,可以創(chuàng)建模仿人類與應(yīng)用交互的自動(dòng)化測(cè)試,諸如自動(dòng)選擇按鈕、菜單項(xiàng)等等。基于測(cè)試,一般會(huì)生成錯(cuò)誤日志。錯(cuò)誤日志可以包括測(cè)試結(jié)果,和關(guān)于錯(cuò)誤的信息的各種字段??梢苑治鲥e(cuò)誤日志來(lái)確定錯(cuò)誤原因,使得可以對(duì)應(yīng)用進(jìn)行修正。
[0003]當(dāng)前,錯(cuò)誤日志的分析消耗大量的時(shí)間和金錢。應(yīng)用設(shè)計(jì)者分析錯(cuò)誤的原因,并且對(duì)如何實(shí)施修正行為進(jìn)行確定。相同的錯(cuò)誤可以多次重現(xiàn),如果查看錯(cuò)誤日志的人想不起該錯(cuò)誤的原因,則他或她必須重新確定原因和解決方案。
【發(fā)明內(nèi)容】
[0004]可以使用自動(dòng)化的系統(tǒng)來(lái)分析并鏈接錯(cuò)誤日志。在第一實(shí)施例中,可以接收包括與錯(cuò)誤關(guān)聯(lián)的日志數(shù)據(jù)的錯(cuò)誤日志??梢越馕鋈罩緮?shù)據(jù)以將它轉(zhuǎn)換為標(biāo)準(zhǔn)化的格式,以允許更容易的搜索和比較。一旦被標(biāo)準(zhǔn)化,可以在解析的日志數(shù)據(jù)和從錯(cuò)誤日志獲得的先前錯(cuò)誤之間進(jìn)行自動(dòng)比較。如果在解析的日志數(shù)據(jù)和先前錯(cuò)誤之間找到匹配,那么可以將解析的日志數(shù)據(jù)鏈接到先前錯(cuò)誤,以便在它們之間生成關(guān)系。
[0005]在另一實(shí)施例中,用戶可以改變存儲(chǔ)的鏈接信息。通過接收用戶提供的修正的鏈接信息,系統(tǒng)可以被教育如何處理將來(lái)的情形,以使得鏈接可以更精確。從而,隨著獲得更多的結(jié)果,自學(xué)機(jī)制允許精確度提高。最終,隨著系統(tǒng)繼續(xù)將結(jié)果鏈接起來(lái),可以獲得測(cè)試故障與根原因(root cause)的更精確的匹配。
[0006]在另一實(shí)施例中,可以實(shí)現(xiàn)一組規(guī)則以便定制是否出現(xiàn)匹配。例如,匹配器可以基于錯(cuò)誤類型、錯(cuò)誤消息、蹤跡數(shù)據(jù)、源代碼中的位置等等來(lái)過濾結(jié)果。通過定制在找到匹配之前滿足哪些這樣的匹配標(biāo)準(zhǔn)或滿足多少這樣的匹配標(biāo)準(zhǔn),允許用戶配置匹配的結(jié)果的范圍。從而,用戶可以通過要求匹配更少標(biāo)準(zhǔn)來(lái)增加該范圍??商鎿Q地,用戶可以通過要求匹配更多標(biāo)準(zhǔn)來(lái)減小該范圍(更少匹配)。
[0007]提供此
【發(fā)明內(nèi)容】
來(lái)用簡(jiǎn)化的形式介紹構(gòu)思的選擇,其將在下面的詳細(xì)描述中進(jìn)一步描述。此
【發(fā)明內(nèi)容】
不是旨在指示要求的主題的關(guān)鍵特征或?qū)嵸|(zhì)特征,其也不是意在被用來(lái)限制要求的主題的范圍。
[0008]從下面參照附圖進(jìn)行的詳細(xì)描述中,本發(fā)明的上述和其他目標(biāo)、特征和優(yōu)點(diǎn)將變得更加清楚。
【專利附圖】
【附圖說(shuō)明】
[0009]圖1是用于自動(dòng)分析錯(cuò)誤日志的根據(jù)一個(gè)實(shí)施例的系統(tǒng)圖。
[0010]圖2是用于自動(dòng)分析錯(cuò)誤日志的根據(jù)另一實(shí)施例的系統(tǒng)圖。
[0011]圖3是根據(jù)另一實(shí)施例的用于自動(dòng)分析錯(cuò)誤日志的方法的流程圖。
[0012]圖4是根據(jù)另一實(shí)施例的用于自動(dòng)分析錯(cuò)誤日志的方法的流程圖。
[0013]圖5是示出匹配標(biāo)準(zhǔn)的不同層的流程圖。
[0014]圖6是可用于在此描述的任何實(shí)施例的示范性計(jì)算環(huán)境。
【具體實(shí)施方式】
[0015]圖1是用于自動(dòng)分析錯(cuò)誤日志的根據(jù)一個(gè)實(shí)施例的系統(tǒng)100。如在此使用地,錯(cuò)誤日志是用作測(cè)試結(jié)果、例外、錯(cuò)誤消息、或應(yīng)用日志的任何機(jī)器生成的文件或消息。從而,錯(cuò)誤日志可以是用于識(shí)別故障的、由處于測(cè)試下的應(yīng)用自動(dòng)生成的任何事物。應(yīng)用110可以由應(yīng)用測(cè)試器112來(lái)分析。在一個(gè)特定的例子中,應(yīng)用110可以具有可由用戶選擇的、包括按鈕、菜單項(xiàng)、滑動(dòng)塊等的用戶接口元素。應(yīng)用測(cè)試器112可以自動(dòng)模仿用戶接口元素的選擇,并且將應(yīng)用110的反應(yīng)與預(yù)定結(jié)果比較。如果存在差異,那么生成錯(cuò)誤,并且可以在錯(cuò)誤日志114中存儲(chǔ)錯(cuò)誤。錯(cuò)誤日志可以被輸入到解析器120中,解析器120以第一格式從錯(cuò)誤日志接收日志數(shù)據(jù),并且以第二格式輸出日志數(shù)據(jù)。日志數(shù)據(jù)可以包括提供關(guān)于錯(cuò)誤的信息的多個(gè)字段。在一個(gè)例子中,解析器可以搜索日志數(shù)據(jù)以找出錯(cuò)誤類型,并且將錯(cuò)誤類型作為第一字段放在要存儲(chǔ)在庫(kù)(library) 130中的錯(cuò)誤日志中??梢灶愃频厮阉鞑⒅亟M其它字段,以便在庫(kù)130中以一致的格式存儲(chǔ)日志數(shù)據(jù)。作為變換的一部分,解析器可以生成要被包括在錯(cuò)誤日志中的新字段,諸如唯一標(biāo)識(shí)符。
[0016]解析器的示例輸出可以包括與錯(cuò)誤關(guān)聯(lián)的以下字段:
[0017]事件標(biāo)識(shí)符-解析器可以生成每個(gè)錯(cuò)誤的唯一標(biāo)識(shí)符,以用于庫(kù)130中的存儲(chǔ)和標(biāo)識(shí)。
[0018]錯(cuò)誤類型-錯(cuò)誤類型可以是與發(fā)生的錯(cuò)誤相關(guān)聯(lián)的標(biāo)識(shí)符,并且可以是數(shù)字、文本、字母數(shù)字等。
[0019]錯(cuò)誤消息-錯(cuò)誤消息可以是發(fā)生的錯(cuò)誤的文本描述。
[0020]蹤跡(trace)-蹤跡可以包括被運(yùn)行直到促使錯(cuò)誤的觸發(fā)事件發(fā)生的一系列代碼語(yǔ)句。
[0021]源上下文(source context)-上下文可以是與發(fā)生的錯(cuò)誤關(guān)聯(lián)的、在源代碼中的位置。
[0022]原始內(nèi)容-原始內(nèi)容可以由應(yīng)用來(lái)提供。
[0023]鏈接類型-錯(cuò)誤可以具有三種鏈接類型之一:
[0024]a.基本鏈接類型-尚未見過的新錯(cuò)誤生成基本鏈接類型。
[0025]b.匹配鏈接類型-如果找到匹配,那么鏈接類型被匹配。多個(gè)匹配鏈接類型可以鏈接到同一基本鏈接類型。
[0026]c.根鏈接類型-如果用戶更新鏈接類型使得匹配鏈接類型需要轉(zhuǎn)換為基本鏈接類型,那么被替換的鏈接類型成為根鏈接類型。
[0027]應(yīng)該理解,某些以上字段可以被排除而添加其它字段。一旦解析器120在庫(kù)130中存儲(chǔ)轉(zhuǎn)換的錯(cuò)誤日志(包括以上標(biāo)識(shí)的字段),則調(diào)用匹配器140。匹配器140可以讀取配置文件142,其中,可以由用戶諸如通過用戶接口 150動(dòng)態(tài)地配置配置文件142。配置文件142可以指令匹配器140如何定制匹配。例如,匹配器140可以基于如下的上述字段的一個(gè)或多個(gè)來(lái)過濾結(jié)果:錯(cuò)誤類型、錯(cuò)誤消息、蹤跡數(shù)據(jù)、在源代碼中的位置等。通過在找到匹配之前定制滿足哪些這樣的匹配標(biāo)準(zhǔn)或多少這樣的匹配標(biāo)準(zhǔn),允許用戶配置匹配結(jié)果的范圍。從而,用戶可以通過要求匹配更少的標(biāo)準(zhǔn)來(lái)增加該范圍。可替換地,用戶可以通過要求匹配更多的標(biāo)準(zhǔn)來(lái)減小該范圍。
[0028]在一個(gè)例子中,匹配器140可以匹配錯(cuò)誤類型和錯(cuò)誤消息。存儲(chǔ)在庫(kù)130中的錯(cuò)誤消息可以包括用來(lái)識(shí)別單個(gè)錯(cuò)誤類型的可能錯(cuò)誤表達(dá)的列表。不同的用戶可以不同地描述錯(cuò)誤,并且該錯(cuò)誤表達(dá)列表允許可以用于識(shí)別同一錯(cuò)誤的替換表達(dá)。在下面示出示例列表。
[0029]String []regex=new String[8];
[0030]regex[0]="Element.*not(present|found)”;
[0031]regex [I] =".*? [t, T] ext.*not (present | found)";
[0032]regex[2]=〃Text.*?did not disappear from the page within the specifiedtimeout";
[0033]regex[3]="Selenium object was
[0034]null.*?expected:.*? (true|false).*?but\\was.*? (true|false).*?";
[0035]regex [4] =//Expected to find the textX^Company Id: X^on the applicat1nlogin page but didn't.;
[0036]regex[5]=".*?expected.*?(true|false).*?but\\was.*?(true|false).*?";
[0037]regex[6]=".*?fails: Cannot locate element with:.*?";
[0038]regex[7]=〃Expected mail.*?Please be advised that the document.*?forruntimeAdded.*?has been created";
[0039]如果匹配器140匹配列表中任何一種表達(dá),那么可以將錯(cuò)誤消息認(rèn)為是匹配的。從而,匹配器140可以有方法地將解析的日志數(shù)據(jù)與庫(kù)130中多個(gè)候選錯(cuò)誤比較。首先,可以比較錯(cuò)誤類型,并且如果在解析的日志數(shù)據(jù)的錯(cuò)誤類型和候選錯(cuò)誤之間存在匹配,那么可以執(zhí)行進(jìn)一步的分析。例如,可以將解析的日志數(shù)據(jù)的錯(cuò)誤消息與候選錯(cuò)誤的錯(cuò)誤消息比較。如果解析的日志數(shù)據(jù)匹配錯(cuò)誤類型和錯(cuò)誤消息這兩者,那么依賴于配置文件,要么出現(xiàn)匹配,要么可以比較額外的數(shù)據(jù)。例如,匹配器可以繼續(xù)確定蹤跡和/或源上下文的一個(gè)或兩者是否是匹配的。無(wú)論如何,如果找到匹配,則候選錯(cuò)誤的鏈接類型可以用作解析的日志數(shù)據(jù)的鏈接類型。從而,可以在解析的日志數(shù)據(jù)和候選錯(cuò)誤之間建立關(guān)系。
[0040]結(jié)果獲取器(fetcher) 160可以響應(yīng)于用戶接口 150以便在庫(kù)130中搜索需要的結(jié)果。例如,可以使用用戶接口 150來(lái)與結(jié)果獲取器160通信,請(qǐng)求所存儲(chǔ)的某種類型的錯(cuò)誤。這可以允許用戶識(shí)別在過去已發(fā)生的錯(cuò)誤。可以在任何與錯(cuò)誤關(guān)聯(lián)的字段上執(zhí)行搜索。
[0041]圖2示出用于自動(dòng)分析測(cè)試結(jié)果的根據(jù)另一實(shí)施例的系統(tǒng)200。分析引擎210可以包括庫(kù)或數(shù)據(jù)庫(kù)212,其以標(biāo)準(zhǔn)化格式存儲(chǔ)具有合并在其中的鏈接信息的多個(gè)錯(cuò)誤日志項(xiàng)(entry),以將通用錯(cuò)誤日志項(xiàng)鏈接在一起。API214允許用戶與分析引擎210通信以更新或搜索庫(kù)212。API214可以通過結(jié)果入口 220訪問,其中,結(jié)果入口 220與API通信,并且可以報(bào)告已接收的新錯(cuò)誤日志230。通過結(jié)果入口 220還可以向分析引擎210傳達(dá)用戶活動(dòng)240。用戶活動(dòng)240可以與用于搜索庫(kù)212的請(qǐng)求關(guān)聯(lián),或者可以是使用鏈接信息來(lái)更新庫(kù)的請(qǐng)求,其將如下面進(jìn)一步描述。如果用戶活動(dòng)240是用于搜索庫(kù)212的請(qǐng)求,則通過結(jié)果入口 220向API214發(fā)送用戶請(qǐng)求。API然后向結(jié)果獲取器模塊250發(fā)送請(qǐng)求,其搜索庫(kù)212,獲得搜索結(jié)果,并通過API向用戶返回結(jié)果。搜索可以基于在庫(kù)中存儲(chǔ)的、與錯(cuò)誤關(guān)聯(lián)的任何字段,包括事件標(biāo)識(shí)符、錯(cuò)誤類型、錯(cuò)誤消息等。如果用戶活動(dòng)240是請(qǐng)求更新庫(kù)212,那么API向更新器252發(fā)送請(qǐng)求,更新器252可以訪問庫(kù)212,并且根據(jù)用戶的指令改變存儲(chǔ)在庫(kù)212中的鏈接類型。
[0042]當(dāng)接收到新的錯(cuò)誤日志230時(shí),結(jié)果入口 220以文本格式在日志事件供給器(feeder)260中存儲(chǔ)錯(cuò)誤日志230 (包括之前描述的字段)。然后日志事件供給器260可以向解析器262傳遞錯(cuò)誤日志。解析器262可以讀遍錯(cuò)誤日志以識(shí)別各個(gè)字段,并且將錯(cuò)誤日志轉(zhuǎn)換為標(biāo)準(zhǔn)化格式,以用于庫(kù)212中的存儲(chǔ)。標(biāo)準(zhǔn)化格式可以是依賴特定實(shí)現(xiàn)的各種格式的任何一種。例如,可以對(duì)錯(cuò)誤日志中的字段重排、格式化和/或截短等等,使得庫(kù)具有適于搜索的標(biāo)準(zhǔn)化的數(shù)據(jù)庫(kù)。取決于由用戶提供的定制信息,解析器262還可以經(jīng)由源索引器268來(lái)訪問源代碼266。使用源索引器268,可以識(shí)別與錯(cuò)誤日志關(guān)聯(lián)的源代碼中的位置,并且將其與解析的錯(cuò)誤日志一起存儲(chǔ)在庫(kù)212中。另外,在庫(kù)212中存儲(chǔ)錯(cuò)誤日志之后,解析器可以生成與錯(cuò)誤日志關(guān)聯(lián)的唯一標(biāo)識(shí)符(事件標(biāo)識(shí)符)。一旦解析器262完成了轉(zhuǎn)換,則可以向匹配器270通知已經(jīng)存儲(chǔ)新的錯(cuò)誤日志。這個(gè)通知可以包括事件標(biāo)識(shí)符,其使得匹配器可以識(shí)別錯(cuò)誤日志。然后匹配器270可以訪問庫(kù)212,并且執(zhí)行搜索以自動(dòng)比較解析的日志數(shù)據(jù)(新錯(cuò)誤日志)與存儲(chǔ)在庫(kù)212中的一個(gè)或多個(gè)先前錯(cuò)誤。具體地,先前錯(cuò)誤已經(jīng)將以類似格式存儲(chǔ)的錯(cuò)誤日志與新錯(cuò)誤日志關(guān)聯(lián),并且匹配器270可以根據(jù)用戶提供的定制選項(xiàng)來(lái)比較錯(cuò)誤日志。如果在解析的日志數(shù)據(jù)和先前錯(cuò)誤之間找到匹配,那么匹配器270可以使用匹配的先前錯(cuò)誤的鏈接類型,以用于將這兩個(gè)錯(cuò)誤關(guān)聯(lián)起來(lái)。從而,匹配器270可以評(píng)定解析的日志數(shù)據(jù)的鏈接類型,并且基于與關(guān)聯(lián)于錯(cuò)誤日志的先前錯(cuò)誤的比較,來(lái)插入合適的鏈接類型。存儲(chǔ)在庫(kù)212中的錯(cuò)誤日志可以包括描述錯(cuò)誤為什么發(fā)生的字段。可以由用戶提供這個(gè)字段以記錄關(guān)于對(duì)于估計(jì)類似的將來(lái)的錯(cuò)誤有用的錯(cuò)誤的信肩、O
[0043]圖3是用于分析錯(cuò)誤日志的方法的流程圖。在處理框310中,可以接收包括日志數(shù)據(jù)的錯(cuò)誤日志。日志數(shù)據(jù)可以包括與錯(cuò)誤關(guān)聯(lián)的錯(cuò)誤類型、錯(cuò)誤消息、和蹤跡信息。在處理框320中,解析器可以解析日志數(shù)據(jù),并且將其轉(zhuǎn)換為標(biāo)準(zhǔn)化形式。當(dāng)錯(cuò)誤日志被存儲(chǔ)在庫(kù)中時(shí),解析器可以進(jìn)一步創(chuàng)建唯一地標(biāo)識(shí)錯(cuò)誤日志的事件標(biāo)識(shí)符。另外,解析器可以搜遍與被測(cè)試的應(yīng)用關(guān)聯(lián)的源代碼,以便確定在其中發(fā)生錯(cuò)誤的源代碼中的位置。在處理框330中,可以在解析的日志數(shù)據(jù)和先前錯(cuò)誤之間自動(dòng)進(jìn)行比較,其中,先前錯(cuò)誤與存儲(chǔ)在庫(kù)中的日志數(shù)據(jù)關(guān)聯(lián)。比較可以基于一個(gè)或多個(gè)字段。例如,如果解析的日志數(shù)據(jù)的錯(cuò)誤類型與候選錯(cuò)誤的錯(cuò)誤類型相同,那么可以在其它字段上執(zhí)行進(jìn)一步的比較。如果根據(jù)定制標(biāo)準(zhǔn)而匹配相應(yīng)的字段,那么可以認(rèn)為找到匹配。在處理框340中,如果找到匹配,那么將解析的日志數(shù)據(jù)鏈接到匹配的先前錯(cuò)誤,以便將這兩個(gè)關(guān)聯(lián)起來(lái)。以這種方法,用戶可以使用自動(dòng)化技術(shù)來(lái)確定對(duì)于解析的日志數(shù)據(jù)為什么發(fā)生錯(cuò)誤。
[0044]圖4是根據(jù)另一實(shí)施例的流程圖。在處理框410中,可以接收到錯(cuò)誤日志,錯(cuò)誤日志通過自動(dòng)測(cè)試應(yīng)用而獲得。例如,可以使用諸如腳本的應(yīng)用測(cè)試器來(lái)自動(dòng)測(cè)試按鈕、菜單項(xiàng)、滾動(dòng)條等??梢灶愃频販y(cè)試其它Π或非Π特征。應(yīng)用測(cè)試器可以生成錯(cuò)誤日志。在處理框420中,可以在日志事件的庫(kù)中存儲(chǔ)錯(cuò)誤日志。在處理框430中,可以在存儲(chǔ)的錯(cuò)誤日志和先前存儲(chǔ)的錯(cuò)誤日志之間進(jìn)行比較。從而,進(jìn)行比較以確定當(dāng)前錯(cuò)誤是否與先前錯(cuò)誤日志關(guān)聯(lián)。在處理框440中,如果找到匹配,那么將當(dāng)前錯(cuò)誤鏈接至先前接收的錯(cuò)誤日志。然后,通過由錯(cuò)誤日志獲得的錯(cuò)誤信息的系統(tǒng)的轉(zhuǎn)換和存儲(chǔ),用戶可以在庫(kù)中搜索各種參數(shù),以通過與先前錯(cuò)誤的比較而快速地確定錯(cuò)誤的原因。如果沒找到匹配,那么存儲(chǔ)錯(cuò)誤日志并將錯(cuò)誤日志標(biāo)識(shí)為尚未見過的新錯(cuò)誤。
[0045]圖5是用于在當(dāng)前錯(cuò)誤和候選錯(cuò)誤之間執(zhí)行匹配的方法的流程圖。在處理框510中,將日志數(shù)據(jù)中的錯(cuò)誤類型與候選錯(cuò)誤中的錯(cuò)誤類型比較。對(duì)于錯(cuò)誤類型,可以執(zhí)行文本上的比較來(lái)確定兩個(gè)錯(cuò)誤是否是相同的。通常,這樣的頂層(top level)匹配不足以匹配錯(cuò)誤。然而,基于定制參數(shù),可以判斷頂層匹配是充分的,或者需要匹配額外層以便確定錯(cuò)誤是相同的。如果需要額外層,那么在處理框520中,可以在日志數(shù)據(jù)中的錯(cuò)誤消息和候選錯(cuò)誤中的錯(cuò)誤消息之間進(jìn)行比較。如前所述,錯(cuò)誤消息可以包括與同一錯(cuò)誤關(guān)聯(lián)的可能的替換格式的列表。可以將日志數(shù)據(jù)中的錯(cuò)誤消息與任何替換格式之間的匹配解釋為匹配。如果基于定制選項(xiàng)還需要進(jìn)一步的分析的層,那么在處理框530中,可以在日志數(shù)據(jù)的蹤跡與候選錯(cuò)誤的蹤跡之間進(jìn)行比較。蹤跡指示導(dǎo)致錯(cuò)誤的發(fā)生的、在應(yīng)用中執(zhí)行的指令。對(duì)于蹤跡,可以在當(dāng)前錯(cuò)誤的蹤跡和先前錯(cuò)誤的蹤跡之間進(jìn)行文本上的比較。如果蹤跡相同或者如果蹤跡的某一百分比相同(例如,80%),那么可以認(rèn)為蹤跡匹配。如果還需要又一層的分析,那么在處理框540中,可以將用于當(dāng)前日志數(shù)據(jù)的源代碼中的位置與候選錯(cuò)誤的源代碼中的位置比較。如果通過文本上的比較找到匹配,那么可以認(rèn)為當(dāng)前錯(cuò)誤和候選錯(cuò)誤是匹配的。在這種情況下,可以將當(dāng)前錯(cuò)誤鏈接至候選錯(cuò)誤,使得在結(jié)果中包括錯(cuò)誤中的一個(gè)的未來(lái)搜索也將包括鏈接的錯(cuò)誤。
[0046]圖6描繪在其中可以實(shí)現(xiàn)所述創(chuàng)新的合適的計(jì)算環(huán)境600的通用例子。計(jì)算環(huán)境600沒有意欲表示對(duì)于使用或功能的范圍的任何限制,因?yàn)榭梢栽诟鞣N通用或?qū)S玫挠?jì)算系統(tǒng)中實(shí)現(xiàn)本創(chuàng)新。例如,計(jì)算環(huán)境600可以是各種計(jì)算設(shè)備的任何一種(例如,臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、平板計(jì)算機(jī)、媒體播放器、游戲系統(tǒng)、移動(dòng)設(shè)備等等)。
[0047]參照?qǐng)D6,計(jì)算環(huán)境600包括一個(gè)或多個(gè)處理單元610、615和存儲(chǔ)器620、625。在圖6中,此基本配置630包括在虛線之內(nèi)。處理單元610、615執(zhí)行計(jì)算機(jī)可執(zhí)行指令。處理單元可以是通用中央處理單元(CPU)、在專用集成電路(ASIC)中的處理器、或任何其它類型的處理器。在多進(jìn)程系統(tǒng)中,多個(gè)處理單元執(zhí)行計(jì)算機(jī)可執(zhí)行的指令以提高處理能力。例如,圖6示出中央處理單元610以及圖形處理單元或共處理單元615。真實(shí)的存儲(chǔ)器620、625可以是可由處理單元存取的易失性存儲(chǔ)器(例如,寄存器、高速緩存、RAM)、非易失性存儲(chǔ)器(例如,ROM、EEPROM、閃存等等)、或者這兩種的某種組合。存儲(chǔ)器620、625以適合于處理單元執(zhí)行的計(jì)算機(jī)可執(zhí)行指令形式來(lái)存儲(chǔ)用于實(shí)現(xiàn)在此描述的一種或多種創(chuàng)新的軟件680。
[0048]計(jì)算系統(tǒng)可以具有額外的特征。例如,計(jì)算環(huán)境600包括貯存器640、一個(gè)或多個(gè)輸入設(shè)備650、一個(gè)或多個(gè)輸出設(shè)備660、和一個(gè)或多個(gè)通信連接670。諸如總線、控制器、或網(wǎng)絡(luò)的互連機(jī)制(未示出)將計(jì)算環(huán)境600的部件互連。通常,操作系統(tǒng)軟件(未示出)為在計(jì)算環(huán)境600中運(yùn)行的其它軟件提供操作環(huán)境,并且協(xié)調(diào)計(jì)算環(huán)境600的部件的活動(dòng)。
[0049]真實(shí)的貯存器640可以是可移除的或固定的,并且包括可以用來(lái)以非瞬時(shí)性方式存儲(chǔ)信息并且在計(jì)算環(huán)境600之內(nèi)可以被存取的磁盤、磁帶或卡帶、CD-ROM、DVD或任何其它介質(zhì)。貯存器640存儲(chǔ)用于實(shí)現(xiàn)在此描述的一種或多種創(chuàng)新的軟件680的指令。
[0050]輸入設(shè)備650可以是觸摸輸入設(shè)備,諸如鍵盤、鼠標(biāo)、筆、或軌跡球、語(yǔ)音輸入設(shè)備、掃描設(shè)備、或者向計(jì)算環(huán)境600提供輸入的另一設(shè)備。對(duì)于視頻編碼,輸入設(shè)備650可以是相機(jī)、視頻卡、電視調(diào)諧卡、或者接受模擬或數(shù)字形式的視頻輸入的類似設(shè)備、或者將視頻樣本讀到計(jì)算環(huán)境600中的CD-ROM或CD-RW。輸出設(shè)備660可以是顯示器、打印機(jī)、揚(yáng)聲器、CD刻錄機(jī)、或者從計(jì)算環(huán)境600提供輸出的其他設(shè)備。
[0051]通信連接670使能通過通信介質(zhì)與另一計(jì)算實(shí)體的通信。通信介質(zhì)在調(diào)制的數(shù)據(jù)信號(hào)中傳遞諸如計(jì)算機(jī)可執(zhí)行指令、音頻或視頻輸入或輸出、或其它數(shù)據(jù)的信息。調(diào)制的數(shù)據(jù)信號(hào)是具有為了用于將信息編碼在信號(hào)中而設(shè)置或者變化的其特征的一個(gè)或多個(gè)的信號(hào)中。作為例子而不是限制,通信介質(zhì)可以使用電的、光的、RF、或其它載波。
[0052]雖然為了方便陳述,以特定的、順序的次序描述了一些公開的方法的操作,但是應(yīng)該理解,這種描述方式涵蓋了重排,除非通過下面闡述的特定語(yǔ)言要求特定的排序。例如,一些情況下可以重排或者同時(shí)執(zhí)行順序描述的操作。此外,為了簡(jiǎn)單起見,附圖可能沒有示出可以結(jié)合其它方法來(lái)使用所公開的方法的各種方式。
[0053]任何所公開的方法可以被實(shí)現(xiàn)為計(jì)算機(jī)可執(zhí)行指令,其存儲(chǔ)在一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(例如,一個(gè)或多個(gè)光介質(zhì)磁盤、易失性存儲(chǔ)部件(諸如DRAM或SRAM)、或者非易失性存儲(chǔ)部件(諸如閃存或硬盤驅(qū)動(dòng)))上,并且在計(jì)算機(jī)(例如,任何市場(chǎng)上可買到的計(jì)算機(jī),包括智能手機(jī)或包括計(jì)算硬件的其它移動(dòng)設(shè)備)上運(yùn)行。術(shù)語(yǔ)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)不包括諸如信號(hào)和載波的通信連接。用于實(shí)現(xiàn)所公開的技術(shù)的任何計(jì)算機(jī)可執(zhí)行指令,及在所公開的實(shí)施例的實(shí)現(xiàn)期間創(chuàng)建和使用的任何數(shù)據(jù)都可以被存儲(chǔ)在一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上。例如,計(jì)算機(jī)可執(zhí)行指令可以是專門的軟件應(yīng)用或經(jīng)由網(wǎng)絡(luò)瀏覽器訪問或下載的軟件應(yīng)用或者其它軟件應(yīng)用(諸如遠(yuǎn)程計(jì)算應(yīng)用)的一部分。例如,可以在單個(gè)本地計(jì)算機(jī)(例如,任何合適的市場(chǎng)上可買到的計(jì)算機(jī))上或者在使用一個(gè)或多個(gè)網(wǎng)絡(luò)計(jì)算機(jī)的網(wǎng)絡(luò)環(huán)境中(例如,經(jīng)由因特網(wǎng)、廣域網(wǎng)、局域網(wǎng)、客戶端-服務(wù)器網(wǎng)絡(luò)(諸如云計(jì)算網(wǎng)絡(luò))或者其它這樣的網(wǎng)絡(luò))運(yùn)行這樣的軟件。
[0054]為了清楚,僅描述了基于軟件的實(shí)現(xiàn)的選擇的某些方面。省略了在本領(lǐng)域中公知的其它細(xì)節(jié)。例如,應(yīng)該理解所公開的技術(shù)不限于任何特定的計(jì)算機(jī)語(yǔ)言或程序。例如,所公開的技術(shù)可以通過用C++、Java、Perl、JavaScript、Adobe Flash或者任何其它合適的編程語(yǔ)言寫的軟件來(lái)實(shí)現(xiàn)。同樣地,所公開的技術(shù)不限于任何特定的計(jì)算機(jī)或者硬件類型。合適的計(jì)算機(jī)和硬件的某些細(xì)節(jié)是公知的,不需要在此公開中詳細(xì)闡述。
[0055]還應(yīng)該理解,替代軟件,可以通過一個(gè)或多個(gè)硬件邏輯部件來(lái)至少部分地執(zhí)行在此描述的任何功能。例如,并且不限于,可以使用的說(shuō)明類型的硬件邏輯部件包括現(xiàn)場(chǎng)可編程門陣列(FPGA)、程序?qū)S眉呻娐?ASIC)、程序?qū)S脴?biāo)準(zhǔn)產(chǎn)品(ASSP)、片上系統(tǒng)的系統(tǒng)(S0C)、復(fù)雜可編程邏輯器件(CPLD)等等。
[0056]此外,可以上傳、下載或通過合適的通信手段遠(yuǎn)程訪問任何基于軟件的實(shí)施例(例如,包括用于使得計(jì)算機(jī)執(zhí)行任何所公開的方法的計(jì)算機(jī)可執(zhí)行指令)。例如,這種合適的通信手段包括因特網(wǎng)、萬(wàn)維網(wǎng)、內(nèi)聯(lián)網(wǎng)、軟件應(yīng)用、線纜(包括光纖電纜)、磁性通信、電磁波通信(包括RF、微波、和紅外通信)、電子通信或其它這樣的通信手段。
[0057]所公開的方法、裝置和系統(tǒng)不應(yīng)該以任何方式被解釋為限制性的。而是,本公開的目的在于各種公開實(shí)施例單獨(dú)的所有新穎進(jìn)和非顯而易見的特征和方面,以及其彼此的各種組合及其子組合。所公開的方法、裝置和系統(tǒng)不限于任何特定方面或特征或其組合,所公開的實(shí)施例也不要求呈現(xiàn)任何一個(gè)或多個(gè)特定優(yōu)點(diǎn)或解決一個(gè)或多個(gè)問題。
[0058]例如,雖然在此描述的實(shí)施例涉及應(yīng)用測(cè)試,但是可以同樣地將實(shí)施例應(yīng)用于通過自動(dòng)化測(cè)試所生成的任何類型的錯(cuò)誤日志。
[0059]考慮到可以將所公開發(fā)明的原理應(yīng)用到很多可能的實(shí)施例,應(yīng)該了解,說(shuō)明的實(shí)施例僅是本發(fā)明的優(yōu)選例子,而不應(yīng)該被當(dāng)作限制本發(fā)明的范圍。此外,通過下面的權(quán)利要求來(lái)定義本發(fā)明的范圍。因此我們要求本發(fā)明包括歸入這些權(quán)利要求的范圍之內(nèi)的所有范圍。
【權(quán)利要求】
1.一種分析錯(cuò)誤日志的方法,包括: 接收包括與錯(cuò)誤關(guān)聯(lián)的日志數(shù)據(jù)的錯(cuò)誤日志; 解析日志數(shù)據(jù)以將日志數(shù)據(jù)轉(zhuǎn)換為標(biāo)準(zhǔn)化的格式; 自動(dòng)地將解析的日志數(shù)據(jù)與從錯(cuò)誤日志獲得的一個(gè)或多個(gè)先前錯(cuò)誤比較;以及 如果在解析的日志數(shù)據(jù)和一個(gè)或多個(gè)先前錯(cuò)誤之間找到匹配,那么將解析的日志數(shù)據(jù)鏈接到至少一個(gè)匹配的先前錯(cuò)誤上。
2.如權(quán)利要求1所述的方法,進(jìn)一步包括接收用戶輸入以改變解析的日志數(shù)據(jù)的鏈接。
3.如權(quán)利要求1所述的方法,其中自動(dòng)比較包括將日志數(shù)據(jù)中的錯(cuò)誤類型與一個(gè)或多個(gè)先前錯(cuò)誤當(dāng)中的候選錯(cuò)誤的錯(cuò)誤類型比較,并且如果錯(cuò)誤類型匹配,則將與日志數(shù)據(jù)關(guān)聯(lián)的錯(cuò)誤消息與候選錯(cuò)誤中的錯(cuò)誤消息比較。
4.如權(quán)利要求3所述的方法,進(jìn)一步包括比較日志數(shù)據(jù)的蹤跡與候選錯(cuò)誤的蹤跡,其中,所述蹤跡包括在錯(cuò)誤發(fā)生之間執(zhí)行的多個(gè)指令。
5.如權(quán)利要求4所述的方法,進(jìn)一步包括比較錯(cuò)誤發(fā)生所在的、與日志數(shù)據(jù)關(guān)聯(lián)的源代碼中的位置和與候選錯(cuò)誤關(guān)聯(lián)的源代碼的位置。
6.如權(quán)利要求1所述的方法,其中通過測(cè)試應(yīng)用中的用戶接口按鈕或應(yīng)用的非用戶接口功能的腳本,來(lái)生成錯(cuò)誤日志。
7.如權(quán)利要求1所述的方法,其中通過應(yīng)用編程接口來(lái)接收錯(cuò)誤日志。
8.如權(quán)利要求1所述的方法,其中解析日志數(shù)據(jù)包括接收第一格式的錯(cuò)誤日志,并且將錯(cuò)誤日志轉(zhuǎn)換為不同于第一格式的第二格式。
9.如權(quán)利要求1所述的方法,其中自動(dòng)將解析的日志數(shù)據(jù)與一個(gè)或多個(gè)先前錯(cuò)誤比較包括:搜遍數(shù)據(jù)庫(kù),并且如果沒找到匹配則生成基本鏈接類型。
10.如權(quán)利要求9所述的方法,其中將解析的日志數(shù)據(jù)鏈接到至少一個(gè)匹配的先前錯(cuò)誤包括將解析的日志數(shù)據(jù)匹配到先前生成的鏈接類型。
11.用于執(zhí)行分析錯(cuò)誤日志的方法的一種或多種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中,所述方法包括: 接收作為自動(dòng)測(cè)試應(yīng)用的結(jié)果而獲得的錯(cuò)誤日志; 在日志事件的庫(kù)中存儲(chǔ)錯(cuò)誤日志; 將錯(cuò)誤日志與先前接收的錯(cuò)誤日志比較;以及 如果在錯(cuò)誤日志和先前接收的錯(cuò)誤日志之間找到匹配,那么將錯(cuò)誤日志鏈接到匹配的先前接收的錯(cuò)誤日志。
12.如權(quán)利要求11所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),進(jìn)一步包括解析錯(cuò)誤日志以便將其從第一格式轉(zhuǎn)換為第二格式,從而使得在庫(kù)中存儲(chǔ)的錯(cuò)誤日志一致地處于第二格式。
13.如權(quán)利要求11所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中鏈接包括轉(zhuǎn)換鏈接類型以匹配所匹配的先前接收的錯(cuò)誤日志的鏈接類型。
14.如權(quán)利要求11所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中找到匹配包括在錯(cuò)誤日志和先前接收的錯(cuò)誤日志之間匹配錯(cuò)誤日志類型和錯(cuò)誤消息。
15.如權(quán)利要求14所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其中找到匹配進(jìn)一步包括在錯(cuò)誤日志和先前接收的錯(cuò)誤日志之間匹配導(dǎo)致錯(cuò)誤的代碼蹤跡。
16.如權(quán)利要求11所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),進(jìn)一步包括用于接收改變鏈接的用戶輸入,并且響應(yīng)于其修改在庫(kù)中的鏈接信息。
17.如權(quán)利要求11所述的一種或多種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),進(jìn)一步包括讀取應(yīng)用的源代碼以確定與錯(cuò)誤日志關(guān)聯(lián)的源代碼中的第一位置,并且比較所確定的第一位置和與先前接收的錯(cuò)誤日志關(guān)聯(lián)的源代碼中的第二位置。
18.一種用于分析錯(cuò)誤日志的系統(tǒng),包括: 包括存儲(chǔ)的先前發(fā)生的錯(cuò)誤的數(shù)據(jù)庫(kù); 解析器,用于接收包括當(dāng)前錯(cuò)誤的錯(cuò)誤日志,并且將錯(cuò)誤日志轉(zhuǎn)換為預(yù)定的標(biāo)準(zhǔn)格式,以用于數(shù)據(jù)庫(kù)中的存儲(chǔ);及 匹配器,用于搜索數(shù)據(jù)庫(kù),并且比較錯(cuò)誤日志中的信息與先前錯(cuò)誤,以便確定先前錯(cuò)誤是否與當(dāng)前錯(cuò)誤關(guān)聯(lián)。
19.如權(quán)利要求18所述的系統(tǒng),進(jìn)一步包括耦接到數(shù)據(jù)庫(kù)的更新器,更新器用于改變當(dāng)前錯(cuò)誤和先前錯(cuò)誤之間的鏈接信息。
20.如權(quán)利要求18所述的系統(tǒng),進(jìn)一步包括結(jié)果獲取器,用于接收在數(shù)據(jù)庫(kù)中搜索錯(cuò)誤的用戶請(qǐng)求,并用于向用戶接口提供可顯示的結(jié)果。
【文檔編號(hào)】G06F11/07GK104239158SQ201310225262
【公開日】2014年12月24日 申請(qǐng)日期:2013年6月7日 優(yōu)先權(quán)日:2013年6月7日
【發(fā)明者】姜云峰, 姜毅軍 申請(qǐng)人:Sap歐洲公司