CN110147326A - 基于Redis数据库的微服务自动化测试方法 - Google Patents

基于Redis数据库的微服务自动化测试方法 Download PDF

Info

Publication number
CN110147326A
CN110147326A CN201910433753.4A CN201910433753A CN110147326A CN 110147326 A CN110147326 A CN 110147326A CN 201910433753 A CN201910433753 A CN 201910433753A CN 110147326 A CN110147326 A CN 110147326A
Authority
CN
China
Prior art keywords
mock
aop
class
redis database
micro services
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.)
Granted
Application number
CN201910433753.4A
Other languages
English (en)
Other versions
CN110147326B (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.)
Sichuan XW Bank Co Ltd
Original Assignee
Sichuan XW Bank Co 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 Sichuan XW Bank Co Ltd filed Critical Sichuan XW Bank Co Ltd
Priority to CN201910433753.4A priority Critical patent/CN110147326B/zh
Publication of CN110147326A publication Critical patent/CN110147326A/zh
Application granted granted Critical
Publication of CN110147326B publication Critical patent/CN110147326B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及基于Redis数据库的微服务自动化测试方法,包括:A.对需要被远程服务调用的AOP方法设置Mock注解,在所述的Mock注解类中包括有用于获取Redis数据库中数据的参数key,以及该AOP方法对应的远程服务名,所述的远程服务名用于标记该AOP方法是否允许被Mock测试;B.设置与类签名相关联的Remote注解类,用于标记在该类中包含有远程调用的方法;C.设置用于拦截所有远程调用AOP方法的拦截类,根据被调用的AOP方法是否允许被Mock测试的判断,返回相应不同的结果。本发明能够使微服务可以进行动态的Mock测试,大幅度提高了测试的灵活性并显著降低了开发测试程序的成本和难度。

Description

