freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)驅(qū)動的格式化信息自動校驗(yàn)工具(doc畢業(yè)設(shè)計論文)(編輯修改稿)

2024-07-23 15:22 本頁面
 

【文章內(nèi)容簡介】 身就是一個XML文檔,其基于標(biāo)簽的語法比DTD中的特殊字符要清楚多了。所以XML Schema具有強(qiáng)制文檔內(nèi)容和結(jié)構(gòu)的能力,它是XML世界中的一種不但重要而且強(qiáng)大的新標(biāo)準(zhǔn)[3]。 DOMDocument Object Model(文檔對象模型)簡稱為DOM,是對Web文檔進(jìn)行應(yīng)用開發(fā)、編程的應(yīng)用程序接口(APT)。作為W3C公布的一種跨平臺、與語言無關(guān)的接口規(guī)范,DOM提供了在不同環(huán)境和應(yīng)用中的標(biāo)準(zhǔn)程序接口,可以用任何語言實(shí)現(xiàn)。DOM采用對象模型和一系列的接口來描述XML文檔的內(nèi)容和結(jié)構(gòu),即利用對象把文檔模型化[8]。這種對象模型實(shí)現(xiàn)的基本功能包括:. 描述文檔表示和操作的接口。. 接口的行為和屬性。. 接口之間的關(guān)系以及互操作。DOM對結(jié)構(gòu)化的XML文檔進(jìn)行解析,文檔中的指令、元素、實(shí)體、屬性等所有內(nèi)容個體都用對象模型表示,整個文檔的邏輯結(jié)構(gòu)類似一棵樹,生成的對象模型就是樹的節(jié)點(diǎn),對象同時包含了方法和屬性。其后對文檔的所有操作都是在對象樹上的進(jìn)行。利用DOM,開發(fā)人員可以動態(tài)地創(chuàng)建XML文檔,遍歷結(jié)構(gòu),添加、修改、刪除內(nèi)容等等。其面向?qū)ο蟮奶匦?,使人們在處理XML解析相關(guān)的事務(wù)時節(jié)省大量精力,是一種符合代碼重用思想的強(qiáng)有力編程工具。 XSLXSL也就是可擴(kuò)展樣式表語言(Extensible Stylesheet Language)。最開始,W3C準(zhǔn)備創(chuàng)建一種樣式表語言,稱為可擴(kuò)展樣式表語言(XSL),很快人們發(fā)現(xiàn),在XML文檔上操作的樣式表語言需要兩類主要的功能:也就是與表示和附加信息相關(guān)的功能,將數(shù)據(jù)轉(zhuǎn)換為特定類型的結(jié)果樹[2]。后來,XSL語言中用于表示(或者格式化方面)的部分被看作是格式化對象的XSL,也就是XSLT。 XpathXpath是另一種W3C標(biāo)準(zhǔn),在XSLT樣式表中使用Xpath表達(dá)式來使得源XML文檔中的模板與對象(比如元素、屬性、處理指令、注釋和文本串)相關(guān)聯(lián)。當(dāng)源樹中的對象與特定的Xpath表達(dá)式匹配的時候,與這個對象相關(guān)聯(lián)的模板將被實(shí)例化,并填入源文檔中的數(shù)據(jù),然后編寫輸出文檔。Xpath表達(dá)式也可以表示數(shù)值和布爾運(yùn)算符等數(shù)據(jù)類型[9]。所以,XDath也可以用來執(zhí)行簡單的計算。 本章小結(jié)這一章主要對數(shù)據(jù)驅(qū)動的信息自動化框架的架構(gòu)進(jìn)行分析和設(shè)計。此外還介紹了為實(shí)現(xiàn)該架構(gòu)所用到的主要技術(shù)。比如XML,LCS算法等。第4章  Smart Checker的實(shí)現(xiàn) 總體需求分析 Compliance的介紹Compliance一個針對美國證券交易規(guī)則開發(fā)的交易匯報系統(tǒng)。按照美國證券交易規(guī)則的規(guī)定,券商所做的每一筆場外交易都必須在一定的時間內(nèi)匯報給證券交易所,托管銀行和結(jié)算公司等金融機(jī)構(gòu)或監(jiān)管機(jī)構(gòu)。Compliance系統(tǒng)由OATS,TAGS和ACT三個子系統(tǒng)組成,他們分別給NASD的OAT,TAGS和ACT監(jiān)管系統(tǒng)進(jìn)行報告。它們有各自的需求規(guī)定,具體的匯報規(guī)則都可以在納斯達(dá)克的官方網(wǎng)站上找到。 測試任務(wù)說明當(dāng)前項(xiàng)目組的任務(wù)是對pliance各個子系統(tǒng)的日志文件進(jìn)行校驗(yàn)。在以往的手工測試中,測試員需要對日志文件中的每條記錄根據(jù)測試用例和測試數(shù)據(jù)進(jìn)行檢驗(yàn)。但是,由于pliance系統(tǒng)的日志文件的數(shù)據(jù)量過分龐大。就拿其中的TAGS系統(tǒng)的操作日志文件為例,該日志文件的每條記錄都是對實(shí)際股票交易信息的記錄,每條記錄包含47個域。在QA環(huán)境下一個日志文件記錄得的是測試員所有的測試步驟即模擬交易操作。一共是64個測試用例大約將近500條的記錄。如果同時有多個測試員在Compliance系統(tǒng)的前端進(jìn)行輸入訂單的操作,那么當(dāng)天的日志文件記錄將會達(dá)到上千條。如果在UAT環(huán)境下,那么每天的日志記錄將會達(dá)到上萬條。此外Compliance系統(tǒng)包含多個子系統(tǒng),各個子系統(tǒng)的日志格式差別很大。因此需要開發(fā)一個日志文件的校驗(yàn)工具來對pliance系統(tǒng)的各種日志文件進(jìn)行統(tǒng)一的自動化校驗(yàn)。當(dāng)前的目標(biāo)是開發(fā)出一個對具有一定信息格式的數(shù)據(jù)文件進(jìn)行數(shù)據(jù)校驗(yàn)的自動化測試工具。該工具能夠適用于絕大多數(shù)的數(shù)據(jù)文件校驗(yàn)工作。所以說只要用戶只要根據(jù)實(shí)際的項(xiàng)目需求提供一份簡單的信息格式說明文件,對某些特殊域的校驗(yàn)方法也只要編寫簡單的校驗(yàn)類即可實(shí)現(xiàn)自動化的數(shù)據(jù)校驗(yàn)。該工具參考現(xiàn)有的軟件測試自動化框架模型的架構(gòu),針對項(xiàng)目應(yīng)用的實(shí)際情況進(jìn)行開發(fā)。 功能性需求smart checker必須對被校驗(yàn)的信息文件的記錄進(jìn)行檢驗(yàn),在檢驗(yàn)的過程中要對記錄的每一個域的值,格式,長度都按照配置文件的定義進(jìn)行驗(yàn)證,一旦發(fā)現(xiàn)不符合規(guī)范就要向用戶報告。smart checker對于每次的測試任務(wù)都要給出兩份測試報告。其中一份是對測試結(jié)果的概括性記錄。即說明哪個測試用例的結(jié)果是正確的,哪個是錯誤的。這份概要性的記錄可以不生成文檔直接在UI上顯示。另外一份測試報告則是對每一個測試用例的測試步驟的詳細(xì)記錄,所有校驗(yàn)過程的中間數(shù)據(jù)都將被記錄在里面,這樣使得用戶可以快速深入地定位問題產(chǎn)生的原因。smart checker需要給用戶提供一個簡單方便的操作界面。 性能需求由于在實(shí)際的Compliance環(huán)境中,需要校驗(yàn)的數(shù)據(jù)文件通常比較大,通常在24M之間。因此對數(shù)據(jù)文件的校驗(yàn)必須有一定的機(jī)制保證校驗(yàn)的效率。Smart Checker在校驗(yàn)文件的過程中應(yīng)盡量少地占用系統(tǒng)資源,原則上不超過6M。 移植性和擴(kuò)展性需求Smart Checker 至少能在window 和Linux兩大操作系統(tǒng)上運(yùn)行。目前主要是針對Compliance的各個子系統(tǒng),包括TAGS,ACT,OATS。但經(jīng)過對這3個子系統(tǒng)的日志文件的格式分析,可以發(fā)現(xiàn),這三個系統(tǒng)所包含的格式幾乎可以涵蓋一般的金融業(yè)務(wù)的信息日志的記錄格式了。 輸入和輸出用戶在使用Smart Checker時需要提供一份基準(zhǔn)文件(baseline file)作為校驗(yàn)的標(biāo)準(zhǔn)值,另外提供一份需要檢驗(yàn)的目標(biāo)文件(Target file)。由于在金融系統(tǒng)中每次交易的訂單號是不固定的,所以必須額外的提供兩份訂單號文件(BaseLine_OID file 和 Target_OID file)分別用于標(biāo)識在基準(zhǔn)文件和目標(biāo)文件中各個測試用例所對應(yīng)的訂單號,從而能夠?qū)烧叩臄?shù)據(jù)記錄進(jìn)行匹配實(shí)現(xiàn)數(shù)據(jù)的校驗(yàn)。在用戶界面上,也額外地提供用戶直接從系統(tǒng)服務(wù)器和數(shù)據(jù)庫中直接獲取數(shù)據(jù)的功能。 數(shù)據(jù)映射關(guān)系針對Compliance系統(tǒng)的日志特點(diǎn),我們將日志記錄的域分為固定域和非固定域。固定域的基準(zhǔn)值從用戶提供的基準(zhǔn)文件中獲得,非固定域的基準(zhǔn)值從數(shù)據(jù)庫中查詢獲得。 系統(tǒng)架構(gòu)設(shè)計由于gpliance系統(tǒng)的日志文件格式都是以一個個代表不同含義的數(shù)據(jù)域組成的,因此首先對這些域的特點(diǎn)進(jìn)行分析??梢园l(fā)現(xiàn)這些域主要分為兩類:一類我們稱之為固定(fixed)的域。即這些域的值是可以通過測試用例來確定的。我們可以根據(jù)測試用例文檔中說明的測試步驟按照業(yè)務(wù)邏輯來直接確定這些域的值,比如:股票名稱(Symbol),委托數(shù)量(Original_Quantity),委托價格(Price)等。只要測試用例不變,那每次執(zhí)行測試用例所得到的日志記錄中這些域的值都是固定不變。另一類我們稱之為變動的域。即這些域的值是不可以通過測試用例來確定的。如委托時間(Order Time),交易時間(Action Time)等。這些域的值在每次回歸測試的時候都會發(fā)生改變。對于這兩種不同類型的域,必須采用兩種不同的方法來采集測試基準(zhǔn)數(shù)據(jù)(Base Line Data)。對于那些不變的域,可以從原有的歷史測試數(shù)據(jù)中提取基準(zhǔn)數(shù)據(jù)。為了方便起見。例如針對TAGS測試,我們直接選取一份包含所有TAG64個測試用例信息的日志文件作為基準(zhǔn)數(shù)據(jù)的來源。在對這份日志文件進(jìn)行簡單的手工處理之后就直接作為用戶輸入的基準(zhǔn)文件(BaseLine file)。當(dāng)然前提是我們已經(jīng)對該文件進(jìn)行了手工校驗(yàn),已經(jīng)充分保證了該文件的正確性。手工校驗(yàn)這么一份文件的工作量是巨大的,如果只進(jìn)行一次的校驗(yàn),結(jié)果是得不償失的。這也說明了最適合自動化測試的項(xiàng)目都是那些需要進(jìn)行多次回歸測試的項(xiàng)目。對于那些變動的域,唯一的辦法就是查詢系統(tǒng)的數(shù)據(jù)庫來獲得正確的基準(zhǔn)值。根據(jù)系統(tǒng)需求和上述分析,我們可以對數(shù)據(jù)驅(qū)動的信息校驗(yàn)工具的各個模塊進(jìn)行進(jìn)一步的功能劃分,從而構(gòu)建出一個詳細(xì)的系統(tǒng)架構(gòu)圖。下圖中不僅描述了各個模塊之間的關(guān)系還包括了模塊與數(shù)據(jù)文件之間的關(guān)系。由于UI界面與報告和日志模塊功能點(diǎn)比較明顯,篇幅所限不在圖中描述。圖42. Smart Checker系統(tǒng)架構(gòu)圖 系統(tǒng)模塊設(shè)計 數(shù)據(jù)引擎(Data Engine)圖43. Data engine 類圖DataBaseAccess 類是一個抽象類,它定義了從數(shù)據(jù)庫獲得特定域信息的公共接口。TAGS_DataBaseAccess,QATS_DataBaseAccess,ACT_DataBaseAccess都是DataBaseAccess的子類,它們分別是針對TAGS,OATS和ACT系統(tǒng)數(shù)據(jù)庫來實(shí)現(xiàn)的。因?yàn)檫@三者數(shù)據(jù)庫表結(jié)構(gòu)的差異很大,所以無法定義一個通用的查詢過程來實(shí)現(xiàn)對三個數(shù)據(jù)庫的查詢。ServerAccess類提供了使用ssh協(xié)議從服務(wù)器上下載日志文件的功能。該類是對開源開發(fā)包的封裝。DataEngineFac類是一個工廠化抽象類,定義了創(chuàng)建不同DataBaseAccess類的創(chuàng)建過程。它給用戶提供提供了統(tǒng)一的接口來構(gòu)建特定的DataBaseAccess類。為日后的功能上的擴(kuò)充提供了一個統(tǒng)一靈活的接口。 數(shù)據(jù)管理器(Data Manager)數(shù)據(jù)管理器(Data Manager)模塊主要包括三個包:fieldConfig Package,testCaseGenerator package和indexGenerator package。fieldConfig Package中主要實(shí)現(xiàn)了讀取裝載用戶配置信息和相應(yīng)功能模塊的功能。它內(nèi)部的類結(jié)構(gòu)層次圖如下:圖44. Field config package類圖FieldLoaderManager類主要負(fù)責(zé)對用戶定義的格式信息的解析和裝載。在裝載過程完成以后,它將產(chǎn)生一個FieldCfgInfo類,該類記錄了多有用戶定義的格式信息。實(shí)際上該類是用戶定義的格式信息在SmartChecker中的內(nèi)部數(shù)據(jù)表示,數(shù)據(jù)校驗(yàn)引擎就是直接從該類種獲得格式信息的。一個FieldCfgInfo 類包含多個Format類。Format類是用戶定義的各種格式的表示,一個Format類代表一種具體的格式。一個Format類中包含多個FieldInfo類。FieldInfo類記錄了在一種格式中每個域所表示的信息和相應(yīng)的格式定義,如:是何種數(shù)據(jù)類型,長度多少,在記錄中的位置是第幾位,以何種形式表示,是否是固定不變的,是否需要校驗(yàn)等。此外一個Format類還包含一個SpliterFactory。SpliterFactory是一個抽象的工廠化類。它定義了產(chǎn)生StringSpliter的接口。StringSpliter類也是一個抽象類,定義的是如何對一條記錄進(jìn)行分解的方法,它將一條記錄按域分成一個數(shù)組。比如部分的TAG,Oats日志格式是用逗號或分號來作為域和域之間的分隔符的,那么針對這種格式就需要有一個特定的格式分解類SymbolSpliter。而其他的格式則使用確定每一個域在一條記錄中的起始和終結(jié)位置來解析,那么針對這樣的格式需要另一個解析類LengthSpliter。圖45. Field config package類圖由于每一個域的數(shù)據(jù)類型和格式定義上的差別,我們需要針對不同的數(shù)據(jù)類型和開發(fā)出不同的數(shù)據(jù)校驗(yàn)工具類。比如針對數(shù)值型的域,使用NumericMethod類來校驗(yàn),針對字符型的域使用CharMethod類來校驗(yàn),針對日期型的域,使用DateMethod來校驗(yàn)(該類沒有在類圖中體現(xiàn))。用戶也可以根據(jù)具體的需要編寫自己的校驗(yàn)類,然后在系統(tǒng)配置文件中進(jìn)行配置,由SmartChecker在執(zhí)行校驗(yàn)任務(wù)時動態(tài)裝載和使用。CKMethodCfgLoaderManager類負(fù)責(zé)對這些校驗(yàn)方法類的裝載過程進(jìn)行管理和監(jiān)控。在裝載完成后,將會產(chǎn)生一個CheckMethodBox類。CheckMethodBox類提供了一個數(shù)據(jù)集合的功能。用戶配置的校驗(yàn)方法類在被實(shí)例化裝載進(jìn)內(nèi)存以后都被統(tǒng)一的存放在CheckMethodBox中。當(dāng)校驗(yàn)引擎需要對某一特定的數(shù)據(jù)類型進(jìn)行校驗(yàn)的時候,會從中獲取相應(yīng)的校驗(yàn)方法類。從某種程度上說,CheckMethodBox類扮演的是一個系統(tǒng)工具箱的角色。testCaseGenerator package的主要作用是根據(jù)用戶提供的基準(zhǔn)文件(baseline file)基準(zhǔn)訂單號文件(baseline Order ID file)目標(biāo)訂單號文件(target Order ID file)以及從數(shù)據(jù)庫中查詢的得到的域的信息來構(gòu)建一個內(nèi)部數(shù)據(jù)表示。具體的類層次結(jié)構(gòu)圖如下:圖46 testCaseGenerator package類圖FileInfLoader類就是實(shí)現(xiàn)上述將多個外部基準(zhǔn)數(shù)據(jù)文件轉(zhuǎn)化成統(tǒng)一的內(nèi)部數(shù)據(jù)表示的功能。在轉(zhuǎn)化之前,系統(tǒng)首先裝載FieldConfigLoader包中的FieldCfgInfo類,并且由IndexGenerator模塊對用戶提供的基準(zhǔn)文件創(chuàng)建一個數(shù)據(jù)索引以提高解析和轉(zhuǎn)化的效率。注意根據(jù)系統(tǒng)需求定義,用戶提供的基準(zhǔn)文件實(shí)際上就是一份日志文件,只不過該日志文件已經(jīng)經(jīng)過用戶的手工校驗(yàn),可以保證數(shù)據(jù)的正確性而已。所以基準(zhǔn)文件的大小要大于或等于實(shí)際需要校驗(yàn)的日志文件。印此對該文件建立索引還是有必要的。此外,由于每次執(zhí)行測試用例所得到的訂單號都是會改變的,所以用戶需要額外地提供一個基準(zhǔn)訂單號文件和對應(yīng)的目標(biāo)訂單號文件來確保校驗(yàn)的正常執(zhí)行。這兩個文件中的信息將被FileInfLoader轉(zhuǎn)化為TCOrderID類作為數(shù)據(jù)的內(nèi)部表示。TCOrderID類包含多個OIDList類。這主要是考慮到一個測試用例可能會包含多個訂單號的情況。indexGenerator package中的類實(shí)現(xiàn)了對一份特定格式的文檔創(chuàng)建索引的功能。具體的類層次結(jié)構(gòu)如下:圖47 indexGenerator package類圖ReadRandom類提供了隨機(jī)讀取文件的功能。由于java對文件的讀寫主要是采用流模式對文件的隨機(jī)緩沖讀寫功能沒有直接的借口支持。所以基于提高IO性能的考慮需要自己開發(fā)一個隨機(jī)緩沖讀寫文件的類。IndexGenerat
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1