CN116204438A - 测试用例生成方法、自动化测试方法和相关装置 - Google Patents
测试用例生成方法、自动化测试方法和相关装置 Download PDFInfo
- Publication number
- CN116204438A CN116204438A CN202310249065.9A CN202310249065A CN116204438A CN 116204438 A CN116204438 A CN 116204438A CN 202310249065 A CN202310249065 A CN 202310249065A CN 116204438 A CN116204438 A CN 116204438A
- Authority
- CN
- China
- Prior art keywords
- link
- request
- test
- test case
- data
- 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
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/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/3696—Methods or tools to render software testable
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
本发明实施例提出一种测试用例生成方法、自动化测试方法和相关装置,涉及计算机技术领域。通过接收各服务发送的链路数据;链路数据由服务在处理生产环境下的请求时收集得到;链路数据包括链路跟踪标识、请求接口信息、请求接口的入参和出参;存储各链路数据,并根据各链路数据的链路跟踪标识生成关联关系;根据具有关联关系的链路跟踪标识对应的目标链路数据得到测试用例,实现了从实际生产环境中抽取全链路的业务数据自动生成***级跨服务的测试用例,减轻了测试人员编写测试用例的工作量。在测试阶段使用基于全链路业务数据生成的测试用例进行测试,有利于模拟实际客户使用场景,从而便于复现生产环境的问题。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种测试用例生成方法、自动化测试方法和相关装置。
背景技术
在传统的自动化测试中,通常需要测试人员手动编写测试用例。
然而,对于分布式***,一次完整的链路请求往往涉及多个子***(服务)的调用,调用关系复杂,导致手工创建***级跨服务的测试用例难度较大。测试人员只对自己负责的服务的业务逻辑清楚,不了解全链路跨服务的业务全貌,在集成测试阶段,各测试人员只能保证自己负责的服务的业务测试,构造不出***级跨服务的测试用例。
发明内容
有鉴于此,本发明的目的在于提供一种测试用例生成方法、自动化测试方法和相关装置,以解决现有技术中手工创建***级跨服务的测试用例难度较大的问题。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明提供一种测试用例生成方法,所述方法包括:
接收各服务发送的链路数据;所述链路数据由所述服务在处理生产环境下的请求时收集得到;所述链路数据包括链路跟踪标识、请求接口信息、请求接口的入参和出参;
存储各所述链路数据,并根据各所述链路数据的链路跟踪标识生成关联关系;
根据具有关联关系的链路跟踪标识对应的目标链路数据得到测试用例;所述测试用例包括所述目标链路数据中的链路跟踪标识、请求接口信息、请求接口的入参和出参。
在可选的实施方式中,所述根据各所述链路数据的链路跟踪标识生成关联关系,包括:
若所述链路数据的链路跟踪标识属于子标识,则查找出所述链路跟踪标识对应的父标识,并将所述链路跟踪标识与对应的父标识关联,从而得到各所述链路数据的链路跟踪标识对应的关联关系。
在可选的实施方式中,所述请求的请求头包括链路处理参数,所述链路处理参数表征处理所述请求的服务是否为首个被调用的服务;所述服务收集链路数据,包括:
在接收到请求后,根据所述请求头中的链路处理参数确定链路跟踪标识;
记录所述链路跟踪标识、所述请求中携带的请求接口的入参、处理所述请求时调用的请求接口信息以及所述请求处理完成后得到的请求接口的出参;
根据记录的所述链路跟踪标识、所述请求接口信息、所述请求接口的入参和出参,生成链路数据。
在可选的实施方式中,所述根据所述请求头中的链路处理参数确定链路跟踪标识,包括:
若所述请求头中的链路处理参数为空,则生成链路跟踪标识并设置所述链路处理参数不为空;
若所述请求头中的链路处理参数不为空,则根据所述请求头中的链路跟踪标识生成对应的子链路跟踪标识,并将所述子链路跟踪标识作为所述链路数据的链路跟踪标识;其中,所述请求头中的链路跟踪标识由发送所述请求的服务生成。
在可选的实施方式中,所述链路数据还包括请求处理时长,所述服务收集链路数据,还包括:
在接收到请求后,记录所述请求的处理起始时间;
在所述请求处理完成后,记录所述请求的处理完成时间;
根据所述处理起始时间和所述处理完成时间,计算请求处理时长;
所述根据记录的所述链路跟踪标识、所述请求接口信息、所述请求接口的入参和出参,生成链路数据,包括:
根据记录的所述链路跟踪标识、所述请求接口信息、所述请求接口的入参和出参、所述请求处理时长,生成链路数据。
第二方面,本发明提供一种自动化测试方法,所述方法包括:
获取待执行的目标测试用例;所述目标测试用例根据前述实施方式任一项所述的测试用例生成方法生成;
根据预先配置的请求地址、令牌信息以及所述目标测试用例中的入参向测试服务器发送测试请求,并接收所述测试服务器基于所述测试请求返回的全部测试数据;
根据预先设置的断言,将所述测试数据与所述目标测试用例中对应同一链路跟踪标识的链路数据进行对比,得到所述目标测试用例的测试结果。
第三方面,本发明提供一种测试用例生成装置,所述装置包括:
链路数据接收模块,用于接收各服务发送的链路数据;所述链路数据由所述服务在处理生产环境下的请求时收集得到;所述链路数据包括链路跟踪标识、请求接口信息、请求接口的入参和出参;
数据关联模块,用于存储各所述链路数据,并根据各所述链路数据的链路跟踪标识生成关联关系;
测试用例生成模块,用于根据具有关联关系的链路跟踪标识对应的目标链路数据得到测试用例;所述测试用例包括所述目标链路数据中的链路跟踪标识、请求接口信息、请求接口的入参和出参。
第四方面,本发明提供一种自动化测试装置,所述装置包括:
测试用例获取模块,用于获取待执行的目标测试用例;所述目标测试用例根据前述实施方式任一项所述的测试用例生成方法生成;
测试请求发送模块,用于根据预先配置的请求地址、令牌信息以及所述目标测试用例中的入参向测试服务器发送测试请求,并接收所述测试服务器基于所述测试请求返回的全部测试数据;
测试结果生成模块,用于根据预先设置的断言,将所述测试数据与所述目标测试用例中对应同一链路跟踪标识的链路数据进行对比,得到所述目标测试用例的测试结果。
第五方面,本发明提供一种电子设备,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如前述实施方式中任一项所述的测试用例生成方法的步骤,或者实现如前述实施方式所述的自动化测试方法的步骤。
第六方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如前述实施方式中任一项所述的测试用例生成方法的步骤,或者实现如前述实施方式所述的自动化测试方法的步骤。
本发明实施例提供的测试用例生成方法、自动化测试方法和相关装置,该测试用例生成方法包括:接收各服务发送的链路数据;链路数据由服务在处理生产环境下的请求时收集得到;链路数据包括链路跟踪标识、请求接口信息、请求接口的入参和出参;存储各链路数据,并根据各链路数据的链路跟踪标识生成关联关系;根据具有关联关系的链路跟踪标识对应的目标链路数据得到测试用例;测试用例包括目标链路数据中的链路跟踪标识、请求接口信息、请求接口的入参和出参。由于各服务在生产环境下收集的链路数据都包括链路跟踪标识、请求接口信息、请求接口的入参和出参,且链路数据可根据链路跟踪标识的关联关系关联起来,故能实现从实际生产环境中抽取全链路的业务数据自动生成***级跨服务的测试用例,减轻了测试人员编写测试用例的工作量。此外,在测试阶段使用基于全链路业务数据生成的测试用例进行测试,有效避免了测试数据与实际业务数据脱节,有利于模拟实际客户使用场景,从而便于复现生产环境的问题。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了适用于本发明实施例的一种应用环境示意图;
图2示出了本发明实施例提供的测试用例生成方法的一种流程示意图;
图3示出了本发明实施例提供的自动化测试方法的一种流程示意图;
图4示出了本发明实施例提供的测试用例生成装置的一种功能模块图;
图5示出了本发明实施例提供的自动化测试装置的一种功能模块图;
图6示出了本发明实施例提供的电子设备的一种方框示意图。
图标:100-服务器;200-用户终端;400-测试用例生成装置;500-自动化测试装置;110-存储器;120-处理器;130-通信模块;410-链路数据接收模块;420-数据关联模块;430-测试用例生成模块;510-测试用例获取模块;520-测试请求发送模块;530-测试结果生成模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
现有技术中,针对全链路业务,测试人员只对自己负责的服务的业务逻辑清楚,不了解全链路跨服务的业务全貌,在集成测试阶段,各测试人员只能保证自己负责的服务的业务测试,构造不出***级跨服务的测试用例;且测试数据与实际业务数据脱节,较难模拟实际客户使用场景。
为了解决上述问题,本发明实施例提供了一种测试用例生成方法、自动化测试方法和相关装置,其能够从实际生产环境中抽取全链路的业务数据自动生成***级跨服务的测试用例,减轻测试人员编写测试用例的工作量。此外,在测试阶段使用基于全链路业务数据生成的测试用例进行测试,有效避免了测试数据与实际业务数据脱节,有利于模拟实际客户使用场景,从而便于复现生产环境的问题。
请参照图1,为适用于本发明实施例的一种应用环境示意图。如图1所示,服务器100和用户终端200通信连接,用户可以通过用户终端200向服务器100发送业务请求,服务器100对业务请求进行处理,并生成相应的测试用例。
可选地,服务器100可以一个独立运行的设备,或者分布式设备,或者由多个设备组成的设备集群,本实施例对此不做限制。
可选地,该用户终端200可以为智能手机、台式电脑、平板电脑、笔记本电脑等设备,本实施例对此也不做限制。
请参照图2,为本发明实施例提供的测试用例生成方法的一种流程示意图。需要说明的是,本发明实施例的测试用例生成方法并不以图2以及以下的具体顺序为限制,应当理解,在其他实施例中,本发明实施例的测试用例生成方法中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。该测试用例生成方法可以由图1所示的服务器100执行,下面将对图2所示的具体流程进行详细阐述。
步骤S201,接收各服务发送的链路数据;链路数据由服务在处理生产环境下的请求时收集得到;链路数据包括链路跟踪标识、请求接口信息、请求接口的入参和出参。
在本实施例中,用户通过用户终端200访问服务,向服务发送请求,服务在处理请求的过程中可能会调用其他服务,其他服务继续对接收的请求进行处理。在完成某个业务的过程中,从用户发起请求,到最后返回结果,中间经过的所有服务以及各个服务之间的调用关系将构成一个完整链路(全链路)。
各个服务在处理请求的过程中会采集链路数据,包括链路跟踪标识、请求接口信息、请求接口的入参和出参等。每个服务在链路数据收集完成后,会将链路数据发送到服务器100请求保存。
步骤S202,存储各链路数据,并根据各链路数据的链路跟踪标识生成关联关系。
在本实施例中,服务器100对接收的链路数据进行存储(例如,可以存储到数据库中),并根据各链路数据的链路跟踪标识生成关联关系,可将各服务收集的链路数据通过链路跟踪标识进行关联,实现对用户请求处理过程的全面追踪,从而得到一个完整链路所对应的链路数据。
步骤S203,根据具有关联关系的链路跟踪标识对应的目标链路数据得到测试用例;测试用例包括目标链路数据中的链路跟踪标识、请求接口信息、请求接口的入参和出参。
在本实施例中,由于具有关联关系的链路跟踪标识对应的目标链路数据是一个完整链路所对应的链路数据,而生成的测试用例中包括目标链路数据中的链路跟踪标识、请求接口信息、请求接口的入参和出参,故该测试用例是一个***级跨服务的测试用例,为后续的***级测试提供支持。
可见,本发明实施例提供的测试用例生成方法中,由于各服务在生产环境下收集的链路数据都包括链路跟踪标识、请求接口信息、请求接口的入参和出参,且链路数据可根据链路跟踪标识的关联关系关联起来,故能实现从实际生产环境中抽取全链路的业务数据自动生成***级跨服务的测试用例,减轻了测试人员编写测试用例的工作量,有效解决了测试用例手动构造仿真测试入参、出参数据困难的问题。
在一种实施方式中,可以在服务启动时,通过Java代理(JavaAgent)修改类(Class)信息的方式,实现服务的链路数据采集功能。其中,Java是一门面向对象编程语言,Class是对某种类型的对象定义变量和方法的原型。
JavaAgent是在JVM(Java Virtual Machine,Java虚拟机)中运行,通过类加载器(Class Loader)加载Class文件,在类加载器加载Class文件生成对应的类对象之前,可以修改Class文件内容(字节码修改技术)。修改类信息的具体流程如下:1、配置服务启动参数,增加Agent配置参数(-javaagent:/Users/davydu/tools.jar-Dback_url=http://localhost:8090);2、启动程序后,Agent加载Class文件;3、修改Class文件内容,在Class文件中增加链路处理代码(服务按照链路处理代码的逻辑进行链路数据采集);4、JVM加载类完成。
可选地,请求的请求头包括链路处理参数,链路处理参数表征处理请求的服务是否为首个被调用的服务。上述服务收集链路数据,可以包括:在接收到请求后,根据请求头中的链路处理参数确定链路跟踪标识;记录链路跟踪标识、请求中携带的请求接口的入参、处理请求时调用的请求接口信息以及请求处理完成后得到的请求接口的出参;根据记录的链路跟踪标识、请求接口信息、请求接口的入参和出参,生成链路数据。
在本实施例中,由于请求头中的链路处理参数可以表征处理请求的服务是否为首个被调用的服务,故服务接收到请求后,根据请求头中的链路处理参数可以确定自身是否为首个被调用的服务,进而生成相应的链路跟踪标识。请求接口信息可以包括请求接口的名称、请求地址、请求方法等信息。
在一种实施方式中,可以根据链路处理参数是否为空来判断处理请求的服务是否为首个被调用的服务。则上述根据请求头中的链路处理参数确定链路跟踪标识,可以包括:若请求头中的链路处理参数为空,则生成链路跟踪标识并设置链路处理参数不为空;若请求头中的链路处理参数不为空,则根据请求头中的链路跟踪标识生成对应的子链路跟踪标识,并将子链路跟踪标识作为链路数据的链路跟踪标识;其中,请求头中的链路跟踪标识由发送请求的服务生成。
可以理解,当处理请求的服务为首个被调用的服务时,则该请求中携带的链路处理参数和链路跟踪标识都为空,此时需要生成一个新的链路跟踪标识,并设置链路处理参数不为空(即生成一个新的链路处理参数);该服务再调用其他服务时,向其他服务发送的请求中就会携带生成的链路跟踪标识和链路处理参数。其他服务接收到请求后,由于请求头中的链路处理参数不为空,故判断自身不是首个被调用的服务,会根据请求头中的链路跟踪标识生成对应的子链路跟踪标识,并将子链路跟踪标识作为收集的链路数据的链路跟踪标识。
例如,服务A为首个被调用的服务,生成的链路跟踪标识为AAAA,当服务A调用服务B时,服务B生成的子链路跟踪标识为AAAA-1;同理,服务B调用服务C时,服务C生成的子链路跟踪标识为AAAA-1-1。可见,服务A、B、C所收集的链路数据的链路跟踪标识存在父子关系,即AAAA-1属于AAAA的子标识,AAAA-1-1属于AAAA-1的子标识,通过链路跟踪标识的父子关系也能够反映服务之间的调用关系。
在实际应用中,为了便于知晓任一个请求的处理时长,服务在处理请求时,还可以统计请求处理时长并进行记录。
基于此,链路数据还包括请求处理时长,上述服务收集链路数据,还可以包括:在接收到请求后,记录请求的处理起始时间;在请求处理完成后,记录请求的处理完成时间;根据处理起始时间和处理完成时间,计算请求处理时长。上述根据记录的链路跟踪标识、请求接口信息、请求接口的入参和出参,生成链路数据,具体包括:根据记录的链路跟踪标识、请求接口信息、请求接口的入参和出参、请求处理时长,生成链路数据。
其中,请求的处理起始时间可以为服务接收请求的时间,请求的处理完成时间可以为请求方法执行完成的时间。
需要说明的是,本实施例中的链路数据除了可以包括链路跟踪标识、请求接口信息、请求接口的入参和出参、请求处理时长之外,还可以包括链路处理参数、请求体、返回状态等,可根据实际需要进行设置,本实施例对此不做限制。在一个示例中,链路数据的格式可以如表1所示:
表1
在一种实施方式中,可以根据链路数据中的链路跟踪标识是否为子标识来建立链路跟踪标识之间的关联关系。即,上述步骤S202中根据各链路数据的链路跟踪标识生成关联关系,可以包括:若链路数据的链路跟踪标识属于子标识,则查找出链路跟踪标识对应的父标识,并将链路跟踪标识与对应的父标识关联,从而得到各链路数据的链路跟踪标识对应的关联关系。
例如,服务A、B、C收集的链路数据的链路跟踪标识分别为AAAA、AAAA-1、AAAA-1-1,通过判断AAAA-1属于AAAA的子标识,AAAA-1-1属于AAAA-1的子标识,可以建立AAAA、AAAA-1、AAAA-1-1的关联关系,从而将服务A、B、C收集的链路数据关联起来。
请参照图3,为本发明实施例提供的自动化测试方法的一种流程示意图。需要说明的是,本发明实施例提供的自动化测试方法并不以图3以及以下的具体顺序为限制,应当理解,在其他实施例中,本发明实施例提供的自动化测试方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。该自动化测试方法可以应用在台式电脑、平板电脑、笔记本电脑等终端设备,下面将对图3所示的具体流程进行详细阐述。
步骤S301,获取待执行的目标测试用例。
其中,该目标测试用例可以根据本发明实施例提供的测试用例生成方法生成。当需要进行测试时,测试人员可通过终端设备查看数据库中存储的链路数据,获得目标测试用例。
步骤S302,根据预先配置的请求地址、令牌信息以及目标测试用例中的入参向测试服务器发送测试请求,并接收测试服务器基于测试请求返回的全部测试数据。
在本实施例中,请求地址、令牌信息可以由测试人员预先配置。测试人员根据获得的目标测试用例,配置请求地址(即测试环境下调用服务对应的请求接口地址),并设置token(令牌)等信息。配置完成后,终端设备根据测试人员配置的请求地址、令牌信息以及目标测试用例中的入参向测试服务器发送测试请求,测试服务器处理测试请求,并返回相应的测试数据(即测试环境下请求接口的出参)。
可以理解的是,上述的目标测试用例是根据本发明实施例提供的测试用例生成方法生成的完整链路测试用例,针对一个完整链路测试用例而言,由于其包括实际生产环境中收集的链路跟踪标识,故根据链路跟踪标识的父子关系可以确定测试用例执行步骤的先后顺序,从而实现按照实际生产环境中的业务请求的顺序执行测试用例。也即是说,完整链路的测试只要传入参给第一个被调用的服务,后续将按照实际生产环境中的业务请求的执行顺序自动发送请求,不同服务之间的调用关系不用关心,中间过程也不用人员干预。
步骤S303,根据预先设置的断言,将测试数据与目标测试用例中对应同一链路跟踪标识的链路数据进行对比,得到目标测试用例的测试结果。
在本实施例中,断言也可以由测试人员预先设置。例如,测试人员通过终端设备查看数据库中存储的链路数据并获得目标测试用例后,可根据获得的目标测试用例,增加断言,断言类型可以包括:返回时是否包含错误;返回的时间是否小于等于生产上请求的耗时的断言;链路的节点返回数据与生产对比的断言;任意一个或者组合的链路节点数据对比的断言;任意中间一个请求的执行时长的断言;链路的节点请求完整性的断言。终端设备将测试服务器返回的全部测试数据进行保存,并对测试数据对应的链路跟踪标识与原始链路数据(目标测试用例中的链路数据)的链路跟踪标识进行对比,针对具有相同链路跟踪标识的测试数据与原始链路数据,按照测试人员设置的断言进行解析判断,得到测试结果并反馈给测试人员。
需要说明的是,上述请求地址、令牌信息以及断言可以由测试人员预先进行配置,也可以通过运行预先编写的脚本文件进行配置,本实施例中对具体配置方式不进行限制。
可见,本发明实施例提供的自动化测试方法,可以直接使用基于全链路业务数据生成的测试用例进行测试,只要简单配置请求地址、token,就能将所有的业务请求在测试环境中使用,并能全局去对照有无遗漏客户实际使用场景,有效避免了测试数据与实际业务数据脱节,有利于模拟实际客户使用场景,从而便于复现生产环境的问题。
为了执行上述实施例及各个可能的方式中的相应步骤,下面分别给出测试用例生成装置和自动化测试装置的实现方式。请参阅图4,为本发明实施例提供的测试用例生成装置400的一种功能模块图。需要说明的是,本实施例所提供的测试用例生成装置400,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该测试用例生成装置400包括链路数据接收模块410、数据关联模块420和测试用例生成模块430。
链路数据接收模块410,用于接收各服务发送的链路数据;链路数据由服务在处理生产环境下的请求时收集得到;链路数据包括链路跟踪标识、请求接口信息、请求接口的入参和出参。
可以理解,该链路数据接收模块410可以执行上述步骤S201。
数据关联模块420,用于存储各链路数据,并根据各链路数据的链路跟踪标识生成关联关系。
可以理解,该数据关联模块420可以执行上述步骤S202。
测试用例生成模块430,用于根据具有关联关系的链路跟踪标识对应的目标链路数据得到测试用例;测试用例包括目标链路数据中的链路跟踪标识、请求接口信息、请求接口的入参和出参。
可以理解,该测试用例生成模块430可以执行上述步骤S203。
可选地,数据关联模块420具体用于若链路数据的链路跟踪标识属于子标识,则查找出链路跟踪标识对应的父标识,并将链路跟踪标识与对应的父标识关联,从而得到各链路数据的链路跟踪标识对应的关联关系。
可选地,请求的请求头包括链路处理参数,链路处理参数表征处理请求的服务是否为首个被调用的服务。其中,服务在接收到请求后,根据请求头中的链路处理参数确定链路跟踪标识;记录链路跟踪标识、请求中携带的请求接口的入参、处理请求时调用的请求接口信息以及请求处理完成后得到的请求接口的出参;根据记录的链路跟踪标识、请求接口信息、请求接口的入参和出参,生成链路数据。
可选地,若请求头中的链路处理参数为空,则生成链路跟踪标识并设置链路处理参数不为空;若请求头中的链路处理参数不为空,则根据请求头中的链路跟踪标识生成对应的子链路跟踪标识,并将子链路跟踪标识作为链路数据的链路跟踪标识;其中,请求头中的链路跟踪标识由发送请求的服务生成。
可选地,链路数据还包括请求处理时长,服务在接收到请求后,记录请求的处理起始时间;在请求处理完成后,记录请求的处理完成时间;根据处理起始时间和处理完成时间,计算请求处理时长;根据记录的链路跟踪标识、请求接口信息、请求接口的入参和出参、请求处理时长,生成链路数据。
可见,本发明实施例提供的测试用例生成装置,包括链路数据接收模块、数据关联模块和数据关联模块,链路数据接收模块,用于接收各服务发送的链路数据;链路数据由服务在处理生产环境下的请求时收集得到;链路数据包括链路跟踪标识、请求接口信息、请求接口的入参和出参;数据关联模块,用于存储各链路数据,并根据各链路数据的链路跟踪标识生成关联关系;测试用例生成模块,用于根据具有关联关系的链路跟踪标识对应的目标链路数据得到测试用例;测试用例包括目标链路数据中的链路跟踪标识、请求接口信息、请求接口的入参和出参。由于各服务在生产环境下收集的链路数据都包括链路跟踪标识、请求接口信息、请求接口的入参和出参,且链路数据可根据链路跟踪标识的关联关系关联起来,故能实现从实际生产环境中抽取全链路的业务数据自动生成***级跨服务的测试用例,减轻了测试人员编写测试用例的工作量,有效解决了测试用例手动构造仿真测试入参、出参数据困难的问题。
请参阅图5,为本发明实施例提供的自动化测试装置500的一种功能模块图。需要说明的是,本实施例所提供的自动化测试装置500,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该自动化测试装置500包括测试用例获取模块510、测试请求发送模块520和测试结果生成模块530。
测试用例获取模块510,用于获取待执行的目标测试用例;其中,该目标测试用例可以根据本发明实施例提供的测试用例生成方法生成。
可以理解,该测试用例获取模块510可以执行上述步骤S301。
测试请求发送模块520,用于根据预先配置的请求地址、令牌信息以及目标测试用例中的入参向测试服务器发送测试请求,并接收测试服务器基于测试请求返回的全部测试数据。
可以理解,该测试请求发送模块520可以执行上述步骤S302。
测试结果生成模块530,用于根据预先设置的断言,将测试数据与目标测试用例中对应同一链路跟踪标识的链路数据进行对比,得到目标测试用例的测试结果。
可以理解,该测试结果生成模块530可以执行上述步骤S303。
请参照图6,为本发明实施例提供的可以实现上述服务器100、终端设备的电子设备的一种方框示意图。该电子设备包括存储器110、处理器120及通信模块130。存储器110、处理器120以及通信模块130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
其中,存储器110用于存储程序或者数据。存储器110可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electric ErasableProgrammable Read-Only Memory,EEPROM)等。
处理器120用于读/写存储器110中存储的数据或程序,并执行相应地功能。例如,当存储器110中存储的计算机程序被处理器120执行时,可以实现上述各实施例所揭示的测试用例生成方法或者自动化测试方法。
通信模块130用于通过网络建立电子设备与其它设备之间的通信连接,并用于通过网络收发数据。
应当理解的是,图6所示的结构仅为电子设备的结构示意图,电子设备还可包括比图6中所示更多或者更少的组件,或者具有与图6所示不同的配置。图6中所示的各组件可以采用硬件、软件或其组合实现。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器120执行时实现上述各实施例所揭示的测试用例生成方法或者自动化测试方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种测试用例生成方法,其特征在于,所述方法包括:
接收各服务发送的链路数据;所述链路数据由所述服务在处理生产环境下的请求时收集得到;所述链路数据包括链路跟踪标识、请求接口信息、请求接口的入参和出参;
存储各所述链路数据,并根据各所述链路数据的链路跟踪标识生成关联关系;
根据具有关联关系的链路跟踪标识对应的目标链路数据得到测试用例;所述测试用例包括所述目标链路数据中的链路跟踪标识、请求接口信息、请求接口的入参和出参。
2.根据权利要求1所述的方法,其特征在于,所述根据各所述链路数据的链路跟踪标识生成关联关系,包括:
若所述链路数据的链路跟踪标识属于子标识,则查找出所述链路跟踪标识对应的父标识,并将所述链路跟踪标识与对应的父标识关联,从而得到各所述链路数据的链路跟踪标识对应的关联关系。
3.根据权利要求1所述的方法,其特征在于,所述请求的请求头包括链路处理参数,所述链路处理参数表征处理所述请求的服务是否为首个被调用的服务;所述服务收集链路数据,包括:
在接收到请求后,根据所述请求头中的链路处理参数确定链路跟踪标识;
记录所述链路跟踪标识、所述请求中携带的请求接口的入参、处理所述请求时调用的请求接口信息以及所述请求处理完成后得到的请求接口的出参;
根据记录的所述链路跟踪标识、所述请求接口信息、所述请求接口的入参和出参,生成链路数据。
4.根据权利要求3所述的方法,其特征在于,所述根据所述请求头中的链路处理参数确定链路跟踪标识,包括:
若所述请求头中的链路处理参数为空,则生成链路跟踪标识并设置所述链路处理参数不为空;
若所述请求头中的链路处理参数不为空,则根据所述请求头中的链路跟踪标识生成对应的子链路跟踪标识,并将所述子链路跟踪标识作为所述链路数据的链路跟踪标识;其中,所述请求头中的链路跟踪标识由发送所述请求的服务生成。
5.根据权利要求3所述的方法,其特征在于,所述链路数据还包括请求处理时长,所述服务收集链路数据,还包括:
在接收到请求后,记录所述请求的处理起始时间;
在所述请求处理完成后,记录所述请求的处理完成时间;
根据所述处理起始时间和所述处理完成时间,计算请求处理时长;
所述根据记录的所述链路跟踪标识、所述请求接口信息、所述请求接口的入参和出参,生成链路数据,包括:
根据记录的所述链路跟踪标识、所述请求接口信息、所述请求接口的入参和出参、所述请求处理时长,生成链路数据。
6.一种自动化测试方法,其特征在于,所述方法包括:
获取待执行的目标测试用例;所述目标测试用例根据权利要求1-5任一项所述的测试用例生成方法生成;
根据预先配置的请求地址、令牌信息以及所述目标测试用例中的入参向测试服务器发送测试请求,并接收所述测试服务器基于所述测试请求返回的全部测试数据;
根据预先设置的断言,将所述测试数据与所述目标测试用例中对应同一链路跟踪标识的链路数据进行对比,得到所述目标测试用例的测试结果。
7.一种测试用例生成装置,其特征在于,所述装置包括:
链路数据接收模块,用于接收各服务发送的链路数据;所述链路数据由所述服务在处理生产环境下的请求时收集得到;所述链路数据包括链路跟踪标识、请求接口信息、请求接口的入参和出参;
数据关联模块,用于存储各所述链路数据,并根据各所述链路数据的链路跟踪标识生成关联关系;
测试用例生成模块,用于根据具有关联关系的链路跟踪标识对应的目标链路数据得到测试用例;所述测试用例包括所述目标链路数据中的链路跟踪标识、请求接口信息、请求接口的入参和出参。
8.一种自动化测试装置,其特征在于,所述装置包括:
测试用例获取模块,用于获取待执行的目标测试用例;所述目标测试用例根据权利要求1-5任一项所述的测试用例生成方法生成;
测试请求发送模块,用于根据预先配置的请求地址、令牌信息以及所述目标测试用例中的入参向测试服务器发送测试请求,并接收所述测试服务器基于所述测试请求返回的全部测试数据;
测试结果生成模块,用于根据预先设置的断言,将所述测试数据与所述目标测试用例中对应同一链路跟踪标识的链路数据进行对比,得到所述目标测试用例的测试结果。
9.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-5中任一项所述的测试用例生成方法的步骤,或者实现如权利要求6所述的自动化测试方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1-5中任一项所述的测试用例生成方法的步骤,或者实现如权利要求6所述的自动化测试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310249065.9A CN116204438A (zh) | 2023-03-09 | 2023-03-09 | 测试用例生成方法、自动化测试方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310249065.9A CN116204438A (zh) | 2023-03-09 | 2023-03-09 | 测试用例生成方法、自动化测试方法和相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116204438A true CN116204438A (zh) | 2023-06-02 |
Family
ID=86509441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310249065.9A Pending CN116204438A (zh) | 2023-03-09 | 2023-03-09 | 测试用例生成方法、自动化测试方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116204438A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627851A (zh) * | 2023-07-24 | 2023-08-22 | 恒生电子股份有限公司 | 接口测试方法以及装置 |
CN116627849A (zh) * | 2023-07-24 | 2023-08-22 | 中邮消费金融有限公司 | ***测试方法、装置、设备及存储介质 |
CN116756044A (zh) * | 2023-08-11 | 2023-09-15 | 杭州罗莱迪思科技股份有限公司 | 一种基于数据链路追踪的rpc远程调试方法、装置及应用 |
-
2023
- 2023-03-09 CN CN202310249065.9A patent/CN116204438A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627851A (zh) * | 2023-07-24 | 2023-08-22 | 恒生电子股份有限公司 | 接口测试方法以及装置 |
CN116627849A (zh) * | 2023-07-24 | 2023-08-22 | 中邮消费金融有限公司 | ***测试方法、装置、设备及存储介质 |
CN116627851B (zh) * | 2023-07-24 | 2023-10-20 | 恒生电子股份有限公司 | 接口测试方法以及装置 |
CN116627849B (zh) * | 2023-07-24 | 2024-01-26 | 中邮消费金融有限公司 | ***测试方法、装置、设备及存储介质 |
CN116756044A (zh) * | 2023-08-11 | 2023-09-15 | 杭州罗莱迪思科技股份有限公司 | 一种基于数据链路追踪的rpc远程调试方法、装置及应用 |
CN116756044B (zh) * | 2023-08-11 | 2023-11-21 | 杭州罗莱迪思科技股份有限公司 | 一种基于数据链路追踪的rpc远程调试方法、装置及应用 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116204438A (zh) | 测试用例生成方法、自动化测试方法和相关装置 | |
CN108984389B (zh) | 一种应用程序测试方法及终端设备 | |
CN111752799A (zh) | 一种业务链路跟踪方法、装置、设备及储存介质 | |
CN111694644A (zh) | 基于机器人操作***的消息处理方法、装置及计算机设备 | |
CN107203464B (zh) | 业务问题的定位方法以及装置 | |
CN113792008A (zh) | 网络拓扑结构的获取方法、装置、电子设备及存储介质 | |
CN113360413A (zh) | 一种代码测试方法及装置 | |
CN111124883B (zh) | 一种基于树形表格的测试用例库引入方法、***及设备 | |
CN115098297B (zh) | 一种云原生存储数据卷的一致性快照生成方法和*** | |
CN114895879B (zh) | 管理***设计方案确定方法、装置、设备及存储介质 | |
CN114328180A (zh) | 接口自动化测试方法、***、电子设备及存储介质 | |
CN111225075A (zh) | 物联网定向访问业务的配置方法及装置 | |
CN111782428A (zh) | 数据调用***以及方法 | |
CN112261051B (zh) | 一种用户注册方法、装置及*** | |
CN113852919B (zh) | 预警消息的生成方法和装置、存储介质及电子装置 | |
CN112596752B (zh) | 一种电子取证设备物联化方法及*** | |
CN117130946B (zh) | 一种测试场景生成方法、装置、电子设备和可读存储介质 | |
CN111324846B (zh) | 信息处理方法、装置、电子设备及计算机可读存储介质 | |
CN115168489B (zh) | 基于区块链的数据存证方法和装置 | |
CN111522783B (zh) | 数据同步方法、装置、电子设备及计算机可读存储介质 | |
CN115904939A (zh) | 一种基于接口流量的Mock方法、***、设备及介质 | |
CN116909680A (zh) | 一种容器编排***集群中Pod容器的进入方法 | |
CN112799929A (zh) | 报警日志的根因分析方法及*** | |
CN115766532A (zh) | 链路的监测方法、装置、存储介质及电子装置 | |
CN114780424A (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 |