CN113254187A - 测试数据的生成方法、装置、电子设备和存储介质 - Google Patents

测试数据的生成方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN113254187A
CN113254187A CN202110697977.3A CN202110697977A CN113254187A CN 113254187 A CN113254187 A CN 113254187A CN 202110697977 A CN202110697977 A CN 202110697977A CN 113254187 A CN113254187 A CN 113254187A
Authority
CN
China
Prior art keywords
data
message
test data
kafka
test
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
Application number
CN202110697977.3A
Other languages
English (en)
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.)
Jingdong Technology Holding Co Ltd
Original Assignee
Jingdong Technology Holding 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 Jingdong Technology Holding Co Ltd filed Critical Jingdong Technology Holding Co Ltd
Priority to CN202110697977.3A priority Critical patent/CN113254187A/zh
Publication of CN113254187A publication Critical patent/CN113254187A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

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

Abstract

本发明提供一种测试数据的生成方法、装置、电子设备和存储介质,生成方法包括:获取测试数据生成请求,所述测试数据生成请求包括待生成测试数据的数据内容、数据格式以及预设的消息队列的设定主题;将所述数据内容按照数据格式转换为所述消息队列的消息数据;将所述消息数据写入到所述设定主题,以使得订阅所述设定主题的用户获取所述消息数据,并根据所述消息数据生成所述待生成测试数据。本发明的技术方案可以简化制造流式数据的流程。

Description

