CN117724986B - 一种在用例执行中自动操作kafka的方法及装置 - Google Patents
一种在用例执行中自动操作kafka的方法及装置 Download PDFInfo
- Publication number
- CN117724986B CN117724986B CN202410175718.8A CN202410175718A CN117724986B CN 117724986 B CN117724986 B CN 117724986B CN 202410175718 A CN202410175718 A CN 202410175718A CN 117724986 B CN117724986 B CN 117724986B
- Authority
- CN
- China
- Prior art keywords
- service
- kafka
- key
- value
- use case
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000004044 response Effects 0.000 claims abstract description 81
- 238000012360 testing method Methods 0.000 claims abstract description 39
- 238000011144 upstream manufacturing Methods 0.000 claims abstract description 27
- 230000006870 function Effects 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种在用例执行中自动操作kafka的方法及装置,方法包括:执行预先编写好的用例,包括:模拟第一服务的功能以在对应的kafka中设置key;在对应的kafka中,查询key的值;根据key的值生成请求,将请求发送至第二服务,接收第二服务返回的响应值,根据用例的断言验证响应值是否符合预期;在接收第二服务返回的响应值之后,模拟第二服务的功能,以将响应值发送至与第二服务对应的kafka,其中,响应值能够被第三服务继续调用。由此,可实现kafka和自动化用例的关联,在用例执行过程中可自动实现对kafka的操作,提高效率;且可灵活模拟被测服务上下游对kafka的操作,提高测试的效率。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种在用例执行中自动操作kafka的方法及装置。
背景技术
Kafka是一种高吞吐量的分布式发布-订阅消息系统,它可以实时处理大量数据,目前被广泛应用。
在实际业务中,很多业务场景与kafka有关,如:向kafka发送指定消息、或从kafka获取指定消息。目前,这些与kafka有交互的业务场景在自动化测试过程中,自动化用例无法直接与kafka进行交互,通常依赖手动操作,如:测试用例执行前后,需要由测试或开发人员手动登录到kafka来检查kafka内的结果,测试用例无法自动校验与kafka相关的检查点,测试依赖人工、效率较低。
发明内容
本发明实施例提供一种在用例执行中自动操作kafka的方法及装置,以解决相关技术中测试用例执行前后,需要由测试或开发人员手动登录到kafka来检查kafka内的结果,测试用例无法自动校验与kafka相关的检查点,测试依赖人工、效率较低的技术问题。
为解决上述技术问题,本发明实施例提供如下几个方面:
第一方面,本发明实施例提供了一种在用例执行中自动操作kafka的方法,所述方法包括:
执行预先编写好的用例,其中包括:
模拟第一服务的功能,以在与所述第一服务对应的kafka中,设置标识符key;
在与所述第一服务对应的kafka中,查询所设置的所述key的值;
根据所述key的值生成请求,将所述请求发送至第二服务,接收所述第二服务返回的响应值,根据所述用例的断言验证所述响应值是否符合预期;
在接收所述第二服务返回的响应值之后,所述方法还包括:
模拟所述第二服务的功能,以将所述响应值发送至与所述第二服务对应的kafka,其中,所述响应值能够被第三服务继续调用,所述第二服务为当前服务,所述第一服务为所述第二服务的上游服务,所述第三服务为所述第二服务的下游服务。
可选的,所述用例包括以下至少一项关键字:前置操作、所述第一服务的名称、操作类型、key的名称、key对应的值,其中,所述操作类型为在kafka中设置key;
模拟第一服务的功能,以在与所述第一服务对应的kafka中,设置key包括:
解析所述关键字,执行与所述关键字对应的操作,其中,执行与所述关键字对应的操作包括:
连接与所述第一服务对应的kafka,在与所述第一服务对应的kafka中,设置key,其中,所述key的名称为所述关键字中key的名称,所述key的值为所述关键字中key对应的值。
可选的,所述用例包括以下至少一项关键字:所述第一服务的名称、所述第二服务的名称、操作类型、key的名称,其中,所述操作类型为在kafka中查询key的值;
在与所述第一服务对应的kafka中,查询所设置的所述key的值包括:
解析所述关键字,执行与所述关键字对应的操作,其中,执行与所述关键字对应的操作包括:
连接与所述第一服务对应的kafka,在与所述第一服务对应的kafka中,查询名称为所述关键字中key的名称的key所对应的值。
可选的,连接与所述第一服务对应的kafka包括:
查询预先设置的服务与kafka的关系表;其中,所述关系表中,存储有服务、kafka以及kafka的连接地址之间的对应关系;
根据所述关系表,获取与所述第一服务对应的kafka的连接地址;
根据所述连接地址,连接与所述第一服务对应的kafka。
可选的,根据所述key的值生成请求,将所述请求发送至第二服务,接收所述第二服务返回的响应值,根据所述用例的断言验证所述响应值是否符合预期包括:
根据所查询到的名称为所述关键字中,key的名称的key所对应的值生成所述请求;
将所述请求发送至所述第二服务;其中,所述第二服务的功能为根据所述值和所述第二服务自身设置的运算逻辑,生成所述响应值,所述用例用于测试所述第二服务的功能,所述第二服务还用于将所述响应值发送至与所述第二服务对应的kafka;
接收所述第二服务返回的所述响应值;
替换所述断言中的参数,其中包括:查询并获取所述第二服务发送至对应的kafka中的所述响应值,以所述响应值替换所述断言中的参数;
验证所接收的所述第二服务返回的所述响应值,与查询并获取的所述第二服务发送至对应的kafka中的所述响应值是否相同;
若相同,则确定所述第二服务通过所述用例的测试。
第二方面,本发明实施例提供一种在用例执行中自动操作kafka的装置,所述装置包括:
执行模块,用于执行预先编写好的用例,其中包括:
模拟第一服务的功能,以在与所述第一服务对应的kafka中,设置标识符key;
在与所述第一服务对应的kafka中,查询所设置的所述key的值;
根据所述key的值生成请求,将所述请求发送至第二服务,接收所述第二服务返回的响应值,根据所述用例的断言验证所述响应值是否符合预期;
在接收所述第二服务返回的响应值之后,模拟所述第二服务的功能,以将所述响应值发送至与所述第二服务对应的kafka,其中,所述响应值能够被第三服务继续调用,所述第二服务为当前服务,所述第一服务为所述第二服务的上游服务,所述第三服务为所述第二服务的下游服务。
可选的,所述用例包括以下至少一项关键字:前置操作、所述第一服务的名称、操作类型、key的名称、key对应的值,其中,所述操作类型为在kafka中设置key;
所述执行模块,还用于解析所述关键字,执行与所述关键字对应的操作,其中,执行与所述关键字对应的操作包括:连接与所述第一服务对应的kafka,在与所述第一服务对应的kafka中,设置key,其中,所述key的名称为所述关键字中key的名称,所述key的值为所述关键字中key对应的值。
可选的,所述用例包括以下至少一项关键字:所述第一服务的名称、所述第二服务的名称、操作类型、key的名称,其中,所述操作类型为在kafka中查询key的值;
所述执行模块,还用于解析所述关键字,执行与所述关键字对应的操作,其中,执行与所述关键字对应的操作包括:连接与所述第一服务对应的kafka,在与所述第一服务对应的kafka中,查询名称为所述关键字中key的名称的key所对应的值。
可选的,所述执行模块,还用于查询预先设置的服务与kafka的关系表;其中,所述关系表中,存储有服务、kafka以及kafka的连接地址之间的对应关系;根据所述关系表,获取与所述第一服务对应的kafka的连接地址;根据所述连接地址,连接与所述第一服务对应的kafka。
可选的,所述执行模块,还用于根据所查询到的名称为所述关键字中,key的名称的key所对应的值生成所述请求;
将所述请求发送至所述第二服务;其中,所述第二服务的功能为根据所述值和所述第二服务自身设置的运算逻辑,生成所述响应值,所述用例用于测试所述第二服务的功能,所述第二服务还用于将所述响应值发送至与所述第二服务对应的kafka;
接收所述第二服务返回的所述响应值;
替换所述断言中的参数,其中包括:查询并获取所述第二服务发送至对应的kafka中的所述响应值,以所述响应值替换所述断言中的参数;
验证所接收的所述第二服务返回的所述响应值,与查询并获取的所述第二服务发送至对应的kafka中的所述响应值是否相同;
若相同,则确定所述第二服务通过所述用例的测试。
第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如第一方面所述的在用例执行中自动操作kafka的方法的步骤。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的在用例执行中自动操作kafka的方法的步骤。
第五方面,本发明实施例提供一种计算机程序产品,包括计算机指令,所述计算机指令被处理器执行时实现如第一方面所述的在用例执行中自动操作kafka的方法的步骤。
由此,可实现kafka和自动化用例的关联,在用例执行过程中可自动实现对kafka的操作,无需人工参与,提高效率,且可灵活模拟被测服务上下游对kafka的操作,在上下游服务未开发完时,测试人员即可介入对被测服务的测试工作,可提前测试人员的介入时间,提高测试效率。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的一种在用例执行中自动操作kafka的方法的流程图;
图2为本发明实施例提供的一种在用例执行中自动操作kafka的方法的流程图;
图3为本发明实施例提供的一种配置服务与其对应kafka信息的页面示意图;
图4为本发明实施例提供的一种前端页面展示新增加的kafka信息的示意图;
图5为本发明实施例提供的一种在用例执行中自动操作kafka的方法的流程图;
图6为本发明实施例提供的一种在用例执行中自动操作kafka的装置的结构框图;
图7为本发明实施例提供的一种电子设备的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出了根据本发明实施例提供的一种在用例执行中自动操作kafka的方法,方法包括:执行预先编写好的用例,如图1所示,执行预先编写好的用例包括:
步骤S101、模拟第一服务的功能,以在与第一服务对应的kafka中,设置key;
步骤S102、在与第一服务对应的kafka中,查询所设置的key的值;
步骤S103、根据key的值生成请求,将请求发送至第二服务,接收第二服务返回的响应值,根据用例的断言验证响应值是否符合预期;
在一种可能的实现方式中,在步骤S103的前半部分:接收第二服务返回的响应值之后,方法还包括:
模拟第二服务的功能,以将响应值发送至与第二服务对应的kafka,其中,响应值能够被第三服务继续调用,第二服务为当前服务,第一服务为第二服务的上游服务,第三服务为第二服务的下游服务。
需要说明的是,步骤S101和上述可能的实现方式分别为前置操作和后置操作,即用例执行之前或之后期望对kafka进行的操作。
比如,当前用例执行需要获得参数price和number的值,这两个参数值由上游服务传给kafka,而上游服务当前还没开发完,此时就可通过前置操作(pre)来模拟上游服务传值给kafka。再比如,当前用例执行完之后,需要将当前用例所属接口返回值amount传到到kafka中供下游服务使用,此类型操作可通过后置操作(after)来模拟当前服务传值给kafka。其中,需要在用例执行之前进行的操作定义为pre、需要在用例执行之后进行的操作定义为after。
且需要说明的是,前置/后置操作可根据实际需要进行灵活配置,例如:如果上游服务已经开发完,则无需配置前置操作。且在用例执行后,也可根据实际需要确定是否需要对kafka执行后置操作。
具体来说,在一种可能的实现方式中,用例包括以下至少一项关键字:前置操作、第一服务的名称、操作类型、key的名称、key对应的值,其中,操作类型为在kafka中设置key;步骤S101、模拟第一服务的功能,以在与第一服务对应的kafka中,设置key包括:解析关键字,执行与关键字对应的操作,其中,执行与关键字对应的操作包括:连接与第一服务对应的kafka,在与第一服务对应的kafka中,设置key,其中,key的名称为关键字中key的名称,key的值为关键字中key对应的值。而步骤S102到步骤S103可概括为测试操作,其目的在于验证第二服务是否通过测试。
具体来说,用例包括以下至少一项关键字:第一服务的名称、第二服务的名称、操作类型、key的名称,其中,操作类型为在kafka中查询key的值;步骤S102、在与第一服务对应的kafka中,查询所设置的key的值包括:解析关键字,执行与关键字对应的操作,其中,执行与关键字对应的操作包括:连接与第一服务对应的kafka,在与第一服务对应的kafka中,查询名称为关键字中key的名称的key所对应的值。
且进一步地,如图2所示,步骤S103、根据key的值生成请求,将请求发送至第二服务,接收第二服务返回的响应值,根据用例的断言验证响应值是否符合预期包括:
步骤S1031、根据所查询到的名称为关键字中,key的名称的key所对应的值生成请求;
步骤S1032、将请求发送至第二服务;
其中,第二服务的功能为根据值和第二服务自身设置的运算逻辑,生成响应值,用例用于测试第二服务的功能,第二服务还用于将响应值发送至与第二服务对应的kafka;
步骤S1033、接收第二服务返回的响应值;
步骤S1034、替换断言中的参数;
其中包括:查询并获取第二服务发送至对应的kafka中的响应值,以响应值替换断言中的参数;
步骤S1035、验证所接收的第二服务返回的响应值,与查询并获取的第二服务发送至对应的kafka中的响应值是否相同;
步骤S1036、若相同,则确定第二服务通过用例的测试。
由此,可结合对kafka的自动操作,验证第二服务是否通过测试。
在一种可能的实现方式中,连接与第一服务对应的kafka包括:查询预先设置的服务与kafka的关系表;根据关系表,获取与第一服务对应的kafka的连接地址;根据连接地址,连接与第一服务对应的kafka。其中,关系表中,存储有服务、kafka以及kafka的连接地址之间的对应关系。
由此,可实现kafka和自动化用例的关联,在用例执行过程中可自动实现对kafka的操作,无需人工参与,提高效率,且可灵活模拟被测服务上下游对kafka的操作,在上下游服务未开发完时,测试人员即可介入对被测服务的测试工作,可提前测试人员的介入时间,提高测试效率。
在具体的应用性示例中,本发明实施例的操作步骤可概括如下:测试人员在系统页面中维护各服务对应的kafka集群信息;将对kafka的各种操作抽象成关键词,然后由表示不同操作的关键词进行组合,组装成关键字,测试人员在用例中将关键字设置成参数,实现用例和kafka操作的关联;用例执行期间自动完成对kafka的操作。由此,只需用例执行之前配置好kafka的连接信息及与用例的关联关系即可,后续无论执行多少次,均不再依赖人工参与。
本发明实施例可分为三个虚拟功能模块:配置模块、用例编写模块以及用例执行模块。下面对各个功能模块进行具体介绍:
配置模块:测试人员可通过页面来配置各服务对应的kafka信息。如图3所示,页面可用来配置各服务对应kafka连接信息,包含“服务名称”和“连接地址”两项。需要说明的是,连接地址中可包含端口信息。且若kafka集群包含多台机器,可以在连接地址中通过英文逗号进行分割:例如:192.168.10.175:9092,192.168.11.17:9092,在点击“提交”之后,用户相关信息可保存到kafka_ip表中,如表1所示。同时,前端页面可展示新增加的kafka信息,如图4所示:
表1
service_name | ip |
service1 | 192.168.10.175:9092,192.168.11.17:9092 |
service2 | 192.168.7.189:9092 |
service3 | 192.168.7.190:9092 |
用例编写模块:可设置自动化用例与kafka的关联关系,具体可分为如下几个部分,用例参数设置为:
断言设置为:
需要说明的是,用例编写时,可将“前置/后置操作”、“服务名”、“操作类型”、“操作的key”、“操作value”这五个部分分别设置为关键词,然后通过下划线“_”进行连接,生成关键字,来设置预期对kafka进行的操作。
各部分含义可定义如下:前置/后置操作:用例执行之前或之后期望对kafka进行的操作。比如,当前用例执行需要获得参数price和number的值,这两个参数值由上游服务传给kafka,而上游服务当前还没开发完,此时就可通过前置操作(pre)来模拟上游服务传值给kafka。再比如,当前用例执行完之后,需要将当前用例所属接口返回值amount传到到kafka中供下游服务使用,此类型操作可通过后置操作(after)来模拟当前服务传值给kafka。其中,需要在用例执行之前进行的操作定义为pre、需要在用例执行之后进行的操作定义为after。且需要说明的是,前置/后置操作可根据实际需要进行灵活配置,例如:如果上游服务已经开发完,则无需配置前置操作。且在用例执行后,也可根据实际需要确定是否需要对kafka执行后置操作。
在相关技术中的集成测试阶段,当服务之间尚未完全调通的情况下,若两个服务之间是通过kafka来传递消息,那么测试人员只能等服务联调完成之后才能介入测试,测试参与时间滞后。通过上述的前置/后置操作配置,可灵活模拟被测服务上下游对kafka的操作,上下游服务未开发完时,测试人员即可介入对被测服务的测试工作,可提前测试人员介入时间。
服务名:通过页面配置的服务名和kafka的关联关系,来获取kafka的连接信息,供登录kafka使用,且对应关键词为kafka连接对应的服务名。操作类型:表示kafka的两种操作set和get,分别表示向kafka设置key和从kafka获取指定key的值,且对应关键词为set和get。操作的key:对kafka设置或查询的key,对应关键字为key。操作的vaule:对kafka设置某个key对应的具体value值,对应关键词为value。需要说明的是,以上关键词通过下划线“_”进行连接,组装成一个关键字,然后以@开头,设置到用例的请求参数中。
用例执行模块:执行步骤如下:
(1)从用例参数中获取包含“pre”的参数,如:@pre_service1_set_price_10和@pre_service1_set_number_1";
(2)依次对这些参数按照“_”进行分割,保存到数组中;
(3)遍历数组(以@pre_service1_set_price_10为例),从数组中依次获取第2、3、4、5个元素,分别对应对kafka的操作,先获取第2个元素“service1”,该元素表示kafka对应的服务名,然后将该服务名作为查询条件到kafka_ip 表中查询该服务对应的kafka连接地址,sql语句为:select * from kafka_ip where service_name= service1;执行该sql之后可获取对应kafka的连接地址192.168.10.175:9092,192.168.11.17:9092;再获取第3个元素“set”,该元素表示对kafka进行set操作;再获取第4个元素“price”,该元素表示对kafka进行set的key叫做“price”;最后获取第5个元素“10”,该元素表示kafka对叫做“price”的key设置的value值为“10”;然后,根据获取到的4个值分别解释成对kafka的操作,如下:
校验集群地址为“192.168.10.175:9092,192.168.11.17:9092”的kafka当前是否处于连接状态,若为是,则直接在kfka中设置一个key为“price”、value为“10”的值;若为否,则连接该地址后,再在kfka中设置一个key为“price”、value为“10”的值。
需要说明的是(参见上述用例参数设置中,所设置的用例),@pre_service1_set_price_10的操作同上,操作之后,会在kafka中设置一个key为“number”、value为“1”的值。
(4)将pre对应的参数从用例请求参数中剔除,剔除以后的用例请求参数变为:
需要说明的是,pre对应的参数只是用来定义对kafka的操作的,并不是用例请求参数的一部分。
(5)动态参数替换:从修改后的请求参数中获取包含“@”的动态参数,如:@service1_get_price和$service1_get_number;依次将参数按照下划线“_”进行分解,保存到数组中;遍历数组(以@service1_get_price为例),依次获得各个元素值:先获取第1个元素值“services1”,该元素表示kafka对应的服务名,然后将该服务名作为查询条件到kafka_ip 表中查询该服务对应的kafka连接地址,拼接sql语句为:select * from kafka_ip where service_name= service1;执行该sql之后可获取对应kafka的连接地址:192.168.10.175:9092,192.168.11.17:9092;再获取第2个元素值“get”,该元素表示对kafka进行查询操作;再获取第3个元素值“price”和“number”,该元素表示要从kafka查询key为price或number的值;然后,根据获取到的3个值依次解释成对kafka的操作,如下:判断集群地址为“192.168.10.175:9092,192.168.11.17:9092”的kafka当前是否处于连接状态,若为是,则直接在当前连接kafka中查询key为“price”的vaule值,查询到的值为10; 若为否,则连接该地址后,再从当前连接kafka中查询key为“price”的vaule值,查询到的值为10。
需要说明的是(参见上述用例参数设置中,所设置的用例),对@service1_get_number的操作同上,操作完之后,可从kafka中获得number的值1。
用查询到的value值将用例参数中对应变量进行替换,替换后用例请求参数变为:
(6)运行用例:该用例运行成功之后,用例对应的服务service2会对price和number进行相乘,得到新的值amount,该值会作为接口返回值返回,同时service2会将amount传递到kafka中,供下游服务service3使用。
(7)断言动态参数替换:从断言参数中获取包含“@”的动态参数,如:$service2_get_amount;依次将参数按照下划线“_”进行分解,保存到数组中;遍历数组,依次获得各个元素值:先获取第1个元素值“services2”,该元素表示kafka对应的服务名,然后将该服务名作为查询条件到kafka_ip 表中查询该服务对应的kafka连接地址,拼接sql语句为:select * from kafka_ip where service_name= service2;执行该sql之后可获取对应kafka的连接地址:192.168.7.189:9092;再获取第2个元素值“get”,该元素表示对kafka进行查询操作;再获取第3个元素值“amount”,该元素表示要从kafka查询key为amount的值;然后,根据获取到的3个值依次解释成对kafka的操作,如下:
判断集群地址为“192.168.7.189:9092”的kafka当前是否处于连接状态,若为是,则直接在当前连接kafka中查询key为“amount”的vaule值,查询到的值为10;若为否,则连接该地址后,再从当前连接kafka中查询key为“amount”的vaule值,查询到的值为10;用查询到的value值将用例断言参数中对应变量进行替换,替换后用例断言的参数变为:
(8)断言校验:根据用例实际返回值和断言中的对应字段进行比对,校验是否通过。
上述配置模块、用例编写模块、用例执行模块所执行的具体方案细节可概括如图5所示。
由此,本发明实施例提供了一种在自动化用例中灵活自动操作kafka的方法,可概括如下:通过页面可视化配置各服务对应kafka集群的连接信息、并将连接信息持久化到数据库中;将对kafka的不同操作封装成不同关键词,然后由表示不同操作的关键词进行组合,组装成关键字(表示不同业务场景),用户只需要记住不同操作对应的关键字即可,无需关注具体实现细节;将kafka操作对应关键字作为参数设置到用例参数中,以实现kafka和自动化用例的关联;用例执行时,自动解析关键字,将关键字拆分成不同关键词,分解成各个步骤,用例执行过程中可自动实现对kafka的操作,无需人工参与。
需要说明的是,本发明实施例的重点如下:在页面中配置kafka集群的基本信息,包括服务名、连接地址和端口,配置完之后可保存到数据库中;将kafka的常见操作“连接”、“设置”、“查询”分别封装成关键词,然后关键词按照操作顺序组装成操作“关键字”,用例参数中,需要操作kafka的地方,均可通过将参数与“关键字”进行绑定,完成对kafka的预期操作;用例执行时,解析关键字,将关键字按进行拆分,分解成各个步骤,每个步骤均对应一个kafka的相关操作;集成测试阶段,上下游服务不通的情况下,可通过预设关键词“pre”和“after”来模拟上游和当前服务对kafka的操作。其中,pre为前置操作,包含pre的参数会在用例执行之前被执行,用来模拟上游服务对kafka的操作;且包含pre的参数只是用来模拟上游服务的操作,不会作为用例的实际执行参数,在用例执行之前会将pre相关参数从用例请求参数中剔除;after为后置操作,包含after的参数会在用例执行之后被执行,用来模拟当前服务对kafka的操作;且包含after的参数只是用来模拟当前服务的操作,不会作为用例的实际执行参数,在用例执行之前会将after相关参数从用例请求参数中剔除。
本发明实施例具备如下优点:可将对kafka的不同操作封装成不同“关键字”、使用者只需要记住操作对应的关键字即可,无需关注具体操作细节;将用例依赖的kafka的操作通过关键字设置到用例参数中,以实现kafka和自动化用例关联,用例执行过程中可自动实现对kafka的操作,无需人工参与;可灵活模拟被测服务上下游对kafka的操作,上下游服务未开发完时,测试人员即可介入对被测服务的测试工作,可提前测试人员介入时间;可通过页面直观地对各服务对应的kafka连接信息进行维护,只需在页面配置好各服务对应kafka信息、记住不同操作对应的关键字、将关键字作为参数设置到自动化用例中之后,即可自动完成用例执行期间预期对kafka的操作。
本发明实施例提供一种在用例执行中自动操作kafka的装置,如图6所示,装置60包括:
执行模块601,用于执行预先编写好的用例,其中包括:
模拟第一服务的功能,以在与第一服务对应的kafka中,设置标识符key;
在与第一服务对应的kafka中,查询所设置的key的值;
根据key的值生成请求,将请求发送至第二服务,接收第二服务返回的响应值,根据用例的断言验证响应值是否符合预期;
在接收第二服务返回的响应值之后,模拟第二服务的功能,以将响应值发送至与第二服务对应的kafka,其中,响应值能够被第三服务继续调用,第二服务为当前服务,第一服务为第二服务的上游服务,第三服务为第二服务的下游服务。
在一种可能的实现方式中,用例包括以下至少一项关键字:前置操作、第一服务的名称、操作类型、key的名称、key对应的值,其中,操作类型为在kafka中设置key;
执行模块601,还用于解析关键字,执行与关键字对应的操作,其中,执行与关键字对应的操作包括:连接与第一服务对应的kafka,在与第一服务对应的kafka中,设置key,其中,key的名称为关键字中key的名称,key的值为关键字中key对应的值。
在一种可能的实现方式中,用例包括以下至少一项关键字:第一服务的名称、第二服务的名称、操作类型、key的名称,其中,操作类型为在kafka中查询key的值;
执行模块601,还用于解析关键字,执行与关键字对应的操作,其中,执行与关键字对应的操作包括:连接与第一服务对应的kafka,在与第一服务对应的kafka中,查询名称为关键字中key的名称的key所对应的值。
在一种可能的实现方式中,执行模块601,还用于查询预先设置的服务与kafka的关系表;其中,关系表中,存储有服务、kafka以及kafka的连接地址之间的对应关系;根据关系表,获取与第一服务对应的kafka的连接地址;根据连接地址,连接与第一服务对应的kafka。
在一种可能的实现方式中,执行模块601,还用于根据所查询到的名称为关键字中,key的名称的key所对应的值生成请求;
将请求发送至第二服务;其中,第二服务的功能为根据值和第二服务自身设置的运算逻辑,生成响应值,用例用于测试第二服务的功能,第二服务还用于将响应值发送至与第二服务对应的kafka;
接收第二服务返回的响应值;
替换断言中的参数,其中包括:查询并获取第二服务发送至对应的kafka中的响应值,以响应值替换断言中的参数;
验证所接收的第二服务返回的响应值,与查询并获取的第二服务发送至对应的kafka中的响应值是否相同;
若相同,则确定第二服务通过用例的测试。
由此,本发明实施例提供了一种在自动化用例中灵活自动操作kafka的装置,可概括如下:通过页面可视化配置各服务对应kafka集群的连接信息、并将连接信息持久化到数据库中;将对kafka的不同操作封装成不同关键词,然后由表示不同操作的关键词进行组合,组装成关键字(表示不同业务场景),用户只需要记住不同操作对应的关键字即可,无需关注具体实现细节;将kafka操作对应关键字作为参数设置到用例参数中,以实现kafka和自动化用例的关联;用例执行时,自动解析关键字,将关键字拆分成不同关键词,分解成各个步骤,用例执行过程中可自动实现对kafka的操作,无需人工参与。
本发明实施例还提供一种电子设备70,如图7所示,包括:处理器701、存储器702及存储在存储器702上并可在处理器701上运行的程序,程序被处理器执行时实现如上述实施例所示的一种在用例执行中自动操作kafka的方法的步骤。
本发明实施例还提供一种计算机程序产品,包括计算机指令,该计算机指令被处理器执行时实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,的计算机可读存储介质,如只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
Claims (8)
1.一种在用例执行中自动操作kafka的方法,其特征在于,所述方法包括:
执行预先编写好的用例,其中包括:
模拟第一服务的功能,以在与所述第一服务对应的kafka中,设置标识符key;
在与所述第一服务对应的kafka中,查询所设置的所述key的值;
根据所述key的值生成请求,将所述请求发送至第二服务,接收所述第二服务返回的响应值,根据所述用例的断言验证所述响应值是否符合预期;
在接收所述第二服务返回的响应值之后,所述方法还包括:
模拟所述第二服务的功能,以将所述响应值发送至与所述第二服务对应的kafka,其中,所述响应值能够被第三服务继续调用,所述第二服务为当前服务,所述第一服务为所述第二服务的上游服务,所述第三服务为所述第二服务的下游服务;
所述用例包括以下至少一项关键字:所述第一服务的名称、所述第二服务的名称、操作类型、key的名称,其中,所述操作类型为在kafka中查询key的值;
在与所述第一服务对应的kafka中,查询所设置的所述key的值包括:
解析所述关键字,执行与所述关键字对应的操作,其中,执行与所述关键字对应的操作包括:
连接与所述第一服务对应的kafka,在与所述第一服务对应的kafka中,查询名称为所述关键字中key的名称的key所对应的值;
根据所述key的值生成请求,将所述请求发送至第二服务,接收所述第二服务返回的响应值,根据所述用例的断言验证所述响应值是否符合预期包括:
根据所查询到的名称为所述关键字中,key的名称的key所对应的值生成所述请求;
将所述请求发送至所述第二服务;其中,所述第二服务的功能为根据所查询到的名称为所述关键字中,key的名称的key所对应的值和所述第二服务自身设置的运算逻辑,生成响应值,所述用例用于测试所述第二服务的功能,所述第二服务还用于将所述响应值发送至与所述第二服务对应的kafka;
接收所述第二服务返回的所述响应值;
替换所述断言中的参数,其中包括:查询并获取所述第二服务发送至对应的kafka中的所述响应值,以所述响应值替换所述断言中的参数;
验证所接收的所述第二服务返回的所述响应值,与查询并获取的所述第二服务发送至对应的kafka中的所述响应值是否相同;
若相同,则确定所述第二服务通过所述用例的测试。
2.根据权利要求1所述的方法,其特征在于,所述用例包括以下至少一项关键字:前置操作、所述第一服务的名称、操作类型、key的名称、key对应的值,其中,所述操作类型为在kafka中设置key;
模拟第一服务的功能,以在与所述第一服务对应的kafka中,设置key包括:
解析所述关键字,执行与所述关键字对应的操作,其中,执行与所述关键字对应的操作包括:
连接与所述第一服务对应的kafka,在与所述第一服务对应的kafka中,设置key,其中,所述key的名称为所述关键字中key的名称,所述key的值为所述关键字中key对应的值。
3.根据权利要求1或2所述的方法,其特征在于,连接与所述第一服务对应的kafka包括:
查询预先设置的服务与kafka的关系表;其中,所述关系表中,存储有服务、kafka以及kafka的连接地址之间的对应关系;
根据所述关系表,获取与所述第一服务对应的kafka的连接地址;
根据所述连接地址,连接与所述第一服务对应的kafka。
4.一种在用例执行中自动操作kafka的装置,其特征在于,所述装置包括:
执行模块,用于执行预先编写好的用例,其中包括:
模拟第一服务的功能,以在与所述第一服务对应的kafka中,设置标识符key;
在与所述第一服务对应的kafka中,查询所设置的所述key的值;
根据所述key的值生成请求,将所述请求发送至第二服务,接收所述第二服务返回的响应值,根据所述用例的断言验证所述响应值是否符合预期;
在接收所述第二服务返回的响应值之后,模拟所述第二服务的功能,以将所述响应值发送至与所述第二服务对应的kafka,其中,所述响应值能够被第三服务继续调用,所述第二服务为当前服务,所述第一服务为所述第二服务的上游服务,所述第三服务为所述第二服务的下游服务;
所述用例包括以下至少一项关键字:所述第一服务的名称、所述第二服务的名称、操作类型、key的名称,其中,所述操作类型为在kafka中查询key的值;
所述执行模块,还用于解析所述关键字,执行与所述关键字对应的操作,其中,执行与所述关键字对应的操作包括:连接与所述第一服务对应的kafka,在与所述第一服务对应的kafka中,查询名称为所述关键字中key的名称的key所对应的值;
所述执行模块,还用于根据所查询到的名称为所述关键字中,key的名称的key所对应的值生成所述请求;
将所述请求发送至所述第二服务;其中,所述第二服务的功能为根据所查询到的名称为所述关键字中,key的名称的key所对应的值和所述第二服务自身设置的运算逻辑,生成响应值,所述用例用于测试所述第二服务的功能,所述第二服务还用于将所述响应值发送至与所述第二服务对应的kafka;
接收所述第二服务返回的所述响应值;
替换所述断言中的参数,其中包括:查询并获取所述第二服务发送至对应的kafka中的所述响应值,以所述响应值替换所述断言中的参数;
验证所接收的所述第二服务返回的所述响应值,与查询并获取的所述第二服务发送至对应的kafka中的所述响应值是否相同;
若相同,则确定所述第二服务通过所述用例的测试。
5.根据权利要求4所述的装置,其特征在于,所述用例包括以下至少一项关键字:前置操作、所述第一服务的名称、操作类型、key的名称、key对应的值,其中,所述操作类型为在kafka中设置key;
所述执行模块,还用于解析所述关键字,执行与所述关键字对应的操作,其中,执行与所述关键字对应的操作包括:连接与所述第一服务对应的kafka,在与所述第一服务对应的kafka中,设置key,其中,所述key的名称为所述关键字中key的名称,所述key的值为所述关键字中key对应的值。
6.一种电子设备,其特征在于,包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序,所述程序被所述处理器执行时实现如权利要求1至3中任一项所述的在用例执行中自动操作kafka的方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至3中任一项所述的在用例执行中自动操作kafka的方法的步骤。
8.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令被处理器执行时实现如权利要求1至3中任一项所述的在用例执行中自动操作kafka的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410175718.8A CN117724986B (zh) | 2024-02-08 | 2024-02-08 | 一种在用例执行中自动操作kafka的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410175718.8A CN117724986B (zh) | 2024-02-08 | 2024-02-08 | 一种在用例执行中自动操作kafka的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117724986A CN117724986A (zh) | 2024-03-19 |
CN117724986B true CN117724986B (zh) | 2024-05-07 |
Family
ID=90207375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410175718.8A Active CN117724986B (zh) | 2024-02-08 | 2024-02-08 | 一种在用例执行中自动操作kafka的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117724986B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108073402A (zh) * | 2017-11-30 | 2018-05-25 | 山东鲁能软件技术有限公司 | 基于Linux系统的kafka集群自动部署方法和装置 |
CN109933522A (zh) * | 2019-01-25 | 2019-06-25 | 畅捷通信息技术股份有限公司 | 一种自动化用例的测试方法、测试系统及存储介质 |
CN111382071A (zh) * | 2020-03-03 | 2020-07-07 | 北京九州云动科技有限公司 | 一种用户行为数据测试方法及系统 |
CN111382058A (zh) * | 2018-12-29 | 2020-07-07 | 北京字节跳动网络技术有限公司 | 一种服务的测试方法、装置,服务器及存储介质 |
CN114281688A (zh) * | 2021-12-20 | 2022-04-05 | 神策网络科技(北京)有限公司 | 一种无码或低码的自动化用例管理方法和装置 |
CN115509904A (zh) * | 2022-09-20 | 2022-12-23 | 平安银行股份有限公司 | 一种接口测试用例的断言生成方法及装置 |
CN116055349A (zh) * | 2022-12-29 | 2023-05-02 | 云控智行科技有限公司 | 一种流式数据的检测方法、装置及设备 |
CN116662168A (zh) * | 2023-05-24 | 2023-08-29 | 天翼电子商务有限公司 | 基于Apollo和Kafka的自定义代码低侵入mock数据挡板方法及系统 |
CN117215910A (zh) * | 2023-07-31 | 2023-12-12 | 福州佳软软件技术有限公司 | 接口测试框架生成方法、测试方法、电子设备及存储介质 |
-
2024
- 2024-02-08 CN CN202410175718.8A patent/CN117724986B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108073402A (zh) * | 2017-11-30 | 2018-05-25 | 山东鲁能软件技术有限公司 | 基于Linux系统的kafka集群自动部署方法和装置 |
CN111382058A (zh) * | 2018-12-29 | 2020-07-07 | 北京字节跳动网络技术有限公司 | 一种服务的测试方法、装置,服务器及存储介质 |
CN109933522A (zh) * | 2019-01-25 | 2019-06-25 | 畅捷通信息技术股份有限公司 | 一种自动化用例的测试方法、测试系统及存储介质 |
CN111382071A (zh) * | 2020-03-03 | 2020-07-07 | 北京九州云动科技有限公司 | 一种用户行为数据测试方法及系统 |
CN114281688A (zh) * | 2021-12-20 | 2022-04-05 | 神策网络科技(北京)有限公司 | 一种无码或低码的自动化用例管理方法和装置 |
CN115509904A (zh) * | 2022-09-20 | 2022-12-23 | 平安银行股份有限公司 | 一种接口测试用例的断言生成方法及装置 |
CN116055349A (zh) * | 2022-12-29 | 2023-05-02 | 云控智行科技有限公司 | 一种流式数据的检测方法、装置及设备 |
CN116662168A (zh) * | 2023-05-24 | 2023-08-29 | 天翼电子商务有限公司 | 基于Apollo和Kafka的自定义代码低侵入mock数据挡板方法及系统 |
CN117215910A (zh) * | 2023-07-31 | 2023-12-12 | 福州佳软软件技术有限公司 | 接口测试框架生成方法、测试方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117724986A (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107665171B (zh) | 自动回归测试方法及装置 | |
CA2670231C (en) | Automated testing and control of networked devices | |
CN111722839B (zh) | 一种代码生成方法、装置、电子设备及存储介质 | |
CN109800258B (zh) | 数据文件部署方法、装置、计算机设备及存储介质 | |
CN112052172B (zh) | 第三方通道的快速测试方法、装置和电子设备 | |
CN111597110B (zh) | 页面测试方法、装置、电子设备及存储介质 | |
CN111522728A (zh) | 自动化测试用例的生成方法、电子设备及可读存储介质 | |
CN112286806A (zh) | 自动化测试方法、装置、存储介质及电子设备 | |
CN111382069A (zh) | 一种数据流测试方法及系统 | |
CN114116801A (zh) | 数据清单核查方法及装置 | |
CN113297078A (zh) | Mock系统与基于mock系统的数据测试方法 | |
CN113220597A (zh) | 测试方法、测试装置、电子设备及存储介质 | |
CN112965912A (zh) | 接口测试用例生成方法、装置和电子设备 | |
CN117724986B (zh) | 一种在用例执行中自动操作kafka的方法及装置 | |
CN117194255A (zh) | 测试数据维护方法、装置、设备及存储介质 | |
CN115718705A (zh) | 一种综治平台接口自动化测试方法及系统 | |
CN117131545A (zh) | 数据处理方法及装置、存储介质、终端 | |
CN114490892A (zh) | 一种基于datax的数据传输方法和装置 | |
CN116166533A (zh) | 接口测试方法、装置、终端设备以及存储介质 | |
CN113238940A (zh) | 一种接口测试结果的比对方法、装置、设备和存储介质 | |
CN105740114A (zh) | 移动终端的容错测试方法及装置 | |
CN116795723B (zh) | 链式单元测试处理方法、装置及计算机设备 | |
CN113141366B (zh) | 报文报送方法及装置、存储介质和电子设备 | |
CN114398294B (zh) | 一种测试方法、装置、电子设备及存储介质 | |
CN114741299A (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 |