一种再现测试流程以实现自动化回归测试的方法技术

技术编号:17097369 阅读:28 留言:0更新日期:2018-01-21 09:07
本发明专利技术公开了一种再现测试流程以实现自动化回归测试的方法,利用AOP拦截控制层Controller所有的HTTP请求;在拦截器中定义一个开关,用户通过开关可以在正常的业务流程和生成测试用例的业务流程之间切换;屏蔽数据库持久层,保证每次相同的请求在持久层都能获得相同的响应;部署项目后,测试人员可以在网页上进行正常业务流程的操作,保存正常业务流程发送的请求调用的控制层和持久层的方法、传入的参数以及响应结果到指定文件中;基于JUnit4和正常业务流程结束后得到的数据进行回归测试。测试人员不需要关注具体的代码实现,也不用手工编写和维护测试用例,只需要正常地在网页上进行业务测试,就能记录下测试人员的业务测试内容,从而减轻回归测试的压力。

A method of reproducing test flow to realize automatic regression test

The invention discloses a method for reproducing the testing process to achieve automated regression testing, using AOP intercept control layer Controller all HTTP requests; the definition of a switch in the interceptor, the user can switch between the normal business processes and generate test cases through the switch business process; shielding database persistence layer, to ensure that every time the same the request can get the same response in the persistence layer; deployment project, test personnel can carry out normal business process on the web operation, parameter method, control layer and persistence layer requested the preservation of normal business processes and sends the response results to the specified file; JUnit4 and normal business process after the end based on the data of regression test. Testers do not need to focus on specific code implementation, nor do manual writing and maintenance of test cases. They only need to do business tests on Web pages and record the testing contents of testers, so as to reduce the pressure of regression testing.

【技术实现步骤摘要】
一种再现测试流程以实现自动化回归测试的方法
本专利技术涉及自动化回归测试,尤其涉及一种再现测试流程以实现自动化回归测试的方法,帮助记录业务流程并能简单快速地完成测试用例的回归和迭代。
技术介绍
回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极限编程方法中,更是要求每天都进行若干次回归测试。回归测试是软件测试中的一个十分重要而且昂贵的过程,所以研究如何减少回归测试的成本,提高回归测试效率的研究十分重要。
技术实现思路
本专利技术的目的在于减轻回归测试的压力,提供一种简单高效的方法进行自动化回归测试。本专利技术的目的是通过以下技术方案来实现的:本专利技术通过配置AOP切面,定义切点,在切面织入自动化回归测试获取数据的逻辑;然后正常启动项目,测试人员按照业务流程直接在网页进行业务测试,后台会记录所有的请求流程和数据以及响应并将结果保存在文件中,然后基于保存的数据,通过JUNIT4框架编写测试类可以非常简单的重现原先的测试内容,完成回归测试。具体包括以下步骤:(1)基于Spring框架,利用AOP拦截控制层Controller所有的HTTP请求,并定义对应的拦截器;具体为:在XML中配置切面,配置示例如下:com.company.project..*.*Controller.*(..)拦截指定包下Controller中的所有方法,即把单个的HTTP请求做为一个最小单元;(2)在拦截器中定义一个开关,用户通过开关可以在正常的业务流程和生成测试用例的业务流程之间切换,当用户选择生成测试用例的模式,保存所有请求调用的方法、传入的参数以及响应结果到指定文件中;(3)由于回归测试是一种可重复执行的操作,因此需要对数据库持久层做特殊处理,即保证每次相同的请求在持久层都能获得相同的响应,所以要屏蔽持久层,这里我们的做法是实现BeanPostProcessor接口,然后在postProcessAfterInitialization方法中将持久层接口对象替换为动态代理对象,并记录持久层接口的所有方法的传入的参数和响应结果到指定文件中,同一参数多次调用同一方法时,依次记录;优选方案为在拦截器中实现BeanPostProcessor接口,可以减少代码侵入;(4)部署项目后,测试人员可以在网页上进行正常业务流程的操作,保存正常业务流程发送的请求调用的控制层和持久层的方法、传入的参数以及响应结果到指定文件中;(5)基于JUnit4和正常业务流程结束后得到的数据进行回归测试:依次调用Controller中的方法,获取HTTP请求的响应结果后与文件中保存的响应结果做对比,如果对比通过则表明该请求通过了回归测试,否则未通过回归测试,需要我们分析原因。本专利技术的有益效果是:测试人员不需要关注具体的代码实现,也不用手工编写和维护测试用例,只需要正常地在网页上进行业务测试,就能记录下测试人员的业务测试内容,之后可以通过MAVEN命令重现测试内容完成自动化的回归测试。附图说明图1是测试人员测试过程中单个请求记录数据示意图;图2是利用保存的数据重现测试内容并与预期做对比示意图。具体实施方式下面结合附图和具体实施例对本专利技术作进一步详细说明。如图1所示,测试人员生成测试用例不需要关注具体的代码实现,也不用手动去整理用例逻辑,只需要在网页上进行正常业务测试即可。具体步骤如下:(1)测试人员进行业务操作会往后台发送请求,通过HandlerMapping调用Controller中的方法,这时候我们记录下调用的Controller类、调用的具体方法和请求参数,并记录到Replay.rcd文件中。(2)Controller调用Service中业务方法,Service会与持久层交互,当Service调用持久层Dao接口时,我们返回我们的代理对象,并记录下Dao接口类、调用的Dao方法和入参,然后去数据库中进行增删改查的操作,返回的结果一并记下,如果会多次调用同一方法,依次记下即可。(3)Controller收到Service的返回值后,生成对前端请求的响应,我们记下该请求的后台响应,这就是整个记录流程中最小单元的完整步骤。如图2所示,记录下数据后,我们就可以非常方便的对整个流程进行回归了,具体步骤如下:(1)基于JUnit4编写测试类,在TESTCASE中读取Replay.rcd文件中的数据内容。(2)按照图1所示流程记录的数据重新的调用测试人员测试的业务流程调用的接口。(3)获取请求参数、Controller类和方法,调用Controller中的方法。(4)Controller调用Service,Service会与持久层Dao交互,这里我们还是返会代理的Dao,为了保证回归测试能重复,有效的进行,屏蔽数据的影响,在代理类中不会真正去与数据库交互,而是根据具体调用的Dao方法、入参和调用次数返回我们测试人员测试过程中的数据,这样能够保证预期和实际结果的一致性,排除外部影响,使得TESTCASE测试的是代码逻辑。(5)Controller收到Service的返回值后,同样会生成响应,这时候我们会将响应与文件中记录的响应进行断言,如果结果一致,断言通过,表明该请求的回归测试通过;如果结果不一致,断言失败,则表明会请求回归测试失败。这时候需要对失败原因进行记录分析,失败的原因可能是代码逻辑问题,需要我们检查代码逻辑;也可能是业务逻辑的变更导致预期不正确等,需要我们变更预期等。这样我们就能够快速的完成回归测试并能准确迅速的定位问题。以电商网站下单为例,使用本专利技术加入记录业务数据内容后重新部署我们的项目,测试人员在网页中只需直接进行下单操作即可,下单流程结束后,如果想进行回归测试,可以通过MAVEN运行测试类,就会重现原先测试人员测试的下单流程。屏蔽持久层是为了让回归测试多次执行都能得到和测试人员网页测试一致的持久层响应,所以我们也需要记录持久层方法的调用情况和响应,例如测试人员在页面下单会造成库存的减少,如果不屏蔽持久层,多次执行回归测试就会得到不同的响应。数据的记录只是生成数据的时候需要,其他情况可以通过开关控制不记录数据,数据文件只有在业务发生变更才需要进行修改或者重新录入,其余情况都只需要重新执行我们的测试类就可以了。本文档来自技高网...
一种再现测试流程以实现自动化回归测试的方法