测试数据的生成方法、装置、电子设备和存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种测试数据的生成方法、装置、电子设备和非暂态计算机可读存储介质。
背景技术
随着大数据技术应用越来越普及,针对大数据相关的应用也越来越多。在测试对象为传统的大数据离线计算能力的测试程中,测试人员可以使用多种数据库管理工具来制造测试数据。但对于测试对象为处理流式数据的流式计算能力的测试工作,并没有方便的、统一的测试工具用以制造流式的测试数据。
相关技术中,在生成针对流式数据进行测试的测试数据时,测试人员一般需要登陆堡垒机在部署kafka的机器上输入指定命令创建主题(topic)并向指定主题发送消息,这样的操作过程比较繁琐,对数据的配置格式、发送数据的间隔、数据量等测试需要的参数配置也不够灵活,导致大量测试场景需要测试人员手动配置数据样式后再登陆堡垒机操作验证,效率比较低。
发明内容
本发明提供一种测试数据的生成方法、装置、电子设备和非暂态计算机可读存储介质,用以解决现有技术中手动生成测试数据操作繁琐的缺陷,实现测试数据的自动化生成。
本发明提供一种测试数据的生成方法,包括:获取测试数据生成请求,所述测试数据生成请求包括待生成测试数据的数据内容、数据格式以及预设的消息队列的设定主题;将所述数据内容按照数据格式转换为所述消息队列的消息数据;将所述消息数据写入到所述设定主题,以使得订阅所述设定主题的用户获取所述消息数据,并根据所述消息数据生成所述待生成测试数据。
根据本发明提供的一种测试数据的生成方法,所述将所述数据内容按照所述数据格式转换为所述消息队列的消息数据之前,所述生成方法还包括:基于开发框架创建所述开发框架下的所述消息队列的项目;通过所述开发框架的所述消息队列的模板,定义所说消息队列的生产者发送所述消息队列的消息的结构;通过添加所述开发框架的监听注解,配置接收消息的所述消息队列的消费者的ip地址。
根据本发明提供的一种测试数据的生成方法,所述测试数据生成请求还包括所述待生成测试数据的定时信息;所述将所述消息数据写入到所述设定主题,包括:将所述消息数据按照所述定时信息设定的发送时间写入到所述设定主题。
根据本发明提供的一种测试数据的生成方法,所述测试数据生成请求还包括所述待生成测试数据的数据数量;所述将所述数据内容按照数据格式转换为所述消息队列的消息数据,包括:将所述数据内容按照所述数据格式和所述数据数量转换为所述消息数据。
根据本发明提供的一种测试数据的生成方法,所述测试数据生成请求还包括所述待生成测试数据的线程数量;所述将所述消息数据写入到所述设定主题,包括:将所述消息数据通过所述线程数量的线程写入到所述设定主题。
根据本发明提供的一种测试数据的生成方法,在所述将所述消息数据写入到所述设定主题之前,所述生成方法还包括:若所述设定主题不存在,则自动创建所述设定主题。
根据本发明提供的一种测试数据的生成方法,所述消息队列包括kafka消息队列,所述开发框架包括spring框架。
本发明还提供一种测试数据的生成装置,所述生成装置包括:获取单元,用于获取测试数据生成请求,所述测试数据生成请求包括待生成测试数据的数据内容、数据格式以及预设的消息队列的设定主题;转换单元,用于将所述数据内容按照所述数据格式转换为所述消息队列的消息数据;写入单元,用于将所述消息数据写入到所述设定主题,以使得订阅所述设定主题的用户获取所述消息数据,并根据所述消息数据生成所述待生成测试数据。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述测试数据的生成方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述测试数据的生成方法的步骤。
本发明提供的测试数据的生成方法、装置、电子设备和非暂态计算机可读存储介质,通过预设kafka生产者消息模板,将获取的待测试数据的数据内容转换为消息队列形式的消息数据,并写入到设定主题,以供用户获取。用户获取消息数据后,根据该消息数据即可以生成测试数据,以进行流式数据的测试,相比较现有技术,实现了流式测试数据的自动生成,提高了测试人员的工作效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的测试数据的生成方法的流程示意图之一;
图2是本发明提供的服务前端界面的示意图;
图3是本发明提供的测试数据的生成的服务的生成过程的流程示意图;
图4是本发明提供的测试数据的生成方法的流程示意图之二;
图5是本发明提供的测试数据的生成装置的结构示意图;
图6是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明一个或多个实施例。在本发明一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本发明一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在相关技术中,在测试对象为传统的大数据离线计算能力的测试程中,测试人员可以使用多种数据库管理工具来制造测试数据。但对于测试对象为处理流式数据的流式计算能力的测试工作,并没有方便的、统一的测试工具用以制造流式的测试数据。
具体地,对流式数据进行测试时,需要手动进行测试数据的生成,测试数据的配置参数也需要测试人员手动配置,从而导致测试人员的工作效率较低。
为解决该问题,本发明实施例提供一种测试数据的生成方案。下面结合图1至图6对本发明示例实施方式进行详细说明。
如图1所示的是本发明一种实施例的测试数据的生成方法的流程图。本发明实施例提供的方法可以由任意具备计算机处理能力的电子设备执行,例如终端设备和/或服务器。如图1所示,该测试数据的生成方法包括:
步骤102,获取测试数据生成请求,测试数据生成请求包括待生成测试数据的数据内容、数据格式以及预设的消息队列的设定主题。
具体地,测试数据生成请求由服务前端页面根据用户操作数据生成。用户可以通过浏览器输入提供测试数据生成服务的服务器的ip地址和端口号来访问上述服务前端页面。该服务前端页面提供上述待生成测试数据的数据内容、数据格式以及预设的消息队列的设定主题的输入栏。该输入栏的输入方式可以根据测试需求进行设置,比如下拉选项进行选择的输入方式、空白栏直接输入的输入方式等,且并不局限于此。
步骤104,将数据内容按照数据格式转换为消息队列的消息数据。
步骤106,将消息数据写入到设定主题,以使得订阅设定主题的用户获取消息数据,并根据消息数据生成待生成测试数据。
在本发明实施例的技术方案中,根据测试数据生成请求生成消息队列形式的消息数据,并将消息数据写入到预设的设定主题,以使得订阅该设定主题的用户接收到该消息数据。这样,用户可以得到设定的数据内容的流式的测试数据,用于流式数据处理功能的测试。该方案在获取用户通过服务前端页面输入的测试数据的数据内容、数据格式和指定的设定主题后,自动生成符合用户需求的流式测试数据,无需测试人员手动设置测试数据,提高了测试人员的工作效率。
在本发明实施例中,消息队列可以为kafka队列,在步骤104中国,可以通过预设的kafka生产者消息模板,将数据内容按照数据格式转换为kafka消息数据。kafka是一种高吞吐量的分布式发布订阅的消息队列***,作为一种消息队列产品,其基于主题和partitions(分区)的设计,可以达到非常高的消息发送处理性能。kafka集群包括kafka服务器、kafka生产者和kafka消费者,每条发布到kafka集群的消息都有一个类别,这个类别即为主题。kafka生产者将kafka消息写入kafka服务器中时,需要指定要写入的主题。订阅该主题的kafka消费者可以读取该主题的消息。
具体地,kafka生产者消息模板指的是kafka消息体的结构模板,具体包括预先定义好的键值对key-value的结构。该kafka生产者消息模板可以通过kafkaTemplate定义完成。kafkaTemplate是spring-kafka项目中的一个类。
在步骤106中,将kafka消息数据写入到设定主题,以使得订阅设定主题的kafka消费者获取kafka消息数据,并根据kafka消息数据生成待生成测试数据。
具体地,该设定主题为kafka集群所有主题中的其中一个。例如,设定主题可以为“streaming-data-test”。该设定主题的消息可以被分发给一个kafka消费者,也可以被广播给一个消费组的所有kafka消费者。根据kafka消费者订阅设定主题的情况,可以使得指定的kafka消费者获取到设定主题的kafka消息,并根据该kafka消息生成待生成测试数据。
在本发明实施例的技术方案中,根据测试数据生成请求生成kafka消息数据,并模拟kafka生产者将该kafka消息数据写入到用户预设的设定主题,以使得订阅该设定主题的kafka消费者接收到该kafka消息数据。这样,作为kafka消费者的服务器就可以得到用户设定的数据内容的流式的测试数据,用于流式数据处理功能的测试。
在本发明实施例中,可以基于开发框架创建开发框架下的消息队列的项目;通过开发框架的消息队列的模板,定义所说消息队列的生产者发送消息队列的消息的结构;通过添加开发框架的监听注解,配置接收消息的消息队列的消费者的ip地址。
在本发明实施例中,生成方法基于spring框架实现。spring是一个开源的开发框架,它是为了解决企业应用开发的复杂性而创建的。spring使用基本的JavaBean来完成以前只可能由企业级JavaBean完成的功能。但是spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从spring中受益。其中,JavaBean是一种Java语言写成的可重用组件。
spring是一个轻量级的控制反转和面向切面的容器框架。从大小与开销两方面而言,spring都是轻量的。spring是非侵入式的,spring应用中的对象不依赖于spring的特定类。
spring通过一种称作控制反转的技术促进了松耦合。当应用控制反转时,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。
spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与***级服务进行内聚性的开发。应用对象只完成业务逻辑,并不负责日志或事务支持。
spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器。bean可以创建一个单独的实例或者每次需要时都生成一个新的实例,并定义这些实例是如何相互关联的。spring可以将简单的组件配置、组合成为复杂的应用。
具体地,基于spring创建一个项目spring-kafka,spring-kafka封装有kafka-client(客户端),用于在spring项目里快速集成kafka,可以实现流式数据的收发。
在基于spring项目里集成kafka时,首先需要在工程中引入依赖,其代码程序如下:
<dependency>
<groupId>org.springframework.kafka</groupId>//依赖项目的唯一标识为org.springframework.kafka
<artifactId>spring-kafka</artifactId>//依赖项目的通用名称为spring-kafka
</dependency>
在工程中引入依赖之后,需要对kafka生产者和kafka消费者进行定义。
在定义kafka生产者时,通过spring框架的kafkaTemplate(kafka模板),配合前端网页定义kafka生产者发送kafka消息的json消息体的结构,例如,编辑键值对key-value的结构,完成对kafka生产者的定义。
例如,json消息体的结构可以为{"contractNo":"XXXX","contractstatus":"XXX"}。其中,定义json消息体的结构的key值为contractNo和contractstatus,他们对应的value值在后续步骤中根据用户输入的数据内容填充。
在定义kafka消费者时,通过添加spring框架的一种监听注解,即@kafkalistener注解,可以配置接收消息的kafka消费者的ip地址,从而完成kafka消费者的配置。其中,@kafkalistener是spring boot的一个注解。
spring boot用以简化新spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
在基于spring项目里集成kafka的代码完成实现后,可以使用assembly部署服务。这里,assembly是spring boot项目的一种常用的打包插件。
在使用assembly部署服务时,首先编辑项目的pom.xml文件,加入assembly打包插件。之后,编写服务的启动和停止的shell脚本。
在编写服务的启动和停止的shell脚本时,首先在assembly目录下创建一个bin文件夹,然后在该文件夹下创建一个start.sh文件,start.sh文件是linux环境下的启动脚本,接着创建一个stop.sh文件,stop.sh文件是linux环境下的停止脚本。
在启动和停止脚本创建完成后,接着创建打包配置文件。
具体地,在assembly文件夹下创建一个assembly.xml配置文件,并使用mvnpackage的命令对项目整体打包即可。
Maven项目对象模型是一种通过一小段描述信息来管理项目的构建、报告和文档的项目管理工具软件。mvn package是Maven项目对象模型的常用命令,其表示根据项目生成jar。这里,jar是一种软件包文件格式。
打包后在target下会生成一个名为xxx.tar.gz的压缩文件,上传至linux服务器解压后,可看到start.sh和stop.sh文件在bin文件夹目录下,执行命令启动start.sh即可启动服务,服务启动后,相应的日志文件会生成到logs目录下。
在服务部署完成后,如图2所示,部署服务器的服务前端页面可以展示可输入编辑json样式的输入框、数据数量和线程数量的输入框、指定主题的输入框、指定发送消息量和定时间隔发送选择的点选框以及启动程序的启动按钮。
用户可直接通过浏览器输入部署服务器的ip+端口号访问该服务前端页面,并在该服务前端页面上进行输入操作。
具体地,在填写json消息体后,若不需要指定发送消息量,则不点选对应的点选框,该点选框对应的数据数量和线程数量不需要填写。若需要指定发送消息量,则点选对应的点选框,并对应填写该点选框对应的数据数量和线程数量。
若不需要定时间隔发送,则不点选对应的点选框,该点选框对应的corn表达式不需要填写。若需要定时间隔发送,则点选对应的点选框,并对应填写该点选框对应的corn表达式。
此外,用户还需要在指定主题一栏输入的预设的设定主题。
以上操作完成后,点击启动按钮,服务前端网页即可以生成测试数据生成请求,已发送给kafka生成者。
相关技术中,每个主题代表的消息有1个或者多个分区组成。kafka只保证在一个分区上的数据是有序的数据流分区。因此,kafka生产者发送的kafka消息数据还可以指定主题的分区。
对应的,可以指定kafka消费者仅读取设定主题的第一分区,这样,可以保证消息被处理的顺序是按照分区的存放顺序进行,从而保证可以得到设定顺序的流式测试数据。
用户操作如图2所示的服务前端页面时,对应生成的测试数据生成请求还可以包括待生成测试数据的定时信息、待生成测试数据的数据数量以及待生成测试数据的线程数量。
在测试数据生成请求包括待生成测试数据的定时信息、待生成测试数据的数据数量以及待生成测试数据的线程数量时,测试数据的生成的服务生成过程还需要包括设定kafka消息的发送数据数量、线程数量,以及设定定时任务。
具体地,如图3所示,在本发明实施例中,测试数据的生成的服务的生成过程包括以下步骤:
步骤301,定义kafka生产者。具体地,通过spring框架的kafka模板,配合前端网页定义kafka生产者发送kafka消息的json消息体的结构。
步骤302,设定发送数据数量和线程数量。具体地,设定发送kafka消息数据的数量和线程与用户输入的数据数量和线程数量的关系,以根据获取到用户输入的数据数量和线程数量确定发送kafka消息数据的数量和线程。
步骤303,设定定时任务。具体地,设定发送kafka消息数据的定时发送时间与用户输入的corn表达式的关系,以根据获取到用户输入的corn表达式确定发送kafka消息数据的定时发送时间。
步骤304,定义kafka消费者。具体地,通过添加spring boot框架的@kafkalistener注解,配置接收消息的kafka消费者的ip地址,从而完成kafka消费者的配置。
此外,若用户输入的设定主题不存于与kafka集群的主题中时,需要创建该设定主题,并将kafka消息数据写入到该新创建的设定主题。
在测试数据生成请求包括待生成测试数据的定时信息、待生成测试数据的数据数量以及待生成测试数据的线程数量时,需要将数据内容按照数据格式和数据数量转换为kafka消息数据,并将kafka消息数据按照定时信息设定的发送时间写入到设定主题。
具体地,若需要持续一段时间向目标地址不断发送消息,可以采用ThreadPoolTaskscheduler,通过定时任务的方式发送数据。
这里,ThreadPoolTaskscheduler是spring boot中的一个bean对象,可以很方便的对重复执行的任务进行调度管理,其支持根据cron表达式创建周期性任务。bean对象指的是spring boot中的一个类。Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义
这里,发送线程可以为多线程,即将kafka消息数据通过线程数量的线程写入到设定主题。
在本发明实施例中,在将数据内容按照数据格式转换为kafka消息数据时,可以将数据内容按照数据格式转换为json格式的kafka消息数据。
如图4所示的是本发明另一种实施例的测试数据的生成方法的流程图。如图4所示,本发明实施例的测试数据的生成方法包括以下步骤:
步骤401,服务前端页面根据用户操作数据生成测试数据生成请求。
步骤402,服务前端页面向kafka生产者发送测试数据生成请求。
步骤403,kafka生产者通过预设的kafka生产者消息模板,将数据内容按照数据格式转换为kafka消息数据。
步骤404,kafka生产者将kafka消息数据写入到设定主题,发送给kafka服务器。
步骤405,kafka服务器将kafka消数据发送到订阅设定主题的kafka消费者。
步骤406,kafka消费者获取kafka消息数据,并根据kafka消息数据生成待生成测试数据。
本发明提供的测试数据的生成方法,通过预设kafka生产者消息模板,将获取的待测试数据的数据内容转换为消息队列形式的消息数据,并写入到设定主题,以供用户获取。用户获取消息数据后,根据该消息数据即可以生成测试数据,以进行流式数据的测试,相比较现有技术,实现了流式测试数据的自动生成,提高了测试人员的工作效率。
下面对本发明提供的测试数据的生成装置进行描述,下文描述的测试数据的生成装置与上文描述的测试数据的生成方法可相互对应参照。
如图5所示,本发明实施例的测试数据的生成装置包括:
获取单元502,用于获取测试数据生成请求,测试数据生成请求包括待生成测试数据的数据内容、数据格式以及预设的消息队列的设定主题。
转换单元504,用于将数据内容按照数据格式转换为消息队列的消息数据。
写入单元506,用于将消息数据写入到设定主题,以使得订阅设定主题的用户获取消息数据,并根据消息数据生成待生成测试数据。
在本发明实施例的技术方案中,根据测试数据生成请求生成消息队列形式的消息数据,并将消息数据写入到预设的设定主题,以使得订阅该设定主题的用户接收到该消息数据。这样,用户可以得到设定的数据内容的流式的测试数据,用于流式数据处理功能的测试。该方案在获取用户通过服务前端页面输入的测试数据的数据内容、数据格式和指定的设定主题后,自动生成符合用户需求的流式测试数据,无需测试人员手动设置测试数据,提高了测试人员的工作效率。
在本发明实施例中,消息队列可以为kafka队列。
其中,转换单元还可以用于:通过预设的kafka生产者消息模板,将数据内容按照数据格式转换为kafka消息数据。写入单元还可以用于:将kafka消息数据写入到设定主题,以使得订阅设定主题的kafka消费者获取kafka消息数据,并根据kafka消息数据生成待生成测试数据。
在本发明实施例的技术方案中,根据测试数据生成请求生成kafka消息数据,并模拟kafka生产者将该kafka消息数据写入到用户预设的设定主题,以使得订阅该设定主题的kafka消费者接收到该kafka消息数据。这样,作为kafka消费者的服务器就可以得到用户设定的数据内容的流式的测试数据,用于流式数据处理功能的测试。
在本发明实施例中,生成装置基于spring框架实现。基于spring创建一个项目spring-kafka,spring-kafka封装有kafka-client,用于在spring项目里快速集成kafka,可以实现流式数据的收发。
在工程中引入依赖之后,需要对kafka生产者和kafka消费者进行定义。
在定义kafka生产者时,通过spring框架的kafkaTemplate,配合前端网页定义kafka生产者发送kafka消息的json消息体的结构,例如,编辑键值对key-value的结构,完成对kafka生产者的定义。
在定义kafka消费者时,通过添加spring框架的一种监听注解,即@kafkalistener注解,可以配置接收消息的kafka消费者的ip地址,从而完成kafka消费者的配置。其中,@kafkalistener是spring boot的一个注解。
用户操作如图2所示的服务前端页面时,对应生成的测试数据生成请求还可以包括待生成测试数据的定时信息、待生成测试数据的数据数量以及待生成测试数据的线程数量。
在测试数据生成请求包括待生成测试数据的定时信息、待生成测试数据的数据数量以及待生成测试数据的线程数量时,测试数据的生成的服务生成过程还需要包括设定kafka消息的发送数据数量、线程数量,以及设定定时任务。
在本发明实施例中,测试数据生成请求还包括待生成测试数据的定时信息,写入单元还用于:将消息数据按照定时信息设定的发送时间写入到设定主题。
在本发明实施例中,测试数据生成请求还包括待生成测试数据的数据数量,转换单元还用于将数据内容按照数据格式和数据数量转换为消息数据。
在本发明实施例中,测试数据生成请求还包括待生成测试数据的线程数量,写入单元还用于:将消息数据通过线程数量的线程写入到设定主题。
在本发明实施例中,生成装置还包括创建单元,用于在设定主题不存在时,在将kafka消息数据写入到设定主题之前,创建设定主题。
在本发明实施例中,转换单元还用于:将数据内容按照数据格式转换为json格式的kafka消息数据。
由于本发明的示例实施例的测试数据的生成装置的各个功能模块与上述测试数据的生成方法的示例实施例的步骤对应,因此对于本发明装置实施例中未披露的细节,请参照本发明上述的测试数据的生成方法的实施例。
本发明提供的测试数据的生成装置,通过预设kafka生产者消息模板,将获取的待测试数据的数据内容转换为消息队列形式的消息数据,并写入到设定主题,以供用户获取。用户获取消息数据后,根据该消息数据即可以生成测试数据,以进行流式数据的测试,相比较现有技术,实现了流式测试数据的自动生成,提高了测试人员的工作效率。
图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行测试数据的生成方法,该方法包括:获取测试数据生成请求,所述测试数据生成请求包括待生成测试数据的数据内容、数据格式以及预设的消息队列的设定主题;将所述数据内容按照数据格式转换为所述消息队列的消息数据;将所述消息数据写入到所述设定主题,以使得订阅所述设定主题的用户获取所述消息数据,并根据所述消息数据生成所述待生成测试数据。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的测试数据的生成方法,该方法包括:获取测试数据生成请求,所述测试数据生成请求包括待生成测试数据的数据内容、数据格式以及预设的消息队列的设定主题;将所述数据内容按照数据格式转换为所述消息队列的消息数据;将所述消息数据写入到所述设定主题,以使得订阅所述设定主题的用户获取所述消息数据,并根据所述消息数据生成所述待生成测试数据。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的测试数据的生成方法,该方法包括:获取测试数据生成请求,所述测试数据生成请求包括待生成测试数据的数据内容、数据格式以及预设的消息队列的设定主题;将所述数据内容按照数据格式转换为所述消息队列的消息数据;将所述消息数据写入到所述设定主题,以使得订阅所述设定主题的用户获取所述消息数据,并根据所述消息数据生成所述待生成测试数据。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种测试数据的生成方法,其特征在于,所述生成方法包括:
获取测试数据生成请求,所述测试数据生成请求包括待生成测试数据的数据内容、数据格式以及预设的消息队列的设定主题;
将所述数据内容按照数据格式转换为所述消息队列的消息数据;
将所述消息数据写入到所述设定主题,以使得订阅所述设定主题的用户获取所述消息数据,并根据所述消息数据生成所述待生成测试数据。
2.根据权利要求1所述的生成方法,其特征在于,所述将所述数据内容按照所述数据格式转换为所述消息队列的消息数据之前,所述生成方法还包括:
基于开发框架创建所述开发框架下的所述消息队列的项目;
通过所述开发框架的所述消息队列的模板,定义所说消息队列的生产者发送所述消息队列的消息的结构;
通过添加所述开发框架的监听注解,配置接收消息的所述消息队列的消费者的ip地址。
3.根据权利要求1所述的生成方法,其特征在于,所述测试数据生成请求还包括所述待生成测试数据的定时信息;
所述将所述消息数据写入到所述设定主题,包括:
将所述消息数据按照所述定时信息设定的发送时间写入到所述设定主题。
4.根据权利要求1所述的生成方法,其特征在于,所述测试数据生成请求还包括所述待生成测试数据的数据数量;
所述将所述数据内容按照数据格式转换为所述消息队列的消息数据,包括:
将所述数据内容按照所述数据格式和所述数据数量转换为所述消息数据。
5.根据权利要求1所述的生成方法,其特征在于,所述测试数据生成请求还包括所述待生成测试数据的线程数量;
所述将所述消息数据写入到所述设定主题,包括:
将所述消息数据通过所述线程数量的线程写入到所述设定主题。
6.根据权利要求1至5任一项所述的生成方法,其特征在于,在所述将所述消息数据写入到所述设定主题之前,所述生成方法还包括:
若所述设定主题不存在,则自动创建所述设定主题。
7.根据权利要求2所述方法,其特征在于,所述消息队列包括kafka消息队列,所述开发框架包括spring框架。
8.一种测试数据的生成装置,其特征在于,所述生成装置包括:
获取单元,用于获取测试数据生成请求,所述测试数据生成请求包括待生成测试数据的数据内容、数据格式以及预设的消息队列的设定主题;
转换单元,用于将所述数据内容按照所述数据格式转换为所述消息队列的消息数据;
写入单元,用于将所述消息数据写入到所述设定主题,以使得订阅所述设定主题的用户获取所述消息数据,并根据所述消息数据生成所述待生成测试数据。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述的生成方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的生成方法的步骤。
CN202110697977.3A 2021-06-23 2021-06-23 测试数据的生成方法、装置、电子设备和存储介质 Pending CN113254187A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110697977.3A CN113254187A (zh) 2021-06-23 2021-06-23 测试数据的生成方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110697977.3A CN113254187A (zh) 2021-06-23 2021-06-23 测试数据的生成方法、装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN113254187A true CN113254187A (zh) 2021-08-13