基于Redis数据库的微服务自动化测试方法
技术领域
本发明涉及应用程序组件的测试方法,具体的讲是基于Redis数据库的微服务自动化测试方法。
背景技术
在互联网分布式技术领域中,微服务的架构模式已经逐步占据主流地位。在将应用模块拆分成微服务后,服务之间的依赖与协作网络变的错综复杂,如何提高存在外部依赖的微服务的可测性,这将直接影响到软件交付的周期与质量。
在现有的微服务测试技术中,常采用开发接口挡板程序的方式来解决外部的依赖问题。但是使用挡板程序本身存在很大的局限性。首先,挡板程序本身不够灵活,调用挡板程序返回的结果是静态结果,无法根据不同输入返回特定应答。第二,当被测微服务的接口发生变化时,挡板程序需要做针对性的修改升级,在开发初期,接口的改动频率是很高的。第三,挡板程序需要单独部署,需要占用硬件资源。因此需要提出提出一种新的测试方法来解决目前存在的上述问题。
发明内容
本发明提供了一种基于Redis数据库的微服务自动化测试方法,以轻量化的结构使微服务可以进行动态的Mock测试,提高测试的灵活性并降低开发测试程序的成本和难度。
本发明基于Redis数据库的微服务自动化测试方法,包括:
A.对需要被远程服务调用的AOP方法(面向切面编程,OOP的延伸)设置Mock注解,在所述的Mock注解类中包括有用于获取Redis数据库中数据的参数key,以及该AOP方法对应的远程服务名,所述的远程服务名用于标记该AOP方法是否允许被Mock测试;
B.设置与类签名相关联的Remote注解类,用于标记在该类中包含有远程调用的方法;
C.设置用于拦截所有远程调用AOP方法的拦截类,根据被调用的AOP方法是否允许被Mock测试的判断,返回相应不同的结果。
Redis数据库是一种支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Mock测试是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法,如:股票行情,天气预报等。
本发明的方法采用Java注解方式得以实现,对代码的侵入性低,实现简单。采用AOP技术实现的测试接口/类,可以像插件一样随时添加或删除,且不影响正常业务逻辑的执行。并且Mock测试的粒度可以设计的非常细,可以精确到服务方法的级别,场景使用更加灵活。
具体的,步骤C中将远程调用AOP方法的请求拦截后所述的判断包括:
C1.AOP方法允许被Mock测试的情况:当前所调用的AOP方法所在的类,有步骤B所述的Remote注解,并且该方法有Mock注解时,根据Mock注解中的key值以及调用方法的请求参数,动态拼接成一个key,根据此key在Redis数据库中获取结果,并将结果序列化成业务逻辑所需的Mock对象返回。Redis数据库的Key值设计采用动态拼接方式,使用固定前缀+真实请求参数进行生成,由此可以Mock测试所有场景的结果;
C2.AOP方法不允许被Mock测试的情况:当前所调用的AOP方法不含Mock注解,或该AOP方法对应的类名不在允许被Mock测试的配置列表中时,直接执行远程调用逻辑,并将得到的真实要使用的内部对象返回。
进一步的,步骤C1中动态拼接key时,将入参列表用分隔符隔开。在此基础上,步骤D1中动态拼接key时,当入参为复杂对象时,使用该复杂对象的hash值来拼接。
本发明基于Redis数据库的微服务自动化测试方法的有益效果包括:
1、操作简单,只需要把待测试的Mock数据放入Redis数据库中即可,无需开发挡板程序。相比现有的挡板程序测试方案,直接省去了挡板程序的开发时间与部署成本。
2、所涉及开发的组件都非常轻量,使用Java AOP组件来实现,程序侵入性非常低,只需要在被测试的类上加Remote注解,被测试的方法上加上Mock注解即可,这样极大的提高了测试的灵活性。
3、可以通过开关灵活控制是否选择开启Mock测试,而现有挡板程序则需要修改程序的配置文件中的服务资源地址(如url、端口号等)为挡板环境才可以正常运作。
4、本发明的Mock结果为动态内容,结果可随时根据测试需求进行动态更改,完全能够满足复杂业务的测试场景,并且还方便自动化测试脚本的编写。
5、测试人员的学习成本非常低,只要学会简单的Redis操作命令即可,极大程度降低了测试人员对程序开发技能的要求,减少了软件交付的周期,而且还提高了交付质量。
以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
附图说明
图1为本发明基于Redis数据库的微服务自动化测试方法的流程图。
具体实施方式
如图1所示本发明基于Redis数据库的微服务自动化测试方法,包括:
A.对需要被远程服务调用的AOP方法(面向切面编程,OOP的延伸)设置Mock注解,在所述的Mock注解类中包括有用于获取Redis数据库中数据的参数key,以及该AOP方法对应的远程服务名service,所述的远程服务名service用于标记该AOP方法是否允许被Mock测试;主要代码为:
B.设置与类签名相关联的Remote注解类,用于标记在该类中包含有远程调用的方法;主要代码为:
1.@Target(ElementType.TYPE)
2.@Retention(RetentionPolicy.RUNTIME)
3.@Documented
4.public@interface Remote{
5.}
C.Mock测试的开关配置:
remote.mock.service:允许Mock测试的服务列表,使用逗号分隔;
remote.mock.enabled:Mock开关,当值为true时,Mock测试生效,默认false。
设置用于拦截所有远程调用AOP方法的拦截类,根据被调用的AOP方法是否允许被Mock测试的判断:
C1.AOP方法允许被Mock测试的情况:当前所调用的AOP方法所在的类,有步骤B所述的Remote注解,并且该方法有Mock注解(即Mock开关为true)时,根据Mock注解中的key值以及调用方法的请求参数,动态拼接成一个key,拼接方式为:key#[逗号隔开的入参列表],如果入参为复杂对象,方括号内会使用对象的Hash值作为内容。根据此key在Redis数据库中获取结果,并将结果序列化成业务逻辑所需的Mock对象返回。Redis数据库的Key值设计采用动态拼接方式,使用固定前缀+真实请求参数进行生成,由此可以Mock测试所有场景的结果;
C2.AOP方法不允许被Mock测试的情况:当前所调用的AOP方法不含Mock注解,或该AOP方法对应的类名不在允许被Mock测试的配置列表中(即Mock开关为false)时,直接执行远程调用逻辑,并将得到的真实要使用的内部对象返回。
主要代码为:

