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