Family

ID=77189273

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110697977.3A Pending CN113254187A (zh) 2021-06-23 2021-06-23 测试数据的生成方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN113254187A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114363225A (zh) * 2021-12-22 2022-04-15 深圳优美创新科技有限公司 基于mtqq协议的设备调试方式、***及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150019655A1 (en) * 2013-07-11 2015-01-15 Apollo Group, Inc. Message Consumer Orchestration Framework
US20150200887A1 (en) * 2014-01-14 2015-07-16 International Business Machines Corporation Message switch file sharing
CN110083439A (zh) * 2019-05-23 2019-08-02 北京奥鹏远程教育中心有限公司 分布式事务***
CN110597714A (zh) * 2019-08-28 2019-12-20 深圳市彬讯科技有限公司 kafka消息的测试方法、装置、计算机设备及存储介质
US20200241942A1 (en) * 2019-01-28 2020-07-30 Salesforce.Com, Inc. Method and system for processing a stream of incoming messages sent from a specific input message source and validating each incoming message of that stream before sending them to a specific target system
CN112346979A (zh) * 2020-11-11 2021-02-09 杭州飞致云信息科技有限公司 软件性能测试方法、***和可读存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150019655A1 (en) * 2013-07-11 2015-01-15 Apollo Group, Inc. Message Consumer Orchestration Framework
US20150200887A1 (en) * 2014-01-14 2015-07-16 International Business Machines Corporation Message switch file sharing
US20200241942A1 (en) * 2019-01-28 2020-07-30 Salesforce.Com, Inc. Method and system for processing a stream of incoming messages sent from a specific input message source and validating each incoming message of that stream before sending them to a specific target system
CN110083439A (zh) * 2019-05-23 2019-08-02 北京奥鹏远程教育中心有限公司 分布式事务***
CN110597714A (zh) * 2019-08-28 2019-12-20 深圳市彬讯科技有限公司 kafka消息的测试方法、装置、计算机设备及存储介质
CN112346979A (zh) * 2020-11-11 2021-02-09 杭州飞致云信息科技有限公司 软件性能测试方法、***和可读存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
布碗: "springboot学习:kafka的使用", pages 1 - 3, Retrieved from the Internet <URL:《https://blog.csdn.net/sinat_36553913/article/details/100601928》> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114363225A (zh) * 2021-12-22 2022-04-15 深圳优美创新科技有限公司 基于mtqq协议的设备调试方式、***及存储介质
CN114363225B (zh) * 2021-12-22 2023-09-01 深圳优美创新科技有限公司 基于mtqq协议的设备调试方式、***及存储介质