Claims (4)

1.基于Redis数据库的微服务自动化测试方法,其特征包括:
A.对需要被远程服务调用的AOP方法设置Mock注解,在所述的Mock注解类中包括有用于获取Redis数据库中数据的参数key,以及该AOP方法对应的远程服务名,所述的远程服务名用于标记该AOP方法是否允许被Mock测试;
B.设置与类签名相关联的Remote注解类,用于标记在该类中包含有远程调用的方法;
C.设置用于拦截所有远程调用AOP方法的拦截类,根据被调用的AOP方法是否允许被Mock测试的判断,返回相应不同的结果。
2.如权利要求1所述的基于Redis数据库的微服务自动化测试方法,其特征为:步骤C中将远程调用AOP方法的请求拦截后所述的判断包括:
C1.AOP方法允许被Mock测试的情况:当前所调用的AOP方法所在的类,有步骤B所述的Remote注解,并且该方法有Mock注解时,根据Mock注解中的key值以及调用方法的请求参数,动态拼接成一个key,根据此key在Redis数据库中获取结果,并将结果序列化成业务逻辑所需的Mock对象返回;
C2.AOP方法不允许被Mock测试的情况:当前所调用的AOP方法不含Mock注解,或该AOP方法对应的类名不在允许被Mock测试的配置列表中时,直接执行远程调用逻辑,并将得到的真实要使用的内部对象返回。
3.如权利要求2所述的基于Redis数据库的微服务自动化测试方法,其特征为:步骤C1中动态拼接key时,将入参列表用分隔符隔开。
4.如权利要求3所述的基于Redis数据库的微服务自动化测试方法,其特征为:步骤C1中动态拼接key时,当入参为复杂对象时,使用该复杂对象的hash值来拼接。
CN201910433753.4A 2019-05-23 2019-05-23 基于Redis数据库的微服务自动化测试方法 Active CN110147326B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910433753.4A CN110147326B (zh) 2019-05-23 2019-05-23 基于Redis数据库的微服务自动化测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910433753.4A CN110147326B (zh) 2019-05-23 2019-05-23 基于Redis数据库的微服务自动化测试方法

Publications (2)

Publication Number Publication Date
CN110147326A true CN110147326A (zh) 2019-08-20
CN110147326B CN110147326B (zh) 2023-05-26

Family

ID=67592920

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910433753.4A Active CN110147326B (zh) 2019-05-23 2019-05-23 基于Redis数据库的微服务自动化测试方法

Country Status (1)

