CRM系統:Spring的軟件測試方法在超市CRM中的應用
管理下的測試, 采用AbstractTransactionalSp ringContextTests 和AbstractTransactionalDataSourceSp ringCon2
textTests. 后者比前者有更好的數據表操縱能力. 這2個類都能對事務進行精確的控制. 終止1個事務采用
endTransaction ( )方法,開始1個新事務采用startNewTransaction ( )方法,提交1個事務采用setComp lete ( )
方法,可以通過setDefaultRollBack ( false)方法獲得全局事務行為.
31213 注釋在超市CRM系統集成測試中的應用
由于超市CRM系統規模較大,測試的工作量很大,需要借助于Sp ring提供的AbstractAnnotationAware2
TransactionalTests抽象類,采用注釋技術簡化測試. 注釋@Timed表示所限定的測試方法必須在指定時間
內完成,否則測試失敗; @ExpectedExcep tion表示指定產生的異常; @NotTransactional表示指定測試方法
不作為事務處理; @Repeat表示指定方法重復測試的次數; @Transactional表示指定方法作為事務處理;
DirtiesContext表示當Sp ringD I容器中元數據被改變時,其他測試方法無效,該注釋確保銷毀D I容器,這樣
在其他測試方法運行前重新建立D I容器對象. 在持久層組件測試中,采用setDirty ( )方法也可以將D I容
器元數據銷毀,但該方法有一個缺陷,當方法setDirty( )執行前發生異常,從而setDirty ( )未被執行到,這樣
D I容器里就是臟數據,后繼測試將做無用功. 因此,在超市CRM系統的集成測試中,盡量使用注釋@Dirti2
esContext來代替setDirty( )方法[ 2 ] .
313 運用AOP思想進行Sp ring與Hibernate集成測試
在超市CRM系統中,持久層綜合采用了Hibernate、IBATIS和JDBC,并且在進行集成測試時,經常會
混合使用HibernateTemp late和JdbcTemp late,在測試過程中,發現會出現問題. 原因是:在調用Hibernate的
Session接口中的update ( ) 、saveOrUpdate ( )等方法時,由于FlushMode設置值的不同,這些方法對應的SQL
語句可能不會同時同步到數據庫中. 對此,AOP思想可以自然地解決該問題[ 2, 9 ] .
AOP中的通知(Advice)表示在特定的連接點,AOP框架執行的動作. AOP中主要有5種通知,Before、
After、AfterRetuning、AfterThrowing和Around. 其中,Around (環繞)通知在超市CRM系統的測試中最常用,
在方法調用前后完成自定義的任務,相當于一個攔截器. 采用Around環繞通知的方法如下:
public classMyFlush Intercep tor imp lementsMethod Intercep tor{
public Object (Method Invocation inv) throws Throwable{
Object obj = inv. p roceed ( ) ; / /被代理方法執行
HibernateDaoSupport hds = (HibernateDaoSupport) inv. getThis ( ) ;
hds. getHibernateTemp late ( ). flush ( ) ;
return obj;
}
}
在超市CRM系統對應的配置文件app licationContext2hibernate2around. xml中,對TransactionProxyFacto2
ryBean的屬性postIntercep tor進行配置為MyFlush Intercep tor. 至此,客戶的調用由TransactioniIntercep t先進
行攔截,然后是MyFlush Intercep tor的執行,于是flush ( )起了作用,本次集成測試正確完成[ 2 ] . 這是在超市
CRM系統的測試過程中遇到的問題,在熟悉AOP思想以及通知概念的情況下,能夠有效解決該問題,可
見AOP編程的威力.
314 TDD在超市CRM系統開發中的應用
在超市CRM系統的開發中,啟動TDD能夠實現敏捷開發. 但在對超市CRM系統進行軟件測試過程
中,經常需要數據表的種子數據生成,如果不是超市CRM系統的軟件人員參與,則會出現問題,破壞TDD
團隊效率. 解決的辦法是: 首先采用deleteFromTables ( )方法刪除相關數據表中的所有數據,然后通過
Sp ring的AbstractTransactionalSp ringContextTests進行測試,運用HibernateTemp le或jdbcTemp le的更新語句
來設定種子數據. 測試完畢后會自動進行事務回卷,因此不會對原數據表的數據造成改變. 在超市CRM系
統的測試中, deleteFromTables( )方法后不能寫setComp lete ( )方法,否則會拋出異常,這樣可以避免在超市
CRM系統的測試過程中由于不小心而帶來數據破壞[ 10 ] .
在超市CRM系統的集成測試中,特別是在運用TDD開發時,應該盡可能多地使用聲明式事務,盡量
避免使用編程式事務,這樣可以提高測試效率,原因是聲明式事務比較靈活、通用,對于一些較難處理的問
題可以通過修改相應的配置文件來解決,而編程式事務則不行.
4 結語
通過將當今流行的Sp ring框架下軟件的測試方法和技術應用到超市CRM系統中,總結了一些能夠提
高軟件測試效率的經驗,解決了在測試過程中的一些問題. 現代軟件測試不僅僅是盡可能多地找出錯誤,
運用TDD可以促進軟件開發,參與軟件開發的各個成員通過編寫集成測試用例代碼,還能夠促進團隊的
合作與交流,促進對超市CRM業務邏輯的正確理解. 在權限管理與事務管理等的測試工作中,運用AOP
思想,還有很多工作需要深入去做.
在超市CRM系統中,有數據挖掘子系統并且支持移動設備訪問,以上介紹的測試方法及應用,對于移
動設備上的JavaME相關開發與測試,以及數據挖掘子系統的軟件測試,同樣適用[ 4 ] .
參考文獻:
[ 1 ] 楊利利,李必信. Web服務測試問題綜述[ J ]. 計算機科學, 2008 (9) : 258 - 265.
[ 2 ] 羅時飛. 精通Sp ring 210 [M ]. 北京:電子工業出版社, 2007: 287 - 302.
[ 3 ] 何榮勤. CRM原理設計實踐[M ]. 北京:電子工業出版社, 2003: 87 - 113.
[ 4 ] 徐金寶. 數據挖掘技術在超市客戶關系管理系統中的應用[D ]. 南京:南京理工大學, 2007.
[ 5 ] 李剛. 輕量級J2EE企業應用實戰- Struts + Sp ring +Hibernate整合開發[M ]. 北京:電子工業出版社, 2007: 401 - 440.
[ 6 ] 黃睿. Sp ring深度整合指南[M ]. 北京:電子工業出版社, 2007: 241 - 252.
[ 7 ] ROD J. Expert One2on2One J2EE Design and Development[M ]. Indianapolis: Wiley Publishing, Inc. , 2003: 73 - 111.
[ 8 ] ROD J, JUERGEN H. Expert One2on2One J2EE Development without EJB [M ]. Indianapolis: Wiley Publishing, Inc. , 2004: 201 - 223.
[ 9 ] 李剛. Sp ring 210寶典[M ]. 北京:電子工業出版社, 2006: 491 - 512.
[ 10 ] 劉煥洲,繆淮扣. Web應用程序建模和測試用例生成方法[ J ]. 計算機工程, 2008 (6) : 60 - 62.
強力推薦:
天柏客戶關系管理系統
天柏客戶關系管理系統(CRM)是一款集專業性、實用性、易用性為一體的純B/S架構的CRM系統,它基于以客戶為中心的協同管理思想和營銷理念,圍繞客戶生命周期的整個過程,針對不同價值的客戶實施以客戶滿意為目標的營銷策略,通過企業級協同,有效的“發現、保持和留住客戶”,從而達到留住客戶、提高銷售,實現企業利潤最大化的目的。通過對客戶進行7P的深入分析,即客戶概況分析(Profiling)、客戶忠誠度分析(Persistency)、客戶利潤分析(Profitability)、客戶性能分析(Performance)、客戶未來分析(Prospecting)、客戶產品分析(Product)、客戶促銷分析(Promotion)以及改善與管理企業銷售、營銷、客戶服務和支持等與客戶關系有關的業務流程并提高各個環節的自動化程度,從而幫助企業達到縮短銷售周期、降低銷售成本、擴大銷售量、增加收入與盈利、搶占更多市場份額、尋求新的市場機會和銷售渠道,最終從根本上提升企業的核心競爭力,使得企業在當前激烈的競爭環境中立于不敗之地。
關鍵詞:CRM,CRM系統,CRM軟件,客戶關系管理,客戶管理軟件,客戶管理系統,客戶關系管理軟件,客戶關系管理系統