亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向行業(yè)應(yīng)用的軟件開發(fā)檢查工具

        2012-11-30 03:19:18吳曉輝王致富
        關(guān)鍵詞:正確性數(shù)據(jù)結(jié)構(gòu)日志

        吳曉輝,王致富,張 正

        (1.對(duì)外經(jīng)濟(jì)貿(mào)易大學(xué) 金融學(xué)院,北京100029;2.中國(guó)科學(xué)院軟件研究所 軟件工程技術(shù)研究中心,北京100190;3.中國(guó)科學(xué)院研究生院 信息科學(xué)與工程學(xué)院,北京100190;4.中科軟科技股份有限公司,北京100190)

        0 引 言

        行業(yè)應(yīng)用軟件是某行業(yè)內(nèi)的核心軟件,是中國(guó)軟件產(chǎn)業(yè)崛起的好機(jī)會(huì),但是由于涉及到管理、工程化、行業(yè)知識(shí)、個(gè)人表達(dá)能力等一系列問題[1],決定了行業(yè)應(yīng)用軟件開發(fā)的復(fù)雜性。如何提高軟件開發(fā)的效率、保證軟件產(chǎn)品的正確性,是行業(yè)應(yīng)用軟件開發(fā)過程中不可避免的問題。在行業(yè)應(yīng)用軟件的開發(fā)過程中,自動(dòng)化檢查和測(cè)試工具,能夠起到很好的輔助作用,它不僅能夠提高軟件系統(tǒng)的正確性,而且能夠通過一定程度的代替人工進(jìn)行快速檢查,降低軟件系統(tǒng)的開發(fā)成本[2]。目前存在大量的自動(dòng)化檢查工具 (如 FindBugs[3]、PMD[4])和 自 動(dòng) 化 測(cè) 試 工 具 (如LoadRunner[5]、WinRunner[6]),這些工具提供了非常強(qiáng)大的檢查和測(cè)試功能,但是對(duì)于樣本程序[1]的使用情況檢查等行業(yè)應(yīng)用軟件開發(fā)的個(gè)性化檢查需求,并不能提供很好的支持。因此本文提出了一種面向行業(yè)應(yīng)用的軟件開發(fā)檢查工具,該工具緊密結(jié)合行業(yè)應(yīng)用軟件的個(gè)性檢查要求,針對(duì)檢查的相關(guān)功能進(jìn)行了設(shè)計(jì)和開發(fā)。在現(xiàn)有工具的基礎(chǔ)上,進(jìn)一步改善代碼質(zhì)量,提高系統(tǒng)的正確性,也為開發(fā)、測(cè)試、維護(hù)過程提供便利。

        1 現(xiàn)有工具分析

        目前存在大量的自動(dòng)化檢查和測(cè)試工具,例如在代碼自動(dòng)化檢查方面,PMD和FindBugs能夠根據(jù)配置的規(guī)則,檢查出大量的代碼問題;在軟件的自動(dòng)化測(cè)試方面,Load-Runner和WinRunner等工具提供了非常強(qiáng)大的測(cè)試支持。雖然這些工具解決了大部分常見的測(cè)試和檢查問題,但是對(duì)于以下4個(gè)方面沒有很好的支持,而以下方面是本檢查工具主要關(guān)注的4個(gè)方面:

        (1)樣本程序的使用情況檢查:在行業(yè)應(yīng)用軟件開發(fā)的過程中,樣本程序起著非常重要的作用[7],但是現(xiàn)有的代碼自動(dòng)化檢查工具,只能對(duì)目標(biāo)代碼進(jìn)行全局的常規(guī)問題檢查,無法針對(duì)樣本程序的個(gè)性化特點(diǎn),進(jìn)行有針對(duì)性的個(gè)性規(guī)則檢查。

        (2)數(shù)據(jù)結(jié)構(gòu)與業(yè)務(wù)數(shù)據(jù)正確性檢查:對(duì)于行業(yè)應(yīng)用軟件來說,存儲(chǔ)業(yè)務(wù)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)、以及業(yè)務(wù)數(shù)據(jù)本身,是一個(gè)行業(yè)應(yīng)用軟件系統(tǒng)的基礎(chǔ),是最重要的管理對(duì)象,因此同一應(yīng)用的不同部署之間的數(shù)據(jù)結(jié)構(gòu)一致性、業(yè)務(wù)數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)及其業(yè)務(wù)規(guī)則的吻合程度等方面,也需要通過工具進(jìn)行檢查和驗(yàn)證。

        (3)系統(tǒng)接口的可用性和效率的批量檢查:行業(yè)應(yīng)用軟件系統(tǒng)比較復(fù)雜,系統(tǒng)之間通過接口進(jìn)行交互是經(jīng)常發(fā)生的,在大型的行業(yè)應(yīng)用軟件系統(tǒng)中,這種交互更為復(fù)雜。但是對(duì)于接口是否正常運(yùn)行,接口是否出現(xiàn)性能瓶頸等問題,大部分系統(tǒng)還是采用 “測(cè)試過程發(fā)現(xiàn)問題再進(jìn)行補(bǔ)救”的方式,因此通過工具對(duì)接口進(jìn)行功能正確性和高效性的檢查,對(duì)系統(tǒng)接口進(jìn)行整體的把握,也是非常有必要的。

        (4)日志文件的正確性檢查:日志文件是軟件維護(hù)的“黑匣子”,在維護(hù)過程中承擔(dān)著重要的角色,日志文件的存在和日志內(nèi)容的正確性,對(duì)軟件維護(hù)過程至關(guān)重要。對(duì)于日志文件相關(guān)內(nèi)容的檢查,也是非常必要的。

        針對(duì)4個(gè)方面的檢查,在行業(yè)應(yīng)用軟件系統(tǒng)的開發(fā)過程中是經(jīng)常會(huì)出現(xiàn)的,但是目前沒有很好的工具來進(jìn)行支持。

        2 檢查工具的體系結(jié)構(gòu)

        通過分析行業(yè)應(yīng)用軟件的個(gè)性化檢查要求,以及現(xiàn)有工具的一些相關(guān)功能和不足,本文設(shè)計(jì)研發(fā)了一種面向行業(yè)應(yīng)用的軟件開發(fā)檢查工具,該工具包括以下4個(gè)檢查功能:

        (1)代碼檢查:是指在常規(guī)問題檢查的基礎(chǔ)之上,基于行業(yè)應(yīng)用軟件的領(lǐng)域特點(diǎn),結(jié)合樣本程序,對(duì)目標(biāo)代碼進(jìn)行進(jìn)一步的個(gè)性規(guī)則檢查。

        (2)數(shù)據(jù)結(jié)構(gòu)檢查:包括對(duì)同一個(gè)應(yīng)用系統(tǒng)的不同部署之間、業(yè)務(wù)數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)及其規(guī)則之間、歷史數(shù)據(jù)與新系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)之間的一致性檢查。

        (3)接口檢查:是指在多個(gè)系統(tǒng)或同一系統(tǒng)的不同部署之間通過接口進(jìn)行交互的情況下,針對(duì)眾多接口功能和性能的批量檢查。

        (4)日志檢查:是針對(duì)日志文件、日志相關(guān)的配置文件的存在與內(nèi)容正確性的檢查。

        2.1 體系結(jié)構(gòu)圖

        圖1是針對(duì)以上4個(gè)部分的功能模塊給出的檢查工具的體系結(jié)構(gòu)圖。圖中分別列出了現(xiàn)有的工具的情況,以及本檢查工具提供的檢查功能的模塊。

        圖1 工具的體系結(jié)構(gòu)

        對(duì)此體系結(jié)構(gòu)圖的相關(guān)說明如下:

        (1)現(xiàn)有的一些檢查工具,對(duì)于行業(yè)應(yīng)用的以上4個(gè)特性的檢查,都存在一定的工具缺失,因此本檢查工具相關(guān)功能的提出、實(shí)現(xiàn)和應(yīng)用,具有一定的現(xiàn)實(shí)意義。

        (2)本檢查工具主要由CodeChecker、DBStructChecker、DBDataChecker、InterfaceChecker和LogChecker這5個(gè)功能模塊組成,每一個(gè)模塊都遵循公共的接口約定,便于工具的擴(kuò)展和修改。

        (3)針對(duì)代碼規(guī)范與功能正確性的檢查方面,我們?cè)诂F(xiàn)有的代碼自動(dòng)化檢查工具PMD基礎(chǔ)上進(jìn)行樣本程序檢查相關(guān)的擴(kuò)展,開發(fā)出了基于樣本程序和規(guī)則庫的代碼自動(dòng)化檢查工具CodeChecker,通過PMD、FindBugs和CodeChecker的結(jié)合使用,共同提高代碼的規(guī)范性和代碼功能的正確性。

        2.2 體系結(jié)構(gòu)中的重點(diǎn)功能

        2.2.1 針對(duì)特定領(lǐng)域的編程規(guī)范和代碼質(zhì)量的檢查

        PMD和FindBugs等第三方代碼自動(dòng)化檢查工具,能夠?qū)δ繕?biāo)代碼整體進(jìn)行常規(guī)問題的檢查,但是在基于樣本程序的行業(yè)應(yīng)用軟件系統(tǒng)中,隨著樣本程序的普遍使用,樣本程序在使用過程中出現(xiàn)的代碼問題越來越多,這些問題也需要通過代碼自動(dòng)化檢查工具來進(jìn)行檢查。

        對(duì)于開發(fā)人員來說,樣本程序的主要使用方式為“抄”,在抄的過程中,結(jié)合個(gè)性化的功能需求進(jìn)行個(gè)性化的修改以符合新的功能要求,這就是樣本程序的 “相似性復(fù)用”。但是在樣本程序的相似性復(fù)用過程中,有可能會(huì)因?yàn)殚_發(fā)人員對(duì)領(lǐng)域知識(shí)的不熟悉、對(duì)樣本程序的使用規(guī)則的不了解、以及編程水平的參差不齊等原因,引起樣本程序的使用錯(cuò)誤。因此針對(duì)樣本程序的使用,存在以下兩個(gè)方面的內(nèi)容需要進(jìn)行檢查:

        (1)樣本程序特征點(diǎn)的完整性

        特征點(diǎn)是能夠標(biāo)識(shí)樣本程序的結(jié)構(gòu)特征的關(guān)鍵功能步驟代碼,比如流程控制語句、特殊的公共組件調(diào)用代碼、特殊的業(yè)務(wù)功能調(diào)用代碼、樣本程序結(jié)構(gòu)標(biāo)識(shí)注釋等。

        一般的,特征點(diǎn)是樣本程序的結(jié)構(gòu)特征的標(biāo)識(shí)方式,反映了樣本程序的執(zhí)行流程的組件調(diào)用過程,在樣本程序的相似性復(fù)用過程中,特征點(diǎn)在衍生程序中也必須存在,才能保證衍生程序功能的正確性。特征點(diǎn)的完整性檢查,是現(xiàn)有的第三方工具無法做到的。

        (2)樣本程序的常見問題

        除了樣本程序特征點(diǎn)的缺失引起錯(cuò)誤之外,其他在樣本程序復(fù)用過程中引起的代碼問題,我們就把它稱為樣本程序的常見問題。常見問題是在樣本程序的局部代碼范圍內(nèi)才會(huì)產(chǎn)生的問題,例如在某一段樣本程序內(nèi),某一個(gè)變量必須聲明為類變量[8]。

        由于現(xiàn)有的第三方工具主要針對(duì)目標(biāo)程序進(jìn)行整體的規(guī)則檢查,無法支持針對(duì)樣本程序的局部規(guī)則檢查,因此本工具給出了針對(duì)樣本程序相關(guān)內(nèi)容的檢查工具Code-Checker。該功能首先結(jié)合樣本程序庫和樣本程序的識(shí)別輔助,從目標(biāo)程序中識(shí)別出衍生程序;接著利用基礎(chǔ)檢查規(guī)則,檢查目標(biāo)代碼中的常規(guī)問題;最后,利用樣本程序相關(guān)的個(gè)性化檢查規(guī)則,檢查目標(biāo)程序中的衍生程序的正確性。該功能的檢查流程如圖2所示。

        圖2 代碼檢查流程

        由圖2可以看出,整個(gè)檢查過程主要分為衍生程序的識(shí)別與基于知識(shí)庫的代碼檢查兩部分內(nèi)容。該檢查流程主要由以下部分組成:

        (1)目標(biāo)程序,即需要進(jìn)行代碼檢查的源程序,其代碼中包含了依據(jù)樣本程序進(jìn)行 “相似性復(fù)用”生成的衍生程序,需要對(duì)衍生程序進(jìn)行識(shí)別。

        (2)衍生程序識(shí)別輔助,用于輔助在目標(biāo)程序中識(shí)別出衍生程序的識(shí)別過程,由骨架注釋、詞根表、樣本程序庫、特征點(diǎn)匹配引導(dǎo)等內(nèi)容組成。其中,骨架注釋是一種特殊的用于標(biāo)識(shí)樣本程序結(jié)構(gòu)特征的代碼注釋,用于輔助衍生程序的簡(jiǎn)單快速識(shí)別;詞根表是行業(yè)應(yīng)用軟件中用以表述領(lǐng)域術(shù)語的詞碼表[9],用于在功能單元名稱相似性判斷是提供判斷依據(jù);樣本程序庫是知識(shí)庫的組成部分,為識(shí)別過程提供目標(biāo)和依據(jù);特征點(diǎn)匹配引導(dǎo)是規(guī)則引擎流程引導(dǎo)中關(guān)于特征點(diǎn)的修改前后映射關(guān)系的部分,在以特征點(diǎn)為識(shí)別依據(jù)的識(shí)別方法中需要用到。

        (3)衍生程序識(shí)別工具,它掃描待檢查的目標(biāo)程序,并借助于衍生程序識(shí)別輔助的信息,通過一定的衍生程序識(shí)別策略,識(shí)別出目標(biāo)程序中存在的所有衍生程序。

        (4)衍生程序集是衍生程序識(shí)別工具的識(shí)別結(jié)果,每一個(gè)衍生程序中包含了對(duì)應(yīng)的樣本程序的相關(guān)信息,衍生程序集是樣本程序個(gè)性代碼問題檢查的目標(biāo)和前提。

        (5)知識(shí)庫,是所有可檢查問題的程序和規(guī)則集合,由樣本程序和檢查規(guī)則組成,檢查規(guī)則可以分為基礎(chǔ)檢查規(guī)則、特征點(diǎn)檢查規(guī)則與常見問題檢查規(guī)則。

        (6)規(guī)則檢查執(zhí)行引擎,負(fù)責(zé)檢查規(guī)則的解析執(zhí)行與代碼問題的檢查匯總。它是以目標(biāo)程序、衍生程序、知識(shí)庫等內(nèi)容作為輸入,以代碼中存在的問題作為輸出。

        (7)規(guī)則引擎流程引導(dǎo)。規(guī)則檢查執(zhí)行引擎是所有文件的公共執(zhí)行流程,如果將此流程看成是一種腳本,那么規(guī)則引擎流程引導(dǎo)則是這一腳本的執(zhí)行流程的控制條件集合。它主要用于引導(dǎo)規(guī)則檢查執(zhí)行引擎的執(zhí)行過程,讓工具的使用者能夠個(gè)性化的定制每一個(gè)目標(biāo)程序的檢查流程,特征點(diǎn)匹配引導(dǎo)是規(guī)則引擎流程引導(dǎo)的重要內(nèi)容之一。

        2.2.2 針對(duì)數(shù)據(jù)結(jié)構(gòu)與業(yè)務(wù)數(shù)據(jù)記錄的檢查

        針對(duì)數(shù)據(jù)結(jié)構(gòu)與業(yè)務(wù)數(shù)據(jù)記錄,存在以下兩個(gè)方面的問題或要求:

        (1)一般的,同一行業(yè)應(yīng)用軟件系統(tǒng)通常會(huì)在不同地域、不同級(jí)別的公司或部門進(jìn)行部署,例如:在總公司、多個(gè)分公司進(jìn)行部署,而每一個(gè)部署可能擁有單獨(dú)的數(shù)據(jù)庫進(jìn)行業(yè)務(wù)數(shù)據(jù)存儲(chǔ),由于隸屬于同一軟件系統(tǒng),這些數(shù)據(jù)庫結(jié)構(gòu)必須保持高度的一致性,否則將會(huì)影響系統(tǒng)的正常交互,并增加維護(hù)的難度。

        (2)業(yè)務(wù)數(shù)據(jù)遷移是系統(tǒng)進(jìn)行升級(jí)和維護(hù)時(shí)經(jīng)常要進(jìn)行的操作。在數(shù)據(jù)遷移時(shí),先從原系統(tǒng)的歷史數(shù)據(jù)庫中將歷史業(yè)務(wù)數(shù)據(jù)取出,通過一定的轉(zhuǎn)換規(guī)則,將業(yè)務(wù)數(shù)據(jù)對(duì)應(yīng)到新系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),最終轉(zhuǎn)入新系統(tǒng)的數(shù)據(jù)庫中。一般這個(gè)過程都是通過存儲(chǔ)過程,或者數(shù)據(jù)遷移的程序來完成的。在這個(gè)過程中,如果轉(zhuǎn)入的數(shù)據(jù)不符合新數(shù)據(jù)結(jié)構(gòu)的規(guī)則,那么整個(gè)遷移的過程可能就會(huì)受到嚴(yán)重阻礙。為了減少遷移過程中遇到的阻礙,有必要對(duì)原系統(tǒng)中的業(yè)務(wù)數(shù)據(jù)進(jìn)行數(shù)據(jù)遷移的預(yù)檢查和預(yù)處理。

        因此,針對(duì)數(shù)據(jù)結(jié)構(gòu)與業(yè)務(wù)數(shù)據(jù)記錄的檢查,主要分為以下3個(gè)方面:

        (1)對(duì)于同一個(gè)應(yīng)用系統(tǒng)的不同部署之間,數(shù)據(jù)庫的結(jié)構(gòu)必須保持一致;

        (2)業(yè)務(wù)數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)的規(guī)則之間必須保持一致;

        (3)原系統(tǒng)的歷史數(shù)據(jù)必須與新系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)的規(guī)則保持一致。

        目前尚沒有相關(guān)的工具能夠做到這些方面的檢查,因此本工具給出了這些檢查的相關(guān)功能及其工具DBStruct-Checker和DBDataChecker。

        DBStructChecker用于檢查數(shù)據(jù)結(jié)構(gòu)之間的一致性,DBDataChecker用于檢查業(yè)務(wù)數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)及其規(guī)則之間的一致性。

        DBStructChecker首先建立一個(gè)基準(zhǔn)數(shù)據(jù)庫,通過對(duì)基準(zhǔn)數(shù)據(jù)庫中的數(shù)據(jù)結(jié)構(gòu)特征的獲取,來檢查目標(biāo)數(shù)據(jù)庫中數(shù)據(jù)結(jié)構(gòu)特征的一致性,比如:通過對(duì)數(shù)據(jù)表、數(shù)據(jù)表字段、索引、主外鍵關(guān)聯(lián)[10]等內(nèi)容的一致性檢查,即可對(duì)比出待檢查的數(shù)據(jù)庫結(jié)構(gòu)與標(biāo)準(zhǔn)庫結(jié)構(gòu)之間的差異。DBStructChecker的主要處理流程如圖3所示。

        圖3 數(shù)據(jù)結(jié)構(gòu)檢查流程

        數(shù)據(jù)表名稱、數(shù)據(jù)表字段、索引、主外鍵關(guān)聯(lián)等信息,都能夠從數(shù)據(jù)庫的系統(tǒng)表中進(jìn)行獲取,例如sysindexs表存儲(chǔ)的索引信息、syscolumns表存儲(chǔ)數(shù)據(jù)表的列字段、sysforeignkeys表存儲(chǔ)數(shù)據(jù)表的外部關(guān)鍵字[11]。

        DBDataChecker是對(duì)業(yè)務(wù)數(shù)據(jù)的檢查模塊,功能包括對(duì)數(shù)據(jù)庫中的現(xiàn)有數(shù)據(jù)的檢查以及對(duì)數(shù)據(jù)遷移之前的歷史數(shù)據(jù)的檢查和預(yù)處理。其中,對(duì)現(xiàn)有數(shù)據(jù)的檢查主要是用來找出系統(tǒng)庫中的不符合業(yè)務(wù)規(guī)則的數(shù)據(jù);對(duì)歷史數(shù)據(jù)的檢查和預(yù)處理,主要是為了順利的完成數(shù)據(jù)遷移的過程。

        業(yè)務(wù)數(shù)據(jù)的合法性檢查,需要針對(duì)數(shù)據(jù)表結(jié)構(gòu)制定業(yè)務(wù)數(shù)據(jù)檢查規(guī)則。通過制定一個(gè)數(shù)據(jù)表的所有字段的取值檢查規(guī)則矩陣,并針對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行規(guī)則檢查,來實(shí)現(xiàn)業(yè)務(wù)數(shù)據(jù)的合法性檢查。其具體的處理流程如圖4所示。

        在執(zhí)行歷史數(shù)據(jù)檢查之前,必須配置歷史數(shù)據(jù)表與目標(biāo)數(shù)據(jù)表之間的字段映射關(guān)系,需要注意的是,一個(gè)歷史數(shù)據(jù)表的多個(gè)字段,在新數(shù)據(jù)庫中有可能對(duì)應(yīng)不同的數(shù)據(jù)表,圖4給出的是一種相對(duì)簡(jiǎn)單的情況。

        業(yè)務(wù)數(shù)據(jù)的存儲(chǔ)方式可以多種多樣,數(shù)據(jù)庫、包含字段分隔符的文本文件、Excel文件等,都可以作為業(yè)務(wù)數(shù)據(jù)的存儲(chǔ)方式。

        圖4 業(yè)務(wù)數(shù)據(jù)檢查流程

        通過數(shù)據(jù)結(jié)構(gòu)檢查功能DBStructChecker和業(yè)務(wù)數(shù)據(jù)檢查功能DBDataChecker,針對(duì)數(shù)據(jù)結(jié)構(gòu)和業(yè)務(wù)數(shù)據(jù)進(jìn)行檢查,可以更好的保證數(shù)據(jù)結(jié)構(gòu)的一致性,以及業(yè)務(wù)數(shù)據(jù)與數(shù)據(jù)庫表結(jié)構(gòu)之間的一致性。

        2.2.3 針對(duì)接口的功能、性能的批量檢查與報(bào)表

        通常,一個(gè)企業(yè)的業(yè)務(wù)支撐需要若干個(gè)應(yīng)用系統(tǒng),少則幾個(gè),多則幾十個(gè)。這些系統(tǒng)提供了復(fù)雜的接口功能,并且每一個(gè)系統(tǒng)可能存在眾多的系統(tǒng)部署,此時(shí)需要測(cè)試的功能接口的數(shù)量將會(huì)以較快的速度增長(zhǎng)。而每一個(gè)接口的可用性和高效性,是測(cè)試人員在進(jìn)行與接口相關(guān)的功能測(cè)試之前,必須要驗(yàn)證的一些信息。目前這些信息的獲取,主要通過人工方式來進(jìn)行,工作量比較大,容易出錯(cuò),工作的重復(fù)性較高,并且不能保證測(cè)試結(jié)果的實(shí)時(shí)性。因此需要有相應(yīng)的工具,來支持接口的可用性、效率等信息的快速、自動(dòng)收集。

        針對(duì)這一需求,本工具給出了針對(duì)接口的功能和性能的批量測(cè)試工具InterfaceChecker,該工具通過讀取目標(biāo)接口的配置信息,獲取對(duì)應(yīng)的請(qǐng)求報(bào)文,通過程序自動(dòng)向目標(biāo)接口發(fā)送模擬報(bào)文,接收目標(biāo)接口返回的結(jié)果,并記錄整個(gè)測(cè)試處理的時(shí)間。最后通過對(duì)測(cè)試結(jié)果和處理時(shí)間的報(bào)表,直觀的給出當(dāng)前各個(gè)接口的可用性和效率的情況。

        在工具執(zhí)行接口檢測(cè)之前,需要對(duì)工具進(jìn)行如下內(nèi)容的配置:

        (1)目標(biāo)主機(jī)的信息,包括主機(jī)名稱、主機(jī)地址、用戶名、密碼等;

        (2)待測(cè)試的接口信息,包括接口名稱、接口描述等;

        (3)測(cè)試用的模擬報(bào)文,針對(duì)每一個(gè)接口都需要請(qǐng)求報(bào)文,一般報(bào)文以XML[12]文件的方式編寫。

        針對(duì)接口的功能和性能的檢查流程如圖5所示。

        圖5 接口批量檢查流程

        針對(duì)該流程圖的相關(guān)說明如下:

        (1)在執(zhí)行接口的批量測(cè)試時(shí),需要針對(duì)每一個(gè)服務(wù)器,對(duì)每一個(gè)接口,都構(gòu)造對(duì)應(yīng)的訪問鏈接地址,并且針對(duì)該地址發(fā)送接口對(duì)應(yīng)的請(qǐng)求報(bào)文。

        (2)接口與報(bào)文之間是一一對(duì)應(yīng)的,每一個(gè)待測(cè)試的接口都需要一個(gè)請(qǐng)求的報(bào)文,并在測(cè)試結(jié)束后對(duì)返回的報(bào)文進(jìn)行解析,以便獲知接口的可用性。

        (3)對(duì)于性能方面,在每一個(gè)接口的測(cè)試過程中,計(jì)算報(bào)文發(fā)送與結(jié)果接收之間的時(shí)間差,即可獲取接口的訪問時(shí)間。

        2.2.4 針對(duì)系統(tǒng)日志的正確性檢查

        系統(tǒng)的日志是系統(tǒng)運(yùn)行過程的軌跡記錄,是系統(tǒng)維護(hù)的重要參考。因此日志文件及其內(nèi)容的正確性,對(duì)于系統(tǒng)維護(hù)至關(guān)重要。針對(duì)日志文件是否存在、存放位置是否正確、日志的級(jí)別設(shè)置、日志信息的格式、日志文件的存儲(chǔ)形式、日志信息的內(nèi)容完整性等方面的檢查,能夠提高日志文件及其內(nèi)容的正確性,為維護(hù)過程提供保證。

        針對(duì)以上要求,本工具給出了日志的正確性檢查工具LogChecker,該工具主要檢查行業(yè)應(yīng)用軟件開發(fā)過程中使用的日志記錄工具的相關(guān)配置,以及生成的日志結(jié)果文件內(nèi)容的正確性。

        以J2EE[13]的Web應(yīng)用為例,最常用的日志記錄工具是第三方工具log4j[14],而且一般配置log4j的方式都是編寫log4j.properties文件,并將文件放置在源代碼的根目錄下。針對(duì)log4j的日志文件檢查可以分為以下方面:

        (1)針對(duì)log4j的配置文件log4j.properties的檢查,包括:配置文件log4j.properties在源代碼根目錄下是否存在;配置文件中的日志項(xiàng)配置是否正確性,比如日志級(jí)別必須為INFO,日志輸出的目的地必須為DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件)等;日志的輸出方式必須為PatternLayout,且必須正確的設(shè)置輸出的格式。

        (2)針對(duì)日志文件存放路徑的檢查,包括:是否在log4j.properties文件中設(shè)置了日志的存放路徑;是否在JVM[15]參數(shù)中正確無誤的配置了日志的存放路徑。

        (3)針對(duì)日志log文件及其內(nèi)容的檢查,包括:打印出的日志信息的完整性;通過日志文件的最后修改時(shí)間與當(dāng)前時(shí)間差來確定日志文件的有效性。

        通過以上幾個(gè)方面的檢查,可以保證日志的配置、存放目錄、日志文件等方面的正確性,從而為系統(tǒng)維護(hù)的過程提供參考。

        3 應(yīng)用效果分析

        3.1 應(yīng)用背景

        為實(shí)現(xiàn)對(duì)全國(guó)車險(xiǎn)業(yè)務(wù)的有效管控,車險(xiǎn)信息共享平臺(tái)在保監(jiān)會(huì)和保險(xiǎn)行業(yè)協(xié)會(huì)的管理下成功建設(shè),該平臺(tái)與各財(cái)產(chǎn)保險(xiǎn)公司、公安交通管理部門、稅務(wù)局等單位實(shí)現(xiàn)了實(shí)時(shí)的數(shù)據(jù)互聯(lián),有力的保證了車險(xiǎn)業(yè)務(wù)的合規(guī)開展和科學(xué)實(shí)施。

        本檢查工具在車險(xiǎn)信息共享平臺(tái)項(xiàng)目進(jìn)行了初步的應(yīng)用,應(yīng)用效果非常好。

        3.2 應(yīng)用效果分析

        本檢查工具的應(yīng)用效果主要從以下方面來分析:

        (1)提高了代碼的規(guī)范性和代碼質(zhì)量

        在PMD、FindBugs等第三方工具與樣本程序檢查工具CodeChecker的共同作用下,不僅找出了代碼中存在的一些常規(guī)的問題,而且針對(duì)于系統(tǒng)開發(fā)過程中用到的樣本程序的檢查,進(jìn)一步檢查出了樣本程序使用過程的代碼問題,抽取一個(gè)比較典型的樣本程序進(jìn)行代碼自動(dòng)化檢查,一共檢查出83個(gè)代碼問題,其中50個(gè)基礎(chǔ)問題,20個(gè)特征點(diǎn)的問題,以及13個(gè)常見問題,可以看出,CodeChecker檢查的樣本程序個(gè)性問題的數(shù)量比例為

        樣本程序檢查問題占比

        = (特征點(diǎn)問題數(shù)+常見問題數(shù))/總問題數(shù)

        = (20+13)/83=39.76%

        由此可見,CodeChecker在常規(guī)問題檢查的基礎(chǔ)上,進(jìn)一步檢查了樣本程序相似性復(fù)用產(chǎn)生的個(gè)性代碼問題,此結(jié)論在整體的檢查結(jié)果中也得到了比較好的驗(yàn)證。Code-Checker功能的運(yùn)行截圖如圖6所示。

        (2)數(shù)據(jù)結(jié)構(gòu)檢查工具DBStructChecker保證了數(shù)據(jù)結(jié)構(gòu)之間的一致性,而業(yè)務(wù)數(shù)據(jù)檢查工具DBDataChecker找出了現(xiàn)有系統(tǒng)數(shù)據(jù)庫中的不合法數(shù)據(jù),并為數(shù)據(jù)遷移的數(shù)據(jù)提供了預(yù)處理的方式,減少了數(shù)據(jù)遷移執(zhí)行過程的錯(cuò)誤幾率。

        DBStructChecker的部分運(yùn)行結(jié)果如圖7所示。DBData-Checker的部分運(yùn)行結(jié)果如圖8所示。

        (3)接口檢查工具InterfaceChecker對(duì)接口的功能和性能進(jìn)行批量的測(cè)試,并最后生成報(bào)表供項(xiàng)目管理者和測(cè)試人員進(jìn)行參考。不僅減少了重復(fù)性的人工操作,而且提高了測(cè)試的正確性和實(shí)時(shí)性。

        目前車險(xiǎn)信息共享平臺(tái)系統(tǒng)中共有24個(gè)接口需要測(cè)試,而且現(xiàn)有37個(gè)應(yīng)用部署的接口需要測(cè)試,因此一共有888個(gè)接口需要測(cè)試,如果通過人工的方式進(jìn)行測(cè)試,假設(shè)平均每一個(gè)接口的報(bào)文整理 (假設(shè)接口測(cè)試對(duì)應(yīng)報(bào)文已經(jīng)確定)、測(cè)試執(zhí)行、結(jié)果整理、耗時(shí)統(tǒng)計(jì)、填寫報(bào)表等工作需要1分鐘來進(jìn)行,則一共需要888分鐘 (合14小時(shí))才能測(cè)試完所有的接口。

        現(xiàn)在利用工具對(duì)接口進(jìn)行測(cè)試并最終生成報(bào)表,耗時(shí)小于5分鐘,效率提升非常明顯。

        (4)日志檢查工具LogChecker通過檢查日志文件、日志配置文件、JVM參數(shù)中對(duì)日志文件存放路徑的配置等方面,保證了日志內(nèi)容配置的正確性和有效性,保證了維護(hù)工作中日志內(nèi)容的正確和可靠。

        4 結(jié)束語

        在行業(yè)應(yīng)用軟件開發(fā)的過程中,現(xiàn)有的通用測(cè)試和檢查工具提供了非常好的輔助,但是有時(shí)候也必須針對(duì)現(xiàn)有系統(tǒng)的個(gè)性化檢查要求,自主開發(fā)相應(yīng)的工具來支持這些個(gè)性化的檢查要求。

        本文結(jié)合目前行業(yè)應(yīng)用軟件系統(tǒng)開發(fā)過程中通用工具的不足,給出了一種面向行業(yè)應(yīng)用的軟件開發(fā)檢查工具,該工具通過針對(duì)特定領(lǐng)域的編程規(guī)范和代碼質(zhì)量的檢查,提高了系統(tǒng)的代碼規(guī)范性和正確性;通過針對(duì)數(shù)據(jù)結(jié)構(gòu)與業(yè)務(wù)數(shù)據(jù)記錄的檢查,保證了數(shù)據(jù)結(jié)構(gòu)和業(yè)務(wù)數(shù)據(jù)的一致性;通過針對(duì)接口的功能和性能的批量檢查,提高了接口測(cè)試的效率和實(shí)時(shí)性;通過針對(duì)系統(tǒng)日志的正確性檢查,保證了日志文件的正確性,為維護(hù)提供重要依據(jù)。通過以上功能的共同作用,提高系統(tǒng)的代碼規(guī)范性和功能正確性,也為開發(fā)、測(cè)試、維護(hù)過程提供了便利。

        在下一步工作過程中,要逐步提高4個(gè)功能模塊的通用性,使這些功能能夠更好的應(yīng)用于其他行業(yè)應(yīng)用軟件系統(tǒng)的檢查過程;其次要繼續(xù)發(fā)掘行業(yè)應(yīng)用軟件系統(tǒng)的個(gè)性檢查需求,研發(fā)更多實(shí)用的檢查工具,進(jìn)一步降低軟件開發(fā)的成本支出,提高軟件系統(tǒng)的質(zhì)量。

        [1]ZUO Chun.Industry software developing method based-on imitation [J].Computer World,2006,27 (45):1-3 (in Chinese).[左春.行業(yè)軟件開發(fā)要靠 “抄” [J].計(jì)算機(jī)世界,2006,27 (45):1-3.]

        [2]JIN Hu.Study on automatic software testing techniques and methods[D].Chengdou:Sichuan University,2006 (in Chinese).[金虎.自動(dòng)化軟件測(cè)試技術(shù)研究 [D].成都:四川大學(xué),2006.]

        [3]FindBugs [EB/OL].http://findbugs.sourceforge.net/,2011.[4]PMD [EB/OL].http://pmd.sourceforge.net/,2011.

        [5]YU Yong.Software performance test and practice in LoadRunner[M].Beijing:Posts and Telecom Press,2010 (in Chinese).[于涌.精通軟件性能測(cè)試與LoadRunner實(shí)戰(zhàn) [M].北京:人民郵電出版社,2010.]

        [6]WinRunner [EB/OL].http://en.wikipedia.org/wiki/HP _WinRunner,2011.

        [7]YUAN Weimin,ZUO Chun.Domain development platform based on typical program [J].Computer Engineering,2010,31 (18):3979-3982 (in Chinese).[袁偉民,左春.基于樣本程序的領(lǐng)域開發(fā)平臺(tái)研究與實(shí)踐 [J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31 (18):3979-3982.]

        [8]Bruce Eckel.Thinking in Java [M].4th ed.Beijing:China Machine Press,2007 (in Chinese).[Bruce Eckel.Java編程思想 [M].4版.北京:機(jī)械工業(yè)出版社,2007.]

        [9]ZUO Chun.Etyma sheet and data structure in industry software[J].Computer World,2007,28 (44):1-3 (in Chinese).[左春.行業(yè)應(yīng)用軟件中的詞根表與庫結(jié)構(gòu) [J].計(jì)算機(jī)世界,2007,28 (44):1-3.]

        [10]Abraham S,Henry F K,Sudarshan S.Database system concept[M].YANG Dongqing,MA Xiuli,TANG Shiwei,transl.5th ed.Beijing:China Machine Press,2006 (in Chinese).[Abraham S,Henry F K,Sudarshan S.數(shù)據(jù)庫系統(tǒng)概念 [M].楊冬青,馬秀莉,唐世渭,譯.5版.北京:機(jī)械工業(yè)出版社,2006.]

        [11]ZHAO Jie.Administrator's guide to SQL server 2005 [M].Beijing:Electronic Industry Press,2008 (in Chinese). [趙杰.SQL Server 2005管理員大全 [M].北京:電子工業(yè)出版社,2008.]

        [12]Extensible markup language(XML)[EB/OL].http://www.w3.org/XML/,2011.

        [13]YU Haodong.J2EE application framework design and project development[M].Beijing:Tsinghua University Press,2008(in Chinese).[余浩東.J2EE應(yīng)用框架設(shè)計(jì)與項(xiàng)目開發(fā)[M].北京:清華大學(xué)出版社,2008.]

        [14]Log4J[EB/OL].http://logging.apache.org/log4j/1.2/,2011.

        [15]ZHOU Zhiming.Understanding Java virtue machine:JVM senior feature and best practice[M].Beijing:China Machine Press,2011(in Chinese).[周志明.深入理解Java虛擬機(jī):JVM高級(jí)特性與最佳實(shí)踐 [M].北京:機(jī)械工業(yè)出版社,2011.]

        猜你喜歡
        正確性數(shù)據(jù)結(jié)構(gòu)日志
        一名老黨員的工作日志
        扶貧日志
        心聲歌刊(2020年4期)2020-09-07 06:37:14
        一種基于系統(tǒng)穩(wěn)定性和正確性的定位導(dǎo)航方法研究
        游學(xué)日志
        淺談如何提高水質(zhì)檢測(cè)結(jié)果準(zhǔn)確性
        “翻轉(zhuǎn)課堂”教學(xué)模式的探討——以《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)為例
        高職高專數(shù)據(jù)結(jié)構(gòu)教學(xué)改革探討
        雙口RAM讀寫正確性自動(dòng)測(cè)試的有限狀態(tài)機(jī)控制器設(shè)計(jì)方法
        TRIZ理論在“數(shù)據(jù)結(jié)構(gòu)”多媒體教學(xué)中的應(yīng)用
        《數(shù)據(jù)結(jié)構(gòu)》教學(xué)方法創(chuàng)新探討
        河南科技(2014年5期)2014-02-27 14:08:57
        美女一区二区三区在线视频| 91精选视频在线观看| 一区二区视频观看在线| 国产午夜视频高清在线观看| 亚洲中文字幕日产无码| 久久夜色精品国产欧美乱| 97色偷偷色噜噜狠狠爱网站97| 日韩精品高清不卡一区二区三区| 成人国产一区二区三区| 午夜内射中出视频| 亚洲色大成在线观看| 亚洲另类国产精品中文字幕| 丁香五月缴情在线| 亚洲av无码精品色午夜| 国产乱人伦真实精品视频| 亚洲天堂一区二区三区| 免费人成在线观看| 亚洲中文字幕无码专区| 日本中文字幕一区二区高清在线| 久久精品国产亚洲av久五月天| 18禁黄网站禁片免费观看女女| 欧美视频二区欧美影视| 国产高清精品在线二区| 亚洲综合日韩精品一区二区| 天天天天躁天天爱天天碰| 亚洲欧美日韩国产综合久| 视频一区精品中文字幕| 成在线人av免费无码高潮喷水| 熟妇人妻中文字幕无码老熟妇| 国产一区二区三区亚洲精品| 国语对白福利在线观看| 人人澡人人澡人人看添av| 无码一区二区三区网站| 亚洲精品中字在线观看| 女人被弄到高潮的免费视频| 精品十八禁免费观看| 中文字幕专区一区二区| 久久国产成人精品国产成人亚洲 | 变态另类手机版av天堂看网| 边啃奶头边躁狠狠躁| 国产精品入口蜜桃人妻|