程序分為兩個大的模塊:Migration和Bundles。為什么叫Bundles?因為Sling使用了OSGI框架Felix。
Migration負責導入客戶的遺留數據到新系統。之前客戶的CMS運行已有10多年的時間,積累有大量數據。主要是各種類型的報表和圖片。
Bundles實現系統功能。主要包括了定義報表模板、定義報表各種所見即所得的展現組件、實現對圖片的管理、搜索(包括基于圖片的可視化搜索)和其他七七八八。
三、測試實踐
1、Migration的測試
自動化測試
對Migration,我們采用了TDD的方式。
輸入是客戶實際提供的xml文件,輸出是JCR里的節點。測試環境的搭建主要是在本地建立起Jackrabbit實例。我們的工作方式是這樣:每天早上領到一張migration故事卡,然后先寫一個xml到jcr節點的集成測試描述出該類型報表的功能需求,接下來就是讓這個測試通過。經過開始階段的熟悉過程,我們的速度保持在一對Pair一天一種報表類型的導入。
手工測試
將xml文件內容正常解析并導入JCR只是第一步,第二步我們需要在Bundles里為該類型的報表編寫模板使之正常展現。由于涉及到報表樣式,這個測試我們采用手工測試,這個工作也是QA工作的重要一部分。
在最開始的開發中,我們沒有導入所有報表數據進行測試。這帶來了問題,由于客戶遺留數據跨越10多年,各種數據形式都可能存在(特別是04年以前數據,給UI帶來了很大挑戰),而最開始的開發中,我們只是使用了部分數據(09、10年數據)進行測試,這個導致了建立UAT環境時程序的很多返工以及QA的測試壓力。
2、Bundles的測試
自動化測試
對領域模型,我們采用了TDD的方式進行單元測試;在本地Jackrabbit實例里建立數據,領域模型封裝數據測試行為。
對servlet,我們采用了TDD的方式進行集成測試(同時測試了servlet和領域模型),在測試中對request和response進行mock; 對JS,我們使用數據驅動的selenium功能測試進行覆蓋。

我們最后的自動化測試結構:
文章來源于領測軟件測試網 http://www.kjueaiud.com/