【技术保护点】
一种再现测试流程以实现自动化回归测试的方法,其特征在于,包括以下步骤:(1)基于Spring框架,利用AOP拦截控制层Controller所有的HTTP请求,并定义对应的拦截器;(2)在拦截器中定义一个开关,用户通过开关可以在正常的业务流程和生成测试用例的业务流程之间切换,当用户选择生成测试用例的模式,保存所有请求调用的方法、传入的参数以及响应结果到指定文件中;(3)屏蔽数据库持久层,保证每次相同的请求在持久层都能获得相同的响应,具体为:实现BeanPostProcessor接口,然后在postProcessAfterInitialization方法中将持久层接口对象替换为动态代理对象,并记录持久层接口的所有方法的传入的参数和响应结果到指定文件中,同一参数多次调用同一方法时,依次记录;(4)部署项目后,测试人员可以在网页上进行正常业务流程的操作,保存正常业务流程发送的请求调用的控制层和持久层的方法、传入的参数以及响应结果到指定文件中;(5)基于JUnit4和正常业务流程结束后得到的数据进行回归测试:依次调用Controller中的方法,获取HTTP请求的响应结果后与文件中保存的响应结果做对比,如果对比通过则表明该请求通过了回归测试,否则未通过回归测试。...

【技术特征摘要】
1.一种再现测试流程以实现自动化回归测试的方法,其特征在于,包括以下步骤:(1)基于Spring框架,利用AOP拦截控制层Controller所有的HTTP请求,并定义对应的拦截器;(2)在拦截器中定义一个开关,用户通过开关可以在正常的业务流程和生成测试用例的业务流程之间切换,当用户选择生成测试用例的模式,保存所有请求调用的方法、传入的参数以及响应结果到指定文件中;(3)屏蔽数据库持久层,保证每次相同的请求在持久层都能获得相同的响应,具体为:实现BeanPostProcessor接口,然后在postProcessAfterInitialization方法中将持久层接口对象替换为动态代理对象,并记录持久层接口的所有...

【专利技术属性】
技术研发人员:江继舟李明华祝晓春李善平
申请(专利权)人:浙江网新恒天软件有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1