【正文】
數(shù)據(jù)驅(qū)動的格式化信息自動校驗工具摘要軟件測試是軟件生命周期中的一個重要階段,是保證軟件質(zhì)量的關(guān)鍵因素之一。軟件自動化測試技術(shù)可以減少軟件測試的開銷,提高測試的效率和準(zhǔn)確率。軟件測試自動化可分為:測試腳本、測試數(shù)據(jù)的自動化生成,測試用例的自動化執(zhí)行,測試結(jié)果的自動化采集和分析三個方面?,F(xiàn)有的自動化測試工具主要偏重于實現(xiàn)前兩個方面的功能。本文提出一個基于數(shù)據(jù)驅(qū)動的文件信息自動化校驗框架。并在此框架基礎(chǔ)上實現(xiàn)了一個符合Compliance項目實際的文本校驗工具——Smart Checker。本文首先對現(xiàn)有的軟件測試自動化框架的特點(diǎn)進(jìn)行分析和比較。然后對提出的基于數(shù)據(jù)驅(qū)動的文件信息自動化校驗框架進(jìn)行闡述。其中會對使用到的XML技術(shù)和LCS算法進(jìn)行研究。最后在框架的基礎(chǔ)上進(jìn)一步對自動化數(shù)據(jù)校驗工具——Smart Checker的實現(xiàn)進(jìn)行闡述。關(guān)鍵詞 軟件測試 軟件測試自動化框架 XML LCSAbstractSoftware testing is an important stage of software life cycle and a key factor which affect the quality of software. The technology of software test automation can greatly reduce the testing cost and improve efficiency and accurate of software testing. Software testing automation contains three aspect of conception——test data generate automation, test case execute automation and test result data collect and analyze automation. Most existing automated testing tools mainly focused on achieving the first two aspects. We design a fame work used to verify text data automatically. And develop a tool called Smart Checker based on this frame work to full fill the requirement of Compliance project. In this paper, we pare features of existing test automation frameworks first. Then specify the architecture of Datadriven formatting automatic calibration frame work. XML technology and LCS algorism which applied in the framework will be introduced. At last,we do a further specification for the design and implementation of data verify automation tool ——Smart Checker.Keywords software test soft ware test automation framework XML LCS 目錄摘要 IAbstract II第1章 緒論 1 課題背景和意義 1 論文所做的工作 2第2章 軟件自動化測試框架的介紹 3 自動化測試框架概述 3 模塊化測試框架 3 測試庫框架 4 數(shù)據(jù)驅(qū)動測試框架 4 關(guān)鍵字驅(qū)動或標(biāo)驅(qū)動測試框架 4 混合測試自動化框架 5 本章小結(jié) 5第3章 數(shù)據(jù)驅(qū)動的信息自動化校驗框架的設(shè)計和應(yīng)用技術(shù)的研究 7 總體架構(gòu)分析和設(shè)計 7 系統(tǒng)工作流程 9 校驗過程 10 線性循環(huán)校驗 10 LCS算法 11 XML技術(shù)的研究和應(yīng)用 14 XML簡介 14 Schema和DTD 14 DOM 15 XSL 15 Xpath 15 本章小結(jié) 16第4章 Smart Checker的實現(xiàn) 17 總體需求分析 17 Compliance的介紹 17 測試任務(wù)說明 17 功能性需求 18 性能需求 18 移植性和擴(kuò)展性需求 18 輸入和輸出 18 數(shù)據(jù)映射關(guān)系 19 系統(tǒng)架構(gòu)設(shè)計 19 系統(tǒng)模塊設(shè)計 21 數(shù)據(jù)引擎(Data Engine) 21 數(shù)據(jù)管理器(Data Manager) 23 校驗引擎(Checking Engine) 28 報告、日志生成模塊(Report amp。 Log) 29 系統(tǒng)數(shù)據(jù)文件說明 30 用戶輸入文件 30 系統(tǒng)配置文件 31 內(nèi)部數(shù)據(jù)文件 32 系統(tǒng)輸出文件 33 使用說明 33 本章小結(jié) 37第5章 總結(jié)和展望 38 總結(jié) 38 問題和擴(kuò)展 38參考文獻(xiàn) 39致謝 40第1章 緒論 課題背景和意義軟件測試是在軟件開發(fā)周期中必不可少的、最耗時的一部分。從測試手段來看,軟件測試分為手工測試和自動化測試。自動化測試可以減少或消除一些手工測試中的重復(fù)和煩瑣, 節(jié)約測試所必需的時間和提高測試的一致性和可重復(fù)性, 提高產(chǎn)品質(zhì)量并盡可能在軟件生命周期的早期發(fā)現(xiàn)缺陷。正確、合理的實施測試自動化,能夠快速、徹底的對軟件進(jìn)行測試, 從而提高軟件質(zhì)量, 節(jié)省經(jīng)費(fèi), 縮短產(chǎn)品發(fā)布周期。但并非任何測試自動化都可以起到預(yù)期效果, 只有好的自動化測試體系才能揚(yáng)長避短, 在質(zhì)量保障方面有所作為。 否則, 測試自動化可能會由于其建立和維護(hù)等方面的負(fù)擔(dān)造成延誤工期、成本浪費(fèi), 甚至最終被完全放棄[4]。從本質(zhì)上看,軟件測試自動化就是將軟件測試的手動測試用自動化測試工具代替。所以說軟件測試自動化跟軟件測試一樣,也有它自己的生命周期。有人就提出和公布了自動化測試生命周期的方法學(xué)(Automated Test Lifecycle Methodology, ATLM )— 這是一種調(diào)整的結(jié)構(gòu)化方法學(xué),能確保自動化測試的成功實現(xiàn)[4]。它定義了一種四階段方法學(xué);自動化測試的決定;自動化測試的介紹;測試計劃、設(shè)計和開發(fā);自動化測試的執(zhí)行和管理軟件測試自動化還有一個自動化程度的問題,畢竟,由于各方面因素的限制,完全的軟件測試自動化是不可能的。這是由測試過程和測試工具的本質(zhì)特點(diǎn)所決定的。測試工具和測試過程是不相同的。工具是用于促進(jìn)測試過程的,工具能被用于實現(xiàn)一個過程并執(zhí)行測試過程的各種規(guī)范。在很多情況下,工具自帶的內(nèi)建程序可以被理解為過程。但是它往往是不完整的,不能正確反映過程。最好的軟件測試工具是能夠?qū)⑺蜏y試需求達(dá)成一致,而且他們提供高度可定義的工作流程和跟蹤報告能力,但這是不可能的,要達(dá)到這樣的要求無異于再開發(fā)一個應(yīng)用程序。自動化回歸測試貫穿整個開發(fā)過程的單元測試、集成測試和系統(tǒng)測試,并使用最大和最小發(fā)布版本的系統(tǒng)產(chǎn)品分別測試。所有領(lǐng)域的自動化水平應(yīng)該達(dá)到這樣一種程度,它能夠根據(jù)時間和成本適應(yīng)用戶的標(biāo)準(zhǔn)。實現(xiàn)的自動化程度越高,測試過程就越來越有效。同樣,軟件自動測試并不是萬能的,并不能解決所有的問題,甚至自動化測試本身還存在這個方面的問題。因此,對于軟件測試自動化進(jìn)行研究和探索是非常有價值的。Compliance系統(tǒng)是公司遵照美國證券交易制度所開發(fā)的一個交易記錄匯報系統(tǒng)。當(dāng)前項目組的任務(wù)是對pliance各個子系統(tǒng)的日志文件進(jìn)行校驗。在以往的手工測試中,測試員需要對日志文件中的每條記錄根據(jù)測試用例和測試數(shù)據(jù)進(jìn)行檢驗。但是,由于pliance系統(tǒng)的日志文件的數(shù)據(jù)量過分龐大并且各個子系統(tǒng)的日志格式差別很大。因此根據(jù)軟件自動化測試的相關(guān)知識和概念,我們分析后認(rèn)為完全有必要開發(fā)一個日志文件的校驗工具來對pliance系統(tǒng)的各種日志文件進(jìn)行統(tǒng)一的自動化校驗。 論文所做的工作本文主要描述數(shù)據(jù)驅(qū)動的格式化信息自動化校驗工具的設(shè)計過程和關(guān)鍵技術(shù),包括自動化測試框架、數(shù)據(jù)校驗框架,關(guān)鍵技術(shù)和系統(tǒng)實現(xiàn)四個部分進(jìn)行研究和分析。論文第二章介紹了現(xiàn)有的軟件自動化測試框架,介紹了模塊化測試框架,測試庫框架,數(shù)據(jù)驅(qū)動測試框架,關(guān)鍵字驅(qū)動測試框架和混合測試框架。比較了不同測試框架的特點(diǎn)和應(yīng)用環(huán)境。論文第三章提出了數(shù)據(jù)校驗框架的設(shè)計,框架分為數(shù)據(jù)引擎,數(shù)據(jù)管理器,校驗引擎,報告日志生成器,UI五大模塊。并且定義了各個模塊的功能和交互關(guān)系和接口定義。同時也論述了在校驗引擎中被使用到的數(shù)據(jù)比對算法——線性循環(huán)比對算法和LCS算法。此外,本章對用于數(shù)據(jù)轉(zhuǎn)化和存儲的XML技術(shù)也進(jìn)行了論述。在第四章里,我們介紹了基于數(shù)據(jù)校驗框架所實現(xiàn)的自動化測試工具——Smart Checker的設(shè)計和實現(xiàn)過程。包括系統(tǒng)需求的提取,軟件架構(gòu)的細(xì)化,軟件模塊的設(shè)計,數(shù)據(jù)文件的設(shè)計。詳細(xì)介紹了主要的類的功能和交互關(guān)系。論文最后總結(jié)了論文的主要成果和可能的擴(kuò)展之處,并對擴(kuò)展問題提出了可能實現(xiàn)的技術(shù)方案。第2章 軟件自動化測試框架的介紹 自動化測試框架概述 自動化測試在過去的2O年中已經(jīng)有了很大的發(fā)展。最初的測試工具只提供了簡單的捕捉/回放功能:記錄并播放鍵盤按鍵,然后捕捉和比較屏幕。這些測試方法雖然最容易應(yīng)用 但是幾乎不可能維護(hù)。錄制回放工具最終被功能和靈活性更強(qiáng)的測試腳本工具代替但是.腳本工具也有自己的問題。他們實現(xiàn)起來需要很強(qiáng)的開發(fā)技術(shù)和經(jīng)驗.同時.不確定它們是一定可以維護(hù)的。更糟糕的是高度個性化的腳本工具技術(shù).加上沒有什么文檔記錄.最后的結(jié)果經(jīng)常是重寫包含成千上萬行代碼的腳本庫.成本開銷巨大。后來,一種新的自動化測試產(chǎn)品—— 自動化測試框架出現(xiàn)了.它可以減少實現(xiàn)和維護(hù)的成本.使測試人員可以把精力集中在應(yīng)用程序的測試用例設(shè)計上,而不是開發(fā)測試。所謂自動化測試框架,是由一些假設(shè) 概念和為自動化測試提供支持的實踐組成的集合。自動化測試框架和應(yīng)用軟件開發(fā)的框架有很多類似的地方, 也很強(qiáng)調(diào)模塊化和分層的概念, 通過抽象出不同的層來降低耦合, 增加聚合。 提高腳本開發(fā)效率, 方便維護(hù), 增強(qiáng)穩(wěn)定性。傳統(tǒng)的結(jié)構(gòu)化線形腳本已經(jīng)無法滿足上面的要求, 新一代的自動化測試框架提出無疑為自動化測試提供了解決問題的手段。國內(nèi)外現(xiàn)有5種基本的軟件測試自動化框架。 模塊化測試框架模塊化測試腳本框架( Test Modularity Framework) 需要創(chuàng)建小而獨(dú)立的可以描述的模塊、片斷以及待測應(yīng)用程序的腳本[6]。這些樹狀結(jié)構(gòu)的小腳本組合起來,就能組成能用于特定的測試用例的腳本。在這5種框架中,這個應(yīng)該是最容易掌握和使用的。在一個組件上方建立一個抽象層,使其在余下的應(yīng)用中隱藏起來,這是眾所周知的編程技巧。這把應(yīng)用同組件中的修改隔離開來,提供了程序設(shè)計的模塊化特性。模塊化測試腳本框架使用這一抽象或者封裝的原理來提高自動測試組合的可維護(hù)性和可升級性。 測試庫框架測試庫框架( Test Library Architecture) 與模塊化測試腳本框架很類似,并且具有同樣的優(yōu)點(diǎn)。不同的是測試庫框架把待測應(yīng)用程序分解為過程和函數(shù)而不是腳本。這個框架需要創(chuàng)建描述模塊、片斷以及待測應(yīng)用程序的功能庫文件(例如SQABasic libraries,APIs,DLLs 等)[6] 。 數(shù)據(jù)驅(qū)動測試框架數(shù)據(jù)驅(qū)動(Data driven) 測試是一個框架。在這里測試的輸入數(shù)據(jù)是從數(shù)據(jù)文件中讀取( 數(shù)據(jù)池,ODBC 源,cvs 文件,excel 文件,DAO 對象,ADO 對象等) ,并且通過捕獲工具生成或者手工生成的代碼腳本被載入到變量中。在這個框架中,變量不僅被用來存放輸入值還被用來存放輸出的驗證值。整個程序中, 測試腳本來讀取數(shù)值文件, 記載測試狀態(tài)和信息。這類似于表驅(qū)動測試。在表驅(qū)動測試中,它的測試用例是包含在數(shù)據(jù)文件而不是在腳本中, 對于數(shù)據(jù)而言, 腳本僅僅是一個“驅(qū)動器”,或者是一個傳送機(jī)構(gòu)。然而,數(shù)據(jù)驅(qū)動測試不同于表驅(qū)動測試,盡管導(dǎo)航數(shù)據(jù)并不包含在表結(jié)構(gòu)中。在數(shù)據(jù)驅(qū)動測試中, 數(shù)據(jù)文件中只包含測試數(shù)據(jù)。這個框架意圖減少你需要執(zhí)行所有測試用例所需要的總的測試腳本數(shù)。數(shù)據(jù)驅(qū)動需要很少的代碼來產(chǎn)生大量的測試用例, 這與表驅(qū)動極其類似[1]。 關(guān)鍵字驅(qū)動或標(biāo)驅(qū)動測試框架對于一個獨(dú)立于應(yīng)用的自動化框架, 關(guān)鍵字驅(qū)動( Keyword driven) 測試和表驅(qū)動( Table driven) 測試是可以互換的術(shù)語。這個框架需要開發(fā)數(shù)據(jù)表和關(guān)鍵字。這些數(shù)據(jù)表和關(guān)鍵字獨(dú)立于執(zhí)行它們的測試自動化工具并可以用來“驅(qū)動”待測應(yīng)用程序和數(shù)據(jù)的測試腳本代碼。關(guān)鍵字驅(qū)動測試看上去與手工測試用例很類似。在一個關(guān)鍵字驅(qū)動測試中,把待測應(yīng)用程序的功能和每個測試的執(zhí)行步驟一起寫到一個表中[1]。這個測試框架可以通過很少的代碼來產(chǎn)生大量的測試用例。同樣的代碼在用數(shù)據(jù)表來產(chǎn)生各個測試用例的同時被復(fù)用。關(guān)鍵字驅(qū)動(Keyword Driven, 有時也叫TableDriven) 是腳本技術(shù)的一種, 實際上是比較復(fù)雜的數(shù)據(jù)驅(qū)動技術(shù)的邏輯擴(kuò)展, 將數(shù)據(jù)文件變成測試用例的描述, 用一系列關(guān)鍵字指定要執(zhí)行的任務(wù)。在關(guān)鍵字驅(qū)動技術(shù)中, 假設(shè)測試者具有某些被測系統(tǒng)的知識, 所以不必告訴測試者如何進(jìn)行詳細(xì)的動作, 只是說明測試用例做什么, 而不是如何做。這樣在腳本中使用的是說明性方法和描述性方法。描述性方法將被測軟件的知識建立在測試自動化環(huán)境中, 這種知識包含在支持腳本中。關(guān)鍵字驅(qū)動腳本的數(shù)量不隨測試用例的數(shù)量變化, 而僅隨軟件規(guī)模而增加。關(guān)鍵字驅(qū)動真正實現(xiàn)了數(shù)據(jù)與腳本分離, 測試邏輯與測試腳本分離, 實現(xiàn)了測試的完全定制[7]。使用模塊化的測試腳本組織測試, 因為自動化測試就是編寫測試腳本去測試被測試程序, 所以腳本開發(fā)本身也與程序開發(fā)一樣, 在此使用的其實就是應(yīng)用程序的一種開發(fā)模式而已[2]。關(guān)鍵字驅(qū)動技術(shù)是在數(shù)據(jù)驅(qū)動基礎(chǔ)上發(fā)展起來的, 吸取了數(shù)據(jù)驅(qū)動中將可變部分和不可變部分分離以降低維護(hù)工作量的思想, 將測試邏輯同測試腳本也分離開來。這一方式倡導(dǎo)只用腳本