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