Similar Documents

Publication Publication Date Title
US9606778B2 (en) System and method for meta-data driven, semi-automated generation of web services based on existing applications
DK3011444T3 (en) METHOD AND APPARATUS FOR CODE VIRTUALIZATION AND GENERATION OF REMOTE PROCESS CALLS
CN117008923B (zh) 基于ai大模型的代码生成和编译部署方法、平台和设备
CN111078555B (zh) 一种测试文件的生成方法、***、服务器和存储介质
CN110362490B (zh) 融合iOS与Android移动应用的自动化测试方法及***
CN112395196B (zh) 数据作业开发测试方法、装置、设备、***及存储介质
CN111026634A (zh) 一种接口自动化测试***、方法、装置及存储介质
CN112217886B (zh) 分布式***的测试方法及***、消息生产及消费模块
CN110532182B (zh) 一种虚拟化平台的自动化测试方法及装置
US11954011B2 (en) Apparatus and method for executing customized artificial intelligence production line
CN112181852A (zh) 一种接口自动化测试方法、装置、计算机设备及存储介质
CN113946323A (zh) 基于微服务体系的在线开发方法、装置、设备及存储介质
Rattanapoka et al. An MQTT-based IoT cloud platform with flow design by Node-RED
CN115543315A (zh) 一种使用数据模型控制页面交互的方法及***
CN112667242A (zh) 一种将c代码封装成fmu的方法及装置
CN113254187A (zh) 测试数据的生成方法、装置、电子设备和存储介质
CN106484488A (zh) 一体化云编译方法和***
CN111142861B (zh) 结构化综控***集成方法及装置
CN114610597A (zh) 一种压力测试方法、装置、设备及存储介质
CN109471709A (zh) 基于Apache Oozie框架处理大数据的流程任务的调度方法
CN114327770A (zh) 容器集群管理***及方法
CN112363700A (zh) 智能合约的协同创建方法、装置、计算机设备和存储介质
Lukavsky Building Big Data Pipelines with Apache Beam: Use a single programming model for both batch and stream data processing
CN113504912B (zh) 实时任务的处理方法和装置、存储介质及电子装置
Bronkhorst et al. Design Report VEmulate

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