本發(fā)明涉及軟件測試領(lǐng)域,尤其涉及大型機(jī)系統(tǒng)的系統(tǒng)測試領(lǐng)域,具體的講是一種基于主機(jī)代碼解析生成測試案例的方法及裝置。
背景技術(shù):
:本部分旨在為權(quán)利要求書中陳述的本發(fā)明的實(shí)施方式提供背景或上下文。此處的描述不因?yàn)榘ㄔ诒静糠种芯统姓J(rèn)是現(xiàn)有技術(shù)。大型機(jī)系統(tǒng),都是以程序?yàn)閱挝?,依賴一組或多組程序共同完成所需功能的整個(gè)系統(tǒng)。大型機(jī)中的程序一般是通過作業(yè)調(diào)度方式啟動(dòng)調(diào)度,用以處理響應(yīng)時(shí)間不要求太高,但處理數(shù)據(jù)量較大等作業(yè),例如,報(bào)表、賬務(wù)等大運(yùn)算量在大型機(jī)中有廣泛應(yīng)用。在黑盒測試大型機(jī)系統(tǒng)時(shí),由于測試具有流程長并且數(shù)據(jù)準(zhǔn)備、驗(yàn)證復(fù)雜及其對測試人員具有較強(qiáng)的隱蔽性等特點(diǎn),目前都是采用完全憑測試人員經(jīng)驗(yàn)驗(yàn)證各種案例場景,依賴測試人員長期的經(jīng)驗(yàn)進(jìn)行測試。但由于大型機(jī)系統(tǒng)隨著業(yè)務(wù)需求日新月異,主機(jī)產(chǎn)品及其應(yīng)用也會(huì)日行千里,很多問題都不能依靠原有測試人員豐富的經(jīng)驗(yàn)可以驗(yàn)證并發(fā)現(xiàn)相應(yīng)問題,程序測試的全面性和完整性也越來越難以保證。舉例來說,程序一般針對交易所產(chǎn)生的業(yè)務(wù)數(shù)據(jù),在日終時(shí)通過作業(yè)調(diào)度處理資源時(shí)使用的程序。一般程序的處理流程大概為讀取相關(guān)參數(shù)表及需要處理的業(yè)務(wù)數(shù)據(jù),進(jìn)行賬務(wù)處理、業(yè)務(wù)報(bào)表生成等處理,并生成數(shù)據(jù)表或者資源文件等功能。如一個(gè)普通的業(yè)務(wù)量統(tǒng)計(jì)報(bào)表源文件生成程序?qū)崿F(xiàn)了10個(gè)程序分支,首先讀取兩張參數(shù)表,兩種業(yè)務(wù)文件的數(shù)據(jù),通過邏輯處理,寫到三種業(yè)務(wù)匯總文件,然后再讀取三張參數(shù)表,并且參數(shù)表中的信息將三個(gè)匯總文件,分別啟動(dòng)其他的接口進(jìn)行處理,并且寫到成功和失敗的處理文件。在黑盒測試過程中,由于程序相對業(yè)務(wù)測試人員具有隱蔽性,在測試過程中準(zhǔn)備的數(shù)據(jù)可能只通過最后的一張報(bào)表或一個(gè)最終的數(shù)據(jù)很難實(shí)現(xiàn)測試場景完全覆蓋。所以,如何通過工具及方法,準(zhǔn)確有效指導(dǎo)測試過程中所有業(yè)務(wù)場景,使沒有得到充分驗(yàn)證的系統(tǒng)處理邏輯可以通過工具生成的測試案例設(shè)計(jì)新的測試案例場景,實(shí)現(xiàn)全方位驗(yàn)證,以提高系統(tǒng)的可靠性及測試的完整性,是主機(jī)系統(tǒng)黑盒測試過程中一個(gè)高度關(guān)注并亟待解決的問題。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例提供一種基于主機(jī)代碼解析生成測試案例的方法及裝置,為現(xiàn)在龐大的大型機(jī)系統(tǒng)測試提供以資源為線索的全量測試案例。為了達(dá)到上述目的,本發(fā)明實(shí)施例提供一種基于主機(jī)代碼解析生成測試案例的方法,包括:對主機(jī)程序代碼進(jìn)行解析,根據(jù)編碼語言的關(guān)鍵字識別出各個(gè)功能模塊;根據(jù)所述各個(gè)功能模塊對資源的所有操作,生成所述各個(gè)功能模塊的所有合成樁,并將所述合成樁插入到每個(gè)功能模塊的程序中;執(zhí)行程序,采集作業(yè)隊(duì)列中的信息,并對采集到的信息進(jìn)行過濾清洗,將符合所述程序?qū)?yīng)的合成樁的信息按照合成樁分別整理,生成有效信息;對所述有效信息進(jìn)行深度分析,將資源按照操作符的先后順序生成資源有向網(wǎng)絡(luò)圖;將所述資源有向圖通過遍歷算法遍歷出所有路徑,生成所有以資源為線索的測試案例。進(jìn)一步地,在一實(shí)施例中,所述對主機(jī)程序代碼進(jìn)行解析,根據(jù)編碼語言的關(guān)鍵字識別出各個(gè)功能模塊,還包括:根據(jù)存儲(chǔ)在代碼分析數(shù)據(jù)庫中的操作符關(guān)鍵字、資源關(guān)鍵字,識別出所述每個(gè)功能模塊對資源所采用的所有操作。進(jìn)一步地,在一實(shí)施例中,所述根據(jù)所述各個(gè)功能模塊對資源的所有操作,生成所述各個(gè)功能模塊的所有合成樁,并將所述合成樁插入到每個(gè)功能模塊的程序中,具體包括:根據(jù)所述各個(gè)功能模塊對資源所采用的所有操作,結(jié)合存儲(chǔ)在代碼分析數(shù)據(jù)庫中的操作符關(guān)鍵字、資源關(guān)鍵字,生成所有“操作-類型-資源”的合成樁,并在每個(gè)功能模塊的程序末插入所述合成樁。進(jìn)一步地,在一實(shí)施例中,所述對所述有效信息進(jìn)行深度分析,將資源按照操作符的先后順序生成資源有向網(wǎng)絡(luò)圖,具體包括:通過對所述有效信息進(jìn)行解析,搜索過濾數(shù)據(jù)中指定的分割符號、關(guān)鍵字,將主機(jī)資源名和對資源的操作分離出來,形成程序、主機(jī)資源及對資源的操作關(guān)系,并根據(jù)操作符先后順序,形成程序?qū)Y源的操作順序,生成所述資源有向網(wǎng)絡(luò)圖。進(jìn)一步地,在一實(shí)施例中,所述將所述資源有向圖通過遍歷算法遍歷出所有路徑,生成所有以資源為線索的測試案例,具體包括:通過對所述資源有向網(wǎng)絡(luò)圖分析,以資源為線索,找到與之相關(guān)的全部前后項(xiàng),搜尋所需的表、文件、程序,通過所述遍歷算法,配合資源在程序中的別名,并根據(jù)資源和別名的一一對應(yīng)關(guān)系,形成針對主機(jī)系統(tǒng)的所有測試案例。為了達(dá)到上述目的,本發(fā)明實(shí)施例還提供一種基于主機(jī)代碼解析生成測試案例的裝置,包括:代碼解析模塊,用于對主機(jī)程序代碼進(jìn)行解析,根據(jù)編碼語言的關(guān)鍵字識別出各個(gè)功能模塊;合成樁插入模塊,用于根據(jù)所述各個(gè)功能模塊對資源的所有操作,生成所述各個(gè)功能模塊的所有合成樁,并將所述合成樁插入到每個(gè)功能模塊的程序中;采集過濾模塊,用于在執(zhí)行程序時(shí)采集作業(yè)隊(duì)列中的信息,并對采集到的信息進(jìn)行過濾清洗,將符合所述程序?qū)?yīng)的合成樁的信息按照合成樁分別整理,生成有效信息;資源有向網(wǎng)絡(luò)圖生成模塊,用于對所述有效信息進(jìn)行深度分析,將資源按照操作符的先后順序生成資源有向網(wǎng)絡(luò)圖;測試案例生成模塊,用于將所述資源有向圖通過遍歷算法遍歷出所有路徑,生成所有以資源為線索的測試案例。進(jìn)一步地,在一實(shí)施例中,所述代碼解析模塊用于所述對主機(jī)程序代碼進(jìn)行解析,根據(jù)編碼語言的關(guān)鍵字識別出各個(gè)功能模塊,其還包括:根據(jù)存儲(chǔ)在代碼分析數(shù)據(jù)庫中的操作符關(guān)鍵字、資源關(guān)鍵字,識別出所述每個(gè)功能模塊對資源所采用的所有操作。進(jìn)一步地,在一實(shí)施例中,所述合成樁插入模塊用于根據(jù)所述各個(gè)功能模塊對資源的所有操作,生成所述各個(gè)功能模塊的所有合成樁,并將所述合成樁插入到每個(gè)功能模塊的程序中,其具體包括:根據(jù)所述各個(gè)功能模塊對資源所采用的所有操作,結(jié)合存儲(chǔ)在代碼分析數(shù)據(jù)庫中的操作符關(guān)鍵字、資源關(guān)鍵字,生成所有“操作-類型-資源”的合成樁,并在每個(gè)功能模塊的程序末插入所述合成樁。進(jìn)一步地,在一實(shí)施例中,所述資源有向網(wǎng)絡(luò)圖生成模塊用于對所述有效信息進(jìn)行深度分析,將資源按照操作符的先后順序生成資源有向網(wǎng)絡(luò)圖,其具體包括:通過對所述有效信息進(jìn)行解析,搜索過濾數(shù)據(jù)中指定的分割符號、關(guān)鍵字,將主機(jī)資源名和對資源的操作分離出來,形成程序、主機(jī)資源及對資源的操作關(guān)系,并根據(jù)操作符先后順序,形成程序?qū)Y源的操作順序,生成所述資源有向網(wǎng)絡(luò)圖。進(jìn)一步地,在一實(shí)施例中,所述測試案例生成模塊用于將所述資源有向圖通過遍歷算法遍歷出所有路徑,生成所有以資源為線索的測試案例,其具體包括:通過對所述資源有向網(wǎng)絡(luò)圖分析,以資源為線索,找到與之相關(guān)的全部前后項(xiàng),搜尋所需的表、文件、程序,通過所述遍歷算法,配合資源在程序中的別名,并根據(jù)資源和別名的一一對應(yīng)關(guān)系,形成針對主機(jī)系統(tǒng)的所有測試案例。本發(fā)明實(shí)施例的這種基于主機(jī)代碼解析生成測試案例的裝置及方法,首先通過對主機(jī)代碼分析,將合成樁插入到代碼中,并通過整理合成通過對信息數(shù)據(jù)的清洗過濾及數(shù)據(jù)分析,并對數(shù)據(jù)進(jìn)一步解析,依據(jù)主機(jī)資源操作的前后關(guān)系生成資源有向圖,并通過對資源有向圖的解析,最終得到以資源為線索的全部測試案例。本發(fā)明的這種方法為現(xiàn)在龐大的大型機(jī)系統(tǒng)測試提供了以資源為線索的全量測試案例,使系統(tǒng)在測試時(shí)實(shí)現(xiàn)系統(tǒng)內(nèi)所有邏輯分支處理測試成為可能,也為全面大型機(jī)系統(tǒng)全流程業(yè)務(wù)場景測試提供可靠依據(jù)。與原有的手工統(tǒng)計(jì)方式相比,本發(fā)明提供了測試案例全自動(dòng)生成方案,極大減輕了測試人員在黑盒測試時(shí)為了測試主機(jī)系統(tǒng)所需投入巨大的整理工作量,測試人員不用任何附加勞動(dòng),就能夠根據(jù)最終結(jié)果,輔助指導(dǎo)測試人員編寫未知領(lǐng)域測試案例。同時(shí),該方法全面準(zhǔn)確的展示了如何以資源為線索生成測試案例可以有效測試系統(tǒng)內(nèi)所有邏輯分支,從而為功能驗(yàn)收測試和回歸測試提供測試案例依據(jù),進(jìn)一步保證測試質(zhì)量和效率,提高了系統(tǒng)的可靠性、可用性。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例的基于主機(jī)代碼解析生成測試案例的方法的處理流程圖;圖2為一實(shí)施例中生成的主機(jī)資源有向網(wǎng)絡(luò)圖;圖3為本發(fā)明實(shí)施例的基于主機(jī)代碼解析生成測試案例的裝置的結(jié)構(gòu)示意圖;圖4為本發(fā)明的基于主機(jī)代碼解析生成測試案例的裝置的一具體實(shí)施例的結(jié)構(gòu)示意圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本領(lǐng)域技術(shù)技術(shù)人員知道,本發(fā)明的實(shí)施方式可以實(shí)現(xiàn)為一種系統(tǒng)、裝置、設(shè)備、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開可以具體實(shí)現(xiàn)為以下形式,即:完全的硬件、完全的軟件(包括固件、駐留軟件、微代碼等),或者硬件和軟件結(jié)合的形式。下面參考本發(fā)明的若干代表性實(shí)施方式,詳細(xì)闡釋本發(fā)明的原理和精神。本發(fā)明涉及的
技術(shù)領(lǐng)域:
是大型機(jī)計(jì)算機(jī)系統(tǒng)。以往的程序覆蓋測試技術(shù)都是針對大型機(jī)聯(lián)機(jī)交易調(diào)度所涉及的程序在測試過程中的覆蓋率為依據(jù),主要用于大型機(jī)的測試監(jiān)控。而本發(fā)明為以實(shí)現(xiàn)大型機(jī)系統(tǒng)全面可靠測試,設(shè)計(jì)完整的測試案例為目的,針對大型機(jī)代碼分析解析生成測試案例的一種裝置和方法,以主機(jī)系統(tǒng)對資源的處理鏡面反映系統(tǒng)處理的所有分支分析,通過對主機(jī)代碼進(jìn)行分析,解析出以主機(jī)資源為線索生成所有測試案例,即從系統(tǒng)處理的邏輯處理角度生成所有測試案例,用于指導(dǎo)大型機(jī)系統(tǒng)測試,有效指導(dǎo)測試人員的案例編寫工作、功能測試和回歸測試工作,實(shí)現(xiàn)主機(jī)系統(tǒng)全面完整性測試,確保測試質(zhì)量和效率,提高系統(tǒng)的可靠性。首先,解釋一下本發(fā)明涉及到的相關(guān)概念。主機(jī)代碼,是主機(jī)系統(tǒng)用以開發(fā)系統(tǒng)使用的開發(fā)語言,一般使用的編程工具是COBOL語言,COBOL語言具有結(jié)構(gòu)嚴(yán)謹(jǐn),層次分明、通用性強(qiáng)等特點(diǎn),其本身具有處理數(shù)據(jù)繁多而且運(yùn)算簡單等特點(diǎn)。目前主要的主機(jī)系統(tǒng),基本使用的編程工具都是COBOL。主機(jī)程序,是大型機(jī)系統(tǒng)中用于調(diào)度處理各項(xiàng)資源的程序,根據(jù)輸入的資源輸出程序處理后的各項(xiàng)資源。其操作對象一般也以表或文件為輸入資源并以其他表或文件資源為輸出,例如,報(bào)表,賬務(wù)等都會(huì)使用到主機(jī)程序。由于主機(jī)程序數(shù)據(jù)處理方式比較隱蔽,面對上千的主機(jī)程序,通過人工方式已經(jīng)不能滿足程序全面詳細(xì)測試需求,所以如何通過技術(shù)手段能夠充分有效的針對程序分支生成全面的測試案例,從而實(shí)現(xiàn)程序的全面性測試,是本發(fā)明亟待解決的問題。圖1為本發(fā)明實(shí)施例的基于主機(jī)代碼解析生成測試案例的方法的處理流程圖。如圖所示,包括:步驟S101,對主機(jī)程序代碼進(jìn)行解析,根據(jù)編碼語言的關(guān)鍵字識別出各個(gè)功能模塊;步驟S102,根據(jù)所述各個(gè)功能模塊對資源的所有操作,生成所述各個(gè)功能模塊的所有合成樁,并將所述合成樁插入到每個(gè)功能模塊的程序中;步驟S103,執(zhí)行程序,采集作業(yè)隊(duì)列中的信息,并對采集到的信息進(jìn)行過濾清洗,將符合所述程序?qū)?yīng)的合成樁的信息按照合成樁分別整理,生成有效信息;步驟S104,對所述有效信息進(jìn)行深度分析,將資源按照操作符的先后順序生成資源有向網(wǎng)絡(luò)圖;步驟S105,將所述資源有向圖通過遍歷算法遍歷出所有路徑,生成所有以資源為線索的測試案例。具體實(shí)施時(shí),在步驟S101中,COBOL語言具有結(jié)構(gòu)嚴(yán)謹(jǐn),層次分明,通用性強(qiáng)等特點(diǎn)。每個(gè)程序都是由標(biāo)識部、環(huán)境部、數(shù)據(jù)部和過程部組成,并且不同部分有明確的標(biāo)識表示。裝置通過掃描主機(jī)代碼,并對過程部中關(guān)鍵字等分析,可以識別出所有功能模塊,并根據(jù)存儲(chǔ)在代碼分析數(shù)據(jù)庫中的操作符關(guān)鍵字、資源關(guān)鍵字等,識別出每個(gè)功能模塊對資源的所采用的所有操作。具體實(shí)施時(shí),在步驟S102中,根據(jù)程序處理的都是對資源進(jìn)行加工處理,以對象為輸出,并以通過加工生成其他資源的過程。根據(jù)程序處理數(shù)據(jù)的特點(diǎn),可以將資源為核心,如,文件、數(shù)據(jù)庫中的表、甚至其他作業(yè)及程序,都是程序要處理的資源,對資源進(jìn)行的操作如增、刪、改、查、啟用其他資源等為操作,組合成合成樁。也就是說,在代碼分析的基礎(chǔ)上,對已識別出的功能模塊根據(jù)其對訪問資源及對資源的操作,結(jié)合存儲(chǔ)在代碼分析數(shù)據(jù)庫中的操作符關(guān)鍵字、資源關(guān)鍵字,生成所有“操作-類型-資源”的合成樁,并在每個(gè)功能模塊的程序末插入合成樁,用以在程序執(zhí)行時(shí)展示出來。具體實(shí)施時(shí),在步驟S103中,在大型機(jī)中批量處理是通過作業(yè)指令來調(diào)度程序完成的,即需要明確程序與作業(yè)的對應(yīng)關(guān)系,明確程序具體調(diào)度情況。一般應(yīng)用程序和作業(yè)安裝在大型機(jī)系統(tǒng)上時(shí),都會(huì)有數(shù)據(jù)庫或者配置表等信息,通過對這些信息的分析,完成程序和對應(yīng)執(zhí)行作業(yè)的對應(yīng)關(guān)系,以此作為后續(xù)數(shù)據(jù)采集的基礎(chǔ)。即:根據(jù)程序和作業(yè)在安裝時(shí)的安裝信息、作業(yè)調(diào)度信息,通過內(nèi)部邏輯關(guān)聯(lián),確定他們之間內(nèi)部調(diào)度關(guān)系。然后,根據(jù)已整理的對應(yīng)關(guān)系,采集程序執(zhí)行過程中的作業(yè)隊(duì)列中的所有信息,并將其按照程序、作業(yè)、作業(yè)步、作業(yè)執(zhí)行時(shí)間、環(huán)境、作業(yè)步等執(zhí)行信息進(jìn)行采集,將其轉(zhuǎn)化為后續(xù)數(shù)據(jù)處理可識別的模式。在數(shù)據(jù)采集運(yùn)行過程中,經(jīng)常遇到作業(yè)輸出不規(guī)范或程序執(zhí)行有問題等出現(xiàn)大量報(bào)錯(cuò)信息等情況,所以對已收集的測試信息進(jìn)行過濾篩選是必不可少的。通過對各種已定義的字符關(guān)鍵字進(jìn)行識別,分揀出收集作業(yè)信息中有效數(shù)據(jù)信息,并將無效信息分類保留,通過該裝置對數(shù)據(jù)進(jìn)行有效過濾及清洗,將有效信息轉(zhuǎn)換成為可識別的模式。也就是說,以已收集到的數(shù)據(jù)為依據(jù),將采集到的信息進(jìn)行加工處理,通過對采集到的信息中進(jìn)行過濾及清洗,將清洗后符合合成樁的信息按照合成樁分別整理,并將不符合條件的數(shù)據(jù)分類,并將其分類存儲(chǔ),供后續(xù)資料查找。具體數(shù)據(jù)過濾類型說明見表1所示:表1過濾類型過濾類型說明WARNING1作業(yè)未執(zhí)行WARNING2作業(yè)步未找到WARNING3合成樁未找到WARNING4非合成樁其他信息具體實(shí)施時(shí),在步驟S104中,所述對所述有效信息進(jìn)行深度分析,將資源按照操作符的先后順序生成資源有向網(wǎng)絡(luò)圖,具體包括:通過對所述有效信息進(jìn)行解析,搜索過濾數(shù)據(jù)中指定的分割符號、關(guān)鍵字,將主機(jī)資源名和對資源的操作分離出來,形成程序、主機(jī)資源及對資源的操作關(guān)系,并根據(jù)操作符先后順序,形成程序?qū)Y源的操作順序,生成所述資源有向網(wǎng)絡(luò)圖。例如,圖2為一實(shí)施例中生成的主機(jī)資源有向網(wǎng)絡(luò)圖。具體實(shí)施時(shí),在步驟S105中,所述將所述資源有向圖通過遍歷算法遍歷出所有路徑,生成所有以資源為線索的測試案例,具體包括:通過對所述資源有向網(wǎng)絡(luò)圖分析,以資源為線索,找到與之相關(guān)的全部前后項(xiàng),搜尋所需的表、文件、程序,通過所述遍歷算法,配合資源在程序中的別名,并根據(jù)資源和別名的一一對應(yīng)關(guān)系,形成針對主機(jī)系統(tǒng)的所有測試案例。例如,根據(jù)圖2所示實(shí)施例的述資源有向網(wǎng)絡(luò)圖可得出測試案例包括如下:案例1:讀->資源1->程序1處理->寫->資源2案例2:讀->資源1->程序1處理->改->資源2案例3:(讀->資源1)和(讀->資源2)->程序2處理->(插->資源3)和(寫->資源4)案例4:(讀->資源1)和(讀->資源2)->程序2處理->(插->資源3)和(插->資源4)案例n:操作n->資源n->程序3處理->刪->資源3在本實(shí)施例中,在步驟S101進(jìn)行代碼解析和步驟S102進(jìn)行合成樁生成插入操作中所使用分析的代碼解析關(guān)鍵字符、關(guān)鍵字,合成樁的關(guān)鍵字符、關(guān)鍵字等,以及程序中使用的對資源對象名稱等,都可存儲(chǔ)在代碼分析數(shù)據(jù)庫中。并且,在程序與作業(yè)信息整合、數(shù)據(jù)采集、合成樁清洗過濾、數(shù)據(jù)有向圖形成及生成測試案例中所有信息都存儲(chǔ)在采集分析信息數(shù)據(jù)庫中,包括生成的測試案例及各類清洗數(shù)據(jù)也都存儲(chǔ)在采集分析信息數(shù)據(jù)庫中。并且,在具體實(shí)施時(shí),步驟S101和S102可以部署在開發(fā)環(huán)境中,而步驟S103-S105可以部署在測試環(huán)境中。本發(fā)明的通過代碼分析生成測試案例方法就是通過對各項(xiàng)信息分析為依據(jù),得出主機(jī)系統(tǒng)所有邏輯分支,再結(jié)合對資源進(jìn)一步操作分析,生成以資源為線索的資源有向圖,并通過資源有向圖就可以生成測試案例。應(yīng)當(dāng)注意,盡管在附圖中以特定順序描述了本發(fā)明方法的操作,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些操作,或是必須執(zhí)行全部所示的操作才能實(shí)現(xiàn)期望的結(jié)果。附加地或備選地,可以省略某些步驟,將多個(gè)步驟合并為一個(gè)步驟執(zhí)行,和/或?qū)⒁粋€(gè)步驟分解為多個(gè)步驟執(zhí)行。在介紹了本發(fā)明示例性實(shí)施方式的方法之后,接下來,參考圖3對本發(fā)明示例性實(shí)施方式的基于主機(jī)代碼解析生成測試案例的裝置進(jìn)行介紹。該裝置的實(shí)施可以參見上述方法的實(shí)施,重復(fù)之處不再贅述。以下所使用的術(shù)語“模塊”,可以是實(shí)現(xiàn)預(yù)定功能的軟件和/或硬件。盡管以下實(shí)施例所描述的模塊較佳地以軟件來實(shí)現(xiàn),但是硬件,或者軟件和硬件的組合的實(shí)現(xiàn)也是可能并被構(gòu)想的。圖3為本發(fā)明實(shí)施例的基于主機(jī)代碼解析生成測試案例的裝置的結(jié)構(gòu)示意圖。如圖3所示,包括:代碼解析模塊101,用于對主機(jī)程序代碼進(jìn)行解析,根據(jù)編碼語言的關(guān)鍵字識別出各個(gè)功能模塊;合成樁插入模塊102,用于根據(jù)所述各個(gè)功能模塊對資源的所有操作,生成所述各個(gè)功能模塊的所有合成樁,并將所述合成樁插入到每個(gè)功能模塊的程序中;采集過濾模塊103,用于在執(zhí)行程序時(shí)采集作業(yè)隊(duì)列中的信息,并對采集到的信息進(jìn)行過濾清洗,將符合所述程序?qū)?yīng)的合成樁的信息按照合成樁分別整理,生成有效信息;資源有向網(wǎng)絡(luò)圖生成模塊104,用于對所述有效信息進(jìn)行深度分析,將資源按照操作符的先后順序生成資源有向網(wǎng)絡(luò)圖;測試案例生成模塊105,用于將所述資源有向圖通過遍歷算法遍歷出所有路徑,生成所有以資源為線索的測試案例。進(jìn)一步,在本實(shí)施例中,所述代碼解析模塊101用于所述對主機(jī)程序代碼進(jìn)行解析,根據(jù)編碼語言的關(guān)鍵字識別出各個(gè)功能模塊,其還包括:根據(jù)存儲(chǔ)在代碼分析數(shù)據(jù)庫中的操作符關(guān)鍵字、資源關(guān)鍵字,識別出所述每個(gè)功能模塊對資源所采用的所有操作。進(jìn)一步,在本實(shí)施例中,所述合成樁插入模塊102用于根據(jù)所述各個(gè)功能模塊對資源的所有操作,生成所述各個(gè)功能模塊的所有合成樁,并將所述合成樁插入到每個(gè)功能模塊的程序中,其具體包括:根據(jù)所述各個(gè)功能模塊對資源所采用的所有操作,結(jié)合存儲(chǔ)在代碼分析數(shù)據(jù)庫中的操作符關(guān)鍵字、資源關(guān)鍵字,生成所有“操作-類型-資源”的合成樁,并在每個(gè)功能模塊的程序末插入所述合成樁。進(jìn)一步,在本實(shí)施例中,所述資源有向網(wǎng)絡(luò)圖生成模塊104用于對所述有效信息進(jìn)行深度分析,將資源按照操作符的先后順序生成資源有向網(wǎng)絡(luò)圖,其具體包括:通過對所述有效信息進(jìn)行解析,搜索過濾數(shù)據(jù)中指定的分割符號、關(guān)鍵字,將主機(jī)資源名和對資源的操作分離出來,形成程序、主機(jī)資源及對資源的操作關(guān)系,并根據(jù)操作符先后順序,形成程序?qū)Y源的操作順序,生成所述資源有向網(wǎng)絡(luò)圖。進(jìn)一步,在本實(shí)施例中,所述測試案例生成模塊105用于將所述資源有向圖通過遍歷算法遍歷出所有路徑,生成所有以資源為線索的測試案例,其具體包括:通過對所述資源有向網(wǎng)絡(luò)圖分析,以資源為線索,找到與之相關(guān)的全部前后項(xiàng),搜尋所需的表、文件、程序,通過所述遍歷算法,配合資源在程序中的別名,并根據(jù)資源和別名的一一對應(yīng)關(guān)系,形成針對主機(jī)系統(tǒng)的所有測試案例。此外,盡管在上文描述中提及了基于主機(jī)代碼解析生成測試案例的裝置的若干單元,但是這種劃分僅僅并非強(qiáng)制性的。實(shí)際上,根據(jù)本發(fā)明的實(shí)施方式,上文描述的兩個(gè)或更多單元的特征和功能可以在一個(gè)單元中具體化。同樣,上文描述的一個(gè)單元的特征和功能也可以進(jìn)一步劃分為由多個(gè)單元來具體化。圖4為本發(fā)明的基于主機(jī)代碼解析生成測試案例的裝置的一具體實(shí)施例的結(jié)構(gòu)示意圖。如圖4所示,與圖3實(shí)施例相同的是,本實(shí)施例同樣包括代碼解析模塊101、合成樁插入模塊102、采集過濾模塊103、資源有向網(wǎng)絡(luò)圖生成模塊104、測試案例生成模塊105,這些模塊的功能與圖3實(shí)施例中相同;而為了更加明確數(shù)據(jù)采集及清洗過濾的過程,將圖3實(shí)施例中的采集過濾模塊103進(jìn)行功能拆分,劃分為數(shù)據(jù)采集模塊1031和合成樁清洗過濾模塊1032,并且加入程序與作業(yè)整合模塊106,以在采集數(shù)據(jù)前確定程序和對應(yīng)執(zhí)行作業(yè)的對應(yīng)關(guān)系。在大型機(jī)中批量處理是通過作業(yè)指令來調(diào)度程序完成的,即需要明確程序與作業(yè)的對應(yīng)關(guān)系,明確程序具體調(diào)度情況。一般應(yīng)用程序和作業(yè)安裝在大型機(jī)系統(tǒng)上時(shí),都會(huì)有數(shù)據(jù)庫或者配置表等信息,通過對這些信息的分析,完成程序和對應(yīng)執(zhí)行作業(yè)的對應(yīng)關(guān)系,以此作為后續(xù)數(shù)據(jù)采集模塊1031的基礎(chǔ)。即,根據(jù)程序和作業(yè)在安裝時(shí)的安裝信息、作業(yè)調(diào)度信息,通過內(nèi)部邏輯關(guān)聯(lián),確定它們之間的內(nèi)部調(diào)度關(guān)系。數(shù)據(jù)采集模塊1031根據(jù)已整理的對應(yīng)關(guān)系,采集作業(yè)隊(duì)列中所有信息,并將其按照程序、作業(yè)、作業(yè)步、作業(yè)執(zhí)行時(shí)間、環(huán)境、作業(yè)步等執(zhí)行信息進(jìn)行采集,將其轉(zhuǎn)化為后續(xù)數(shù)據(jù)處理可識別的模式。合成樁清洗過濾模塊1032以已收集到的數(shù)據(jù)為依據(jù),將采集到的信息進(jìn)行加工處理,通過對采集到的信息進(jìn)行過濾及清洗,將清洗后符合合成樁的信息按照合成樁分別整理,并將不符合條件的數(shù)據(jù)分類,并將其分類存儲(chǔ),供后續(xù)資料查找。并且,本實(shí)施例中,加入代碼分析數(shù)據(jù)庫107,用于存儲(chǔ)代碼解析模塊101進(jìn)行代碼解析和合成樁插入模塊進(jìn)行合成樁生成插入操作中所使用分析的代碼解析關(guān)鍵字符、關(guān)鍵字,合成樁的關(guān)鍵字符、關(guān)鍵字等,以及程序中使用的對資源對象名稱等數(shù)據(jù)。加入采集分析信息數(shù)據(jù)庫108,在程序與作業(yè)信息整合、數(shù)據(jù)采集、合成樁清洗過濾、數(shù)據(jù)有向圖形成及生成測試案例中所有信息都存儲(chǔ)在采集分析信息數(shù)據(jù)庫108中,包括生成的測試案例及各類清洗數(shù)據(jù)也都存儲(chǔ)在采集分析信息數(shù)據(jù)庫108中。本發(fā)明實(shí)施例的這種基于主機(jī)代碼解析生成測試案例的裝置及方法,首先通過對主機(jī)代碼分析,將合成樁插入到代碼中,并通過整理合成通過對信息數(shù)據(jù)的清洗過濾及數(shù)據(jù)分析,并對數(shù)據(jù)進(jìn)一步解析,依據(jù)主機(jī)資源操作的前后關(guān)系生成資源有向圖,并通過對資源有向圖的解析,最終得到以資源為線索的全部測試案例。本發(fā)明的這種方法為現(xiàn)在龐大的大型機(jī)系統(tǒng)測試提供了以資源為線索的全量測試案例,使系統(tǒng)在測試時(shí)實(shí)現(xiàn)系統(tǒng)內(nèi)所有邏輯分支處理測試成為可能,也為全面大型機(jī)系統(tǒng)全流程業(yè)務(wù)場景測試提供可靠依據(jù)。與原有的手工統(tǒng)計(jì)方式相比,本發(fā)明提供了測試案例全自動(dòng)生成方案,極大減輕了測試人員在黑盒測試時(shí)為了測試主機(jī)系統(tǒng)所需投入巨大的整理工作量,測試人員不用任何附加勞動(dòng),就能夠根據(jù)最終結(jié)果,輔助指導(dǎo)測試人員編寫未知領(lǐng)域測試案例。同時(shí),該方法全面準(zhǔn)確的展示了如何以資源為線索生成測試案例可以有效測試系統(tǒng)內(nèi)所有邏輯分支,從而為功能驗(yàn)收測試和回歸測試提供測試案例依據(jù),進(jìn)一步保證測試質(zhì)量和效率,提高了系統(tǒng)的可靠性、可用性。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。本發(fā)明中應(yīng)用了具體實(shí)施例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。當(dāng)前第1頁1 2 3