專(zhuān)利名稱(chēng):一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明設(shè)計(jì)軟件設(shè)計(jì)和測(cè)試的技術(shù)領(lǐng)域,特別是涉及一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的方法及系統(tǒng)。
背景技術(shù):
在控制軟件的使用或測(cè)試過(guò)程中,由于設(shè)計(jì)的缺陷或考慮不周等原因,經(jīng)常會(huì)出席各種故障,而且有些故障非常難以重現(xiàn)或定位。因此,如何通過(guò)一種快速且簡(jiǎn)單的方法使故障重現(xiàn)和對(duì)其定位對(duì)于設(shè)計(jì)人員來(lái)說(shuō)是非常重要的。目前最為常用的方法是采用分析日志文件的方法,其原理是在控制軟件程序中對(duì)應(yīng)的每一個(gè)操作處和可能出現(xiàn)故障的地方加入日志輸出信息,記錄用戶(hù)的每一步操作及相應(yīng)的數(shù)據(jù)。當(dāng)控制軟件出現(xiàn)故障時(shí),設(shè)計(jì)人員根據(jù)控制軟件運(yùn)行過(guò)程中所記錄的日志文件對(duì)程序進(jìn)行逐步分析,進(jìn)而找出故障產(chǎn)生的原因并定位程序設(shè)計(jì)的缺陷。該方法雖然簡(jiǎn)單易行,且能夠定位故障產(chǎn)生的原因及程序設(shè)計(jì)的缺陷,但其有以下兩個(gè)缺點(diǎn)第一,控制軟件運(yùn)行過(guò)程中往往會(huì)產(chǎn)生大量的日志信息,這大大增加了分析并定位故障所產(chǎn)生的原因的難度,而且分析效率往往非常低下;第二,若設(shè)計(jì)人員根據(jù)日志信息無(wú)法定位故障產(chǎn)生的原因及程序設(shè)計(jì)的缺陷,往往需要根據(jù)日志所記錄的操作過(guò)程手動(dòng)模擬實(shí)際的操作過(guò)程,而且有時(shí)需要多次重復(fù)模擬,無(wú)法做到自動(dòng)模擬。
發(fā)明內(nèi)容
本發(fā)明的第一個(gè)發(fā)明目的在于提供一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的方法,以克服現(xiàn)有技術(shù)中的上述缺點(diǎn)和不足。本發(fā)明的第一發(fā)明目的通過(guò)以下技術(shù)方案予以實(shí)現(xiàn) 一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的方法,所述方法包括以下步驟 記錄用戶(hù)的輸入操作及被操作對(duì)象定義生成日志文檔;
當(dāng)軟件出現(xiàn)錯(cuò)誤時(shí),對(duì)日志文檔進(jìn)行解析,并還原用戶(hù)的輸入操作及被操作對(duì)象; 根據(jù)還原的用戶(hù)的輸入操作及操作對(duì)象,模擬用戶(hù)的輸入操作,實(shí)現(xiàn)錯(cuò)誤的重現(xiàn)。錯(cuò)誤分為兩類(lèi)1、一般錯(cuò)誤,此類(lèi)錯(cuò)誤是指輸入正確參數(shù)或操作正常狀態(tài)下,軟件卻提示錯(cuò)誤而不能執(zhí)行所需功能。2、嚴(yán)重或致命錯(cuò)誤,此類(lèi)錯(cuò)誤是指因輸入正確或錯(cuò)誤參數(shù)、正?;虍惓2僮鞫鴮?dǎo)致軟件崩潰、掛起、無(wú)法響應(yīng)等不能繼續(xù)使用軟件的錯(cuò)誤。一般錯(cuò)誤的判斷方法在軟件目錄下編寫(xiě)錯(cuò)誤條件文件,軟件啟動(dòng)時(shí)自動(dòng)加載該文件。文件格式如下;發(fā)生以下錯(cuò)誤之一,軟件自動(dòng)中斷停止運(yùn)行 Errcode=80001000, 80001010 Errstring=”參數(shù)錯(cuò)誤”;發(fā)生以下錯(cuò)誤之一,軟件忽略錯(cuò)誤斷續(xù)運(yùn)行Errcode=80002000, 80002010 Errstring=”重新輸入”
嚴(yán)重或致命錯(cuò)誤的判斷方法此錯(cuò)誤將導(dǎo)致軟件不能繼續(xù)運(yùn)行,操作系統(tǒng)可以檢測(cè)到并自動(dòng)彈出是否啟動(dòng)調(diào)試器軟件,選擇是可進(jìn)入軟件代碼調(diào)試。作為一種優(yōu)選方案,所述記錄用戶(hù)的輸入操作及被操作對(duì)象定義生成日志文檔, 具體包括
1)記錄用戶(hù)的輸入操作及被操作對(duì)象定義為相應(yīng)的XML節(jié)點(diǎn)格式;
2)以XML的方式記錄鼠標(biāo)和鍵盤(pán)操作過(guò)程及被操作對(duì)象,生成日志文檔。利用操作系統(tǒng)的一些系統(tǒng)機(jī)制(如鼠標(biāo)鉤子、鍵盤(pán)鉤子、窗口消息等),捕捉鼠標(biāo)鍵盤(pán)事件并記錄至xml文件中。當(dāng)軟件出現(xiàn)錯(cuò)誤時(shí),對(duì)日志文檔進(jìn)行解析,并還原用戶(hù)的輸入操作及被操作對(duì)象, 具體包括
3)軟件出現(xiàn)錯(cuò)誤時(shí),對(duì)所生成的日志文檔進(jìn)行解析,解析出用戶(hù)的輸入操作及被操作對(duì)象。作為一種優(yōu)選方案,模擬用戶(hù)的輸入操作,實(shí)現(xiàn)錯(cuò)誤的重現(xiàn),具體包括
啟動(dòng)軟件的調(diào)試模式,根據(jù)日志文檔的分析結(jié)果用戶(hù)的輸入操作,直到軟件出現(xiàn)錯(cuò)誤, 則記錄出錯(cuò)時(shí)的用戶(hù)的輸入操作。作為進(jìn)一步的優(yōu)選方案,所述用戶(hù)的輸入操作包括鼠標(biāo)操作與鍵盤(pán)操作。作為更進(jìn)一步的優(yōu)選方案,所述鼠標(biāo)操作包括鼠標(biāo)的位置、鼠標(biāo)所點(diǎn)擊的鍵和點(diǎn)擊的動(dòng)作及被操作對(duì)象以及操作發(fā)生的時(shí)間,所述鍵盤(pán)操作包括按鍵值及其操作的對(duì)象以及操作發(fā)生的時(shí)間。作為進(jìn)一步的優(yōu)選方案,步驟3)中所述解析方法為首先解析出日志文檔上每個(gè)節(jié)點(diǎn)對(duì)應(yīng)的操作類(lèi)型,然后根據(jù)操作類(lèi)型再解析每個(gè)節(jié)點(diǎn)下的子節(jié)點(diǎn)或?qū)傩裕瑢⒔馕龀鰜?lái)的鼠標(biāo)和鍵盤(pán)操作及其相對(duì)應(yīng)的操作對(duì)象形成一個(gè)操作集合,并按時(shí)間順序進(jìn)行排列。本發(fā)明的第二個(gè)發(fā)明目的在于提供一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的系統(tǒng),以應(yīng)用本發(fā)明的第一個(gè)發(fā)明目的所提供的一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的方法。本發(fā)明的第二個(gè)發(fā)明目的采用如下技術(shù)方案實(shí)現(xiàn)
一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的系統(tǒng),所述系統(tǒng)包括記錄模塊、解析模塊和模擬模
塊
所述記錄模塊,用于記錄用戶(hù)的輸入操作及被操作對(duì)象定義生成日志文檔; 所述解析模塊,當(dāng)軟件出現(xiàn)錯(cuò)誤時(shí),對(duì)記錄模塊生成的日志文檔進(jìn)行解析,并還原用戶(hù)的輸入操作及被操作對(duì)象;
所述模擬模塊,根據(jù)解析模塊還原的用戶(hù)的輸入操作及操作對(duì)象,模擬用戶(hù)的輸入操作,實(shí)現(xiàn)錯(cuò)誤的重現(xiàn)。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)
本技術(shù)方案通過(guò)直接模擬操作過(guò)程,能夠更加直接清晰的確定到軟件在運(yùn)行的過(guò)程中所發(fā)現(xiàn)的故障,并且,由于采用xml記錄鼠標(biāo)鍵盤(pán)操作過(guò)程及操作對(duì)象并存入日志文件,在運(yùn)行過(guò)程中不會(huì)長(zhǎng)生大量的記錄日記信息,節(jié)省了空間,以及便于解析工具對(duì)日志的解析, 減輕了分析并定位故障所產(chǎn)生的原因的難度,不用技術(shù)人員重復(fù)的進(jìn)行多次的模擬操作來(lái)找出錯(cuò)誤,在定位錯(cuò)誤后就可以直接在錯(cuò)誤點(diǎn)調(diào)用調(diào)試工具進(jìn)行修正。
圖1為本發(fā)明一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的方法的流程圖; 圖2為本發(fā)明一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的系統(tǒng)的模塊圖。
具體實(shí)施例方式
下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步的說(shuō)明。如圖1所示,本發(fā)明一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的方法; 一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的方法,包括以下步驟
1.定義描述鼠標(biāo)和鍵盤(pán)操作及其操作對(duì)象的XML節(jié)點(diǎn)格式;
2.控制軟件在運(yùn)行過(guò)程中將用戶(hù)執(zhí)行的鼠標(biāo)鍵盤(pán)操作及其操作的對(duì)象按照所定義的 XML節(jié)點(diǎn)格式實(shí)時(shí)寫(xiě)入日志文件,形成XML日志文檔;
3.按照所定義的XML節(jié)點(diǎn)格式將控制軟件生成的XML日志文檔還原為用戶(hù)的整個(gè)鼠標(biāo)鍵盤(pán)操作過(guò)程及操作對(duì)象;
4.在調(diào)試模式下運(yùn)行控制軟件;
5.通過(guò)模擬鼠標(biāo)和鍵盤(pán)消息來(lái)真實(shí)的模擬由XML日志文檔還原出來(lái)的整個(gè)鼠標(biāo)鍵盤(pán)操作過(guò)程及操作對(duì)象。當(dāng)模擬到實(shí)際導(dǎo)致控制軟件發(fā)生故障的鍵盤(pán)或鼠標(biāo)操作時(shí),將再次導(dǎo)致上述在調(diào)試模式下運(yùn)行的控制軟件發(fā)生故障,進(jìn)而找到控制軟件設(shè)計(jì)的缺陷。錯(cuò)誤分為兩類(lèi)1、一般錯(cuò)誤,此類(lèi)錯(cuò)誤是指輸入正確參數(shù)或操作正常狀態(tài)下,軟件卻提示錯(cuò)誤而不能執(zhí)行所需功能。2、嚴(yán)重或致命錯(cuò)誤,此類(lèi)錯(cuò)誤是指因輸入正確或錯(cuò)誤參數(shù)、正?;虍惓2僮鞫鴮?dǎo)致軟件崩潰、掛起、無(wú)法響應(yīng)等不能繼續(xù)使用軟件的錯(cuò)誤。一般錯(cuò)誤的判斷方法在軟件目錄下編寫(xiě)錯(cuò)誤條件文件,軟件啟動(dòng)時(shí)自動(dòng)加載該文件。文件格式如下;發(fā)生以下錯(cuò)誤之一,軟件自動(dòng)中斷停止運(yùn)行 Errcode=80001000, 80001010 Errstring=”參數(shù)錯(cuò)誤”;發(fā)生以下錯(cuò)誤之一,軟件忽略錯(cuò)誤斷續(xù)運(yùn)行 Errcode=80002000, 80002010 Errstring=”重新輸入”
嚴(yán)重或致命錯(cuò)誤的判斷方法此錯(cuò)誤將導(dǎo)致軟件不能繼續(xù)運(yùn)行,操作系統(tǒng)可以檢測(cè)到并自動(dòng)彈出是否啟動(dòng)調(diào)試器軟件,選擇是可進(jìn)入軟件代碼調(diào)試。將鼠標(biāo)操作與鍵盤(pán)操作及其操作對(duì)象定義為相應(yīng)的XML節(jié)點(diǎn)格式,利用操作系統(tǒng)的一些系統(tǒng)機(jī)制(如鼠標(biāo)鉤子、鍵盤(pán)鉤子、窗口消息等),捕捉鼠標(biāo)鍵盤(pán)事件并記錄至xml文件中。鼠標(biāo)操作包括鼠標(biāo)的位置、鼠標(biāo)被點(diǎn)擊的是右鍵還是左鍵、點(diǎn)擊是單擊還是雙擊及其操作的對(duì)象以及操作發(fā)生的時(shí)間;鍵盤(pán)操作包括按鍵值、按鍵是按下還是彈起及其操作的對(duì)象以及操作發(fā)生的時(shí)間。例如鼠標(biāo)點(diǎn)擊某一按鈕時(shí)的ml日志文檔定義如下
〈operation,type=,,MouseDown,,><time>HH-MM-SS< <key>0</key>
/time) /*此操作產(chǎn)生的時(shí)間*/
/*其中定義0代表鼠標(biāo)左鍵被按下,1代表鼠標(biāo)右鍵被
按下*/
<x>220</x> <y>220</y>
<object>button</object) </operation>
/*鼠標(biāo)點(diǎn)擊時(shí)的坐標(biāo)信息,即在(220,220)處按下。*/
/*鼠標(biāo)點(diǎn)擊的對(duì)象為按鈕*/
控制軟件在運(yùn)行過(guò)程中實(shí)時(shí)記錄用戶(hù)的鼠標(biāo)鍵盤(pán)操作過(guò)程及操作對(duì)象,并按照所定義的XML節(jié)點(diǎn)格式寫(xiě)入XML日志文檔,文檔中的每一個(gè)XML節(jié)點(diǎn)對(duì)應(yīng)一個(gè)相應(yīng)的鼠標(biāo)(或鍵盤(pán))操作及其操作對(duì)象。同時(shí),設(shè)計(jì)一 XML文檔解析工具,用于解析控制軟件運(yùn)行過(guò)程所產(chǎn)生的XML日志文檔,按照所定義的XML節(jié)點(diǎn)格式,通過(guò)對(duì)XML日志文檔中的操作節(jié)點(diǎn)進(jìn)行解析,還原出用戶(hù)的整個(gè)鼠標(biāo)鍵盤(pán)操作過(guò)程及其操作對(duì)象。然后,在調(diào)試模式下重新運(yùn)行發(fā)生故障的控制軟件,并啟用XML文檔解析工具提供的模擬鍵盤(pán)和鼠標(biāo)消息的功能,按照XML文檔解析工具所還原出來(lái)的整個(gè)鼠標(biāo)鍵盤(pán)操作過(guò)程及操作對(duì)象,來(lái)真實(shí)模擬實(shí)際用戶(hù)的操作過(guò)程。當(dāng)模擬到實(shí)際導(dǎo)致控制軟件發(fā)生故障的鍵盤(pán)或鼠標(biāo)操作時(shí),將再次導(dǎo)致上述在調(diào)試模式下運(yùn)行的控制軟件發(fā)生故障,進(jìn)而找到控制軟件設(shè)計(jì)的缺陷。在解析XML日志文檔時(shí),首先解析出每個(gè)節(jié)點(diǎn)對(duì)應(yīng)的操作類(lèi)型,然后根據(jù)操作類(lèi)型再解析每個(gè)節(jié)點(diǎn)下的子節(jié)點(diǎn)或?qū)傩?。即?duì)于鼠標(biāo)操作節(jié)點(diǎn),其屬性或子節(jié)點(diǎn)將按照鼠標(biāo)的位置、鼠標(biāo)被點(diǎn)擊的是右鍵還是左鍵、點(diǎn)擊是單擊還是雙擊及其操作的對(duì)象以及操作發(fā)生的時(shí)間進(jìn)行解析;對(duì)于鍵盤(pán)操作節(jié)點(diǎn),其屬性或子節(jié)點(diǎn)將按照按鍵值、按鍵是按下還是彈起及其操作的對(duì)象以及操作發(fā)生的時(shí)間進(jìn)行解析。例如,對(duì)前述的所生成的XML日志文檔中,解析出該操作的時(shí)間、按鍵、位置、點(diǎn)擊對(duì)象等信息。將解析出來(lái)的鼠標(biāo)鍵盤(pán)操作及其操作對(duì)象形成一個(gè)操作集合,并按時(shí)間順序進(jìn)行排列。在調(diào)試模式下啟動(dòng)控制軟件。當(dāng)模擬到實(shí)際導(dǎo)致軟件發(fā)生故障的鼠標(biāo)或操作時(shí), 控制軟件的程序代碼將自動(dòng)定位到軟件設(shè)計(jì)的缺陷處。該步驟中模擬鼠標(biāo)或鍵盤(pán)操作,即調(diào)用系統(tǒng)的鼠標(biāo)和鍵盤(pán)消息模塊(每一種操作系統(tǒng)系統(tǒng),如windows,Linux都有系統(tǒng)接口函數(shù)),按照操作集合中的相應(yīng)操作依次執(zhí)行鼠標(biāo)或鍵盤(pán)操作及其操作對(duì)象,并根據(jù)兩個(gè)連續(xù)操作間的時(shí)間差做相應(yīng)的延遲或空操作。如圖2所示為一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的系統(tǒng),所述系統(tǒng)包括記錄模塊、解析模塊、模擬模塊和調(diào)試模塊,所述記錄模塊與解析模塊連接,所述模擬模塊與解析模塊連接,用于根據(jù)解析模塊的解析結(jié)果,實(shí)現(xiàn)模擬操作對(duì)錯(cuò)誤進(jìn)行定位,所述調(diào)試模塊與模擬模塊連接,根據(jù)模擬操作的結(jié)果對(duì)軟件進(jìn)行調(diào)試,進(jìn)行錯(cuò)誤定位與缺陷查找。
權(quán)利要求
1.一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的方法,其特征在于,所述方法包括以下步驟記錄用戶(hù)的輸入操作及被操作對(duì)象定義生成日志文檔;當(dāng)軟件出現(xiàn)錯(cuò)誤時(shí),對(duì)日志文檔進(jìn)行解析,并還原用戶(hù)的輸入操作及被操作對(duì)象;根據(jù)還原用戶(hù)的輸入操作及操作對(duì)象,模擬用戶(hù)的輸入操作,實(shí)現(xiàn)錯(cuò)誤的重現(xiàn)。
2.根據(jù)權(quán)利要求1所述的軟件故障自動(dòng)重現(xiàn)和定位的方法,其特征在于,所述記錄用戶(hù)的輸入操作及被操作對(duì)象定義生成日志文檔,具體包括1)記錄用戶(hù)的輸入操作及被操作對(duì)象定義為相應(yīng)的XML節(jié)點(diǎn)格式;2)以XML的方式記錄鼠標(biāo)和鍵盤(pán)操作過(guò)程及被操作對(duì)象,生成日志文檔;當(dāng)軟件出現(xiàn)錯(cuò)誤時(shí),對(duì)日志文檔進(jìn)行解析,并還原用戶(hù)的輸入操作及被操作對(duì)象,具體包括3)軟件出現(xiàn)錯(cuò)誤時(shí),對(duì)所生成的日志文檔進(jìn)行解析,解析出用戶(hù)的輸入操作及被操作對(duì)象。
3.根據(jù)權(quán)利要求1所述的軟件故障自動(dòng)重現(xiàn)和定位的方法,其特征在于,模擬用戶(hù)的輸入操作,實(shí)現(xiàn)錯(cuò)誤的重現(xiàn),具體包括啟動(dòng)軟件的調(diào)試模式,根據(jù)日志文檔的分析結(jié)果用戶(hù)的輸入操作,直到軟件出現(xiàn)錯(cuò)誤, 則記錄出錯(cuò)時(shí)的用戶(hù)的輸入操作。
4.根據(jù)權(quán)利要求1或2或3所述的軟件故障自動(dòng)重現(xiàn)和定位的方法,其特征在于,所述用戶(hù)的輸入操作包括鼠標(biāo)操作與鍵盤(pán)操作。
5.根據(jù)權(quán)利要求4所述的軟件故障自動(dòng)重現(xiàn)和定位的方法,其特征在于,所述鼠標(biāo)操作包括鼠標(biāo)的位置、鼠標(biāo)所點(diǎn)擊的鍵和點(diǎn)擊的動(dòng)作及被操作對(duì)象以及操作發(fā)生的時(shí)間,所述鍵盤(pán)操作包括按鍵值及其操作的對(duì)象以及操作發(fā)生的時(shí)間。
6.根據(jù)權(quán)利要求3所述的軟件故障自動(dòng)重現(xiàn)和定位的方法,其特征在于,步驟3)中所述解析方法為首先解析出日志文檔上每個(gè)節(jié)點(diǎn)對(duì)應(yīng)的操作類(lèi)型,然后根據(jù)操作類(lèi)型再解析每個(gè)節(jié)點(diǎn)下的子節(jié)點(diǎn)或?qū)傩?,將解析出?lái)的鼠標(biāo)和鍵盤(pán)操作及其相對(duì)應(yīng)的操作對(duì)象形成一個(gè)操作集合,并按時(shí)間順序進(jìn)行排列。
7.一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的系統(tǒng),其特征在于,所述系統(tǒng)包括記錄模塊、解析模塊和模擬模塊所述記錄模塊,用于記錄用戶(hù)的輸入操作及被操作對(duì)象定義生成日志文檔;所述解析模塊,當(dāng)軟件出現(xiàn)錯(cuò)誤時(shí),對(duì)記錄模塊生成的日志文檔進(jìn)行解析,并還原用戶(hù)的輸入操作及被操作對(duì)象;所述模擬模塊,根據(jù)解析模塊還原的用戶(hù)的輸入操作及操作對(duì)象,模擬用戶(hù)的輸入操作,實(shí)現(xiàn)錯(cuò)誤的重現(xiàn)。
全文摘要
本發(fā)明提出了一種軟件錯(cuò)誤自動(dòng)重現(xiàn)和定位的方法及系統(tǒng),所述方法包括以下步驟記錄用戶(hù)的輸入操作及被操作對(duì)象定義生成日志文檔;當(dāng)軟件出現(xiàn)錯(cuò)誤時(shí),對(duì)日志文檔進(jìn)行解析,并還原用戶(hù)的輸入操作及被操作對(duì)象;根據(jù)還原的用戶(hù)的輸入操作及操作對(duì)象,模擬用戶(hù)的輸入操作,實(shí)現(xiàn)錯(cuò)誤的的重現(xiàn),進(jìn)而實(shí)現(xiàn)故障的自動(dòng)重現(xiàn)和定位,并快速找到軟件的設(shè)計(jì)缺陷。
文檔編號(hào)G06F11/36GK102184138SQ20111012989
公開(kāi)日2011年9月14日 申請(qǐng)日期2011年5月19日 優(yōu)先權(quán)日2011年5月19日
發(fā)明者康曉林, 羅敬清 申請(qǐng)人:廣東威創(chuàng)視訊科技股份有限公司