Country Link
CN (1) CN110147326B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110633213A (zh) * 2019-09-19 2019-12-31 浙江大搜车软件技术有限公司 单元测试方法、装置、计算机设备和存储介质
CN110673858A (zh) * 2019-08-30 2020-01-10 四川新网银行股份有限公司 一种基于ssh免密登录协议的轻量级部署方法
CN110825641A (zh) * 2019-11-08 2020-02-21 安徽继远检验检测技术有限公司 一种基于模拟数据生成器的微服务应用测试工具集
CN111045650A (zh) * 2019-12-12 2020-04-21 深圳前海环融联易信息科技服务有限公司 Mocker联调工具的设计方法、装置及计算机设备
CN111181805A (zh) * 2019-12-25 2020-05-19 航天信息股份有限公司 一种基于测试用例的微服务测试挡板生成方法及系统
CN112306864A (zh) * 2020-10-19 2021-02-02 北京健康之家科技有限公司 基于微服务的Mock测试方法和系统、存储介质、计算设备
CN112711421A (zh) * 2020-12-28 2021-04-27 广州品唯软件有限公司 跨服务Mock数据的共享使用方法、系统、设备及存储介质
CN112765030A (zh) * 2021-01-22 2021-05-07 中信银行股份有限公司 测试方法、装置、电子设备及计算机存储介质
CN112765029A (zh) * 2021-01-22 2021-05-07 中信银行股份有限公司 测试方法、装置、电子设备及计算机存储介质
CN113468041A (zh) * 2020-03-30 2021-10-01 北京沃东天骏信息技术有限公司 一种接口对比测试方法和装置

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080005723A1 (en) * 2004-11-15 2008-01-03 Peter Zimmerer Method For Manipulating Software-Tests
CN104834590A (zh) * 2014-02-11 2015-08-12 腾讯科技(深圳)有限公司 软件测试方法和系统
CN105389256A (zh) * 2015-11-11 2016-03-09 中国建设银行股份有限公司 一种单元测试方法及系统
US20160266999A1 (en) * 2014-08-07 2016-09-15 International Business Machines Corporation Generation of automated unit tests for a controller layer system and method
CN106547681A (zh) * 2015-09-18 2017-03-29 北京京东尚科信息技术有限公司 数据自动加载并复用模拟服务测试的方法和装置
CN107329890A (zh) * 2017-06-06 2017-11-07 北京金山安全软件有限公司 基于Mock的测试方法、装置及服务器
CN108345535A (zh) * 2017-12-26 2018-07-31 阿里巴巴集团控股有限公司 mock测试方法、装置及设备
CN108427644A (zh) * 2018-03-27 2018-08-21 深圳市买买提信息科技有限公司 服务测试方法、服务测试系统及服务测试装置
CN108985092A (zh) * 2017-06-05 2018-12-11 北京京东尚科信息技术有限公司 提交请求的过滤方法、装置、电子设备和存储介质
CN109144534A (zh) * 2017-06-28 2019-01-04 北京京东尚科信息技术有限公司 服务模块动态更新方法、装置及电子设备
CN109446063A (zh) * 2018-09-18 2019-03-08 深圳壹账通智能科技有限公司 接口测试方法、装置、计算机设备和存储介质
CN109739656A (zh) * 2018-11-29 2019-05-10 东软集团股份有限公司 接口数据模拟方法、装置、存储介质和电子设备

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080005723A1 (en) * 2004-11-15 2008-01-03 Peter Zimmerer Method For Manipulating Software-Tests
CN104834590A (zh) * 2014-02-11 2015-08-12 腾讯科技(深圳)有限公司 软件测试方法和系统
US20160266999A1 (en) * 2014-08-07 2016-09-15 International Business Machines Corporation Generation of automated unit tests for a controller layer system and method
CN106547681A (zh) * 2015-09-18 2017-03-29 北京京东尚科信息技术有限公司 数据自动加载并复用模拟服务测试的方法和装置
CN105389256A (zh) * 2015-11-11 2016-03-09 中国建设银行股份有限公司 一种单元测试方法及系统
CN108985092A (zh) * 2017-06-05 2018-12-11 北京京东尚科信息技术有限公司 提交请求的过滤方法、装置、电子设备和存储介质
CN107329890A (zh) * 2017-06-06 2017-11-07 北京金山安全软件有限公司 基于Mock的测试方法、装置及服务器
CN109144534A (zh) * 2017-06-28 2019-01-04 北京京东尚科信息技术有限公司 服务模块动态更新方法、装置及电子设备
CN108345535A (zh) * 2017-12-26 2018-07-31 阿里巴巴集团控股有限公司 mock测试方法、装置及设备
CN108427644A (zh) * 2018-03-27 2018-08-21 深圳市买买提信息科技有限公司 服务测试方法、服务测试系统及服务测试装置
CN109446063A (zh) * 2018-09-18 2019-03-08 深圳壹账通智能科技有限公司 接口测试方法、装置、计算机设备和存储介质
CN109739656A (zh) * 2018-11-29 2019-05-10 东软集团股份有限公司 接口数据模拟方法、装置、存储介质和电子设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
卢佳伟: "AspectJ在Java单元测试中的应用研究", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 *
庄宿亮: "AOP切入点故障注入测试技术研究", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 *
徐金宝;解芳;吴美红;李升;: "轻量级Java EE框架下软件测试的应用研究" *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110673858A (zh) * 2019-08-30 2020-01-10 四川新网银行股份有限公司 一种基于ssh免密登录协议的轻量级部署方法
CN110673858B (zh) * 2019-08-30 2023-04-11 四川新网银行股份有限公司 一种基于ssh免密登录协议的轻量级部署方法
CN110633213A (zh) * 2019-09-19 2019-12-31 浙江大搜车软件技术有限公司 单元测试方法、装置、计算机设备和存储介质
CN110633213B (zh) * 2019-09-19 2023-07-04 浙江大搜车软件技术有限公司 单元测试方法、装置、计算机设备和存储介质
CN110825641A (zh) * 2019-11-08 2020-02-21 安徽继远检验检测技术有限公司 一种基于模拟数据生成器的微服务应用测试工具集
CN110825641B (zh) * 2019-11-08 2023-12-29 安徽继远检验检测技术有限公司 一种基于模拟数据生成器的微服务应用测试系统
CN111045650A (zh) * 2019-12-12 2020-04-21 深圳前海环融联易信息科技服务有限公司 Mocker联调工具的设计方法、装置及计算机设备
CN111181805A (zh) * 2019-12-25 2020-05-19 航天信息股份有限公司 一种基于测试用例的微服务测试挡板生成方法及系统
CN111181805B (zh) * 2019-12-25 2022-04-29 航天信息股份有限公司 一种基于测试用例的微服务测试挡板生成方法及系统
CN113468041A (zh) * 2020-03-30 2021-10-01 北京沃东天骏信息技术有限公司 一种接口对比测试方法和装置
CN112306864A (zh) * 2020-10-19 2021-02-02 北京健康之家科技有限公司 基于微服务的Mock测试方法和系统、存储介质、计算设备
CN112711421A (zh) * 2020-12-28 2021-04-27 广州品唯软件有限公司 跨服务Mock数据的共享使用方法、系统、设备及存储介质
CN112711421B (zh) * 2020-12-28 2024-04-19 广州品唯软件有限公司 跨服务Mock数据的共享使用方法、系统、设备及存储介质
CN112765029A (zh) * 2021-01-22 2021-05-07 中信银行股份有限公司 测试方法、装置、电子设备及计算机存储介质
CN112765030A (zh) * 2021-01-22 2021-05-07 中信银行股份有限公司 测试方法、装置、电子设备及计算机存储介质

