CN117312124A - 一种测试用例的获取方法以及相关装置 - Google Patents
一种测试用例的获取方法以及相关装置 Download PDFInfo
- Publication number
- CN117312124A CN117312124A CN202210726376.5A CN202210726376A CN117312124A CN 117312124 A CN117312124 A CN 117312124A CN 202210726376 A CN202210726376 A CN 202210726376A CN 117312124 A CN117312124 A CN 117312124A
- Authority
- CN
- China
- Prior art keywords
- data
- data set
- online
- type
- 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
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 214
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000012545 processing Methods 0.000 claims description 31
- 238000013507 mapping Methods 0.000 claims description 17
- 238000012216 screening Methods 0.000 claims description 6
- 238000007781 pre-processing Methods 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 abstract description 9
- 238000005516 engineering process Methods 0.000 abstract description 6
- 230000000875 corresponding effect Effects 0.000 description 31
- 230000008569 process Effects 0.000 description 24
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 238000000605 extraction Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000002085 persistent effect Effects 0.000 description 6
- 239000000243 solution Substances 0.000 description 6
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000013522 software testing Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 101150055297 SET1 gene Proteins 0.000 description 1
- 101150117538 Set2 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000013102 re-test Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000001550 time effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/368—Test management for test version control, e.g. updating test cases to a new software version
-
- 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/3684—Test management for test design, e.g. generating new test cases
-
- 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
-
- 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/3692—Test management for test results analysis
Abstract
本申请实施例提供了一种测试用例的获取方法以及相关装置,用于从线上数据集中根据测试用例的用例描述获取测试用例,从而降低测试用例的维护成本。包括:获取该diff回归测试中被测服务的线上运行版本的线上数据集,该线上数据集包括多个数据集合,该多个数据集合中的每个数据集合包括由标识信息关联存储的输入数据和输出数据,该标识信息是根据该输入数据生成;根据该线上数据集和查询引擎的查询规则确定目标数据集,该查询规则为待输出测试用例的用例描述;将该目标数据集进行存储得到该diff回归测试中该被测服务的基线版本的测试用例。本申请可以应用于云技术。
Description
技术领域
本申请涉及软件测试领域,尤其涉及一种测试用例的获取方法以及相关装置。
背景技术
随着互联网技术的,应用软件的扩展功能越来越多,而为了维护软件的正常运行,软件测试也越来越重要。目前的自动化测试框架包括基于Python的单元测试框架(pyunit)和基于Java编程语言的单元测试框架(junit),在上述两种测试框架中,测试用例组织结果普通由初始化、构造测试数据、数据注入被测服务、结果验证、环境恢复等步骤组成。
而随着软件规模的不断扩大,回归测试在测试中占据越来越大的比例。回归测试是指修改了旧代码后,重新进行测试,以确认修改没有引入新的错误或导致其他代码产生错误。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。若回归测试还是采用上述自动化测试框架,则随着被测服务功能扩展,回归测试中的测试用例数量将持续增加,这样对于测试用例的编写是个很大的挑战,同时测试用例数量的增加,该测试用例的稳定性将会下降,增加了测试用例的维护成本。
因此,目前急需一种可以降低测试用例维护成本的测试用例获取方法。
发明内容
本申请实施例提供了一种测试用例的获取方法以及相关装置,用于从线上数据集中根据测试用例的用例描述获取测试用例,从而降低测试用例的维护成本。
有鉴于此,本申请一方面提供一种测试用例的获取方法,包括:获取该diff回归测试中被测服务的线上运行版本的线上数据集,该线上数据集包括多个数据集合,该多个数据集合中的每个数据集合包括由标识信息关联存储的输入数据和输出数据,该标识信息是根据该输入数据生成;根据该线上数据集和查询引擎的查询规则确定目标数据集,该查询规则为待输出测试用例的用例描述;将该目标数据集进行存储得到该diff回归测试中该被测服务的基线版本的测试用例。
本申请另一方面提供一种测试用例获取装置,包括:获取模块,用于获取该diff回归测试中被测服务的线上运行版本的线上数据集,该线上数据集包括多个数据集合,该多个数据集合中的每个数据集合包括由标识信息关联存储的输入数据和输出数据,该标识信息是根据该输入数据生成;
处理模块,用于根据该线上数据集和查询引擎的查询规则确定目标数据集,该查询规则为待输出测试用例的用例描述;将该目标数据集进行存储得到该diff回归测试中该被测服务的基线版本的测试用例。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,该处理模块,具体用于将该线上数据集输入该查询引擎;将该线上数据集中的各个数据的数据类型修改为该查询引擎对应的数据类型得到第一数据集;根据该查询引擎的查询规则从该第一数据集中查询得到该目标数据集。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,在该线上数据集的存储类型为分布式文件系统(Hadoop Distributed File System,hdfs)类型,该查询引擎为spark sql查询引擎时,该处理模块,具体用于将该线上数据集中的各个数据的数据类型由protobuf修改为jsonpath,得到该第一数据集。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,该处理模块,具体用于获取protobuf类型修改为jsonpath类型的映射关系表;
根据该映射关系表将该线上数据集中的各个数据的数据类型由protobuf修改为jsonpath,得到该第一数据集。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,该映射关系表包括:
该protobuf类型中的message字段对应该jsonpath类型中的object字段;
该protobuf类型中的enum字段对应该jsonpath类型中的string字段;
该protobuf类型中的bytes字段对应该jsonpath类型中的string字段;
该protobuf类型中的bool字段对应该jsonpath类型中的ture/false字段;
该protobuf类型中的int字段,float字段和double字段对应该jsonpath类型中的number字段;
该protobuf类型中的string字段对应该jsonpath类型中的string字段;
该protobuf类型中的repeated字段对应该jsonpath类型中的array字段。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,该处理模块,具体用于将该线上数据集中的数据根据筛选规则进行预处理得到第二数据集;
将该第二数据集输入所述查询引擎;将该第二数据集中的各个数据的数据类型修改为该查询引擎对应的数据类型得到第三数据集;根据该查询引擎的查询规则从该第三数据集中查询得到该目标数据集。
在一种可能的设计中,在本申请实施例的另一方面的另一种实现方式中,该输入模块,具体用于选择该线上数据集中的执行成功的数据集归于该第二数据集;
或者,
选择该线上数据集中处于预设时间段内的数据归于该第二数据集。本申请另一方面提供一种计算机设备,包括:存储器、处理器以及总线系统;
其中,存储器用于存储程序;
处理器用于执行存储器中的程序,处理器用于根据程序代码中的指令执行上述各方面的方法;
总线系统用于连接存储器以及处理器,以使存储器以及处理器进行通信。
本申请的另一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
本申请的另一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方面所提供的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:线上运行版本运行产生的线上数据根据输入数据生成的标识信息将输入数据与输出数据进行关联,从而使得该线上数据的数据特征定义更全面,使得在后续可以根据数据描述特征和查询引擎的查询规则实现对测试用例的抽取,这样可以仅通过添加查询规则的用例描述就可以实现对测试用例的抽取,从而降低测试用例的维护成本。
附图说明
图1a为本申请实施例中测试用例的获取方法的一个网络架构示意图;
图1b为本申请实施例中spark streaming任务数据录制回放流程的一个示意图;
图2为本申请实施例中diff回归测试的一个示例性流程示意图;
图3为本申请实施例中测试用例的获取方法的一个实施例示意图;
图4为本申请实施例中protobuf修改为jsonpath的映射表的一个示例性示意图;
图5为本申请实施例中一个示例性数据的数据类型由protobuf修改为jsonpath的示意图;
图6为本申请实施例中测试用例的获取方法的流程示意图;
图7为本申请实施例中测试用例获取装置的一个实施例示意图;
图8为本申请实施例中测试用例获取装置的另一个实施例示意图;
图9为本申请实施例中测试用例获取装置的另一个实施例示意图。
具体实施方式
本申请实施例提供了一种测试用例的获取方法以及相关装置,用于从线上数据集中根据测试用例的用例描述获取测试用例,从而降低测试用例的维护成本。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于理解,下面对本申请实施例中的部分专业名词进行说明:
diff回归:一种基于流量录制回放的回归测试方法。其可以通过同时运行新/老代码,对比运行结果,发现潜在缺陷(即bug)。其操作流程可以如下:1、分别部署新、老代码:其中老代码为线上稳定版本,新代码为新迭代的测试版本。2、构造测试数据:测试人员可以人工构造测试数据,也可以对线上稳定版本运行得到的线上数据进行抽样,用于diff测试。3、运行测试:使用测试数据分别在新、老代码中运行,并捕获测试结果。4、结果对比:对比新、老代码,相同接口下的输出,如果出现差异,则可以通过接口反向定位问题。
Spark:一个用于大规模数据处理的统一分析引擎;其也可以称为使用scala实现的基于内存计算的大数据开源集群计算环境。其提供了java,scala,python,R等语言的调用接口引擎。同时,该Spark提供缓存(Cache)机制来支持需要反复迭代计算或者多次数据共享,减少数据读取的输入输出(Input/Output,IO)开销;提供了一套支持有向无环图(Directed Acyclic Graph,DAG)的分布式并行计算的编程框架,减少多次计算之间中间结果写到分布式文件系统(Hadoop Distributed File System,hdfs)的开销;使用多线程池模型减少任务(Task)启动开稍,在数据集打乱(shuffle)过程中避免不必要的排序(sort)操作,从而减少磁盘IO操作。
spark streaming:核心Spark应用程序编程接口(Application ProgrammingInterface,API)的扩展,可实现实时数据流的可伸缩,高吞吐量,容错流处理。SparkStreaming适用于大量数据的快速处理。实时处理用例可以包括网站监测,网络监测,欺诈识别,网页点击,广告,物联网传感器。其具体的工作原理为将数据流每X秒分作一个集合,它在内部是一系列可伸缩的分布式数据集(Resilient Distributed Dataset,RDD)。Spark应用程序使用Spark API处理RDD,并且批量返回RDD操作的结果。一种示例性操作为:读取流式数据;处理流数据;将处理后的数据写入HBase表。
Spark sql:spark的一个模块,提供一个编程抽象,并且作为分布式SQL查询引擎。
Protobuf:全称Google Protocol Buffers,是谷歌(google)开发的一套用于数据存储,网络通信时用于协议编解码的工具库。protobuf是一种灵活高效的独立于语言平台的结构化数据表示方法。其可以用于结构化数据的序列化,其与语言无关、平台无关、可扩展的序列化结构数据格式在通信协议和数据存储等领域中使用比较多。protobuf对于结构中的每个成员会提供set系列函数和get系列函数。
Jsonpath:是xpath在对象简谱(JavaScript Object Notation,JSON)的应用。其表达式始终引用json结构。其中,对象简谱(JavaScript Object Notation,JSON)是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
基线版本:为线上稳定运行的软件版本的快照版本。在软件开发中,软件基线是项目储存库中每个工件版本在特定时期的一个“快照”。它提供一个正式标准,随后的软件开发工作基于此标准,并且只有经过授权后才能变更这个标准。建立一个初始基线后,以后每次对其进行的变更都将记录为一个差值,直到建成下一个基线。
本申请提供的方法可以应用于如图1a所示的网络架构,该网络架构包括该实施环境的系统可包括用户终端、后台服务器及版本管理服务器。其中,后台服务器与版本管理服务器形成无线或有线连接。版本管理服务器中存储有软件版本信息,例如软件版本号、不同版本软件的源代码文件等。后台服务器可以通过版本管理服务器获取被测服务的测试版本的软件代码、该被测服务的基线版本的软件代码和该被测服务的线上稳定版本的软件代码。当然,也可以接收用户输入的被测服务的测试版本的软件代码、该被测服务的基线版本的软件代码和该被测服务的线上稳定版本的软件代码。后台服务器用于执行测试用例的获取方法,从而获取需要进行回归测试的测试用例。用户终端与后台服务器形成无线或有线连接,且用户终端上具有相应的应用客户端或网页客户端,用户终端通过应用客户端或网页客户端接收用户输入的测试请求,并将该测试请求发送给后台服务器,从而可以触发后台服务器执行基于diff回归测试的测试用例的获取方法,并获取需要进行回归测试的测试用例,用户终端通过应用客户端或网页客户端从后台服务器获取需要进行回归测试的测试用例,并通过该被测服务的基线版本的软件代码执行该测试用例进行录制任务得到一个测试结果,并将该测试结果通过该被测服务的测试版本的软件代码进行回放,从而得到回归测试的结果。
而该diff回归测试也可以应用于大数据应用场景。其中,大数据(Big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
在上述网络架构中,该应用客户端或网页客户端可以通过浏览器的形式运行于终端设备上,也可以通过独立的应用程序(application,APP)的形式运行于终端设备上等,对于客户端的具体展现形式,此处不做限定。本申请涉及的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备可以是智能手机、平板电脑、笔记本电脑、掌上电脑、个人电脑、智能电视、智能手表、车载设备、可穿戴设备等,但并不局限于此。服务器和终端设备的数量也不做限制。本申请中,该回归测试中线上数据集以及持久化存储目标数据集时可以采用云存储方式。其中云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。目前,存储系统的存储方法为:创建逻辑卷,在创建逻辑卷时,就为每个逻辑卷分配物理存储空间,该物理存储空间可能是某个存储设备或者某几个存储设备的磁盘组成。客户端在某一逻辑卷上存储数据,也就是将数据存储在文件系统上,文件系统将数据分成许多部分,每一部分是一个对象,对象不仅包含数据而且还包含数据标识(ID entity,ID)等额外的信息,文件系统将每个对象分别写入该逻辑卷的物理存储空间,且文件系统会记录每个对象的存储位置信息,从而当客户端请求访问数据时,文件系统能够根据每个对象的存储位置信息让客户端对数据进行访问。存储系统为逻辑卷分配物理存储空间的过程,具体为:按照对存储于逻辑卷的对象的容量估量(该估量往往相对于实际要存储的对象的容量有很大余量)和独立冗余磁盘阵列(Redundant Array of Independent Disk,RAID)的组别,预先将物理存储空间划分成分条,一个逻辑卷可以理解为一个分条,从而为逻辑卷分配了物理存储空间。
可以理解的是,该回归测试中的数据存储也可以存储于数据库。而数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。数据库管理系统(Database Management System,DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、可扩展标记语言(Extensible Markup Language,XML);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如结构化查询语言(Structured Query Language,SQL)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
基于图1a所示的网络架构,本申请提供测试用例的获取方法应用于如图1b所示的spark streaming任务数据录制回放流程,如图1b所示,spark streaming任务数据录制回放系统包括线上环境和测试环境,其中,该线上环境用于运行线上稳定版本获取得到线上数据集,而该测试环境用于对被测服务的基线版本(也可以称为线上稳定版本的备份版本)和该被测服务的测试版本进行数据录制回话对比从而确定该测试版本的更新点以及更新后的执行结果。
下面分别对于线上环境与测试环境进行说明:
在线上环境中,线上服务(即被测服务的线上稳定版本)在运行过程中,对所有涉及外部交互的过程进行录制,该外部交互主要包括数据存取过程以及与外部服务(如图1b中所示的下游服务A和下游服务B)的消息交互过程等。同时,在输入数据(比如线上服务执行的某一个服务请求,该服务请求即为该输入数据)进入线上服务的系统内部时,线上服务将生成标识信息,该标识信息将对该输入数据以及该输入数据对应的处理流程进行关联(即实现该输入数据和与该输入数据对应的输出数据的关联),可以理解的是,该输出数据可以包括该输入数据调用的下游服务的所有反馈数据。即录制的数据包括该输入数据和该输出数据,然后该录制的数据被推送到数据收集服务,进行持久化存储。对于sparkstreaming任务类型,在进行录制数据的存储过程中,可以按照具体业务逻辑分为按照单条数据进行存储(即输入数据和其对应的输出数据作为单条数据进行存储)和按照时间序列对多个数据以数据集的形式进行存储(即对每分钟内生成的数据作为一个整体的数据集进行存储),录制结果同样以多批次的方式在时间上序列化存储,从而得到线上数据集。线上数据集作为回归的数据源,被注入测试环境,进行被测服务的基线版本的录制和测试版本的回放验证。而抽取测试用例发生在将线上录制数据注入到测试环境的过程。一种示例性方案中,该线上数据集的描述可以如下:“RegressionData{long msg_id;Messageoriginal_msg;Message original_rst;Repeated ServiceAlog alog;RepeatedServiceBlog blog;Repeated HbaseLog hbase_log;Repeated HdfsLog hdfs_log;}”
在测试环境中,在该线上数据集注入到该测试环境之后,该被测服务的基线版本与测试版本的diff回归测试的整体流程可以如图2所示,其中,该被测服务的基线版本与该测试版本作为代码提交后构建的产出物被推送到diff调度控制引擎,该diff调度控制引擎拉起不同版本的录制任务序列和回放任务序列。在图2中假设submit1对应的测试版本为该基线版本,该submit1对应的测试版本为该被测服务的测试服务。在该测试环境下,该diff调度控制引擎拉起该基线版本进行录制任务序列,此时该基线版本在运行过程中与线上环境中的线上稳定版本的录制过程相似,只是该基线版本在调用下游服务时,直接调用线上数据集中的数据,并不涉及调用线上环境中的下游服务。然后该diff调度控制引擎拉起该测试版本进行回放任务序列,此时该回放任务序列中播放的是该submit1对应的测试版本的测试结果;最后根据回放任务序列执行完毕后得到验证结果,并将该验证结果发送至统一展示确认平台,作为该测试版本发布前的质量参考依据。一种示例性方案中,该验证结果可以如下:“RegressionResult{Message original_msg;Message original_rst;Messageregression_rst;Repeated ServiceAlog old_alog;Repeated ServiceAlog new_alog;Repeated HbaseLog old_hlog;Repeated HbaseLog new_hlog;”
在此录制回放过程中,本申请提供的测试用例的获取方法在该线上数据集注入该测试环境的过程中,具体可以如下:获取该diff回归测试中被测服务的线上运行版本的线上数据集,该线上数据集包括多个数据集合,该多个数据集合中的每个数据集合包括由标识信息关联存储的输入数据和输出数据,该标识信息是根据该输入数据生成;将该线上数据集输入查询引擎;根据该查询引擎的查询规则从该线上数据集中确定目标数据集,该查询规则为待输出测试用例的用例描述;将该目标数据集进行存储得到该diff回归测试中该被测服务的基线版本的测试用例。
可以理解的是,在本申请的具体实施方式中,涉及到输入数据和输出数据等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
结合上述介绍,下面将对本申请中测试用例的获取方法进行介绍,请参阅图3,本申请实施例中测试用例的获取方法的一个实施例包括:
301、获取该diff回归测试中被测服务的线上运行版本的线上数据集,该线上数据集包括多个数据集合,该多个数据集合中的每个数据集合包括由标识信息关联存储的输入数据和输出数据,该标识信息是根据该输入数据生成。
在线上环境中,线上稳定版本在运行过程中,对所有涉及外部交互的过程进行录制并发送至数据收集服务,然后该数据收集服务将该录制的数据进行持久化存储得到线上数据集。
可以理解的是,该线上数据集中包括多个数据集合,其中每个数据集合中包括由标识信息关联存储的输入数据和输出数据。具体来说,该输入数据(比如线上服务执行的某一个服务请求,该服务请求即为该输入数据)进入线上稳定版本的系统内部时,线上稳定版本将生成标识信息,该标识信息将对该输入数据以及该输入数据对应的处理流程进行关联(即实现该输入数据和与该输入数据对应的输出数据的关联)。可以理解的是,该输出数据可以包括该输入数据调用的下游服务的所有反馈数据。
对于具体的应用场景来说,若该被测服务的线上稳定版本应用于sparkstreaming任务类型,则在进行录制数据的存储过程中,可以按照具体业务逻辑分为按照单条数据进行存储(即输入数据和其对应的输出数据作为单条数据进行存储)和按照时间序列对多个数据以数据集的形式进行存储(即对每分钟内生成的数据作为一个整体的数据集进行存储),录制结果同样以多批次的方式在时间上序列化存储,即该线上数据集中的每个数据集合是以时间为顺序进行了存储。
302、根据该线上数据集和查询引擎的查询规则确定目标数据集,该查询规则为待输出测试用例的用例描述。
本实施例中,该查询引擎用于实现对该线上数据集进行抽取得到该基线版本的测试用例。
一种可能实现方式中,为了减少存储量以及提高测试用例的抽取效率,该测试用例获取装置在根据该线上数据集和该查询引擎的查询规则确定该目标数据集之前,需要将该线上数据集进行如下处理:
该测试用例获取装置将该线上数据集中的数据进行筛选从而得到第二数据集;然后该测试用例获取装置再将该第二数据集输入该查询引擎。
一种示例性方案,该测试用例获取装置在对该线上数据集中的数据进行筛选时可以采用如下几种可能实现方案:
一种可能实现方式中,该测试用例获取装置对该线上数据集中的数据进行判断,若该输出数据显示执行该输入数据的过程为成功,则将该输入数据与该输出数据归于该第二数据集。即该测试用例获取装置仅选择执行成功的数据作为用于测试用例抽取的数据,这样可以提高该测试用例的有效性。
另一种可能实现方式中,该测试用例获取装置对该线上数据集中的数据的存储时间进行判断,若该输入数据与其对应的输出数据位于预设的有效时间内,则将该输入数据与该输出数据归于该第二数据集。即该测试用例获取装置仅选择执行时效位于有效期内的数据作为用于测试用例抽取的数据,这样可以提高测试用例的有效性。
可以理解的是,该测试用例获取装置在筛选该线上数据集中的数据时,可以采用多种方式进行筛选,只要可以实现减少存储量以及提高测试用例的抽取效率即可,具体此处不做限定。
可选的,在基于该spark任务类型下,该查询引擎可以是spark sql查询引擎。
另一种可能实现方式中,该测试用例获取装置也可以将该线上数据集直接输入该查询引擎,然后利用该查询引擎的查询规则从该线上数据集中确定该目标数据集。
具体来说,该测试用例获取装置在将该线上数据集输入该查询引擎之后,根据该查询引擎的查询规则从该线上数据集或者该第二数据集中确定该目标数据集。
可以理解的是,该查询规则为待输出测试用例的用例描述,即该测试用例获取装置根据测试用例的用例描述从该线上数据集或者该第二数据集中获取到目标数据集,从而将该目标数据集作为该待输出测试用例。
本实施例中,为了方便该查询引擎对该线上数据集进行搜索,该测试用例获取装置可以对该线上数据集进行数据类型的修改,即该测试用例获取装置将该线上数据集的数据类型修改为该查询引擎对应的数据类型,同时该查询规则对应的用例描述也是采用该查询引擎的数据类型。
一种示例性方案中,基于该spark任务类型以及该spark sql查询引擎的场景,同时该线上数据集采用hdfs进行数据存储的场景下,该测试用例获取装置获取将protobuf类型修改为jsonpath类型的映射关系表,然后对照关该映射关系表将该线上数据集的数据类型由protobuf修改为jsonpath,从而得到第一数据集。
一种示例性方案中,该映射关系表可以如图4所示,如图4所示,其具体映射关系可经如下:
该protobuf类型中的message字段对应该jsonpath类型中的object字段;
该protobuf类型中的enum字段对应该jsonpath类型中的string字段;
该protobuf类型中的bytes字段对应该jsonpath类型中的string字段;
该protobuf类型中的bool字段对应该jsonpath类型中的ture/false字段;
该protobuf类型中的int字段,float字段和double字段对应该jsonpath类型中的number字段;
该protobuf类型中的string字段对应该jsonpath类型中的string字段;
该protobuf类型中的repeated字段对应该jsonpath类型中的array字段。
基于上述映射关系表对该线上数据集的数据类型的修改的一个示例性方案可以如图5所示:
在使用protobuf进行数据描述时,其描述格式可以为:“pageview.getContextInfo().getWeatherContext().getAlineCityId=1”。
但是在降维使用jsonpath进行数据描述时,其描述格式可以为:“Context_info.weather.aline_city_id=1”。由此对比可知,对数据进行降维描述之后,数据的描述更加简洁和通用。
303、将该目标数据集进行存储得到该diff回归测试中该被测服务的基线版本的测试用例。
该测试用例获取装置在获取到该目标数据集之后,将该目标数据集进行持久化存储,从而作为该diff回归测试中该被测服务的基线版本的测试用例。
下面以一个具体的场景对该测试用例的获取方法进行描述,如图6所示:
将输入数据(input dataset1、input dataset2……input datasetN)与输出数据(output dataset)进行关联得到关联后的数据集。可以理解的是,该output dateset在与该输入数据进行关联时,可以是根据该输入数据生成的标识信息进行关联也可以根据被测服务内部的标识进行关联,具体来说,此处不做限定。而在进行输入数据和输出数据的关联时可以根据其不同的存储类型进行不同的预处理。若该输入数据和该输出数据的存储类型为hdfs,则该输入数据与该输出数据存在批次粒度数据集的对应关系。一种示例性方案中,若按照每分钟进行一次存储,则一分钟的输入数据将对应一分钟的输出数据。若该输入数据与该输出数据的存储类型为kafka等流式输入输出,则该输入数据与该输出数据需要通过持久化存储处理之后,再对该输入数据与输出数据进行适配。
在将该输入数据与该输出数据进行关联存储得到数据集之后,再将该数据集中的数据与该查询引擎的搜索语法进行匹配(即map),即将该数据集中的数据的数据类型修改为该查询引擎的搜索语法对应的数据类型,其具体实现方式可以如图4以及图5所示,此处不再赘述。最后将数据集进行修改后得到的中间数据集(即得到如图6所示的spark sqldata frame)输入该查询引擎;该查询引擎通过预先配置的测试用例描述从该中间数据集中搜索得到目标数据集,并将该目标数据进行存储得到该测试用例(即Test dataset)。如图6所示,在该查询引擎为spark sql查询引擎时,该测试用例描述(即Test datadescription)的一个示例性方案可以如下:
“claim_type_impression:positions[0].imps[0].clicks[0].traces[0].client=58and positions[0].imps[0].clicks[0].traces[0].claim_type=”CLAIM_TYPE_IMPRESSION_T YPE”;
claim_type_activation:positions[0].imps[0].clicks[0].traces[0].client=58and positions[0].imps[0].clicks[0].traces[0].claim_type=”CLAIM_TYPE_ACTIVATION_T YPE”;
claim_type_video_play:positions[0].imps[0].clicks[0].traces[0].client=58and positions[0].imps[0].clicks[0].traces[0].claim_type=”CLAIM_TYPE_VIDEO_PLAY_T YPE”。”
因此在该测试用例获取装置在从该线上数据集中抽取测试用例时,仅需要配置该测试用例的用例描述即可。这对于使得本实施例中的测试用例的获取方式更方便,且不需要维护测试用例,仅需要维护该diff回归测试框架即可,这样导致维护成本降低。
下面对本申请中的测试用例获取装置进行详细描述,请参阅图7,图7为本申请实施例中测试用例获取装置的一个实施例示意图,测试用例获取装置20包括:
获取模块201,用于获取该diff回归测试中被测服务的线上运行版本的线上数据集,该线上数据集包括多个数据集合,该多个数据集合中的每个数据集合包括由标识信息关联存储的输入数据和输出数据,该标识信息是根据该输入数据生成;
处理模块202,用于根据该线上数据集和查询引擎的查询规则确定目标数据集,该查询规则为待输出测试用例的用例描述;
存储模块203,用于将该目标数据集进行存储得到该diff回归测试中该被测服务的基线版本的测试用例。
本申请实施例中,提供了一种测试用例获取装置。采用上述装置,线上运行版本运行产生的线上数据根据输入数据生成的标识信息将输入数据与输出数据进行关联,从而使得该线上数据的数据特征定义更全面,使得在后续可以根据数据描述特征和查询引擎的查询规则实现对测试用例的抽取,这样可以仅通过添加查询规则的用例描述就可以实现对测试用例的抽取,从而降低测试用例的维护成本。
可选地,在上述图7所对应的实施例的基础上,本申请实施例提供的测试用例获取装置20的另一实施例中,
该处理模块202,具体用于将该线上数据集输入该查询引擎;将该线上数据集中的各个数据的数据类型修改为该查询引擎对应的数据类型得到第一数据集;根据该查询引擎的查询规则从该第一数据集中查询得到该目标数据集。
本申请实施例中,提供了一种测试用例获取装置。采用上述装置,在进行测试用例抽取时,将线上数据集中的数据修改为该查询引擎的搜索语法对应的数据类型,以符合查询引擎的搜索语法,从而实现仅需要配置测试用例的测试用例,就可以从该线上数据集中进行测试用例抽取的功能。
可选地,在上述图7所对应的实施例的基础上,本申请实施例提供的测试用例获取装置20的另一实施例中,在该线上数据集的存储类型为分布式文件系统(HadoopDistributed File System,hdfs)类型,该查询引擎为spark sql查询引擎时,该处理模块203,具体用于将该线上数据集中的各个数据的数据类型由protobuf修改为jsonpath,得到该第一数据集。
本申请实施例中,提供了一种测试用例获取装置。采用上述装置,对于在线上数据集的存储类型为hdfs,以及查询引擎为spark sql查询引擎的具体应用场景下,将该线上数据的数据类型由protobuf修改为查询引擎对应的数据类型jsonpath。而使用jsonpath类型的数据描述可以简化测试用例描述,从而降低测试用例的用例描述难度,从而降低测试用例的维护成本。
可选地,在上述图7所对应的实施例的基础上,本申请实施例提供的测试用例获取装置20的另一实施例中,
该处理模块202,具体用于获取protobuf类型修改为jsonpath类型的映射关系表;
根据该映射关系表将该线上数据集中的各个数据的数据类型由protobuf修改为jsonpath,得到该第一数据集。
本申请实施例中,提供了一种测试用例获取装置。采用上述装置,对于数据类型的修改过程中,获取数据类型的映射关系表,从而实现对该线上数据集的降维描述,使得该线上数据集中的各个数据的数据描述变得更简洁以及通用,从而提高测试用例的抽取效率。
可选地,在上述图7所对应的实施例的基础上,本申请实施例提供的测试用例获取装置20的另一实施例中,
该映射关系表包括:
该protobuf类型中的message字段对应该jsonpath类型中的object字段;
该protobuf类型中的enum字段对应该jsonpath类型中的string字段;
该protobuf类型中的bytes字段对应该jsonpath类型中的string字段;
该protobuf类型中的bool字段对应该jsonpath类型中的ture/false字段;
该protobuf类型中的int字段,float字段和double字段对应该jsonpath类型中的number字段;
该protobuf类型中的string字段对应该jsonpath类型中的string字段;
该protobuf类型中的repeated字段对应该jsonpath类型中的array字段。
本申请实施例中,提供了一种测试用例获取装置。采用上述装置,提供了该protobuf修改为jsonpath时映射关系表的一种可能方案,从而实现该线上数据集中各数据的降维描述,从而使得该线上数据集中的各个数据的数据描述变得更简洁以及通用,从而提高测试用例的抽取效率。
可选地,在上述图7所对应的实施例的基础上,本申请实施例提供的测试用例获取装置20的另一实施例中,该处理模块202,具体用于将该线上数据集中的数据根据筛选规则进行预处理得到第二数据集;
将该第二数据集输入该查询引擎;将该第二数据集中的各个数据的数据类型修改为该查询引擎对应的数据类型得到第三数据集;根据该查询引擎的查询规则从该第三数据集中查询得到该目标数据集。
本申请实施例中,提供了一种测试用例获取装置。采用上述装置,对于该线上数据集在输入该查询引擎之前进行筛选,从而减少该线上数据集的数据量,这样可以减少对线上数据集的存储,且在线上数据集的数据量减少之后,可以提高该测试用例获取装置从该线上数据集中获取测试用例的效率。
可选地,在上述图7所对应的实施例的基础上,本申请实施例提供的测试用例获取装置20的另一实施例中,该输入模块202,具体用于选择该线上数据集中的执行成功的数据集归于该第二数据集;
或者,
选择该线上数据集中处于预设时间段内的数据归于该第二数据集。
本申请实施例中,提供了一种测试用例获取装置。采用上述装置,提供多种筛选方案,从而增加方案的可实性。
本申请提供的测试用例获取装置可用于服务器,请参阅图8,图8是本申请实施例提供的一种服务器结构示意图,该服务器300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储介质330通信,在服务器300上执行存储介质330中的一系列指令操作。
服务器300还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中该测试用例获取装置所执行的步骤可以基于该图8所示的服务器结构。
本申请提供的测试用例获取装置可用于终端设备,请参阅图9,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。在本申请实施例中,以终端设备为智能手机为例进行说明:
图9示出的是与本申请实施例提供的终端设备相关的智能手机的部分结构的框图。参考图9,智能手机包括:射频(radio frequency,RF)电路410、存储器420、输入单元430、显示单元440、传感器450、音频电路460、无线保真(wireless fidelity,WiFi)模块470、处理器480、以及电源490等部件。本领域技术人员可以理解,图9中示出的智能手机结构并不构成对智能手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图9对智能手机的各个构成部件进行具体的介绍:
RF电路410可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器480处理;另外,将设计上行的数据发送给基站。通常,RF电路410包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noiseamplifier,LNA)、双工器等。此外,RF电路410还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystem of mobile communication,GSM)、通用分组无线服务(general packet radioservice,GPRS)、码分多址(code division multiple access,CDMA)、宽带码分多址(wideband code division multiple access,WCDMA)、长期演进(long term evolution,LTE)、电子邮件、短消息服务(short messaging service,SMS)等。
存储器420可用于存储软件程序以及模块,处理器480通过运行存储在存储器420的软件程序以及模块,从而执行智能手机的各种功能应用以及数据处理。存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据智能手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元430可用于接收输入的数字或字符信息,以及产生与智能手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元430可包括触控面板431以及其他输入设备432。触控面板431,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板431上或在触控面板431附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板431可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器480,并能接收处理器480发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板431。除了触控面板431,输入单元430还可以包括其他输入设备432。具体地,其他输入设备432可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元440可用于显示由用户输入的信息或提供给用户的信息以及智能手机的各种菜单。显示单元440可包括显示面板441,可选的,可以采用液晶显示器(liquidcrystal display,LCD)、有机发光二极管(organic light-emitting diode,OLED)等形式来配置显示面板441。进一步的,触控面板431可覆盖显示面板441,当触控面板431检测到在其上或附近的触摸操作后,传送给处理器480以确定触摸事件的类型,随后处理器480根据触摸事件的类型在显示面板441上提供相应的视觉输出。虽然在图9中,触控面板431与显示面板441是作为两个独立的部件来实现智能手机的输入和输入功能,但是在某些实施例中,可以将触控面板431与显示面板441集成而实现智能手机的输入和输出功能。
智能手机还可包括至少一种传感器450,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板441的亮度,接近传感器可在智能手机移动到耳边时,关闭显示面板441和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别智能手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于智能手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路460、扬声器461,传声器462可提供用户与智能手机之间的音频接口。音频电路460可将接收到的音频数据转换后的电信号,传输到扬声器461,由扬声器461转换为声音信号输出;另一方面,传声器462将收集的声音信号转换为电信号,由音频电路460接收后转换为音频数据,再将音频数据输出处理器480处理后,经RF电路410以发送给比如另一智能手机,或者将音频数据输出至存储器420以便进一步处理。
WiFi属于短距离无线传输技术,智能手机通过WiFi模块470可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi模块470,但是可以理解的是,其并不属于智能手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器480是智能手机的控制中心,利用各种接口和线路连接整个智能手机的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器420内的数据,执行智能手机的各种功能和处理数据,从而对智能手机进行整体监测。可选的,处理器480可包括一个或多个处理单元;可选的,处理器480可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器480中。
智能手机还包括给各个部件供电的电源490(比如电池),可选的,电源可以通过电源管理系统与处理器480逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,智能手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
上述实施例中由测试用例获取装置所执行的步骤可以基于该图9所示的终端设备结构。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如前述各个实施例描述的方法。
本申请实施例中还提供一种包括程序的计算机程序产品,当其在计算机上运行时,使得计算机执行前述各个实施例描述的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
该作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (10)
1.一种测试用例的获取方法,应用于diff回归测试框架,其特征在于,包括:
获取所述diff回归测试中被测服务的线上运行版本的线上数据集,所述线上数据集包括多个数据集合,所述多个数据集合中的每个数据集合包括由标识信息关联存储的输入数据和输出数据,所述标识信息是根据所述输入数据生成;
根据所述线上数据集和查询引擎的查询规则确定目标数据集,所述查询规则为待输出测试用例的用例描述;
将所述目标数据集进行存储得到所述diff回归测试中所述被测服务的基线版本的测试用例。
2.根据权利要求1所述的方法,其特征在于,所述根据所述线上数据集和查询引擎的查询规则确定目标数据集包括:
将所述线上数据集输入所述查询引擎;
将所述线上数据集中的各个数据的数据类型修改为所述查询引擎对应的数据类型得到第一数据集;
根据所述查询引擎的查询规则从所述第一数据集中查询得到所述目标数据集。
3.根据权利要求2所述的方法,其特征在于,在所述线上数据集的存储类型为分布式文件系统hdfs类型,所述查询引擎为spark sql查询引擎时,所述将所述线上数据集中的各个数据的数据类型修改为所述查询引擎对应的数据类型得到第一数据集包括:
将所述线上数据集中的各个数据的数据类型由protobuf修改为jsonpath,得到所述第一数据集。
4.根据权利要求3所述的方法,其特征在于,所述将所述线上数据集中的各个数据的数据类型由protobuf修改为jsonpath,得到所述第一数据集包括:
获取protobuf类型修改为jsonpath类型的映射关系表;
根据所述映射关系表将所述线上数据集中的各个数据的数据类型由protobuf修改为jsonpath,得到所述第一数据集。
5.根据权利要求4所述的方法,其特征在于,所述映射关系表包括:
所述protobuf类型中的message字段对应所述jsonpath类型中的object字段;
所述protobuf类型中的enum字段对应所述jsonpath类型中的string字段;
所述protobuf类型中的bytes字段对应所述jsonpath类型中的string字段;
所述protobuf类型中的bool字段对应所述jsonpath类型中的ture/false字段;
所述protobuf类型中的int字段,float字段和double字段对应所述jsonpath类型中的number字段;
所述protobuf类型中的string字段对应所述jsonpath类型中的string字段;
所述protobuf类型中的repeated字段对应所述jsonpath类型中的array字段。
6.根据权利要求1所述的方法,其特征在于,所述根据所述线上数据集和查询引擎的查询规则确定目标数据集包括:
将所述线上数据集中的数据根据筛选规则进行预处理得到第二数据集;
将所述第二数据集输入所述查询引擎;
将所述第二数据集中的各个数据的数据类型修改为所述查询引擎对应的数据类型得到第三数据集;
根据所述查询引擎的查询规则从所述第三数据集中查询得到所述目标数据集。
7.根据权利要求6所述的方法,其特征在于,将所述线上数据集中的数据根据筛选规则进行预处理得到第二数据集包括:
选择所述线上数据集中的执行成功的数据集归于所述第二数据集;
或者,
选择所述线上数据集中处于预设时间段内的数据归于所述第二数据集。
8.一种测试用例获取装置,其特征在于,包括:
获取模块,用于获取所述diff回归测试中被测服务的线上运行版本的线上数据集,所述线上数据集包括多个数据集合,所述多个数据集合中的每个数据集合包括由标识信息关联存储的输入数据和输出数据,所述标识信息是根据所述输入数据生成;
处理模块,用于根据所述线上数据集和查询引擎的查询规则确定目标数据集,所述查询规则为待输出测试用例的用例描述;
存储模块,用于将所述目标数据集进行存储得到所述diff回归测试中所述被测服务的基线版本的测试用例。
9.一种计算机设备,其特征在于,包括:存储器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器用于执行所述存储器中的程序,所述处理器用于根据程序代码中的指令执行权利要求1至7中任一项所述的方法;
所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
10.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210726376.5A CN117312124A (zh) | 2022-06-24 | 2022-06-24 | 一种测试用例的获取方法以及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210726376.5A CN117312124A (zh) | 2022-06-24 | 2022-06-24 | 一种测试用例的获取方法以及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117312124A true CN117312124A (zh) | 2023-12-29 |
Family
ID=89254141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210726376.5A Pending CN117312124A (zh) | 2022-06-24 | 2022-06-24 | 一种测试用例的获取方法以及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117312124A (zh) |
-
2022
- 2022-06-24 CN CN202210726376.5A patent/CN117312124A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7271734B2 (ja) | 分散イベント処理システムにおけるデータシリアライズ | |
US11243981B2 (en) | Database replication based on data access scores | |
US10474513B2 (en) | Cluster-based processing of unstructured log messages | |
US10733079B2 (en) | Systems and methods for end-to-end testing of applications using dynamically simulated data | |
CN107506451B (zh) | 用于数据交互的异常信息监控方法及装置 | |
US10310969B2 (en) | Systems and methods for test prediction in continuous integration environments | |
US10803048B2 (en) | Change data capture processing and analysis | |
US11630762B2 (en) | Method and apparatus for testing map service | |
CN107624180B (zh) | 用于提取和共享应用程序有关的用户数据的系统和方法 | |
CN103608809B (zh) | 推荐数据富集 | |
CN110213207B (zh) | 一种基于日志分析的网络安全防御方法及设备 | |
US11503070B2 (en) | Techniques for classifying a web page based upon functions used to render the web page | |
US10372595B1 (en) | System and method to diagnose applications by accessing log files associated with different subsystems of a data center via a common interface | |
US11580294B2 (en) | Techniques for web framework detection | |
CN108228322B (zh) | 一种分布式链路跟踪、分析方法及服务器、全局调度器 | |
WO2013158512A1 (en) | Providing rule based analysis of content to manage activation of web extension | |
US11204855B2 (en) | In-memory database service trace mining | |
CN112115113B (zh) | 数据存储系统、方法、装置、设备以及存储介质 | |
CN117312124A (zh) | 一种测试用例的获取方法以及相关装置 | |
US11307850B2 (en) | Efficient change analysis in poly-lingual corpus hierarchies | |
Srivastava | Learning Elasticsearch 7. x: Index, Analyze, Search and Aggregate Your Data Using Elasticsearch (English Edition) | |
JP6870454B2 (ja) | 分析装置、分析プログラム及び分析方法 | |
US20210334256A1 (en) | Agent-based data pre-processing and data indexing for efficient data retrieval | |
CN116975118A (zh) | 一种数据查询方法、装置、电子设备和存储介质 | |
CN117389874A (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 |