用于評(píng)估失效的軟件程序的機(jī)器和方法
【專利摘要】本發(fā)明涉及用于評(píng)估失效的軟件程序的機(jī)器和方法。公開了用于評(píng)估失效軟件程序的機(jī)器、具有存儲(chǔ)在其上的錯(cuò)誤分析程序的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以及由微處理器執(zhí)行的錯(cuò)誤分析程序。在一個(gè)實(shí)施例中,一種用于研究軟件程序中的錯(cuò)誤源的機(jī)器包括耦合到存儲(chǔ)器的微處理器,其中微處理器被編程為通過(guò)以下步驟來(lái)確定易出錯(cuò)程序步驟的失效是否可重現(xiàn)地發(fā)生:提供具有易出錯(cuò)程序步驟的軟件程序;執(zhí)行在易出錯(cuò)程序步驟之前的程序步驟;執(zhí)行易出錯(cuò)程序步驟多次;以及計(jì)算易出錯(cuò)程序步驟的失效概率。
【專利說(shuō)明】用于評(píng)估失效的軟件程序的機(jī)器和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一般可用于軟件程序錯(cuò)誤分析并且具體地可用于測(cè)試評(píng)估程序錯(cuò)誤分析的機(jī)器和方法。
【背景技術(shù)】
[0002]包括多個(gè)程序步驟的軟件程序已經(jīng)成為普遍的工作工具,所述多個(gè)程序步驟按連續(xù)的順序自動(dòng)運(yùn)行或者由用戶指令發(fā)起。此類軟件程序可以例如促進(jìn)管理任務(wù)或者允許對(duì)所制造的諸如電子設(shè)備的商品的有效質(zhì)量控制。然而,軟件程序在初始應(yīng)用試驗(yàn)期間可能由于通常未知的原因而失效。修改后的或新開發(fā)的軟件程序尤其易于發(fā)生此類失效。搜索多步驟軟件程序中的一個(gè)或多個(gè)錯(cuò)誤的根本起因可能是復(fù)雜并且耗時(shí)的任務(wù)。
【發(fā)明內(nèi)容】
[0003]根據(jù)本發(fā)明的實(shí)施例,一種用于研究軟件程序中的錯(cuò)誤源的機(jī)器包括耦合到存儲(chǔ)器的微處理器,其中微處理器被編程為通過(guò)以下步驟來(lái)確定易出錯(cuò)程序步驟的失效是否可重現(xiàn)地發(fā)生:提供具有易出錯(cuò)程序步驟的軟件程序;執(zhí)行在易出錯(cuò)程序步驟之前的程序步驟;執(zhí)行易出錯(cuò)程序步驟多次;以及計(jì)算易出錯(cuò)程序步驟的失效概率。
[0004]根據(jù)本發(fā)明的實(shí)施例,一種用于研究軟件程序中的錯(cuò)誤源的機(jī)器包括耦合到存儲(chǔ)器的微處理器,其中微處理器被編程為通過(guò)以下步驟來(lái)確定易出錯(cuò)程序步驟的失效是否可重現(xiàn)地發(fā)生:提供以易出錯(cuò)程序步驟結(jié)束的多步驟序列;執(zhí)行多步驟序列多次;以及計(jì)算多步驟序列的失效概率。
[0005]根據(jù)本發(fā)明的實(shí)施例,一種用于研究軟件程序中的錯(cuò)誤源的機(jī)器包括耦合到存儲(chǔ)器的微處理器,其中微處理器被編程為通過(guò)以下步驟來(lái)確定易出錯(cuò)程序步驟的錯(cuò)誤源:提供以易出錯(cuò)程序步驟結(jié)束的第一多步驟序列集合;執(zhí)行第一多步驟序列集合的每個(gè)多步驟序列;以及將每個(gè)失效的步驟序列記錄在存儲(chǔ)器中。
[0006]根據(jù)本發(fā)明的實(shí)施例,一種用于研究軟件程序中的錯(cuò)誤源的機(jī)器包括耦合到存儲(chǔ)器的微處理器,其中微處理器被編程為通過(guò)以下步驟來(lái)確定易出錯(cuò)程序步驟的錯(cuò)誤源:提供以易出錯(cuò)程序步驟結(jié)束的多步驟序列集合,其中多步驟序列集合包括不同的多步驟序列,并且其中每個(gè)多步驟序列與另一多步驟序列的不同在于步驟的省略;執(zhí)行多步驟序列的每個(gè)多步驟序列;以及記錄當(dāng)多步驟序列失效時(shí)缺少的步。
[0007]根據(jù)本發(fā)明的實(shí)施例,一種用于研究軟件程序中的錯(cuò)誤源的機(jī)器包括耦合到存儲(chǔ)器的微處理器,其中微處理器被編程為通過(guò)以下步驟來(lái)確定易出錯(cuò)程序步驟的錯(cuò)誤源:提供失效序列的集合,所有失效序列均以相同易出錯(cuò)程序步驟結(jié)束;關(guān)于對(duì)失效序列共同的多個(gè)程序步驟來(lái)分析失效的序列;以及根據(jù)失效概率對(duì)所述多個(gè)程序步驟排名。
【專利附圖】
【附圖說(shuō)明】
[0008]為了更完整地理解本發(fā)明及其優(yōu)點(diǎn),現(xiàn)在對(duì)結(jié)合附圖進(jìn)行的以下描述做出參考,其中:
圖1示出了用于評(píng)估失效軟件程序的機(jī)器的框圖;
圖2示出了包括多步驟的一般性失效軟件程序;
圖3示出了根據(jù)本發(fā)明的實(shí)施例的錯(cuò)誤分析程序的流程圖,該錯(cuò)誤分析程序包括用于確定失效程序步驟是否可重現(xiàn)地發(fā)生的方法;
圖4示出了根據(jù)本發(fā)明的實(shí)施例的錯(cuò)誤分析程序的流程圖,該錯(cuò)誤分析程序包括用于確定直到易于出錯(cuò)的程序步驟的程序步驟序列是否可重現(xiàn)地發(fā)生的方法;
圖5示出了根據(jù)本發(fā)明的實(shí)施例的錯(cuò)誤分析程序的流程圖,該錯(cuò)誤分析程序包括用于分析當(dāng)先前程序步驟改變時(shí)易于出錯(cuò)的程序步驟的執(zhí)行的方法;
圖6示出了根據(jù)本發(fā)明的實(shí)施例的錯(cuò)誤分析程序的流程圖,該錯(cuò)誤分析程序包括用于確定哪些程序步驟與所研究的程序步驟序列的失效無(wú)關(guān)的方法;
圖7示出了根據(jù)本發(fā)明的實(shí)施例的錯(cuò)誤分析程序的流程圖,該錯(cuò)誤分析程序包括用于識(shí)別對(duì)失效程序步驟序列的集合公共的程序步驟或程序步驟群組的方法;以及
圖8示出了根據(jù)本發(fā)明的實(shí)施例的錯(cuò)誤分析程序的流程圖,該錯(cuò)誤分析程序包括用于估計(jì)將程序步驟序列的最后失效步驟與一個(gè)不同程序步驟或多個(gè)不同程序步驟進(jìn)行交換的影響的方法。
【具體實(shí)施方式】
[0009]下面詳細(xì)討論目前優(yōu)選的實(shí)施例的做出和使用。然而,應(yīng)當(dāng)意識(shí)到,本發(fā)明提供了可以在廣泛的各種特定環(huán)境中體現(xiàn)的許多適用發(fā)明概念。所討論的特定實(shí)施例僅僅是對(duì)做出和使用本發(fā)明的特定方式的說(shuō)明,并且不限制本發(fā)明的范圍。
[0010]軟件程序(本文也稱為多步驟程序)可以包括步驟序列,這些步驟中的每一個(gè)包括指令步驟和用于檢查給定指令步驟是否確實(shí)已經(jīng)以及時(shí)且正確的方式實(shí)行的驗(yàn)證步驟。軟件程序在操作期間可能由于軟件編程錯(cuò)誤或硬件失效而失效。新開發(fā)的或修改后的軟件程序尤其易于具有錯(cuò)誤,這些錯(cuò)誤一般在應(yīng)用的初始時(shí)段期間變得明顯。在多步驟程序失效的情況中,程序開發(fā)人員“調(diào)試”軟件程序以例如追查到(一個(gè)或多個(gè))精確錯(cuò)誤源可能是困難且乏味的任務(wù)。相反,通常沒(méi)有單獨(dú)程序步驟或程序步驟群組引起失效的線索。此外,所觀察到的錯(cuò)誤是由緩存一致性問(wèn)題還是由程序步驟的異步定時(shí)造成的可能是不清楚的。最后,錯(cuò)誤是否以可重現(xiàn)方式發(fā)生以及在哪些條件下以可重現(xiàn)方式發(fā)生可能是不清楚的。查找軟件程序的錯(cuò)誤源的研究典型地是例如在沒(méi)有輔助軟件程序(例如,錯(cuò)誤分析程序)的幫助的情況下手動(dòng)實(shí)行的。
[0011]本發(fā)明的實(shí)施例提供了用于快速識(shí)別錯(cuò)誤或軟件程序的根本起因的錯(cuò)誤分析程序。本發(fā)明的各種實(shí)施例提供了邊界條件,在該邊界條件下,所識(shí)別的軟件程序失效可重現(xiàn)地發(fā)生。本發(fā)明的各種實(shí)施例提供了對(duì)可能導(dǎo)致錯(cuò)誤的內(nèi)容的確定。本發(fā)明的實(shí)施例可以應(yīng)用于具有不同和單獨(dú)程序步驟的任何軟件程序。
[0012]實(shí)施例還可以包括用于評(píng)估失效軟件程序的機(jī)器、具有存儲(chǔ)在其上的錯(cuò)誤分析程序的非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以及由微處理器執(zhí)行的錯(cuò)誤分析程序。
[0013]圖1示出了實(shí)現(xiàn)對(duì)失效軟件程序的分析的機(jī)器100的框圖。機(jī)器100包括用戶接口 110、微處理器120、用于存儲(chǔ)軟件程序(例如,多步驟程序)或單獨(dú)程序步驟的設(shè)備130、文檔存儲(chǔ)設(shè)備140以及存儲(chǔ)器設(shè)備150。此外,機(jī)器100包括在機(jī)器100的上述子系統(tǒng)之間建立電連接性的各種電連接和/或總線160、170、180、190。
[0014]用戶接口 110被配置為在操作中提供關(guān)于錯(cuò)誤分析程序(本文中也稱為錯(cuò)誤研究程序)的指令,并且被配置為輸出由錯(cuò)誤分析程序的各種評(píng)估算法提供的結(jié)果或響應(yīng)。微處理器120被配置為實(shí)行和處理算法。存儲(chǔ)器設(shè)備150被配置為提供錯(cuò)誤分析程序的臨時(shí)或永久存儲(chǔ)。軟件程序存儲(chǔ)設(shè)備130被配置為存儲(chǔ)已經(jīng)執(zhí)行的或新設(shè)計(jì)的軟件程序和多步驟軟件程序的單獨(dú)步驟。文檔存儲(chǔ)設(shè)備140被配置為存儲(chǔ)從錯(cuò)誤研究運(yùn)行(例如,測(cè)試失效統(tǒng)計(jì))得到的結(jié)果??蛇x地,軟件程序存儲(chǔ)設(shè)備130或文檔存儲(chǔ)設(shè)備140或二者可以包括在不依賴于用戶接口 110監(jiān)視器的情況下允許數(shù)據(jù)查看的監(jiān)視器。存儲(chǔ)器設(shè)備150、軟件程序存儲(chǔ)設(shè)備140和文檔存儲(chǔ)設(shè)備130可以是諸如存儲(chǔ)器的單個(gè)設(shè)備。
[0015]本發(fā)明的實(shí)施例涉及用于研究軟件程序錯(cuò)誤和錯(cuò)誤模式的方法。所公開的算法可以應(yīng)用于一般性軟件程序或應(yīng)用于測(cè)試程序,例如,測(cè)試一般性軟件程序的程序。例如,軟件程序或測(cè)試程序可以是用于設(shè)計(jì)半導(dǎo)體工業(yè)中的芯片的程序。
[0016]圖2示出了包括N個(gè)單獨(dú)程序步驟的序列的軟件程序200。例如,第一程序步驟為步驟I 210,最后程序步驟為步驟N 270,以及特定程序步驟為步驟X 250,假設(shè)該特定程序步驟為錯(cuò)誤在其處發(fā)生的程序步驟。在一個(gè)實(shí)施例中,軟件程序200僅包括兩個(gè)步驟。可替代地,軟件程序可以包括10-50個(gè)步驟、10-100個(gè)步驟或者不止百個(gè)步驟。
[0017]程序步驟可以是單個(gè)指令或者指令群組。在各種實(shí)施例中,程序(或測(cè)試)執(zhí)行步是用戶定義為操作的內(nèi)容。對(duì)于圖形用戶接口(GUI)的第一示例:1)打開應(yīng)用=> 檢查窗口是否打開;2)打開文本文件=> 檢查編輯器是否窗口包含文本文件;3)編輯新字符=> 檢查編輯器是否窗口被新字符更新。對(duì)于調(diào)試器的第二示例:1)進(jìn)入針對(duì)可執(zhí)行程序的調(diào)試模式=> 檢查PC是否處于啟動(dòng)點(diǎn);2)進(jìn)行單步執(zhí)行(step over)=>檢查PC是否遞增;3)進(jìn)行單步執(zhí)行函數(shù)=> 檢查堆棧爬行是否被新框架更新。對(duì)于匯編器的第三示例:1)移動(dòng)位置內(nèi)容到寄存器中=> 檢查寄存器是否更新;2)將寄存器推入堆棧中=> 檢查堆棧指針是否更新;3)將兩個(gè)寄存器相加并將結(jié)果放入寄存器3中=> 針對(duì)該和檢查寄存器3。
[0018]圖3示出了根據(jù)本發(fā)明的實(shí)施例的錯(cuò)誤分析程序的流程圖300。該錯(cuò)誤分析程序包括用于確定失效程序步驟(例如,步驟X 250)是否可重現(xiàn)地發(fā)生的方法。在第一步驟310中,提供具有易出錯(cuò)程序步驟(例如,步驟X 250)的軟件程序(例如,軟件程序200)。在步驟320中,執(zhí)行軟件程序的在失效程序步驟(例如,步驟X 250)之前的程序步驟。例如,執(zhí)行程序200的在失效程序步驟X 250之前的步驟I 210至步驟(X-l)240。隨后,在步驟330中,易出錯(cuò)程序步驟,即步驟X 250,以重復(fù)方式被執(zhí)行預(yù)定次數(shù)。(例如,在文檔存儲(chǔ)設(shè)備140中)記錄每次單獨(dú)研究運(yùn)行的結(jié)果。最后,在步驟340中,計(jì)算例如步驟X 250的易出錯(cuò)程序步驟的失效概率。通過(guò)將失效運(yùn)行的數(shù)目除以運(yùn)行總數(shù)來(lái)計(jì)算易出錯(cuò)程序步驟的失效概率。
[0019]圖4示出了根據(jù)本發(fā)明的實(shí)施例的錯(cuò)誤分析程序的流程圖400。該錯(cuò)誤分析程序包括用于評(píng)估當(dāng)在相同測(cè)試場(chǎng)景下執(zhí)行多步驟序列時(shí)是否觀察到可重現(xiàn)錯(cuò)誤的方法。在起始步驟410中,提供包括以易出錯(cuò)程序步驟(例如,步驟X 250)結(jié)束的多步驟序列的軟件程序。在步驟420中,該多步驟序列被執(zhí)行預(yù)定次數(shù),并且記錄每次評(píng)估運(yùn)行的結(jié)果。在步驟430中,通過(guò)將失效運(yùn)行的數(shù)目除以運(yùn)行總數(shù)來(lái)計(jì)算多步驟序列的失效概率。失效概率可能非常低,因?yàn)楣收峡赡芊浅ky捕捉,這例如歸因于可能在大多數(shù)時(shí)候隱藏該故障的其他異步進(jìn)程。
[0020]關(guān)于有錯(cuò)誤的軟件程序的在失效步驟之前的哪個(gè)程序步驟可能觸發(fā)易出錯(cuò)程序步驟(例如,步驟X 250)中的錯(cuò)誤的知識(shí)在查找問(wèn)題的根本起因時(shí)可以是有幫助的。知道在失效程序中不同于在易出錯(cuò)程序步驟(例如,步驟X 250)之前的那些程序步驟的其他程序步驟可能導(dǎo)致類似問(wèn)題可以是引人關(guān)注的。
[0021]圖5示出了根據(jù)本發(fā)明的再另一實(shí)施例的錯(cuò)誤分析程序的流程圖500。該實(shí)施例嘗試確定什么是錯(cuò)誤的起因。在步驟510中,提供包括易出錯(cuò)程序步驟(例如,步驟X 250)的軟件程序。在步驟520中,提供多步驟序列集合,所有多步驟序列均以有錯(cuò)誤的軟件程序的相同易出錯(cuò)程序步驟(例如,步驟X 250)結(jié)束。每一個(gè)多步驟序列可以包括在易出錯(cuò)程序步驟之前的一個(gè)或多個(gè)步驟。多步驟序列集合還可以包括不是有錯(cuò)誤的軟件程序的部分的替代程序步驟。例如,替代程序步驟可以取自其他或下一代軟件程序。在步驟530中,實(shí)行一系列評(píng)估運(yùn)行,其中執(zhí)行每一個(gè)多步驟序列。最后,在步驟540中,將失效序列記錄在例如文檔存儲(chǔ)設(shè)備140的存儲(chǔ)器中。
[0022]步驟520中提供的多步驟序列集合可以在易出錯(cuò)程序步驟之前的全部單獨(dú)步驟上不同或者僅在一些單獨(dú)步驟上不同。(來(lái)自步驟530的)結(jié)果可以提供這樣的信息:是否有一個(gè)具體步驟或多個(gè)具體步驟(或步驟集合)在易出錯(cuò)程序步驟之前以便產(chǎn)生錯(cuò)誤。所述結(jié)果還可以提供這樣的信息:具體步驟是否對(duì)于所有評(píng)估運(yùn)行存在。此外,所述結(jié)果可以提供這樣的信息:一些步驟是否比其他步驟更相關(guān),例如,一些步驟是否對(duì)易出錯(cuò)程序步驟的失效沒(méi)有影響。最后,所述結(jié)果可以提供這樣的信息:是否存在易出錯(cuò)程序步驟對(duì)于其始終失效的最小步驟集合。
[0023]累積地或者可替代地 ,在一些實(shí)施例中,多步驟序列集合包括相同的步驟,但是這些步驟的執(zhí)行順序不同。該錯(cuò)誤評(píng)估方法的結(jié)果可以提供這樣的信息:執(zhí)行順序在什么情況下影響軟件程序錯(cuò)誤(或易出錯(cuò)程序步驟)的發(fā)生。
[0024]在各種實(shí)施例中,知道在軟件程序的易出錯(cuò)程序步驟之前的某個(gè)步驟是否可能是程序失效的潛在起因是重要的。在各種其他實(shí)施例中,知道特定的先前步驟是否可以作為潛在錯(cuò)誤源被消除可以是同等重要的。后一主題通過(guò)本發(fā)明的再另一實(shí)施例來(lái)解決,該實(shí)施例在圖6中示出的流程圖600中圖示。
[0025]在初始步驟610中,提供j個(gè)多步驟序列FTSpFTS2、FTS3……FTSj的集合,它們均以相同的易出錯(cuò)程序步驟結(jié)束。在步驟620中,針對(duì)每個(gè)群組(FTSi)實(shí)行或執(zhí)行一系列評(píng)估運(yùn)行。如果FTSi包括m個(gè)程序步驟,則對(duì)應(yīng)的評(píng)估運(yùn)行包括m次運(yùn)行,其中在每次運(yùn)行中,執(zhí)行所選FTSi的除了一個(gè)特定步驟以外的程序步驟以使得評(píng)估運(yùn)行在運(yùn)行間不同。在評(píng)估運(yùn)行失效的情況中,將該特定運(yùn)行中省略的程序步驟記錄在寄存器中。一旦完成針對(duì)所有FTS的所有評(píng)估運(yùn)行,寄存器就將包括所評(píng)估的FTS中的與對(duì)所有FTS共同的易出錯(cuò)程序步驟的失效無(wú)關(guān)的所有程序步驟的列表。
[0026]可以以各種方式進(jìn)一步分析由前面討論的實(shí)施例提供的信息,以獲得關(guān)于有錯(cuò)誤的程序的易出錯(cuò)程序步驟(例如,步驟X 250)的失效的(一個(gè)或多個(gè))根本起因的附加洞察。附加分析指令包括在圖7的流程圖700中圖示的再另一分析方法的進(jìn)一步實(shí)施例中。
[0027]在步驟710中,提供以相同易出錯(cuò)程序步驟(例如,步驟X 250)結(jié)束的失效序列(FTS)的集合。在步驟720中,關(guān)于對(duì)所有研究的FTS共同的單個(gè)程序步驟來(lái)分析可獲得的FTS集合??商娲?,關(guān)于對(duì)所有研究的FTS共同的多于一個(gè)的程序步驟來(lái)分析可獲得的FTS集合。此外,可以關(guān)于FTS集合的子群組來(lái)分析可獲得的FTS集合。隨后,在步驟730中,以易出錯(cuò)序列受不利影響的下降(或者可替代地上升)數(shù)值的順序在第一寄存器(例如,存儲(chǔ)器)中記錄在步驟720中識(shí)別的程序步驟。多步驟序列受不利影響的數(shù)值意指關(guān)于所識(shí)別的程序步驟,F(xiàn)TS對(duì)于評(píng)估運(yùn)行有多頻繁地失效。在步驟740中將它們記錄在第二寄存器(例如,存儲(chǔ)器)中。
[0028]在步驟750中,關(guān)于對(duì)所有或至少多于一個(gè)的FTS共同的連續(xù)步驟的群組分析FTS集合。在步驟760中,以序列受不利影響的下降(或者可替代地上升)數(shù)值的順序在第三寄存器(例如,存儲(chǔ)器)中記錄所識(shí)別的共同步驟群組。在步驟770中,在第四寄存器(例如,存儲(chǔ)器)中再次記錄對(duì)所有FTS共同的程序步驟的序列的群組。
[0029]在最終步驟780中,分析FTS集合來(lái)查找引起失效步驟(例如,步驟X 250)的可重現(xiàn)失效的最小程序步驟群組,并且將結(jié)果記錄在第五寄存器(例如,存儲(chǔ)器)中。
[0030]為了更好地理解錯(cuò)誤機(jī)制,知道軟件程序內(nèi)在特定易出錯(cuò)程序步驟(例如,步驟X250)之前的步驟群組(例如,步驟I 210至步驟(X-1) 240)在該易出錯(cuò)程序步驟被另一步或多個(gè)步驟替換的情況下是否還可能導(dǎo)致錯(cuò)誤一般是有幫助的。此類分析通過(guò)在圖8的流程圖800中圖示的進(jìn)一步評(píng)估方法的實(shí)施例來(lái)實(shí)現(xiàn)。
[0031]在初始步驟810中,第一程序步驟群組(例如,步驟I 210至步驟(X-1) 240)在軟件程序(例如,程序200)中的易出錯(cuò)程序步驟(例如,步驟X 250)之前。在步驟820中,提供第二程序步驟群組。第二群組的程序步驟與軟件程序的易出錯(cuò)程序步驟(例如,步驟X 250)不同。針對(duì)第二群組的程序步驟的每一個(gè)執(zhí)行評(píng)估運(yùn)行,該運(yùn)行包括第一步驟群組的執(zhí)行接著是第二群組的所選程序步驟的執(zhí)行(步驟830)。在步驟840中,將第二程序步驟群組的所有失效步驟記錄在存儲(chǔ)器(例如,寄存器140)中。
[0032]錯(cuò)誤分析方法(例如,圖3和4)可以計(jì)算易出錯(cuò)程序步驟的失效的可重現(xiàn)性。錯(cuò)誤分析方法(圖5)可以識(shí)別對(duì)于易出錯(cuò)程序步驟的失效潛在地關(guān)鍵的單個(gè)先前步驟或先前步驟群組。錯(cuò)誤分析方法(例如,圖6)可以識(shí)別與軟件程序失效不相關(guān)的程序步驟。錯(cuò)誤分析方法(例如,圖7)可以識(shí)別在易出錯(cuò)程序步驟或所有易出錯(cuò)程序步驟的失效中存在的程序步驟或最小連續(xù)步驟群組。最后,錯(cuò)誤分析方法可以在開發(fā)中提供在特定軟件程序的易出錯(cuò)程序步驟之前的程序步驟集合可以針對(duì)軟件程序如何執(zhí)行的洞察。
[0033]在各種實(shí)施例中,圖3和/或圖4的錯(cuò)誤分析方法與圖5和/或圖6的錯(cuò)誤分析方法相組合。在各種其他實(shí)施例中,圖3和/或圖4的錯(cuò)誤分析方法與圖5和/或圖6以及圖7和/或圖8的錯(cuò)誤分析方法相組合。在一些實(shí)施例中,實(shí)行所有錯(cuò)誤分析方法。在其他實(shí)施例中,僅實(shí)行一個(gè)或兩個(gè)錯(cuò)誤分析方法。
[0034]概括而言,與非軟件輔助的“最佳猜測(cè)”手段相比,本發(fā)明的實(shí)施例應(yīng)當(dāng)允許對(duì)特定軟件程序失效的(一個(gè)或多個(gè))根本起因的更快跟蹤和識(shí)別。
[0035]盡管已經(jīng)詳細(xì)描述了本發(fā)明及其優(yōu)點(diǎn),但是應(yīng)當(dāng)理解,這里可以在不偏離所附權(quán)利要求限定的本發(fā)明的精神和范圍的情況下做出各種改變、替換和更改。
[0036]此外,本申請(qǐng)的范圍并不意圖受限于說(shuō)明書中描述的過(guò)程、機(jī)器、制造、物質(zhì)組成、裝置、方法和步驟的具體實(shí)施例。如本領(lǐng)域普通技術(shù)人員將根據(jù)本發(fā)明的公開而容易意識(shí)到的,目前已有或今后開發(fā)的與本文描述的對(duì)應(yīng)實(shí)施例執(zhí)行基本相同的功能或?qū)崿F(xiàn)基本相同的結(jié)果的過(guò)程、機(jī)器、制造、物質(zhì)組成、裝置、方法或步驟可以根據(jù)本發(fā)明而被利用。因此,所附權(quán)利要求意圖在它們的范圍內(nèi)包括此類過(guò)程、機(jī)器、制造、物質(zhì)組成、裝置、方法或步驟。
【權(quán)利要求】
1.一種用于研究軟件程序中的錯(cuò)誤源的機(jī)器,所述機(jī)器包括: 耦合到存儲(chǔ)器的微處理器,其中微處理器被編程為通過(guò)以下步驟來(lái)確定易出錯(cuò)程序步驟的失效是否可重現(xiàn)地發(fā)生: 提供具有易出錯(cuò)程序步驟的軟件程序; 執(zhí)行在易出錯(cuò)程序步驟之前的程序步驟; 執(zhí)行易出錯(cuò)程序步驟多次;以及 計(jì)算易出錯(cuò)程序步驟的失效概率。
2.根據(jù)權(quán)利要求1所述的機(jī)器,還包括將易出錯(cuò)程序步驟的每次執(zhí)行的結(jié)果記錄在存儲(chǔ)器中。
3.一種用于研究軟件程序中的錯(cuò)誤源的機(jī)器,所述機(jī)器包括: 耦合到存儲(chǔ)器的微處理器,其中微處理器被編程為通過(guò)以下步驟來(lái)確定易出錯(cuò)程序步驟的失效是否可重現(xiàn)地發(fā)生: 提供以易出錯(cuò)程序步驟結(jié)束的多步驟序列; 執(zhí)行多步驟序列多次;以及 計(jì)算多步驟序列的失效概率。
4.根據(jù)權(quán)利要求3所述的機(jī)器,還包括將多步驟序列的每次執(zhí)行的結(jié)果記錄在存儲(chǔ)器中。
5.一種用于研究軟件程序中的錯(cuò)誤源的機(jī)器,所述機(jī)器包括: 耦合到存儲(chǔ)器的微處理器,其中微處理器被編程為通過(guò)以下步驟來(lái)確定易出錯(cuò)程序步驟的錯(cuò)誤源: 提供以易出錯(cuò)程序步驟結(jié)束的第一多步驟序列集合; 執(zhí)行第一多步驟序列集合的每個(gè)多步驟序列;以及 將每個(gè)失效的步驟序列記錄在存儲(chǔ)器中。
6.根據(jù)權(quán)利要求5所述的機(jī)器,其中第一多步驟序列集合包括不同的多步驟序列,并且其中每個(gè)多步驟序列與另一多步驟序列不同在于一個(gè)步驟。
7.根據(jù)權(quán)利要求5所述的機(jī)器,其中第一多步驟序列集合包括不同的多步驟序列,并且其中每個(gè)多步驟序列與另一多步驟序列不同在于除了易出錯(cuò)程序步驟以外的多于一個(gè)步驟。
8.根據(jù)權(quán)利要求5所述的機(jī)器,其中第一多步驟序列集合包括相同的多步驟序列,并且其中每個(gè)多步驟序列與另一多步驟序列不同在于步驟的順序。
9.根據(jù)權(quán)利要求5所述的機(jī)器,還包括: 執(zhí)行在易出錯(cuò)程序步驟之前的程序步驟; 執(zhí)行易出錯(cuò)程序步驟多次;以及 計(jì)算易出錯(cuò)程序步驟的失效概率。
10.根據(jù)權(quán)利要求5所述的機(jī)器,還包括: 提供以易出錯(cuò)程序步驟結(jié)束的第二多步驟序列集合,其中第二多步驟序列集合包括不同的多步驟序列,并且其中每個(gè)多步驟序列與另一多步驟序列不同在于步驟的省略; 執(zhí)行第二多步驟序列集合的每個(gè)多步驟序列;以及 記錄當(dāng)多步驟序列失效時(shí)缺少的步驟。
11.根據(jù)權(quán)利要求5所述的機(jī)器,還包括: 提供失效序列的集合,所有失效序列均以相同易出錯(cuò)程序步驟結(jié)束; 關(guān)于對(duì)失效序列共同的多個(gè)程序步驟來(lái)分析失效序列;以及 根據(jù)失效概率對(duì)所述多個(gè)程序步驟排名。
12.一種用于研究軟件程序中的錯(cuò)誤源的機(jī)器,所述機(jī)器包括: 耦合到存儲(chǔ)器的微處理器,其中微處理器被編程為通過(guò)以下步驟來(lái)確定易出錯(cuò)程序步驟的錯(cuò)誤源: 提供以易出錯(cuò)程序步驟結(jié)束的多步驟序列集合,其中多步驟序列集合包括不同的多步驟序列,并且其中每個(gè)多步驟序列與另一多步驟序列不同在于步驟的省略; 執(zhí)行多步驟序列集合的每個(gè)多步驟序列;以及 記錄當(dāng)多步驟序列失效時(shí)缺少的步驟。
13.根據(jù)權(quán)利要求12所述的機(jī)器,其中步驟的省略包括單個(gè)步驟的省略。
14.根據(jù)權(quán)利要求12所述的機(jī)器,其中步驟的省略包括多個(gè)步驟的省略。
15.一種用于研究軟件程序中的錯(cuò)誤源的機(jī)器,所述機(jī)器包括: 耦合到存儲(chǔ)器的微處理器,其中微處理器被編程為通過(guò)以下步驟來(lái)確定易出錯(cuò)程序步驟的錯(cuò)誤源: 提供失效序列的集合,所有失效序列均以相同易出錯(cuò)程序步驟結(jié)束; 關(guān)于對(duì)失效序列共同的多個(gè)程序步驟來(lái)分析失效序列;以及 根據(jù)失效概率對(duì)所述多個(gè)程序步驟排名。
16.根據(jù)權(quán)利要求15所述的機(jī)器,其中排名包括以下降順序?qū)⑺龆鄠€(gè)程序步驟存儲(chǔ)在存儲(chǔ)器中。
17.根據(jù)權(quán)利要求15所述的機(jī)器,其中對(duì)失效序列共同包括對(duì)失效序列的集合的所有失效序列共同。
18.根據(jù)權(quán)利要求15所述的機(jī)器,其中對(duì)失效序列共同包括對(duì)失效序列的集合的子集共同。
19.根據(jù)權(quán)利要求15所述的機(jī)器,其中程序步驟包括連續(xù)步驟的群組。
20.一種用于研究軟件程序中的錯(cuò)誤源的機(jī)器,所述機(jī)器包括: 耦合到存儲(chǔ)器的微處理器,其中微處理器被編程為通過(guò)以下步驟來(lái)確定易出錯(cuò)程序步驟的錯(cuò)誤源: 提供在易出錯(cuò)程序步驟之前的第一程序步驟群組; 提供與易出錯(cuò)程序步驟不同的第二程序步驟群組; 針對(duì)第二程序步驟群組的每個(gè)程序步驟來(lái)執(zhí)行第一程序步驟群組和第二群組的所選程序步驟;以及 將第二群組的失效步驟記錄在存儲(chǔ)器中。
【文檔編號(hào)】G06F11/36GK104021072SQ201410071489
【公開日】2014年9月3日 申請(qǐng)日期:2014年2月28日 優(yōu)先權(quán)日:2013年3月1日
【發(fā)明者】C.特普斯 申請(qǐng)人:英飛凌科技股份有限公司