Also Published As

Publication number Publication date
CN110147326B (zh) 2023-05-26

Similar Documents

Publication Publication Date Title
CN110147326A (zh) 基于Redis数据库的微服务自动化测试方法
US10229039B2 (en) Testing a virtual network function by a virtual network tester
Labiche et al. Testing levels for object-oriented software
CN108984389B (zh) 一种应用程序测试方法及终端设备
CN106484622A (zh) 测试方法、装置及系统
CN106339312A (zh) Api测试方法和系统
US20090313603A1 (en) System And Method For Creating Virtual Callback Objects
CN106021093A (zh) 一种测试用例复用的方法及系统
CN112988572B (zh) 多环境多渠道多版本模拟测试方法及装置
CN106326088A (zh) 实现构建测试对象的方法、装置及业务配置测试的装置
CN103455413A (zh) 一种通讯终端交互场景测试数据处理方法、装置和系统
CN109977012B (zh) 系统的联调测试方法、装置、设备及计算机可读存储介质
GB2587432A (en) System and method for software architecture redesign
CN110489087A (zh) 一种生成分形结构的方法、装置、介质和电子设备
CN110084567A (zh) 电子印章使用方法、装置、设备及计算机可读存储介质
CN112148580A (zh) 测试方法、装置及电子设备
CN112597015A (zh) 一种系统测试方法、装置、计算机设备和存储介质
CN106503546A (zh) 一种安卓应用程序的检测筛选方法
CN109656817A (zh) 一种自动化接口测试装置和设备
CN101227349B (zh) 一种系统变更的自动测试装置及方法
CN108632085A (zh) 灰度用户管理方法、装置、平台及存储介质
CN116820978A (zh) 一种基于Redis数据库的微服务自动化测试方法
CN105319480B (zh) 线路诊断方法及装置
CN100512343C (zh) 一种数字用户线互通性自动化测试装置及方法
CN103176904B (zh) 一种仿真测试平台软件架构及基于该架构的测试方法

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