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