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