一種面向程序結(jié)構(gòu)分析自動化框架模型的制作方法
【專利摘要】本發(fā)明公開了一種面向程序結(jié)構(gòu)分析自動化框架模型,該模型包括以下五個(gè)基本模塊:語法分析器,為一個(gè)完整的編譯模塊,所處理的對象是標(biāo)準(zhǔn)語言的子集;策略配置器,根據(jù)所要采用的測試方法來設(shè)計(jì)測試模型對具體測試活動的支持;指令生成器,計(jì)算程序動態(tài)執(zhí)行時(shí)要處理的測試工作,生成測試處理模塊插入到源程序中,構(gòu)成自包含測試信息的被測試程序,提交給仿真執(zhí)行模塊運(yùn)行;測試用例生成器,測試活動根據(jù)測試的完備情況反復(fù)進(jìn)行;指令仿真執(zhí)行器,提供一個(gè)測試框架內(nèi)部的仿真執(zhí)行環(huán)境。該一種面向程序結(jié)構(gòu)分析自動化框架模型與現(xiàn)有技術(shù)相比,能夠完成對程序的自動測試過程,可以減少人工勞動,提高測試的自動化程度,實(shí)用性強(qiáng),易于推廣。
【專利說明】
一種面向程序結(jié)構(gòu)分析自動化框架模型
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)軟件測試技術(shù)領(lǐng)域,具體地說是一種實(shí)用性強(qiáng)、面向程序結(jié)構(gòu)分析自動化框架模型。【背景技術(shù)】
[0002]軟件測試是一項(xiàng)花銷巨大的工作。傳統(tǒng)的人工測試技術(shù)不但要耗費(fèi)大量的人力資源,還需要很長的測試周期,測試的效率低下,并嚴(yán)重依賴于測試人員的個(gè)人經(jīng)驗(yàn),即使很簡單的程序也可能由于個(gè)體思維習(xí)慣導(dǎo)致測試的遺漏。自動測試技術(shù)則可以彌補(bǔ)這些問題。自動化測試是個(gè)完整、嚴(yán)密的測試過程,使用準(zhǔn)確的測試法則和評估標(biāo)準(zhǔn),避免測試人員經(jīng)驗(yàn)判定的疏漏,以及慣性思維所導(dǎo)致的偏差。隨著自動測試技術(shù)的研究以及相應(yīng)的自動測試工具的開發(fā),自動測試技術(shù)可以有效提高測試的效率,減少繁瑣的重復(fù)勞動,保證測試的可重復(fù)性。對于繁瑣而大量重復(fù)的軟件測試工作,自動測試技術(shù)無疑正是測試人員所期待的解決辦法。
[0003]軟件測試技術(shù)發(fā)展到一定的階段,隨著軟件系統(tǒng)規(guī)模的增大,軟件測試復(fù)雜性增加,傳統(tǒng)的測試技術(shù)己經(jīng)難以適應(yīng)軟件開發(fā)過程的要求,要求對傳統(tǒng)測試技術(shù)有突破性的發(fā)展,自動化軟件測試技術(shù)展現(xiàn)出的強(qiáng)大發(fā)展?jié)摿κ怪蔀檐浖y試研究的重要內(nèi)容。如何提高自動化軟件測試的性能,擴(kuò)展自動化軟件測試的功能,提高自動化軟件測試的實(shí)用性和軟件產(chǎn)品的可靠性,是自動化軟件測試需要解決的主要問題。
[0004]基于此,本發(fā)明提供一種面向程序結(jié)構(gòu)分析自動化框架模型,采用進(jìn)化計(jì)算、啟發(fā)式學(xué)習(xí)以及有限狀態(tài)自動機(jī)等不同的研究方法,對軟件測試自動化的各種技術(shù)和實(shí)現(xiàn)進(jìn)行改進(jìn)和創(chuàng)新,對提高軟件測試的自動化程度和保證自動測試的有效性都有極大的現(xiàn)實(shí)意義和研究價(jià)值。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供一種實(shí)用性強(qiáng)、面向程序結(jié)構(gòu)分析自動化框架模型。
[0006]—種面向程序結(jié)構(gòu)分析自動化框架模型,該模型包括以下五個(gè)基本模塊:語法分析器,為一個(gè)完整的編譯模塊,所處理的對象是標(biāo)準(zhǔn)語言的子集;策略配置器,根據(jù)所要采用的測試方法來設(shè)計(jì)測試模型對具體測試活動的支持,同時(shí)為不同的測試目標(biāo)進(jìn)行測試活動的安排;指令生成器,在測試策略的控制下,針對不同測試策略,計(jì)算程序動態(tài)執(zhí)行時(shí)要處理的測試工作,生成測試處理模塊插入到源程序中,構(gòu)成自包含測試信息的被測試程序,提交給仿真執(zhí)行模塊運(yùn)行;測試用例生成器,是一個(gè)相對獨(dú)立的模塊,測試活動根據(jù)測試的完備情況反復(fù)進(jìn)行; 指令仿真執(zhí)行器,該模塊提供了一個(gè)測試框架內(nèi)部的仿真執(zhí)行環(huán)境,實(shí)現(xiàn)程序動態(tài)運(yùn)行與檢測的功能。
[0007]語法分析器首先對雙源程序進(jìn)行詞法分析,使用有限自動機(jī)對正則表達(dá)式所表示的詞法規(guī)則進(jìn)行識別,即通過有限自動機(jī)的識別,對程序中的各個(gè)變量進(jìn)行標(biāo)識,以及變量所處的位置進(jìn)行記錄,以供后續(xù)的測試處理分析。
[0008]所述語法分析器完成對被測試程序的結(jié)構(gòu)分析,自動為被測試程序生成抽象語法樹,對該語法樹進(jìn)行遍歷后,生成程序的鄰接矩陣進(jìn)而計(jì)算程序控制流路徑,提供給后續(xù)測試活動使用。
[0009]指令生成器以三址碼表示方式將測試程序提供給指令仿真生成器進(jìn)行處理,相對應(yīng)的,指令仿真執(zhí)行器將該指令生成器生成的三址碼表示的中間代碼進(jìn)行解釋執(zhí)行,以實(shí)現(xiàn)程序動態(tài)運(yùn)行與檢測的功能。
[0010]所述測試用例生成器是在自動測試過程中,完成對輸入數(shù)據(jù)的處理,在需要時(shí)被調(diào)用,以模擬人工輸入為程序執(zhí)行提供必要的輸入數(shù)據(jù)。
[0011]上述模型通過語法分析器對程序結(jié)構(gòu)的解析,采用嵌入源碼方式為被測試程序插入測試探針,在指令仿真執(zhí)行器提供的模擬仿真環(huán)境下通過運(yùn)行帶有測試探針的被測試程序,完成對程序的自動測試過程。
[0012]嵌入源碼方式的測試處理是指:在對程序控制結(jié)構(gòu)進(jìn)行解析后,根據(jù)測試策略的配置,對程序控制流中要實(shí)現(xiàn)的測試處理過程進(jìn)行預(yù)計(jì)算和定義,為需要進(jìn)行測試和監(jiān)控的運(yùn)行節(jié)點(diǎn)加入處理模塊;這樣,當(dāng)程序按正常控制流運(yùn)行到特定的測試處理模塊時(shí),控制被交至測試處理模塊,模塊對己運(yùn)行的控制流信息進(jìn)行分析和測試,生成對應(yīng)的測試報(bào)告, 然后將控制交還程序繼續(xù)執(zhí)行。
[0013]本發(fā)明的一種面向程序結(jié)構(gòu)分析自動化框架模型,具有以下優(yōu)點(diǎn):本發(fā)明的一種面向程序結(jié)構(gòu)分析自動化框架模型,采用進(jìn)化計(jì)算、啟發(fā)式學(xué)習(xí)以及有限狀態(tài)自動機(jī)等不同的技術(shù),對軟件測試自動化的各種技術(shù)和實(shí)現(xiàn)進(jìn)行改進(jìn)和創(chuàng)新,對提高軟件測試的自動化程度和保證自動測試的有效性都有極大的現(xiàn)實(shí)意義和研究價(jià)值;能夠完成對程序的自動測試過程,可以減少人工勞動,提高測試的自動化程度,實(shí)用性強(qiáng),易于推廣?!靖綀D說明】
[0014]附圖1為標(biāo)識符的自動機(jī)模型圖。
[0015]附圖2為本發(fā)明的結(jié)構(gòu)示意圖。
[0016]附圖3為程序仿真執(zhí)行流程圖?!揪唧w實(shí)施方式】
[0017]下面結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步說明。
[0018]如附圖1、圖2所示,本發(fā)明提供一種面向程序結(jié)構(gòu)分析自動化框架模型,針對C語言結(jié)構(gòu)分析的自動化測試模型,模型以編譯模塊為基礎(chǔ),通過對程序結(jié)構(gòu)的解析,采用嵌入源碼方式為被測試程序插入測試探針,在模擬仿真環(huán)境下通過運(yùn)行帶有測試探針的被測試程序,完成對程序的自動測試過程,可以減少人工勞動,提高測試的自動化程度。
[0019]該模型的實(shí)現(xiàn)是一個(gè)集成的自組織環(huán)境,主要支持單元測試、測試用例自動生成、 功能測試以及連續(xù)循環(huán)測試等自動測試活動。測試活動的實(shí)現(xiàn)采用了源碼嵌入式的測試探針技術(shù)來實(shí)現(xiàn),模型的組織,主要包括5個(gè)基本模塊,如圖2。
[0020]—、語法分析器。
[0021]語法分析器實(shí)際是一個(gè)完整的編譯模塊,所處理的對象是標(biāo)準(zhǔn)語言的子集。語法分析器首先雙源程序進(jìn)行詞法分析,主要使用有限自動機(jī)對正則表達(dá)式所表示的詞法規(guī)則進(jìn)行識別。[〇〇22] 例如對字母和數(shù)字的表示為: letter=[a_zA_Z] digit=[0-9]標(biāo)識符的正則表達(dá)式可表為:identifier=letter(letter}digit)*。即合法的標(biāo)識符要滿足的規(guī)則為必須以字母開頭,其后可以接任意多個(gè)字母或數(shù)字。為識別標(biāo)識符所設(shè)計(jì)的有限自動機(jī)可表示為圖1。
[0023]通過有限自動機(jī)的識別,該模塊可對程序中的各個(gè)變量進(jìn)行標(biāo)識,以及變量所處的位置進(jìn)行記錄,以供后續(xù)的測試處理分析。編譯模塊完成對被測試程序的結(jié)構(gòu)分析,自動為被測試程序生成前述的抽象語法樹,對該語法樹進(jìn)行遍歷后,生成程序的鄰接矩陣進(jìn)而計(jì)算程序控制流路徑,可提供給后續(xù)測試活動使用。[〇〇24]二、策略配置器。
[0025]測試活動是針對性的行為,通用的框架模型往往對特定的測試支持較弱,因而難以發(fā)揮測試的性能。在測試策略中,白盒測試和黑盒測試所使用的測試方法和技術(shù)有很大差異。使用策略配置器可以根據(jù)所要采用的測試方法來設(shè)計(jì)測試模型對具體測試活動的支持,同時(shí)可以為不同的測試目標(biāo)進(jìn)行測試活動的安排。策略配置器使得測試模型具有較好的適應(yīng)性,對有效發(fā)揮自動測試的性能有著重要作用。[〇〇26]三、指令生成器。
[0027]針對程序結(jié)構(gòu)的測試需要準(zhǔn)確把握程序的控制流信息,在自動化測試過程中,需要對這些信息自動采集和分析。使用程序動態(tài)運(yùn)行狀態(tài)的外部監(jiān)控方式實(shí)現(xiàn)復(fù)雜,而且由于需要維護(hù)和檢測程序執(zhí)行過程中的所有狀態(tài),會導(dǎo)致較大的測試處理開銷。源碼嵌入式的測試處理可以避免這個(gè)問題,在對程序控制結(jié)構(gòu)進(jìn)行解析后,根據(jù)測試策略的配置,可對程序控制流中要實(shí)現(xiàn)的測試處理過程進(jìn)行預(yù)計(jì)算和定義,為需要進(jìn)行測試和監(jiān)控的運(yùn)行節(jié)點(diǎn)加入處理模塊。這樣,當(dāng)程序按正??刂屏鬟\(yùn)行到特定的測試處理模塊時(shí),控制被交至測試處理模塊,模塊對己運(yùn)行的控制流信息進(jìn)行分析和測試,生成對應(yīng)的測試報(bào)告,然后將控制交還程序繼續(xù)執(zhí)行。
[0028]指令生成器在測試策略的控制下,針對不同測試策略,計(jì)算程序動態(tài)執(zhí)行時(shí)要處理的測試工作,生成測試處理模塊插入到源程序中,構(gòu)成自包含測試信息的被測試程序,提交給仿真執(zhí)行模塊運(yùn)行。本設(shè)計(jì)的測試模型使用了獨(dú)立的仿真處理模塊,可在指令生成器后為模塊提供處理程序,這種方式可提供對測試的更大支持。這意味著測試處理模塊甚至可以是非標(biāo)準(zhǔn)組件,只要模擬執(zhí)行模塊能夠認(rèn)識和提供支持,都可以在該環(huán)境下執(zhí)行。 [〇〇29]指令生成器以三址碼表示方式將嵌入了測試處理模塊的測試程序提供給模擬執(zhí)行模塊進(jìn)行處理。
[0030]四、測試用例生成器。[0031 ]測試用例生成器是一個(gè)相對獨(dú)立的模塊,在本文的自動測試框架模型下,測試活動根據(jù)測試的完備情況,可以反復(fù)進(jìn)行。程序的動態(tài)執(zhí)行總是在一定的環(huán)境下實(shí)現(xiàn),執(zhí)行過程中會接受用戶或外部環(huán)境的數(shù)據(jù)輸入,這些輸入數(shù)據(jù)會直接影響程序的執(zhí)行行為。在自動測試過程中,為了盡量減少人工的介入,輸入數(shù)據(jù)的處理被實(shí)現(xiàn)為一個(gè)獨(dú)立的模塊,在需要時(shí)被調(diào)用,以模擬人工輸入為程序執(zhí)行提供必要的輸入數(shù)據(jù)。
[0032]五、指令仿真執(zhí)行器。
[0033]該模塊提供了一個(gè)測試框架內(nèi)部的仿真執(zhí)行環(huán)境,將前述生成的三址碼表示的中間代碼進(jìn)行解釋執(zhí)行,實(shí)現(xiàn)程序動態(tài)運(yùn)行與檢測的功能。[〇〇34]在完成對被測試程序的結(jié)構(gòu)分析,并設(shè)置測試探針后,就可以為被測試程序自動構(gòu)造測試用例驅(qū)動執(zhí)行進(jìn)行動態(tài)測試。本文的自動測試框架模型為被測試程序設(shè)計(jì)了仿真執(zhí)行模塊,具有測試探針信息的中間碼可在測試框架內(nèi)的仿真模塊下執(zhí)行,結(jié)合前述的自動測試充分性標(biāo)準(zhǔn),可以完成自動測試的過程。
[0035]圖3是仿真運(yùn)行模塊的算法流程圖模型,其具體內(nèi)容為:首先初始化指令仿真執(zhí)行器提供的仿真環(huán)境;然后由測試用例生成器生成測試用例;利用測試探針收集到的測試信息對是否滿足測試標(biāo)準(zhǔn)進(jìn)行檢測,當(dāng)達(dá)到既定的分支覆蓋測試標(biāo)準(zhǔn)后,自動測試過程停止。
[0036]上述【具體實(shí)施方式】僅是本發(fā)明的具體個(gè)案,本發(fā)明的專利保護(hù)范圍包括但不限于上述【具體實(shí)施方式】,任何符合本發(fā)明的一種面向程序結(jié)構(gòu)分析自動化框架模型的權(quán)利要求書的且任何所述技術(shù)領(lǐng)域的普通技術(shù)人員對其所做的適當(dāng)變化或替換,皆應(yīng)落入本發(fā)明的專利保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種面向程序結(jié)構(gòu)分析自動化框架模型,其特征在于,該模型包括以下五個(gè)基本模 塊:語法分析器,為一個(gè)完整的編譯模塊,所處理的對象是標(biāo)準(zhǔn)語言的子集;策略配置器,根據(jù)所要采用的測試方法來設(shè)計(jì)測試模型對具體測試活動的支持,同時(shí) 為不同的測試目標(biāo)進(jìn)行測試活動的安排;指令生成器,在測試策略的控制下,針對不同測試策略,計(jì)算程序動態(tài)執(zhí)行時(shí)要處理的 測試工作,生成測試處理模塊插入到源程序中,構(gòu)成自包含測試信息的被測試程序,提交給 仿真執(zhí)行模塊運(yùn)行;測試用例生成器,是一個(gè)相對獨(dú)立的模塊,測試活動根據(jù)測試的完備情況反復(fù)進(jìn)行;指令仿真執(zhí)行器,該模塊提供了 一個(gè)測試框架內(nèi)部的仿真執(zhí)行環(huán)境,實(shí)現(xiàn)程序動態(tài)運(yùn) 行與檢測的功能。2.根據(jù)權(quán)利要求1所述的一種面向程序結(jié)構(gòu)分析自動化框架模型,其特征在于,語法分 析器首先對雙源程序進(jìn)行詞法分析,使用有限自動機(jī)對正則表達(dá)式所表示的詞法規(guī)則進(jìn)行 識別,即通過有限自動機(jī)的識別,對程序中的各個(gè)變量進(jìn)行標(biāo)識,以及變量所處的位置進(jìn)行 記錄,以供后續(xù)的測試處理分析。3.根據(jù)權(quán)利要求2所述的一種面向程序結(jié)構(gòu)分析自動化框架模型,其特征在于,所述語 法分析器完成對被測試程序的結(jié)構(gòu)分析,自動為被測試程序生成抽象語法樹,對該語法樹 進(jìn)行遍歷后,生成程序的鄰接矩陣進(jìn)而計(jì)算程序控制流路徑,提供給后續(xù)測試活動使用。4.根據(jù)權(quán)利要求1所述的一種面向程序結(jié)構(gòu)分析自動化框架模型,其特征在于,指令生 成器以三址碼表示方式將測試程序提供給指令仿真生成器進(jìn)行處理,相對應(yīng)的,指令仿真 執(zhí)行器將該指令生成器生成的三址碼表示的中間代碼進(jìn)行解釋執(zhí)行,以實(shí)現(xiàn)程序動態(tài)運(yùn)行 與檢測的功能。5.根據(jù)權(quán)利要求1所述的一種面向程序結(jié)構(gòu)分析自動化框架模型,其特征在于,所述測 試用例生成器是在自動測試過程中,完成對輸入數(shù)據(jù)的處理,在需要時(shí)被調(diào)用,以模擬人工 輸入為程序執(zhí)行提供必要的輸入數(shù)據(jù)。6.根據(jù)權(quán)利要求1所述的一種面向程序結(jié)構(gòu)分析自動化框架模型,其特征在于,上述模 型通過語法分析器對程序結(jié)構(gòu)的解析,采用嵌入源碼方式為被測試程序插入測試探針,在 指令仿真執(zhí)行器提供的模擬仿真環(huán)境下通過運(yùn)行帶有測試探針的被測試程序,完成對程序 的自動測試過程。7.根據(jù)權(quán)利要求6所述的一種面向程序結(jié)構(gòu)分析自動化框架模型,其特征在于,嵌入源 碼方式的測試處理是指:在對程序控制結(jié)構(gòu)進(jìn)行解析后,根據(jù)測試策略的配置,對程序控制 流中要實(shí)現(xiàn)的測試處理過程進(jìn)行預(yù)計(jì)算和定義,為需要進(jìn)行測試和監(jiān)控的運(yùn)行節(jié)點(diǎn)加入處 理模塊;這樣,當(dāng)程序按正??刂屏鬟\(yùn)行到特定的測試處理模塊時(shí),控制被交至測試處理模 塊,模塊對己運(yùn)行的控制流信息進(jìn)行分析和測試,生成對應(yīng)的測試報(bào)告,然后將控制交還程 序繼續(xù)執(zhí)行。
【文檔編號】G06F11/36GK106021109SQ201610339516
【公開日】2016年10月12日
【申請日】2016年5月20日
【發(fā)明人】方超
【申請人】浪潮電子信息產(chǎn)業(yè)股份有限公司