新闻资讯

NEWS

公司新闻
行业新闻

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软件,客户关系管理,客户管理软件,客户管理系统,客户关系管理软件,客户关系管理系统