CN107608898B - 一种再现测试流程以实现自动化回归测试的方法 - Google Patents

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

Info

Publication number
CN107608898B
CN107608898B CN201710936403.0A CN201710936403A CN107608898B CN 107608898 B CN107608898 B CN 107608898B CN 201710936403 A CN201710936403 A CN 201710936403A CN 107608898 B CN107608898 B CN 107608898B
Authority
CN
China
Prior art keywords
test
business process
normal business
regression
layer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710936403.0A
Other languages
English (en)
Other versions
CN107608898A (zh
Inventor
江继舟
李明华
祝晓春
李善平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Insigma Hengtian Software Ltd
Original Assignee
Insigma Hengtian Software Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Insigma Hengtian Software Ltd filed Critical Insigma Hengtian Software Ltd
Priority to CN201710936403.0A priority Critical patent/CN107608898B/zh
Publication of CN107608898A publication Critical patent/CN107608898A/zh
Application granted granted Critical
Publication of CN107608898B publication Critical patent/CN107608898B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

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

Description

一种再现测试流程以实现自动化回归测试的方法
技术领域
本发明涉及自动化回归测试,尤其涉及一种再现测试流程以实现自动化回归测试的方法,帮助记录业务流程并能简单快速地完成测试用例的回归和迭代。
背景技术
回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极限编程方法中,更是要求每天都进行若干次回归测试。
回归测试是软件测试中的一个十分重要而且昂贵的过程,所以研究如何减少回归测试的成本,提高回归测试效率的研究十分重要。
发明内容
本发明的目的在于减轻回归测试的压力,提供一种简单高效的方法进行自动化回归测试。
本发明的目的是通过以下技术方案来实现的:本发明通过配置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编写测试类,在TEST CASE中读取Replay.rcd文件中的数据内容。
(2)按照图1所示流程记录的数据重新的调用测试人员测试的业务流程调用的接口。
(3)获取请求参数、Controller类和方法,调用Controller中的方法。
(4)Controller调用Service,Service会与持久层Dao交互,这里我们还是返会代理的Dao,为了保证回归测试能重复,有效的进行,屏蔽数据的影响,在代理类中不会真正去与数据库交互,而是根据具体调用的Dao方法、入参和调用次数返回我们测试人员测试过程中的数据,这样能够保证预期和实际结果的一致性,排除外部影响,使得TEST CASE测试的是代码逻辑。
(5)Controller收到Service的返回值后,同样会生成响应,这时候我们会将响应与文件中记录的响应进行断言,如果结果一致,断言通过,表明该请求的回归测试通过;如果结果不一致,断言失败,则表明会请求回归测试失败。这时候需要对失败原因进行记录分析,失败的原因可能是代码逻辑问题,需要我们检查代码逻辑;也可能是业务逻辑的变更导致预期不正确等,需要我们变更预期等。这样我们就能够快速的完成回归测试并能准确迅速的定位问题。
以电商网站下单为例,使用本发明加入记录业务数据内容后重新部署我们的项目,测试人员在网页中只需直接进行下单操作即可,下单流程结束后,如果想进行回归测试,可以通过MAVEN运行测试类,就会重现原先测试人员测试的下单流程。屏蔽持久层是为了让回归测试多次执行都能得到和测试人员网页测试一致的持久层响应,所以我们也需要记录持久层方法的调用情况和响应,例如测试人员在页面下单会造成库存的减少,如果不屏蔽持久层,多次执行回归测试就会得到不同的响应。数据的记录只是生成数据的时候需要,其他情况可以通过开关控制不记录数据,数据文件只有在业务发生变更才需要进行修改或者重新录入,其余情况都只需要重新执行我们的测试类就可以了。

Claims (2)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710936403.0A CN107608898B (zh) 2017-10-10 2017-10-10 一种再现测试流程以实现自动化回归测试的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710936403.0A CN107608898B (zh) 2017-10-10 2017-10-10 一种再现测试流程以实现自动化回归测试的方法

Publications (2)

Publication Number Publication Date
CN107608898A CN107608898A (zh) 2018-01-19
CN107608898B true CN107608898B (zh) 2020-01-07

Family

ID=61068354

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710936403.0A Active CN107608898B (zh) 2017-10-10 2017-10-10 一种再现测试流程以实现自动化回归测试的方法

Country Status (1)

Country Link
CN (1) CN107608898B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108572910A (zh) * 2017-03-14 2018-09-25 百度在线网络技术(北京)有限公司 用于客户端的实验方法和装置
CN109684194A (zh) * 2018-10-25 2019-04-26 北京中关村科金技术有限公司 一种自动化流程回归测试系统
CN109491258B (zh) * 2018-11-08 2021-08-31 青岛大学 一种智能家居系统的回归测试系统
CN111221721B (zh) * 2018-11-27 2023-09-05 中国移动通信集团上海有限公司 一种单元测试案例自动化录制和执行方法及装置
CN112054993B (zh) * 2020-08-04 2022-05-06 南京焦点领动云计算技术有限公司 一种网站跨站脚本攻击的防御方法
CN112650688A (zh) * 2020-12-30 2021-04-13 深圳前海微众银行股份有限公司 自动化回归测试方法、关联设备以及计算机程序产品
CN116302365B (zh) * 2023-05-17 2023-08-15 建信金融科技有限责任公司 数据持久层的测试方法、装置、电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101957792A (zh) * 2010-08-26 2011-01-26 武汉工程大学 一种基于契约的aop应用程序中行为冲突问题的自动检查方法
CN107122289A (zh) * 2016-02-25 2017-09-01 阿里巴巴集团控股有限公司 系统回归测试的方法、装置及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101957792A (zh) * 2010-08-26 2011-01-26 武汉工程大学 一种基于契约的aop应用程序中行为冲突问题的自动检查方法
CN107122289A (zh) * 2016-02-25 2017-09-01 阿里巴巴集团控股有限公司 系统回归测试的方法、装置及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向方面软件测试的研究进展;顾海波等;《计算机科学》;20080925;第35卷(第09期);第266-277页 *

Also Published As

Publication number Publication date
CN107608898A (zh) 2018-01-19

Similar Documents

Publication Publication Date Title
CN107608898B (zh) 一种再现测试流程以实现自动化回归测试的方法
US10552301B2 (en) Completing functional testing
US10783065B2 (en) Unified test automation system
CN103150249B (zh) 一种自动化测试的方法和系统
US20100115496A1 (en) Filter generation for load testing managed environments
Subraya et al. Object driven performance testing of Web applications
US20130024847A1 (en) Software test automation systems and methods
US20140237451A1 (en) Exposing method related data calls during testing in an event driven, multichannel architecture
US20090193391A1 (en) Model-based testing using branches, decisions , and options
US20110004868A1 (en) Test Generation from Captured User Interface Status
CN111124919A (zh) 一种用户界面的测试方法、装置、设备及存储介质
JP5213671B2 (ja) テストケースの選択方法及び選択システム
US10496379B2 (en) Facilitated production of code for software testing
US20190079854A1 (en) Systems and methods for executing tests
US10592703B1 (en) Method and system for processing verification tests for testing a design under test
CN111625434A (zh) 一种数据库oltp基准性能测试方法、系统及相关组件
CN112433948A (zh) 一种基于网络数据分析的仿真测试系统及方法
US11341030B2 (en) Scriptless software test automation
CN107038117B (zh) 一种基于事件处理函数间定义-引用的web自动化测试方法
US8850407B2 (en) Test script generation
US8997048B1 (en) Method and apparatus for profiling a virtual machine
CN111400171B (zh) 一种接口测试方法、系统、装置及可读存储介质
CN111881056A (zh) 一种自动化测试框架及测试方法
CN111435327B (zh) 一种日志记录的处理方法、装置及系统
Anand et al. Software reliability modeling with impact of beta testing on release decision

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant