CRM系统:Spring的软件测试方法在超市CRM中的应用
2 Sp ring对软件测试的支持
Sp ring是一个采用控制反转( IoC)作为核心技术的精致容器,同时灵活采用了面向切面编程(AOP)的
思想,它不仅能够单独使用,也可以对其他的框架进行有机整合,同时对软件测试有较强支撑[ 2 ] .
211 Mock在单元测试中的应用
Sp ring中的Mock (模拟)对象可以解决缺乏具体实现环境、没有相应配置依赖时的单元测试问题.
Sp ring中常用的与Web 相关的Mock 类有: MockHttpServletRequest用于模拟客户端的Request请求;
MockHttpServletResponse用于模拟服务端的Response响应;MockHttpSession用于模拟Session对象.
此外,也可以采用EasyMock对象. EasyMock对象不像Mock对象那样需要手工编写代码, EasyMock
更方便、更适合进行TDD开发,可以利用代理模式在相应类的测试方法中生成EasyMock对象.
212 Sp ring对集成测试的支持
Sp ring采用依赖注入(D I)容器对集成测试进行支持. 集成测试环境与开发环境相近,集成测试是将多
个软件功能模块组装进行测试,需要考虑DBMS、连接池、多线程、表现层、业务层、持久层等的协作运行效
果. 常用于集成测试的类有: 1) AbstractSp ringContextTests是后面3个类的超类,一般不独立使用; 2) Ab2
stractDependencyInjectionSp ringContextTests提供依赖注入功能的集成测试; 3 ) AbstractTransactionalSp ring2
ContextTests支持事务的测试; 4) AbstractTransactionalDataSourceSp ringContextTests不仅支持事务,而且可
以通过jdbcTemp late属性直接访问数据表,主要用于持久层测试.
采用D I容器, Sp ring对事务进行测试过程中,对数据表记录进行的增、删、改等更新操作,在测试结束
后,均回卷到测试前状态,测试对数据表中的数据没有任何破坏[ 6 ] .
213 注释在集成测试中的应用
Sp ring对集成测试提供了@Timed、@Repeat、@DirtiesContext、@ExpectedExcep tion、@NotTransaction2
al、@Transactional等注释. 利用注释,可以大大方便和简化集成测试. Sp ring对注释将会继续增强.
3 Sp ring框架下软件测试方法在超市CRM中的应用
311 运用模拟对象进行单元测试
在超市CRM系统中,有大量的展现页面和控制器,并且相当多的页面都会与数据存储有关,这些功能
的开发往往是由不同的人员分别完成的,因此,在对一些视图层或控制器测试时,往往需要相应的持久化
环境. 对于这样的单元测试问题,需要采用Sp ring的模拟对象.
31111 采用Mock模拟对象
Mock以手工方式建立模拟对象. 建立方法是将业务接口中需要进行测试的方法进行覆盖,然后进行
测试. 这种方式在模拟对象较多的情况下,将会变得十分烦琐,因此,常用EasyMock来代替.
31112 采用EasyMock进行测试
在超市CRM 系统的单元测试中, 主要采用EasyMock 对象进行测试,首先产生EasyMock 对象:
MockControl c =MockControl. createStrictControl ( interface. class) ;参数interface代表模拟接口. 然后创建模
拟对象: interface Imp lm I = ( interface) c. getMock ( ). 模拟对象创建之后,采用c. rePlay ( )进行测试. 采用
EasyMock对象对超市CRM系统进行测试比采用Mock对象明显提高单元测试的效率
31113 控制器的测试
采用SSH的超市CRM系统,控制器的应用非常普遍,对控制器的测试至关重要. 虽然有数量众多的
控制器,但对控制器的测试方法几乎相同. 测试主要采用MockHttpServletRequest和MockHttpServletRe2
sponse进行. 例如超市CRM系统中某个控制器Examp leController类如下:
public class Examp leController extends AbstractController{
p rotectedModelAndView handleRequestInternal (HttpServletRequest req, HttpServletResponse res) throws Excep tion {
⋯
return newModelAndView ( ⋯) ;
} }
在超市CRM系统的测试中,可以通过MockHttpServletRequest对象方法模拟一个Get请求,并且对该
请求添加所需参数. 测试方法如下:
MockHttpServletRequestmyreq = newMockHttpServletRequest (“GET”, “/WEB - INF / jsp / examp le. jsp”) ;
Request. addParamter( ⋯) ;
MockHttpServletResponse myres = newMockHttpServletResponse ( ) ;
ModelAndView result = c. handleRequestInternal (myreq,myres) ;
AssertEquals ( ⋯, result. ⋯) ;
312 超市CRM系统的集成测试方法应用
31211 业务层组件测试
在超市CRM系统中,业务层担负着业务逻辑的处理,实现很复杂,需要与持久层进行交互,会频繁涉
及到事务处理,测试主要采用的类是AbstractDependencyInjectionSp ringContextTests和AbstractTransactional2
Sp ringContextTests. 前者主要采用依赖注入技术,无事务管理功能. 如果在业务层中涉及数据库操作,则测
试对数据表的修改前者会影响数据表,而后者由于Sp ring事务属性DefaultTransactionDefinition的作用,不
会影响数据表. 业务层的测试几乎都会与数据表打交道,因此在测试中主要采用后者. 业务层的具体测试
方法与持久层的测试方法相似.
31212 持久层组件测试
在超市CRM系统中,持久层主要采用Hibernate实现,但有些需要灵活操纵SQL的功能模块则采用
iBATIS,有些涉及数据量不大的地方还采用了JDBC. 持久层组件的测试主要采用AbstractDependencyInjec2
tionSp ringContextTests、AbstractTransactionalSp ringContextTests、AbstractTransactionalDataSourceSp ringContext2
Tests. 这3个测试类都有1个app licationContext变量,该变量缓存Sp ring D I容器的元数据,当元数据被修
改后,可以通过调用setDirty( )方法,在下一测试方法运行前重新初始化D I容器.
在超市CRM系统的持久层测试中,需要配置文件app licationContext2jdbc. xml,配置内容主要是Driver
ManagerDataSource数据源、DataSourceTransactionManager事务管理器以及拦截器中的TransactionProxyFac2
toryBean. 配置文件在超市CRM测试系统中的位置由该3个测试类中的方法getConfigLocations( )设定.
对于AbstractDependencyInjectionSp ringContextTests,可以通过autowiring的AUTOW IRE- BY- TYPE方
式进行属性的setter注入. 若setPopulateProtectedVariables ( )方法的参数为true,且需要注入的属性的访问
控制是p rotected型,则autowiring失效,这样对控制注入更加灵活. 对于一些不涉及事务处理的方法,运用
该类的属性依赖注入特性,可以方便测试[ 8 ] .
在超市CRM系统中,几乎所有重要的数据表访问都是基于事务的,事务管理测试至关重要. 对于事务
强力推荐:
天柏客户关系管理系统
天柏客户关系管理系统(CRM)是一款集专业性、实用性、易用性为一体的纯B/S架构的CRM系统,它基于以客户为中心的协同管理思想和营销理念,围绕客户生命周期的整个过程,针对不同价值的客户实施以客户满意为目标的营销策略,通过企业级协同,有效的“发现、保持和留住客户”,从而达到留住客户、提高销售,实现企业利润最大化的目的。通过对客户进行7P的深入分析,即客户概况分析(Profiling)、客户忠诚度分析(Persistency)、客户利润分析(Profitability)、客户性能分析(Performance)、客户未来分析(Prospecting)、客户产品分析(Product)、客户促销分析(Promotion)以及改善与管理企业销售、营销、客户服务和支持等与客户关系有关的业务流程并提高各个环节的自动化程度,从而帮助企业达到缩短销售周期、降低销售成本、扩大销售量、增加收入与盈利、抢占更多市场份额、寻求新的市场机会和销售渠道,最终从根本上提升企业的核心竞争力,使得企业在当前激烈的竞争环境中立于不败之地。
关键词:CRM,CRM系统,CRM软件,客户关系管理,客户管理软件,客户管理系统,客户关系管理软件,客户关系管理系统