自動化測試在動態(tài)文檔發(fā)布系統(tǒng)中的應用
3.2 框架方案
有了輸入和輸出,以及明確的需求,我們給出框架的解決方案:本文引用地址:http://www.ex-cimer.com/article/194837.htm
(1)把整個過程分為輸入、過程中、輸出、輸出后。
(2)對于配置,采用XML,并且在XML里提供對輸入、輸出、以及中間的過程的配置。
(3)對于輸入,我們定義一個接口,對于這個接口的實現(xiàn)將會是各個不同的輸入方式,對于目前來說我們是支持ASL+Textpieces。但是我們以后會支持另外的輸入方式。然后對于所有的輸入接口,我們定義一個中心的中間輸出,我們叫它IDoc。它實際上是輸入和發(fā)布的中心,輸入都要轉成這個我們定義的中間結果,然后輸出都需要從這個中間結果進行加工。
(4)對于輸出,我們可以把它們同樣配置在XML里面。并且對于最基本的輸出例如PDF,我們可以把它作為默認的一個輸出,而不需要每次進行配置。
(5)對于中間過程,我們配置了一些攔截器,這些攔截器以IDoc為中心,設置了publish前和publish后的攔截器,也就是說,在這里我們可以對publish前和publish后進行一些配置。比如,在開始前我們可以開始計時,結束后結束計時,這樣我們可以測試一些效率方面的例子。
(6)對于輸出,我們對于PDF輸出,我們要實現(xiàn)它和自動比較工具的一個集成,也就是生成完PDF后,在配置要求進行比較的情況下,自動調用PDF比較工具對輸出結果和標準進行比較,然后得出結果,并且生成HTML結果表格,然后通過Email給相關人員進行發(fā)送。
3.3 用例
當整個系統(tǒng)運行起來后,操作步驟如下:
首先,簡單來說,我們會提供一些默認的XML配置,包括用例存放路徑、輸入方式、輸出方式、發(fā)比較結果郵件會發(fā)給哪些人等等進行默認配置。因為這些東西會很少改動,當然改動的時候,我們重新配置就行。然后我們把需要運行的輸入,即ASL+Text Pieces放到一個配置的路徑里,然后用名字去區(qū)分不同的用例。然后我們通過XML配置我們的輸入格式、輸出格式,以及需不需要對結果進行比較、需不需要發(fā)郵件等等選項。當這些配置配完以后,我們給它起一個唯一的用例名,然后在程序里將這個用例名作為參數(shù)運行就能使整個過程自動完成。對于程序員,我們每次提交關鍵代碼,都會先運行一下這個框架程序,然后查看自動生成的測試報告。如果發(fā)現(xiàn)問題,及時改正。而對于配置管理員來說,他們這個過程用ant工具配置在打包腳本中,然后我們就可以在每次打包時,自動地運行我們預先設置的用例。并且,生成文件后,程序會自動對生成的PDF文件進行比較,并將結果整理發(fā)出郵件。相關人員會通過Email收到比較結果,在上面可以通過超鏈接很方便地點選那些比較不對的文檔,然后通知程序員進行改正。整個過程由于都是由機器在后臺快速運行,少了人工的干擾,所以既提高了準確率,又提高了效率。
4 結論
由于文檔發(fā)布系統(tǒng)的客戶對于不同系統(tǒng)版本間文檔一致性的高要求,使我們必須要提供一個長久的機制保證這個一致性。而要保證這個系統(tǒng)的一致性,我們提出了一個輕量級自動測試的方案。這里所說的輕量級,只是說該框架下運行方便,不需要受應用服務器和數(shù)據(jù)庫的約束,但是理論它上提供了文檔發(fā)布系統(tǒng)同樣的功能和行為。實際上在整個過程中,我們盡量調用原先系統(tǒng)的程序,但是在解除對于服務器和數(shù)據(jù)庫的依賴方面,我們通過仔細分析原來的動態(tài)文檔發(fā)布系統(tǒng)各個模塊的前提下,采用了用本地文件模擬數(shù)據(jù)庫的方法,通過重載方法實現(xiàn)了對于數(shù)據(jù)庫的解耦。該框架提供了強大的可配置功能,通過簡單的XML設置,我們可以對整個過程進行配置,靈活實現(xiàn)不同的功能組合。
在未來,我們還會不斷完善這個框架,例如會提供更多的輸入選擇,提供可視化的配置,提供盡量準確的診斷功能幫助程序員方便定位錯誤,并且根據(jù)動態(tài)文檔發(fā)布系統(tǒng)的升級而相應提供更多的配置和功能。
評論