CRM系統:Spring的軟件測試方法在超市CRM中的應用
2 Sp ring對軟件測試的支持
Sp ring是一個采用控制反轉( IoC)作為核心技術的精致容器,同時靈活采用了面向切面編程(AOP)的
思想,它不僅能夠單獨使用,也可以對其他的框架進行有機整合,同時對軟件測試有較強支撐[ 2 ] .
211 Mock在單元測試中的應用
Sp ring中的Mock (模擬)對象可以解決缺乏具體實現環境、沒有相應配置依賴時的單元測試問題.
Sp ring中常用的與Web 相關的Mock 類有: MockHttpServletRequest用于模擬客戶端的Request請求;
MockHttpServletResponse用于模擬服務端的Response響應;MockHttpSession用于模擬Session對象.
此外,也可以采用EasyMock對象. EasyMock對象不像Mock對象那樣需要手工編寫代碼, EasyMock
更方便、更適合進行TDD開發,可以利用代理模式在相應類的測試方法中生成EasyMock對象.
212 Sp ring對集成測試的支持
Sp ring采用依賴注入(D I)容器對集成測試進行支持. 集成測試環境與開發環境相近,集成測試是將多
個軟件功能模塊組裝進行測試,需要考慮DBMS、連接池、多線程、表現層、業務層、持久層等的協作運行效
果. 常用于集成測試的類有: 1) AbstractSp ringContextTests是后面3個類的超類,一般不獨立使用; 2) Ab2
stractDependencyInjectionSp ringContextTests提供依賴注入功能的集成測試; 3 ) AbstractTransactionalSp ring2
ContextTests支持事務的測試; 4) AbstractTransactionalDataSourceSp ringContextTests不僅支持事務,而且可
以通過jdbcTemp late屬性直接訪問數據表,主要用于持久層測試.
采用D I容器, Sp ring對事務進行測試過程中,對數據表記錄進行的增、刪、改等更新操作,在測試結束
后,均回卷到測試前狀態,測試對數據表中的數據沒有任何破壞[ 6 ] .
213 注釋在集成測試中的應用
Sp ring對集成測試提供了@Timed、@Repeat、@DirtiesContext、@ExpectedExcep tion、@NotTransaction2
al、@Transactional等注釋. 利用注釋,可以大大方便和簡化集成測試. Sp ring對注釋將會繼續增強.
3 Sp ring框架下軟件測試方法在超市CRM中的應用
311 運用模擬對象進行單元測試
在超市CRM系統中,有大量的展現頁面和控制器,并且相當多的頁面都會與數據存儲有關,這些功能
的開發往往是由不同的人員分別完成的,因此,在對一些視圖層或控制器測試時,往往需要相應的持久化
環境. 對于這樣的單元測試問題,需要采用Sp ring的模擬對象.
31111 采用Mock模擬對象
Mock以手工方式建立模擬對象. 建立方法是將業務接口中需要進行測試的方法進行覆蓋,然后進行
測試. 這種方式在模擬對象較多的情況下,將會變得十分煩瑣,因此,常用EasyMock來代替.
31112 采用EasyMock進行測試
在超市CRM 系統的單元測試中, 主要采用EasyMock 對象進行測試,首先產生EasyMock 對象:
MockControl c =MockControl. createStrictControl ( interface. class) ;參數interface代表模擬接口. 然后創建模
擬對象: interface Imp lm I = ( interface) c. getMock ( ). 模擬對象創建之后,采用c. rePlay ( )進行測試. 采用
EasyMock對象對超市CRM系統進行測試比采用Mock對象明顯提高單元測試的效率
31113 控制器的測試
采用SSH的超市CRM系統,控制器的應用非常普遍,對控制器的測試至關重要. 雖然有數量眾多的
控制器,但對控制器的測試方法幾乎相同. 測試主要采用MockHttpServletRequest和MockHttpServletRe2
sponse進行. 例如超市CRM系統中某個控制器Examp leController類如下:
public class Examp leController extends AbstractController{
p rotectedModelAndView handleRequestInternal (HttpServletRequest req, HttpServletResponse res) throws Excep tion {
⋯
return newModelAndView ( ⋯) ;
} }
在超市CRM系統的測試中,可以通過MockHttpServletRequest對象方法模擬一個Get請求,并且對該
請求添加所需參數. 測試方法如下:
MockHttpServletRequestmyreq = newMockHttpServletRequest (“GET”, “/WEB - INF / jsp / examp le. jsp”) ;
Request. addParamter( ⋯) ;
MockHttpServletResponse myres = newMockHttpServletResponse ( ) ;
ModelAndView result = c. handleRequestInternal (myreq,myres) ;
AssertEquals ( ⋯, result. ⋯) ;
312 超市CRM系統的集成測試方法應用
31211 業務層組件測試
在超市CRM系統中,業務層擔負著業務邏輯的處理,實現很復雜,需要與持久層進行交互,會頻繁涉
及到事務處理,測試主要采用的類是AbstractDependencyInjectionSp ringContextTests和AbstractTransactional2
Sp ringContextTests. 前者主要采用依賴注入技術,無事務管理功能. 如果在業務層中涉及數據庫操作,則測
試對數據表的修改前者會影響數據表,而后者由于Sp ring事務屬性DefaultTransactionDefinition的作用,不
會影響數據表. 業務層的測試幾乎都會與數據表打交道,因此在測試中主要采用后者. 業務層的具體測試
方法與持久層的測試方法相似.
31212 持久層組件測試
在超市CRM系統中,持久層主要采用Hibernate實現,但有些需要靈活操縱SQL的功能模塊則采用
iBATIS,有些涉及數據量不大的地方還采用了JDBC. 持久層組件的測試主要采用AbstractDependencyInjec2
tionSp ringContextTests、AbstractTransactionalSp ringContextTests、AbstractTransactionalDataSourceSp ringContext2
Tests. 這3個測試類都有1個app licationContext變量,該變量緩存Sp ring D I容器的元數據,當元數據被修
改后,可以通過調用setDirty( )方法,在下一測試方法運行前重新初始化D I容器.
在超市CRM系統的持久層測試中,需要配置文件app licationContext2jdbc. xml,配置內容主要是Driver
ManagerDataSource數據源、DataSourceTransactionManager事務管理器以及攔截器中的TransactionProxyFac2
toryBean. 配置文件在超市CRM測試系統中的位置由該3個測試類中的方法getConfigLocations( )設定.
對于AbstractDependencyInjectionSp ringContextTests,可以通過autowiring的AUTOW IRE- BY- TYPE方
式進行屬性的setter注入. 若setPopulateProtectedVariables ( )方法的參數為true,且需要注入的屬性的訪問
控制是p rotected型,則autowiring失效,這樣對控制注入更加靈活. 對于一些不涉及事務處理的方法,運用
該類的屬性依賴注入特性,可以方便測試[ 8 ] .
在超市CRM系統中,幾乎所有重要的數據表訪問都是基于事務的,事務管理測試至關重要. 對于事務
強力推薦:
天柏客戶關系管理系統
天柏客戶關系管理系統(CRM)是一款集專業性、實用性、易用性為一體的純B/S架構的CRM系統,它基于以客戶為中心的協同管理思想和營銷理念,圍繞客戶生命周期的整個過程,針對不同價值的客戶實施以客戶滿意為目標的營銷策略,通過企業級協同,有效的“發現、保持和留住客戶”,從而達到留住客戶、提高銷售,實現企業利潤最大化的目的。通過對客戶進行7P的深入分析,即客戶概況分析(Profiling)、客戶忠誠度分析(Persistency)、客戶利潤分析(Profitability)、客戶性能分析(Performance)、客戶未來分析(Prospecting)、客戶產品分析(Product)、客戶促銷分析(Promotion)以及改善與管理企業銷售、營銷、客戶服務和支持等與客戶關系有關的業務流程并提高各個環節的自動化程度,從而幫助企業達到縮短銷售周期、降低銷售成本、擴大銷售量、增加收入與盈利、搶占更多市場份額、尋求新的市場機會和銷售渠道,最終從根本上提升企業的核心競爭力,使得企業在當前激烈的競爭環境中立于不敗之地。
關鍵詞:CRM,CRM系統,CRM軟件,客戶關系管理,客戶管理軟件,客戶管理系統,客戶關系管理軟件,客戶關系管理系統