CN112380115A - 一种回归测试方法、装置、电子设备及存储介质 - Google Patents
一种回归测试方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112380115A CN112380115A CN202011241224.3A CN202011241224A CN112380115A CN 112380115 A CN112380115 A CN 112380115A CN 202011241224 A CN202011241224 A CN 202011241224A CN 112380115 A CN112380115 A CN 112380115A
- Authority
- CN
- China
- Prior art keywords
- data
- test
- entry
- calling
- regression
- 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.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 227
- 238000003860 storage Methods 0.000 title claims description 15
- 238000000034 method Methods 0.000 claims abstract description 304
- 238000000586 desensitisation Methods 0.000 claims abstract description 16
- 238000004519 manufacturing process Methods 0.000 claims description 18
- 238000005070 sampling Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 8
- 230000002708 enhancing effect Effects 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 5
- 238000010998 test method Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 10
- 238000011161 development Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
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
本发明提供一种回归测试方法,包括:以方法为粒度录制生产上的全链路数据,分别得到多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中;实时消费kafka中的录制数据,得到脱敏数据;将脱敏数据存储至Redis***中,汇总得到多条调用链的回归测试数据,并存储至MongoDB中,以消息的形式同步至测试环境中;在测试环境中,调用方法,拦***问线上数据库和配套服务的方法,测试回归测试数据中的输入参数,得到测试返回值;选择除拦截的方法外的入口方法和入口方法的调用方法,逐级比对测试返回值与对应的回归测试数据中的返回值,得到测试结果;测试结果包括:完全正确,正确和错误。
Description
技术领域
本发明涉及测试技术领域,尤其涉及一种回归测试方法、装置、电子设备及存储介质。
背景技术
在项目开发中经常存在,为了修复一个bug或者开发一个新功能,而引进了一个新的bug。目前,通常通过业务主流程的回归测试,检测是否存在bug。目前的回归测试,只能支持同步的服务,是基于线上环境流量复制来实现的,只能测试部分形式的数据,无法测试全链路的数据。对于回归测试带来了很大的不便,降低了测试的准确性,影响开发的效率。
发明内容
有鉴于此,本发明的目的在于提出一种回归测试方法、装置、电子设备及存储介质,以解决现有的问题。
基于上述目的,本发明提供了一种回归测试方法,包括:
以方法为粒度录制生产上的全链路数据,分别得到多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中;所述方法包括入口方法和该入口方法的调用方法;
实时消费kafka中的录制数据,得到脱敏数据;将脱敏数据存储至Redis***中,汇总得到多条调用链的回归测试数据,并存储至MongoDB中,以消息的形式同步至测试环境中;
在测试环境中,调用方法,拦***问线上数据库和配套服务的方法,测试回归测试数据中的输入参数,得到测试返回值;
选择除拦截的方法外的入口方法和入口方法的调用方法,逐级比对测试返回值与对应的回归测试数据中的返回值,得到测试结果;所述测试结果包括:完全正确,正确和错误。
在其中一个实施例中,逐级比对测试返回值与对应的回归测试数据中的返回值,得到测试结果具体包括:
当入口方法和入口方法的调用方法的比对均为一致时,测试结果为完全正确;当入口方法的比对为一致,而入口方法的调用方法的比对不一致时,测试结果为正确;当入口方法的比对为不一致时,测试结果为错误。
在其中一个实施例中,还包括:当测试结果为正确或错误时,不允许发布版本,并将比对为不一致的方法显示。
在其中一个实施例中,所述以方法为粒度录制生产上的全链路数据,分别得到多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中具体包括:
按照预设规则采集部分入口方法和入口方法的调用方法的输入参数和返回值,得到有效数据;
增强所述有效数据,使所述有效数据具有父ID字段和全局交易码;
将具有父ID字段和全局交易码的有效数据,以消息的形式发送至kafka的java客户端中,并同步至kafka的消息队列中。
在其中一个实施例中,所述增强所述有效数据,使所述有效数据具有父ID字段和全局交易码包括:
在入口方法中,生成全局交易码的标识,并存储至线程共享中,使入口方法和该入口方法的调用方法的全局交易码相同;
在入口方法中,生成父ID和当前方法ID,并令入口方法的父ID和当前方法ID相同,该入口方法的调用方法的父ID为其上一层方法的当前方法ID。
在其中一个实施例中,所述预设规则包括:在相同的采样时间内,入口方法的采集数量小于等于预设的最大采样数。
在其中一个实施例中,所述实时消费kafka中的录制数据包括:对录制数据中包含敏感信息的数据进行敏感信息脱除处理;所述敏感信息包括用户名、密码、身份证号码、手机号码、金额和地址。
本发明实施例还提供一种回归测试的装置,包括:
方法录制模块,用于以方法为粒度录制生产上的全链路数据,分别得到多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中;所述方法包括入口方法和该入口方法的调用方法;
消息消费模块,用于消费kafka中的录制数据,得到脱敏数据;将脱敏数据存储至Redis***中,汇总得到多条调用链的回归测试数据,并存储至MongoDB中,以消息的形式同步至测试环境中;
测试模块,用于在测试环境中,调用方法,拦***问线上数据库和配套服务的方法,测试回归测试数据中的输入参数,得到测试返回值;
比对模块,用于选择除拦截的方法外的入口方法和入口方法的调用方法,逐级比对测试返回值与对应的回归测试数据中的返回值,得到测试结果;所述测试结果包括:完全正确,正确和错误。
本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任意一项所述的方法。
本发明实施例还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如前任一所述方法。
从上面所述可以看出,本发明提供的回归测试方法,通过以方法为粒度录制生产上的全链路数据,分别得到多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中;所述方法包括入口方法和该入口方法的调用方法;实时消费kafka中的录制数据,得到脱敏数据;将脱敏数据存储至Redis***中,汇总得到多条调用链的回归测试数据,并存储至MongoDB中,以消息的形式同步至测试环境中;在测试环境中,调用方法,拦***问线上数据库和配套服务的方法,测试回归测试数据中的输入参数,得到测试返回值;选择除拦截的方法外的入口方法和入口方法的调用方法,逐级比对测试返回值与对应的回归测试数据中的返回值,得到测试结果;所述测试结果包括:完全正确,正确和错误。采集全链路形式的数据,不仅能够测试入口方法,还能够测试入口方法所调用的所有方法,从而对全链路数据进行多维度测试,极大地提高了测试的精度,降低了生产的事故率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的回归测试方法的流程示意图;
图2为本发明实施例的以方法为粒度录制生产上的数据的流程示意图;
图3为本发明实施例的回归测试装置的示意图;
图4为本发明实施例的电子设备硬件结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
需要说明的是,除非另外定义,本发明实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
本发明的发明人,在长期的回归测试的研究工作中注意到,现有的测试方法通过工具例如Diffy和gor等获取用于功能、性能测试的数据。而这些工具仅从线上环境复制流量,只能复制类似http请求响应的数据,不能复制全链路的数据。因此,现有的回归测试方法,无法进行全链路的回归测试,测试结果不够准确,无法全面检测项目开发中存在的问题。
发明人提出了一种回归测试的方法,以方法为粒度复制全链路数据,得到录制的生产上的数据,并将数据中的输入参数和返回值脱敏后同步至测试环境中,在测试环境中,调用各个维度的方法,以脱敏后的输入参数为测试数据,得到测试的返回值。比对所有方法的测试的返回值与脱敏后的返回值,得到各个维度的比对结果,大大提高了测试的准确性,降低了生产上的事故率。
请参阅图1,本说明书一个或多个实施例提供一种回归测试方法,包括:
S100,以方法为粒度录制生产上的数据,分别得到多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中;所述方法包括入口方法和该入口方法的调用方法;
S200,实时消费kafka中的录制数据,得到脱敏数据;将脱敏数据存储至Redis***中,汇总得到多条调用链的回归测试数据,并存储至MongoDB中,以消息的形式同步至测试环境中;
S300,在测试环境中,调用方法,拦***问线上数据库和配套服务的方法,测试回归测试数据中的输入参数,得到测试返回值;
S400,选择除拦截的方法外的入口方法和入口方法的调用方法,逐级比对测试返回值与对应的回归测试数据中的返回值,得到比对结果;所述比对结果包括:完全正确,正确和错误。
本发明实施例的回归测试方法,通过以方法为粒度录制生产上的数据,分别得到多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中;所述方法包括入口方法和该入口方法的调用方法;实时消费kafka中的录制数据,得到脱敏数据;将脱敏数据存储至Redis***中,汇总得到多条调用链的回归测试数据,并存储至MongoDB中,以消息的形式同步至测试环境中;在测试环境中,调用方法,拦***问线上数据库和配套服务的方法,测试回归测试数据中的输入参数,得到测试返回值;选择除拦截的方法外的入口方法和入口方法的调用方法,逐级比对测试返回值与对应的回归测试数据中的返回值,得到比对结果;所述比对结果包括:完全正确,正确和错误。不仅能够测试入口方法,还能够测试入口方法所调用的所有方法,从而对全链路数据进行多维度测试,极大地提高了测试的精度,降低了生产的事故率。
请参阅图2,步骤S100中,可以通过Javaagent的方式实现录制生产上的数据,可以在项目启动时开始录制。
具体可以包括:
S110,按照预设规则采集部分入口方法和入口方法的调用方法的输入参数和返回值,得到有效数据;
S120,增强所述有效数据,使所述有效数据具有父ID字段和全局交易码;
S130,将具有父ID字段和全局交易码的有效数据,以消息的形式发送至kafka的java客户端中,并同步至kafka的消息队列中。
其中,在S110中,预设规则可以为在相同的采样时间内,入口方法的采集数量小于等于预设的最大采样数。也即,采样数据配置最大采样数的规则,以部分采样的方式采样。具体为,在同一时间的入口方法的数量仅允许最大采样数对应的数值。例如同时有10个入口方法并发被执行,最大采样数为5,则在每个时间点最多只有5组数据被录制。通过部分采样的方式,可以避免完全采集生产数据,导致的数据量过于庞大,后续发送至kafka的消息队列中带来的繁琐的后续处理,同时满足测试的准确性的需求。
有效数据包括入口方法和入口方法的调用方法的输入参数和返回值。一组有效数据,包括一个入口方法和该入口方法的调用方法的输入参数和返回值。例如,如A->B,C;B->D,入口方法A调用第二层方法B和C,然后第二层方法B又调用第三层方法D,则录制过程及所得一组有效数据如下:入口方法A的入参,第二层方法B的入参,第三层方法D的入参,第三层方法D的返回值,第二层方法B的返回值,第二层方法C的入参,第二层方法C的返回值和入口方法A的返回值。
应当说明的时,返回值,包括正常返回值和抛出异常。其中,抛出异常在java中即Exception,抛出异常后该方法就没有返回的数据了,也即异常是特殊格式的返回值。
步骤S120,具体可以包括:在入口方法中,生成全局交易码的标识,并存储至线程共享中,使入口方法和该入口方法的调用方法的全局交易码相同;
在入口方法中,生成父ID和当前方法ID,并令入口方法的父ID和当前方法ID相同,该入口方法的调用方法的父ID为其上一层方法的当前方法ID。
其中,全局交易码是类似uuid(Universally Unique Identifier)的唯一标识。通过在入口方法中生成该种标识,然后存储至线程共享中,可以使得每个调用方法中具有该种标识。调用方法的全局交易码,具有与入口方法相同的部分,其余部分存在时间上的关系。
对于父Id字段,在增强后的方法中有processId和invokeId。其中,processId代表父id,invokeId代表当前方法id。也即父Id字段包括父id和当前方法id两种id。在入口方法中两者的值相等。而第二层方法的父id是入口方法(也即顶层方法)的invokeId,依次类推。
通过设置全局交易码和父ID字段,可以在后续的汇总步骤(S200)中,通过这两个值把属于同一条调用链的数据组合在一起。
步骤S110和S120,由Javaagent执行。步骤S130中,可以理解为Javaagent将具有父ID字段和全局交易码的有效数据,以消息的形式向外发送,发送至kafka的java客户端中。
而kafka的java客户端块则按照订阅规则接受该消息并同步发送给kafaka的消息队列中。其中,订阅规则可以理解成一组正则匹配,对于方法和其对外部调用的服务,只要方法录制到项目中的dao访问方法,服务录制到项目中的方法调用,则不需要增强已有目前认为稳定的方法,所以会过滤一些不需要的方法。通过按照订阅规则接受并同步消息至kafaka的消息队列,能够避免由于消息量太大造成数据损失。
在步骤S200中,所述实时消费kafka中的录制数据包括:对录制数据中包含敏感信息的数据进行敏感信息脱除处理;所述敏感信息包括用户名、密码、身份证号码、手机号码、金额和地址。
其中,敏感信息脱除处理,采用现有的脱敏算法进行,例如随机值替换脱敏,将录制数据中敏感信息的数据中的字母变为随机字母,数字变为随机数字等的方式。特殊字符替换脱敏,在录制数据中敏感信息的数据中采用特殊字符(如“*”)替换的方式。应当说明的是,在上述的步骤S100和S200中的,录制生产上的数据,并将得到的多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中,并脱敏和存储。也即,当项目启动时,实时录制并实时发送消息再实时脱敏,存储至Redis***中,在Redis***中实时汇总属于同一条调用链的数据。其中,汇总指的是,根据全局交易码、processId和invokeId将属于同一条调用链的输入参数和返回值,按照方法在时间上执行的先后顺序汇总成一条完整的调用链数据。将该汇总得到的与每个入口方法和入口方法的调用方法的调用链数据,作为回归测试数据,并以消息的形式定时同步至。消费kafka的模块,基于spark实时消费模块消费数据,首先把kafka里面的敏感数据如身份证,手机号等拖敏,存入redis中汇总,直到这个调用链的数据收集全后存入MongoDB,定期把MongoDB中的数据同步到测试环境中。MongoDB(现代应用程序数据库),为基于文档的通用分布式数据库。
在一个具体的实施例中,消费kafka的模块,基于spark实时消费模块消费同步发送至kafka的消息队列的数据,首先把kafka里面的敏感数据如身份证,手机号等拖敏,存入redis中汇总,直到这个调用链的数据收集全后存入MongoDB,定期把MongoDB数据同步到测试环境中。
在步骤S300中,拦***问线上数据库和配套服务的方法,可以通过mock服务实现。具体的,可以设置过滤规则,将需要外部项目和数据库的数据过滤掉,也即涉及到需要外部项目和数据库的方法,会通过mock服务被过滤掉,而其余的方法则可以正常执行。以避免外部项目和数据库的数据没法验证,造成的无用的测试返回值,可以增加测试的效率。
在一个具体的实施例中,测试环境中有另外一个模块,基于javaagnent方式实现的功能。能够通过java反射的机制发起顶层链方法调用,并拦截外部数据库访问和按照某些规则希望被Mock的服务,返回需要测试的输入参数,进行测试。
本说明书一个或多个实施例中,在步骤S400中,逐级比对测试返回值与对应的回归测试数据中的返回值,得到测试结果具体包括:
当入口方法和入口方法的调用方法的比对均为一致时,测试结果为完全正确;当入口方法的比对为一致,而入口方法的调用方法的比对不一致时,测试结果为正确;当入口方法的比对为不一致时,测试结果为错误。
通过逐级比对入口方法和入口方法的调用方法,能够测试各个维度的方法,形成不同维度的测试结果,极大地增强测试的准确性,降低生产的事故率。
在另外的实施例中,逐级比对测试返回值与对应的回归测试数据中的返回值,得到比对结果可以包括:逐级比对入口方法和入口方法的调用方法的测试返回值与对应的回归测试数据中的返回值,判断是否一致,当存在不一致的方法时结束测试,并根据方法的类型输出测试结果。
具体包括:比对入口方法的测试返回值与对应的回归测试数据中的返回值,当不一致时,结束对比,测试结果为错误。
或比对入口方法的测试返回值与对应的回归测试数据中的返回值,当一致时,比对调用方法,当出现不一致时,结束比对,比对结果为正确。
或比对入口方法的测试返回值与对应的回归测试数据中的返回值,当一致时,比对调用方法第一层方法,当均为一致时,比对结果为完全正确。
通过采用逐级比对,当存在测试返回值与对应的回归测试数据中的返回值不一致时,即结束测试,可以节省测试时间,及时查找存在问题的方法。
本说明书一个或多个实施例中,步骤S400之后还可以包括,当测试结果为正确或错误时,不允许发布版本,并将比对为不一致的方法显示。通过将不一致的方法显示,能够给开发人员提供分析,便于开发人员及时改进,解决问题,提高开发效率。
本发明实施例提供的回归测试方法,通过在相同的采样时间内,采集小于等于预设的最大采样数入口方法的采集数量个入口方法,得到入口方法和入口方法的调用方法的输入参数和返回值,并增强使数据具有父ID字段和全局交易码,实现对全链路的数据的录制。并以消息的形式同步至kafka的消息队列中,脱敏得到不含敏感信息的数据,再根据父ID字段和全局交易码汇总得到完整的调用链的数据,并同步至测试环境中,得到用于测试的输入参数。在测试时,通过测试入口方法和入口方法的调用方法,并分别比对测试返回值和脱敏后的返回值,能够得到各个维度的方法的测试结果,极大提高测试正确性,降低生产上的事故率。当比对时,存在测试返回值与脱敏后的返回值不一致的方法,即测试结果为为正确或错误时,不允许发布版本,并将比对为不一致的方法显示,能够为开发人员提供参考,提高开发效率。
需要说明的是,本发明实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本发明实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种回归测试装置。
参考图3,所述回归测试装置,包括:
方法录制模块,用于以方法为粒度录制生产上的全链路数据,分别得到多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中;所述方法包括入口方法和该入口方法的调用方法;
消息消费模块,用于消费kafka中的录制数据,得到脱敏数据;将脱敏数据存储至Redis***中,汇总得到多条调用链的回归测试数据,并存储至MongoDB中,以消息的形式同步至测试环境中;
测试模块,用于在测试环境中,调用方法,拦***问线上数据库和配套服务的方法,测试回归测试数据中的输入参数,得到测试返回值;
比对模块,用于选择除拦截的方法外的入口方法和入口方法的调用方法,逐级比对测试返回值与对应的回归测试数据中的返回值,得到测试结果;所述测试结果包括:完全正确,正确和错误。
本说明书一个或多个实施例中,比对模块逐级比对测试返回值与对应的回归测试数据中的返回值,得到测试结果具体包括:
当入口方法和入口方法的调用方法的比对均为一致时,测试结果为完全正确;当入口方法的比对为一致,而入口方法的调用方法的比对不一致时,测试结果为正确;当入口方法的比对为不一致时,测试结果为错误。
本说明书一个或多个实施例中,还包括显示模块,用于当测试结果为正确或错误时,不允许发布版本,并将比对为不一致的方法显示。
本说明书一个或多个实施例中,方法录制模块包括有效数据采集单元,增强单元,消息发送单元。有效数据采集单元用于按照预设规则采集部分入口方法和入口方法的调用方法的输入参数和返回值,得到有效数据。增强单元用于增强所述有效数据,使所述有效数据具有父ID字段和全局交易码。消息发送单元用于将具有父ID字段和全局交易码的有效数据,以消息的形式发送至kafka的java客户端中,并同步至kafka的消息队列中。通过有效数据采集单元,增强单元和消息发送单元,实现以方法为粒度录制生产上的全链路数据,分别得到多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中。
所述增强单元增强所述有效数据,使所述有效数据具有父ID字段和全局交易码具体包括:
在入口方法中,生成全局交易码的标识,并存储至线程共享中,使入口方法和该入口方法的调用方法的全局交易码相同;
在入口方法中,生成父ID和当前方法ID,并令入口方法的父ID和当前方法ID相同,该入口方法的调用方法的父ID为其上一层方法的当前方法ID。
在有效数据采集单元中,所述预设规则包括:在相同的采样时间内,入口方法的采集数量小于等于预设的最大采样数。
在消息消费模块中,所述实时消费kafka中的录制数据包括:对录制数据中包含敏感信息的数据进行敏感信息脱除处理;所述敏感信息包括用户名、密码、身份证号码、手机号码、金额和地址。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的装置用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的回归测试方法。
图4示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
基于同一发明构思,与上述任意实施例方法相对应的,本说明书一个或多个实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的回归测试方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的回归测试方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种回归测试方法,其特征在于,包括:
以方法为粒度录制生产上的全链路数据,分别得到多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中;所述方法包括入口方法和该入口方法的调用方法;
实时消费kafka中的录制数据,得到脱敏数据;将脱敏数据存储至Redis***中,汇总得到多条调用链的回归测试数据,并存储至MongoDB中,以消息的形式同步至测试环境中;
在测试环境中,调用方法,拦***问线上数据库和配套服务的方法,测试回归测试数据中的输入参数,得到测试返回值;
选择除拦截的方法外的入口方法和入口方法的调用方法,逐级比对测试返回值与对应的回归测试数据中的返回值,得到测试结果;所述测试结果包括:完全正确,正确和错误。
2.根据权利要求1所述的回归测试方法,其特征在于,逐级比对测试返回值与对应的回归测试数据中的返回值,得到测试结果具体包括:
当入口方法和入口方法的调用方法的比对均为一致时,测试结果为完全正确;当入口方法的比对为一致,而入口方法的调用方法的比对不一致时,测试结果为正确;当入口方法的比对为不一致时,测试结果为错误。
3.根据权利要求2所述的回归测试方法,其特征在于,还包括:当测试结果为正确或错误时,不允许发布版本,并将比对为不一致的方法显示。
4.根据权利要求1所述的回归测试方法,其特征在于,所述以方法为粒度录制生产上的全链路数据,分别得到多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中具体包括:
按照预设规则采集部分入口方法和入口方法的调用方法的输入参数和返回值,得到有效数据;
增强所述有效数据,使所述有效数据具有父ID字段和全局交易码;
将具有父ID字段和全局交易码的有效数据,以消息的形式发送至kafka的java客户端中,并同步至kafka的消息队列中。
5.根据权利要求4所述的回归测试方法,其特征在于,所述增强所述有效数据,使所述有效数据具有父ID字段和全局交易码包括:
在入口方法中,生成全局交易码的标识,并存储至线程共享中,使入口方法和该入口方法的调用方法的全局交易码相同;
在入口方法中,生成父ID和当前方法ID,并令入口方法的父ID和当前方法ID相同,该入口方法的调用方法的父ID为其上一层方法的当前方法ID。
6.根据权利要求4所述的回归测试方法,其特征在于,所述预设规则包括:在相同的采样时间内,入口方法的采集数量小于等于预设的最大采样数。
7.根据权利要求1所述的回归测试方法,其特征在于,所述实时消费kafka中的录制数据包括:对录制数据中包含敏感信息的数据进行敏感信息脱除处理;所述敏感信息包括用户名、密码、身份证号码、手机号码、金额和地址。
8.一种回归测试的装置,其特征在于,包括:
方法录制模块,用于以方法为粒度录制生产上的全链路数据,分别得到多条调用链的录制输入参数和录制返回值,以消息的形式同步发送至kafka的消息队列中;所述方法包括入口方法和该入口方法的调用方法;
消息消费模块,用于消费kafka中的录制数据,得到脱敏数据;将脱敏数据存储至Redis***中,汇总得到多条调用链的回归测试数据,并存储至MongoDB中,以消息的形式同步至测试环境中;
测试模块,用于在测试环境中,调用方法,拦***问线上数据库和配套服务的方法,测试回归测试数据中的输入参数,得到测试返回值;
比对模块,用于选择除拦截的方法外的入口方法和入口方法的调用方法,逐级比对测试返回值与对应的回归测试数据中的返回值,得到测试结果;所述测试结果包括:完全正确,正确和错误。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任意一项所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行权利要求1至7任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011241224.3A CN112380115A (zh) | 2020-11-09 | 2020-11-09 | 一种回归测试方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011241224.3A CN112380115A (zh) | 2020-11-09 | 2020-11-09 | 一种回归测试方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112380115A true CN112380115A (zh) | 2021-02-19 |
Family
ID=74578067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011241224.3A Pending CN112380115A (zh) | 2020-11-09 | 2020-11-09 | 一种回归测试方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112380115A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948272A (zh) * | 2021-04-16 | 2021-06-11 | 西安京迅递供应链科技有限公司 | 基于生产环境的数据测试***功能方法、装置及相关设备 |
CN113656312A (zh) * | 2021-08-19 | 2021-11-16 | 天津车之家数据信息技术有限公司 | 一种测试数据生成方法、装置及计算设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130046498A1 (en) * | 2011-08-16 | 2013-02-21 | Askey Computer Corp. | Multi-testing procedure management method and system |
CN109783341A (zh) * | 2017-11-10 | 2019-05-21 | 阿里巴巴集团控股有限公司 | 回归测试方法和装置 |
US10489526B1 (en) * | 2016-07-29 | 2019-11-26 | Rockwell Collins, Inc. | Adaptive control for simulator input generation |
CN110569196A (zh) * | 2019-09-11 | 2019-12-13 | 宝付网络科技(上海)有限公司 | 一种回归测试*** |
CN111625452A (zh) * | 2020-05-22 | 2020-09-04 | 上海哔哩哔哩科技有限公司 | 流量回放方法和*** |
-
2020
- 2020-11-09 CN CN202011241224.3A patent/CN112380115A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130046498A1 (en) * | 2011-08-16 | 2013-02-21 | Askey Computer Corp. | Multi-testing procedure management method and system |
US10489526B1 (en) * | 2016-07-29 | 2019-11-26 | Rockwell Collins, Inc. | Adaptive control for simulator input generation |
CN109783341A (zh) * | 2017-11-10 | 2019-05-21 | 阿里巴巴集团控股有限公司 | 回归测试方法和装置 |
CN110569196A (zh) * | 2019-09-11 | 2019-12-13 | 宝付网络科技(上海)有限公司 | 一种回归测试*** |
CN111625452A (zh) * | 2020-05-22 | 2020-09-04 | 上海哔哩哔哩科技有限公司 | 流量回放方法和*** |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948272A (zh) * | 2021-04-16 | 2021-06-11 | 西安京迅递供应链科技有限公司 | 基于生产环境的数据测试***功能方法、装置及相关设备 |
CN113656312A (zh) * | 2021-08-19 | 2021-11-16 | 天津车之家数据信息技术有限公司 | 一种测试数据生成方法、装置及计算设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109828903B (zh) | 自动化测试方法、装置、计算机装置及存储介质 | |
CN110059468B (zh) | 一种小程序风险识别方法和装置 | |
CN111245900B (zh) | 一种分布式消息发送的处理***及其处理方法 | |
US20160283357A1 (en) | Call stack relationship acquiring method and apparatus | |
CN107066519B (zh) | 一种任务检测方法及装置 | |
CN109359118B (zh) | 一种数据写入方法及装置 | |
CN110750458A (zh) | 大数据平台测试方法、装置、可读存储介质及电子设备 | |
CN109359109B (zh) | 一种基于分布式流计算的数据处理方法及*** | |
CN112380115A (zh) | 一种回归测试方法、装置、电子设备及存储介质 | |
CN112817866A (zh) | 录制回放方法、装置、***、计算机设备以及存储介质 | |
CN113850603A (zh) | 一种支付失败原因的确定方法及装置 | |
CN114879985B (zh) | 一种证书文件的安装方法、装置、设备及存储介质 | |
CN114979100A (zh) | 一种云资源检查方法及相关装置 | |
CN115470139A (zh) | 一种接口测试方法及相关设备 | |
CN109656805B (zh) | 用于业务分析的代码链路的生成方法、装置及业务服务器 | |
CN113452533B (zh) | 计费自巡检、自愈合方法、装置、计算机设备和存储介质 | |
CN114942878A (zh) | 互联网应用的自动化性能测试方法及相关设备 | |
CN110008081B (zh) | 一种交互数据处理方法及装置 | |
CN112860456A (zh) | 日志处理方法和装置 | |
CN114371866A (zh) | 业务***的版本重构测试方法、装置和设备 | |
CN111026612A (zh) | 应用程序运行监控方法及装置、存储介质、电子设备 | |
CN111143156A (zh) | 大数据平台垃圾任务采集***、方法及计算机*** | |
CN112035425B (zh) | 一种日志的存储方法、装置及计算机*** | |
CN110704301A (zh) | Tpc-e自动化测试方法以及tpc-e测试*** | |
CN112488856B (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 |