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