CN111459824A - 并发服务的测试用例处理方法及装置 - Google Patents
并发服务的测试用例处理方法及装置 Download PDFInfo
- Publication number
- CN111459824A CN111459824A CN202010252401.1A CN202010252401A CN111459824A CN 111459824 A CN111459824 A CN 111459824A CN 202010252401 A CN202010252401 A CN 202010252401A CN 111459824 A CN111459824 A CN 111459824A
- Authority
- CN
- China
- Prior art keywords
- function call
- call link
- full
- different processing
- processing parts
- 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.)
- Granted
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
Abstract
本申请提供了一种并发服务的测试用例处理方法、装置、电子设备及计算机可读存储介质;方法包括:通过在并发服务的不同处理部分注入的代码,跟踪所述不同处理部分在执行目标场景的测试用例时所形成的函数调用链路;对所述不同处理部分的函数调用链路进行整合,得到对应所述目标场景的全函数调用链路;将所述目标场景的全函数调用链路、以及所述目标场景的并发场景的全函数调用链路进行合并,得到全维度的函数调用链路;对所述全维度的函数调用链路进行遍历处理,确定出区别于所述全函数调用链路的新函数调用链路,并基于所述新函数调用链路生成对应的新测试用例。通过本申请,能够为并发服务提供更加全面的测试用例,从而保证测试的准确性。
Description
技术领域
本申请涉及自动化测试领域,尤其涉及一种并发服务的测试用例处理方法、装置、电子设备及计算机可读存储介质。
背景技术
随着业务的高速发展,要满足业务高性能高可用的要求,业务程序会引入各种并发处理或异步处理的方式来解决问题。在并发服务中,例如在区块链业务中,为了提高区块内的交易集的有效性校验,会引入多线程并发的方式来提高验证效率,而为了提高集群内的共识效率和海量数据的存储性能,会引入异步通信和投票等待方式。
然而,由于各种高性能并发处理方式会割裂区块链对于区块或者交易处理的全程,因此,难以快速地获取其数据处理的全流程,并把不同场景的流程处理整合在一起分析挖掘出更多的路径测试场景。
发明内容
本申请实施例提供一种并发服务的测试用例处理方法、装置、电子设备及计算机可读存储介质,能够为并发服务提供更加全面的测试用例,从而保证测试的准确性。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种并发服务的测试用例处理方法,包括:
通过在并发服务的不同处理部分注入的代码,跟踪所述不同处理部分在执行目标场景的测试用例时所形成的函数调用链路;
对所述不同处理部分的函数调用链路进行整合,得到对应所述目标场景的全函数调用链路;
将所述目标场景的全函数调用链路、以及所述目标场景的并发场景的全函数调用链路进行合并,得到全维度的函数调用链路;
对所述全维度的函数调用链路进行遍历处理,确定出区别于所述全函数调用链路的新函数调用链路,并基于所述新函数调用链路生成对应的新测试用例。
本申请实施例提供一种并发服务的测试用例处理装置,包括:
代码注入模块,用于通过在并发服务的不同处理部分注入的代码,跟踪所述不同处理部分在执行目标场景的测试用例时所形成的函数调用链路;
整合模块,用于对所述不同处理部分的函数调用链路进行整合,得到对应所述目标场景的全函数调用链路;
合并模块,用于将所述目标场景的全函数调用链路、以及所述目标场景的并发场景的全函数调用链路进行合并,得到全维度的函数调用链路;
遍历处理模块,用于对所述全维度的函数调用链路进行遍历处理,确定出区别于所述全函数调用链路的新函数调用链路;
测试用例生成模块,用于基于所述新函数调用链路生成对应的新测试用例。
上述方案中,所述代码注入模块,还用于在所述并发服务的不同处理部分对应的源代码的编译期注入代码,或者,在所述并发服务的不同处理部分对应的源代码的运行期注入代码,以使
所述注入代码被执行时,跟踪所述不同处理部分在执行目标场景的测试用例时所形成的函数调用链路。
上述方案中,所述代码注入模块,还用于在所述并发服务的不同处理部分对应的源代码的编译期,基于编译器进行代码注入;或者,
用于在所述并发服务的不同处理部分对应的源代码的运行期,通过插桩和字节码操控框架结合的方式进行代码注入。
上述方案中,所述并发服务的测试用例处理装置还包括获取模块和组合模块,其中,所述获取模块,用于获取所述不同处理部分在执行目标场景的测试用例时所调用的函数、以及每个所述函数被调用的先后顺序;
所述组合模块,用于根据每个所述函数被调用的先后顺序,将各处理部分在执行目标场景的测试用例时所调用的函数进行组合,得到对应的函数调用链路。
上述方案中,所述代码注入模块,还用于对所述并发服务的不同处理部分的入口函数进行代码注入;
当在所述入口函数中被注入的代码被执行时实现以下操作:
通过反射机制获取所述函数调用链路的函数所输出数据的唯一标识符;
所述整合模块,还用于根据所述唯一标识符,将所述不同处理部分的函数调用链路进行整合。
上述方案中,所述整合模块,还用于在所述并发服务执行目标场景的测试用例时,识别所述唯一标识符在所述并发服务的不同处理部分的函数调用链路之间的传递顺序,根据所述传递顺序将所述不同处理部分的函数调用链路进行整合。
上述方案中,所述整合模块,还用于对所述并发服务在数据处理维度包括的请求场景部分、并发处理部分、以及异步处理部分分别对应的函数调用链路进行整合,得到数据处理维度的全函数调用链路。
上述方案中,所述遍历处理模块,还用于以所述全维度的函数调用链路的入口函数为起点、所述全维度的函数调用链路的最后一个函数为终点,进行遍历处理,确定出所有的函数调用链路;
删除合并前已存在的全函数调用链路,将剩余的函数调用链路确定为所述新函数调用链路。
上述方案中,所述测试用例生成模块,还用于针对多个所述新函数调用链路中的任一新函数调用链路,生成与所述任一新函数调用链路对应的新测试用例;
通过与所述任一新函数调用链路对应的新测试用例,对所述任一新函数调用链路进行测试。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的并发服务的测试用例处理方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的并发服务的测试用例处理方法。
本申请实施例具有以下有益效果:
通过对并发服务的不同处理部分进行代码注入,得到不同处理部分的函数调用链路,将不同处理部分的函数调用链路进行整合,得到对应目标场景的全函数调用链路,然后把不同场景所收集的全函数调用链路汇总成全维度的函数调用链路,并对全维度的函数调用链路进行遍历处理,确定出之前未曾测试过的路径场景,从而可以针对之前未曾测试过的路径场景,补充对应的新测试用例,以实现对并发服务的全面测试,保证了测试的准确性。
附图说明
图1A是本申请实施例提供的并发服务的测试用例处理系统的一个可选的架构示意图;
图1B是本申请实施例提供的并发服务的测试用例处理系统的另一个可选的架构示意图;
图2是本申请实施例提供的服务器的一个可选的结构示意图;
图3是本申请实施例提供的并发服务的测试用例处理方法的一个可选的流程示意图;
图4是本申请实施例提供的并发服务的测试用例处理方法的另一个可选的流程示意图;
图5是本申请实施例提供的对区块链服务进行代码注入的示意图;
图6是本申请实施例提供的区块链服务的测试用例处理系统的架构示意图;
图7是本申请实施例提供的将不同场景的全函数调用链路进行合并的示意图;
图8是本申请实施例提供的基于合并后的全维度的函数调用链路发现新函数调用链路的示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)面向切面编程(AOP,Aspect Oriented Programming),通过预编译的方式和运行期间动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
2)区块链,是由区块形成的加密的、链式的交易的存储结构。例如,每个区块的头部既可以包括区块中所有交易的哈希值,同时也包括前一个区块中所有交易的哈希值,从而基于哈希值实现区块中交易的防篡改和防伪造;新产生的交易被填充到区块并经过区块链网络中节点的共识后,会被追加到区块链的尾部从而形成链式的增长。
3)区块链网络,通过共识的方式将新区块纳入区块链的一系列的节点的集合。
4)并发服务,引入多线程的并发方式来执行业务的服务,例如区块链服务,采用多个线程分别处理交易请求、打包处理、共识验证、共识提交和交易存储的业务。
申请人在实施本申请实施例的过程中发现,随着业务的高速发展,业务程序中会引入各种并发处理或者异步处理的方式来满足业务高性能高可用的要求。例如在区块链业务中,为了提高区块内交易集的有效性校验,会引入多线程并发的方式来提高验证效率。然而,由于各种高性能并发处理的方式会割裂区块链对于区块或者交易处理的全程,难以快速地获取其数据处理的全流程,并把不同场景的流程处理整合在一起分析挖掘出更多的路径测试场景。
针对上述问题,本申请实施例提供了一种并发服务的测试用例处理方法、装置、电子设备及计算机可读存储介质,能够为并发服务提供更加全面的测试用例,从而保证了测试的准确性。
下面说明本申请实施例提供的并发服务的测试用例处理设备的示例性应用,本申请实施例提供的并发服务的测试用例处理设备可以实施为服务器或服务器集群,也可以采用由用户终端和服务器协同的方式实施。下面,将说明并发服务的测试用例处理设备实施为服务器时的示例性应用。
参见图1A,图1A是本申请实施例提供的并发服务的测试用例处理系统100的一个可选的架构示意图。其中,并发服务的测试用例处理系统100包括:并发服务200、服务器300、网络400和终端500,并发服务200、服务器300通过网络400与终端500连接,网络400可以是广域网或者局域网,又或者是二者的组合。
本申请实施例提供的并发服务的测试用例处理方法可以通过以下过程实现:首先,利用不同场景的测试用例对并发服务200进行测试,接着,服务器300对并发服务200的不同处理部分进行代码注入,跟踪不同处理部分在执行目标场景的测试用例时所形成的函数调用链路。随后,服务器300对不同处理部分的函数调用链路进行整合,得到对应目标场景的全函数调用链路。然后,服务器300将目标场景的全函数调用链路、以及目标场景的并发场景的全函数调用链路进行合并,得到全维度的函数调用链路。最后,服务器300对合并后的全维度的函数调用链路进行遍历处理,确定出相对于合并前的全函数调用链路的新函数调用链路,并将所确定出的新函数调用链路通过网络400发送给终端500,以使测试人员或者开发人员根据终端500所接收到的新函数调用链路编写对应的新测试用例,并使用新测试用例对并发服务200进行测试,以实现对并发服务200的全面测试。
在另一些实施例中,本申请实施例提供的并发服务的测试用例处理方法也可以结合区块链技术实现。
参见图1B,图1B是本申请实施例提供的并发服务的测试用例处理系统101的另一个可选的架构示意图。其中,并发服务的测试用例处理系统101包括:并发服务200、服务器300、网络400、终端500和区块链网络600(示例性示出了区块链网络600包括的节点610-1、节点610-2和节点610-3)。
本申请实施例提供的并发服务的测试用例处理方法可以通过以下方式实现:首先,利用不同场景的测试用例对并发服务200进行测试,接着,服务器300对并发服务200的不同处理部分进行代码注入,跟踪不同处理部分在执行目标场景的测试用例时所形成的函数调用链路。随后,服务器300对不同处理部分的函数调用链路进行整合,得到对应目标场景的全函数调用链路。然后,服务器300将目标场景的全函数调用链路、以及目标场景的并发场景的全函数调用链路进行合并,得到全维度的函数调用链路。最后,服务器300对合并后的全维度的函数调用链路进行遍历处理,确定出相对于合并前的全函数调用链路的新函数调用链路,并将所确定出的新函数调用链路发送给区块链网络600,以在区块链网络600中进行存储。区块链网络600通过网络400将新函数调用链路发送给终端500,以使测试人员或者开发人员根据终端500所接收到的新函数调用链路编写对应的新测试用例,并将所编写的新测试用例发送给区块链网络600,随后,利用从区块链网络600中获取的新测试用例对并发服务200进行测试,以实现对并发服务200的全面测试。
下面说明图1A中服务器300的结构。参见图2,图2是本申请实施例提供的服务器300的结构示意图,图2所示的服务器300包括:至少一个处理器310、存储器340、至少一个网络接口320。服务器300中的各个组件通过总线系统330耦合在一起。可理解,总线系统330用于实现这些组件之间的连接通信。总线系统330除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统330。
处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器340可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器340可选地包括在物理位置上远离处理器310的一个或多个存储设备。
存储器340包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Me mory),易失性存储器可以是随机存取存储器(RAM,Random Access Memo ry)。本申请实施例描述的存储器340旨在包括任意适合类型的存储器。
在一些实施例中,存储器340能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统341,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块342,用于经由一个或多个(有线或无线)网络接口320到达其他计算设备,示例性的网络接口320包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
在一些实施例中,本申请实施例提供的并发服务的测试用例处理装置343可以采用软件方式实现,图2示出了存储在存储器340中的并发服务的测试用例处理装置343,其可以是程序和插件等形式的软件,包括以下软件模块:代码注入模块3431、整合模块3432、合并模块3433、遍历处理模块3434和测试用例生成模块3435,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的并发服务的测试用例处理装置可以采用硬件方式实现,作为示例,本申请实施例提供的并发服务的测试用例处理装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的并发服务的测试用例处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrate d Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
下面将结合本申请实施例提供的并发服务的测试用例处理设备实施为服务器时的示例性应用,说明本申请实施例提供的并发服务的测试用例处理方法。参见图3,图3是本申请实施例提供的并发服务的测试用例处理方法的一个可选的流程示意图,将结合图3示出的步骤进行说明。
在步骤S301中,服务器通过在并发服务的不同处理部分注入的代码,跟踪不同处理部分在执行目标场景的测试用例时所形成的函数调用链路。
这里,并发服务是指为了满足业务高性能高可用的需求,引入各种并发处理或者异步处理的方式来解决问题的服务。例如在区块链业务中,区块链服务需要执行交易请求、打包处理、共识验证、共识提交、交易存储等一系列的分合处理。而为了提高区块内的交易集的验证效率,会引入多线程的并发方式进行验证。
在一些实施例中,图3示出的步骤S301可以通过图4示出的步骤S401至步骤S403实现。参见图4,图4是本申请实施例提供的并发服务的测试用例处理方法的另一个可选的流程示意图,将结合图4示出的步骤进行说明。
在步骤S401中,服务器在并发服务的不同处理部分对应的源代码的编译期进行代码注入;或者,服务器在并发服务的不同处理部分对应的源代码的运行期进行代码注入。
在一些实施例中,服务器可以使用预设的编译器,在并发服务的不同处理部分对应的源代码的编译期进行代码注入。
示例的,可以在并发服务的不同处理部分对应的源代码进行编译的过程中,通过特殊的编译器织入代码,该编译器可以是支持面向切面编程(AOP,Aspe ct OrientedProgramming)的编译器,比如AspectJ编译器等,AspectJ编译器是一个面向切面的框架,它扩展了Java语言,定义了AOP语法,它有一个专门的编译器用来生成遵守Java字节规范的Class文件。其中,Java是一门面向对象编程语言,Class是对某种类型的对象定义变量和方法的原型。
在另一些实施例中,服务器也可以使用插桩和字节码操控框架结合的方式,在并发服务的不同处理部分对应的源代码的运行期进行代码注入。
示例的,服务器可以使用Instrumentation和ASM结合的方式,在并发服务的不同处理部分对应的源代码的运行期进行代码注入。其中,Instrumentation是指可以用独立于应用程序之外的代理(agent)程序来监测和协助运行在JVM(Java Virtual Machine,Java虚拟机)上的应用程序。这种监测和协助包括获取Java虚拟机运行时的状态、替换和修改类定义等。ASM是一个Java字节码操控框架。它能被用来动态生成类、或者增强既有类的功能。ASM可以直接产生二进制Class文件,也可以在类被加载入Java虚拟机之前动态改变类行为。J ava Class被存储在严格格式定义的.class文件里,这些类文件拥有足够的元数据来解析类中的所有元素,例如类名称、方法、属性以及Java字节码等。
需要说明的是,本申请实施例提供的并发服务的测试用例处理方法针对的是函数级别的调用链路获取,可以在并发服务对应的源代码的编译期进行代码注入;或者,在并发服务对应的源代码的运行期进行代码注入,实现函数调用链路信息的获取。此外,在获取函数调用链路信息时,注入信息也无需带上生产版本。
在步骤S402中,服务器获取不同处理部分在执行目标场景的测试用例时所调用的函数、以及每个函数被调用的先后顺序。
这里,通过在并发服务的不同处理部分中分别注入的代码,对并发服务的不同处理部分在执行目标场景的测试用例时将所调用的函数、以及每个函数被调用的先后顺序进行跟踪并记录。
在一些实施例中,并发服务的不同处理部分可以包括请求场景部分、并发处理部分和异步处理部分,则可以分别针对并发服务包括的请求场景部分、并发处理部分和异步处理部分进行代码注入,以分别获取请求场景部分在执行目标场景的测试用例时所调用的函数和每个函数被调用的先后顺序、并发处理部分在执行目标场景的测试用例时所调用的函数和每个函数被调用的先后顺序、以及异步处理部分在执行目标场景的测试用例时所调用的函数和每个函数被调用的先后顺序。
在步骤S403中,服务器将各处理部分在执行目标场景的测试用例时所调用的函数、以及每个函数被调用的先后顺序进行组合,得到对应的函数调用链路。
这里,服务器将并发服务包括的各不同处理部分在执行目标场景的测试用例时所调用的函数、以及每个函数被调用的先后顺序进行组合,以得到各不同处理部分分别对应的函数调用链路。
示例的,服务器将并发服务包括的请求场景部分在执行目标场景的测试用例时所调用的函数、以及每个函数被调用的先后顺序进行组合,得到对应请求场景部分的函数调用链路。
示例的,服务器将并发服务包括的并发处理部分在执行目标场景的测试用例时所调用的函数、以及每个函数被调用的先后顺序进行组合,得到对应并发处理部分的函数调用链路。
示例的,服务器将并发服务包括的异步处理部分在执行目标场景的测试用例时所调用的函数、以及每个函数被调用的先后顺序进行组合,得到对应异步处理部分的函数调用链路。
本申请实施例通过面向切面编程的方式对并发服务的不同处理部分进行代码注入,实现了在无需改动并发服务源代码的情况下,得到不同处理部分在执行目标场景的测试用例时分别对应的函数调用链路。
在步骤S302中,服务器对不同处理部分的函数调用链路进行整合,得到对应目标场景的全函数调用链路。
这里,服务器在获取到并发服务的不同处理部分分别对应的函数调用链路后,需要对不同处理部分的函数调用链路进行整合,以得到对应目标场景的全函数调用链路。
在一些实施例中,服务器对并发服务的不同处理部分的函数调用链路进行整合,可以通过以下方式实现:服务器对并发服务的不同处理部分的入口函数进行代码注入,以通过反射机制获取到数据的关键特征(即数据的唯一标识符),随后,根据所获取到的唯一标识符,将并发服务的不同处理部分的函数调用链路进行整合。其中,反射机制指的是程序在运行时能够获取自身的信息。例如,在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能就称为Java语言的反射机制。通过反射机制获取类结构的具体过程如下:首先,创建类对象,例如可以通过调用Class对象的new insta nce()方法来创建类对象,其中,类必须有一个无参数的构造器,且类的构造器的访问权限需要足够;随后,使用反射生成并操作对象,例如通过反射调用类中的指定方法、指定属性,其中,通过反射调用类中的方法,可以通过Metho d类完成,具体步骤为通过Class类的getMethod方法取得一个Method对象,并设置此方法操作时所需要的参数类型,之后使用Object invoke进行调用,并向方法中传递要设置的obj对象的参数信息。调用指定属性可以直接通过Field类操作中的属性,通过Field类提供的set()和get()方法就可以完成设置和取得属性内容的操作。
示例的,服务器可以将并发服务的不同处理部分的入口函数作为关键点,进行代码注入,以通过反射机制获取到数据的唯一标识符,例如,在区块链服务中,唯一标识符可以是交易的哈希、区块的哈希等,随后,利用唯一标识符,将并发服务的不同处理部分的函数调用链路整合起来。例如,唯一标识符会随着并发服务在执行目标场景的测试用例时在不同处理部分进行传递,如此,可根据唯一标识符在不同处理部分之间传递的时间顺序,将不同处理部分的函数调用链路进行整合。
本申请实施例通过对不同处理部分的入口函数进行代码注入,以基于反射机制获取到唯一标识符,并根据获取到的唯一标识符,对不同处理部分分别对应的函数调用链路进行整合,从而得到了对应目标场景的全函数调用链路。
在步骤S303中,服务器将目标场景的全函数调用链路、以及目标场景的并发场景的全函数调用链路进行合并,得到全维度的函数调用链路。
这里,服务器在通过步骤S301至步骤S302得到目标场景的全函数调用链路后,继续获取并发服务在执行目标场景的并发场景所对应的测试用例时所形成的全函数调用链路,获取目标场景的并发场景的全函数调用链路的具体过程与获取目标场景的全函数调用链路过程类似,本申请实施例在此不再赘述。
服务器在获取到目标场景的全函数调用链路、以及目标场景的并发场景的全函数调用链路后,将目标场景的全函数调用链路、以及目标场景的并发场景的全函数调用链路进行合并,以得到全维度的函数调用链路。
示例的,在测试通过区块链服务进行转账业务时,服务器在获取到给一个用户进行转账(即目标场景)时所形成的全函数调用链路后,继续获取给两个或者更多的用户进行转账(即目标场景的并发场景)时所形成的全函数调用链路,由于给一个用户进行转账所形成的全函数调用链路与给两个或者更多的用户进行转账所形成的全函数调用链路不同,因此,服务器可以将给一个用户进行转账时所形成的全函数调用链路和给两个或者更多的用户进行转账时所形成的全函数调用链路进行合并,以得到全维度的函数调用链路。
本申请实施例通过将并发服务在执行不同场景的测试用例时所形成的全函数调用链路进行汇总,得到了全维度的函数调用链路。
在步骤S304中,服务器对全维度的函数调用链路进行遍历处理,确定出区别于全函数调用链路的新函数调用链路,并基于新函数调用链路生成对应的新测试用例。
这里,服务器在执行步骤S301至步骤S303得到全维度的函数调用链路后,以所得到的全维度的函数调用链路的入口函数为起点、以全维度的函数调用链路的最后一个函数为终点,进行遍历处理,确定出所有不同类型的函数调用链路。随后,将所确定出的所有不同类型的函数调用链路与合并前已存在的全函数调用链路进行比较,从所有不同类型的函数调用链路中删除合并前已存在的全函数调用链路,将剩余的函数调用链路确定为新函数调用链路。
示例的,参见图7,图7是本申请实施例提供的将不同场景的全函数调用链路进行合并的示意图,如图7所示,A场景的全函数调用链路为“...F16-F17…F8-F9…”;而B场景的全函数调用链路为“...F16-F19…F8-F18…”,合并后的全维度的函数调用链路为“...F16-F17/F19…F8-F9/F18…”,其中,“F16-F17/F19”表示在调用完函数F16后,后续既可以调用函数F17又可以调用函数F19。
示例的,参见图8,图8是本申请实施例提供的基于合并后的全维度的函数调用链路发现新函数调用链路的示意图。如图8所示,对合并后的全维度的函数调用链路(对应于图7中合并后的全维度的函数调用链路)进行遍历处理,得到如下4条不同类型的函数调用链路:
函数调用链路1:“...F16-F17…F8-F9…”;
函数调用链路2:“...F16-F17…F8-F18…”;
函数调用链路3:“...F16-F19…F8-F9…”;
函数调用链路4:“...F16-F19…F8-F18…”;
然后,将这4条不同类型的函数调用链路与A场景的全函数调用链路和B场景的全函数调用链路进行比较,删除与A场景的全函数调用链路相同的函数调用链路(即上述函数调用链路1)和与B场景的全函数调用链路相同的函数调用链路(即上述函数调用链路4),将剩余的函数调用链路2(对应于图8中的D场景)和函数调用链路3(对应于图8中的C场景)确定为新函数调用链路。最后,将这些新函数调用链路发送给开发人员或者测试人员,以使开发人员或者测试人员基于这些新函数调用链路编写对应的新测试用例,进而使用新测试用例对并发服务进行测试,以实现对并发服务的全面测试。
本申请实施例在得到全维度的函数调用链路后,对合并后的全维度的函数调用链路以穷尽的方式输出不同类型路径的函数调用链路,并结合合并前已存在的全函数调用链路,确定出之前未测试过的新函数调用链路,进而测试人员或者开发人员可以基于确定出的新函数调用链路,补充对应的新测试用例来覆盖路径场景,以实现对并发服务的全面测试,保证了测试的准确性。
下面继续说明本申请实施例提供的并发服务的测试用例处理装置343实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器340的并发服务的测试用例处理装置343中的软件模块可以包括:
代码注入模块3431,用于通过在并发服务的不同处理部分注入的代码,跟踪不同处理部分在执行目标场景的测试用例时所形成的函数调用链路;整合模块3432,用于对不同处理部分的函数调用链路进行整合,得到对应目标场景的全函数调用链路;合并模块3433,用于将目标场景的全函数调用链路、以及目标场景的并发场景的全函数调用链路进行合并,得到全维度的函数调用链路;遍历处理模块3434,用于对全维度的函数调用链路进行遍历处理,确定出区别于全函数调用链路的新函数调用链路;测试用例生成模块3435,用于基于新函数调用链路生成对应的新测试用例。
在一些实施例中,代码注入模块3431,还用于在并发服务的不同处理部分对应的源代码的编译期注入代码,或者,在并发服务的不同处理部分对应的源代码的运行期注入代码,以使注入的代码被执行时,跟踪不同处理部分在执行目标场景的测试用例时所形成的函数调用链路。
在一些实施例中,代码注入模块3431,还用于在并发服务的不同处理部分对应的源代码的编译期,基于编译器进行代码注入;或者,用于在并发服务的不同处理部分对应的源代码的运行期,通过插桩和字节码操控框架结合的方式进行代码注入。
在一些实施例中,并发服务的测试用例处理装置343还包括获取模块3436和组合模块3437,其中,获取模块3436,用于获取不同处理部分在执行目标场景的测试用例时所调用的函数、以及每个函数被调用的先后顺序;组合模块3437,用于根据每个所述函数被调用的先后顺序,将各处理部分在执行目标场景的测试用例时所调用的函数进行组合,得到对应的函数调用链路。
在一些实施例中,代码注入模块3431,还用于对并发服务的不同处理部分的入口函数进行代码注入;当在所述入口函数中被注入的代码被执行时实现以下操作:通过反射机制获取所述函数调用链路的函数所输出数据的唯一标识符;整合模块3432,还用于根据唯一标识符,将不同处理部分的函数调用链路进行整合。
在一些实施例中,整合模块3432,还用于在并发服务执行目标场景的测试用例时,识别唯一标识符在并发服务的不同处理部分的函数调用链路之间的传递顺序,根据传递顺序将不同处理部分的函数调用链路进行整合。
在一些实施例中,整合模块3432,还用于对并发服务在数据处理维度包括的请求场景部分、并发处理部分、以及异步处理部分分别对应的函数调用链路进行整合,得到数据处理维度的全函数调用链路。
在一些实施例中,遍历处理模块3434,还用于以全维度的函数调用链路的入口函数为起点、全维度的函数调用链路的最后一个函数为终点,进行遍历处理,确定出所有的函数调用链路;删除合并前已存在的全函数调用链路,将剩余的函数调用链路确定为新函数调用链路。
在一些实施例中,测试用例生成模块3435,还用于针对多个新函数调用链路中的任一新函数调用链路,生成与任一新函数调用链路对应的新测试用例;通过与任一新函数调用链路对应的新测试用例,对任一新函数调用链路进行测试。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本申请实施例提供的并发服务的测试用例处理装置中未尽的技术细节,可以根据图3或图4任一附图的说明而理解。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
随着业务的高速发展,要满足业务高性能高可用的要求,业务程序必然会引入各种并发处理或者异步处理的方式来解决问题。例如在区块链业务中,为了提高区块内的交易集的有效性校验,会引入多线程的并发方式来提高验证效率,而为了提高集群内的共识效率和海量数据的存储性能,也会引入异步通信和投票等待方式。然而,由于各种高性能并发处理方式会割裂区块链对于区块或者交易处理的全程,导致难以快速地获取其数据处理的全流程并把不同场景的流程处理整合在一起分析挖掘出更多的路径测试场景。
针对上述问题,本申请实施例提供了一种并发服务的测试用例处理方法,首先,通过面向切面编程的方式对区块链服务的不同处理部分进行代码注入,以得到区块链服务的不同处理部分分别对应的函数调用链路,接着,把不同处理部分的函数调用链路进行整合,得到以数据处理为维度的全函数调用链路。然后,把不同场景所收集的全函数调用链路汇总成整体的函数调用链路(即得到一个全维度的函数调用链路),并使用路径分析方法对汇总后的整体的函数调用链路进行分析,以协助开发人员或者测试人员发现之前未曾测试过的路径场景,进而可以针对之前未曾测试过的路径场景补充更加全面的测试用例。
本申请实施例提供的并发服务的测试用例处理方法可以用于在基于数据处理的高性能服务的测试用例发现上。例如在区块链业务中,区块链服务会接收到交易请求、打包处理、共识验证、共识提交、交易存储等一系列的分合处理。为此,如图5所示,可以针对区块链服务的特点关键点进行代码注入,开启函数动态链路跟踪及输出数据唯一标识符,并对区块链服务的不同处理部分也进行代码注入,开启函数动态链路跟踪。代码注入可以在区块链服务对应的源代码的编译期或者运行期进行,实现与区块链服务源代码的隔离,不污染区块链服务的源代码。
示例的,可以使用AspectJ在区块链服务对应的源代码的编译期进行代码注入,其中,AspectJ是AOP的Java实现版本,定义了AOP的语法,是对Jav a的一个扩展。AspectJ引入了连接点的概念,同时引入了三个新的结构:切点(pointcut)、通知(advice)、跨类型声明(inter-type declaration)以及切面(aspect)。切点和通知是AspectJ中动态额部分,用于指定在什么条件下切断执行,以及采取什么动作来实现切面操作。顾名思义,这里的切点就是用来定义什么情况下进行横切,而通知则是指在横切情况下需要执行什么操作;
示例的,也可以使用Instrumentation和ASM结合的方式在区块链服务对应的源代码的运行期进行代码注入,其中,Instrumentation用于构建一个独立于应用程序的代理程序(Agent),以监测和协助运行在Java虚拟机上的程序,甚至可以替换和修改某些类的定义。Instrumentation的最大作用是类定义的动态改变和操作,程序运行时,通过-javaagent参数指定一个特定的jar文件来启动In strumentation的代理程序,jar文件是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源文件到一个文件,以便开发Java平台应用软件或者库。ASM是一个Java字节码操控框架,它能被用来动态生成类或者增强既有类的功能。ASM可以直接产生二进制Class文件,也可以在类被加载入Java虚拟机之前动态改变类行为。Java Class被存储在严格格式定义的.Clas s文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及Java字节码(指令)。ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。
本申请实施例提供的区块链服务的测试用例处理方法通过对区块链服务的不同处理部分的入口函数进行关键点注入,以基于反射机制获取到数据的关键特征,即唯一标识符,例如交易的哈希(hash)、区块的哈希等,并将所获取的唯一标识符记录到日志中。
示例的,记录唯一标识符的日志内容如下:
“level_id:158ac8a3-b27c-44cb-8d16-11605ae36503”。
此外,通过调用链路注入对区块链服务对应的源代码的全路径进行代码注入,实现对不同处理部分在执行测试用例时实时调用链路的跟踪和记录,将跟踪到的不同处理部分的函数调用链路也一并记录到日志中。
示例的,记录函数调用链路的日志内容如下:
“[2019-10-18 18:31:58,325]|18872|trustsql-wroker-nio-rpc-5-1|INFO|TrustsqlReqCal1:41|void com.trustsql.rcp.Http.api.impl.ChainApiImpl.insertTransaction(long,String,JSONArray,JSONArray,long,String,CompletableFuture)type:json_rpc_req”。
参见图6,图6是本申请实施例提供的区块链服务的测试用例处理系统的架构示意图,如图6所示,通过代码注入把不同场景的全函数动态调用链路收集起来记录到日志后,利用日志收集代理器将日志上传到调用链路分析中台,由调用链路分析中台进行后续的调用链路整合和路径发现。其中,调用链路分析中台中的调用链路整合模块用于把不同场景的全函数动态调用链路汇总在一起,得到一个全维度的函数调用链路。
参见图7,图7是本申请实施例提供的将不同场景的全函数调用链路进行合并的示意图,如图7所示,0层表示不同处理部分的关键点入口函数,而1.1层即为函数F1内部的子调用链路。层级间的粗箭头表示子层级调用,层级内部的细箭头表示为函数内部的函数调用的先后顺序。调用链路分析中台中的调用链路整合模块将A场景下获取到的全函数调用链路和B场景下获取到的全函数调用链路进行合并,得到一个全维度的函数调用链路。例如,在A场景下1.1层的函数F16被2.2层的函数F17调用,而在B场景下1.1层的函数F16被2.2层的函数F19调用,则合并后的全维度的函数调用链路中,1.1层的函数F16可以同时被2.2层的函数F17和函数F19调用。
参见图8,图8是本申请实施例提供的基于合并后的全维度的函数调用链路发现新函数调用链路的示意图,如图8所示,调用链路分析中台中的路径分析模块会根据合并后的全维度的函数调用链路,以穷尽的方式输出不同类型路径的函数调用链路,并结合合并前的函数调用链路,发现出之前未验证过的函数调用链路,例如图8中C场景对应的函数调用链路和D场景对应的函数调用链路,从而开发人员或者测试人员可以分别针对C场景对应的函数调用链路和D场景对应的函数调用链路编写对应的新测试用例,然后利用所编写的新测试用例分别对C场景和D场景进行测试,以实现对区块链服务的全面测试。
本申请实施例提供的并发服务的测试用例处理方法,通过收集到实际运行的不同场景的全函数调用链路,并进行合并,以此协助开发人员或者测试人员发现未曾测试过的新路径场景,补充更加全面的测试用例。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图3或4示出的并发服务的测试用例处理方法。
在一些实施例中,存储介质可以是FRAM、ROM、PROM、EPROM、EE PROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本申请实施例具有以下有益效果:
1)通过面向切面编程的方式进行代码注入,在无需改动源代码下确保业务不被影响,也保证所影响的性能在一个可以接受的范围内;
2)对通过面向切面编程的方式获取到的请求场景部分、并发处理部分以及异步处理部分的函数调用链路进行整合,得到了以数据处理为维度的全函数动态调用链路;
3)对基于不同场景的测试用例获取到的全函数动态调用链路进行全部汇总,得到了一个全维度的函数调用链路;
4)使用路径分析方法协助开发人员或者测试人员发现未曾测试过的新路径场景,以补充更加全面的测试用例。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (10)
1.一种并发服务的测试用例处理方法,其特征在于,所述方法包括:
通过在并发服务的不同处理部分注入的代码,跟踪所述不同处理部分在执行目标场景的测试用例时所形成的函数调用链路;
对所述不同处理部分的函数调用链路进行整合,得到对应所述目标场景的全函数调用链路;
将所述目标场景的全函数调用链路、以及所述目标场景的并发场景的全函数调用链路进行合并,得到全维度的函数调用链路;
对所述全维度的函数调用链路进行遍历处理,确定出区别于所述全函数调用链路的新函数调用链路,并基于所述新函数调用链路生成对应的新测试用例。
2.根据权利要求1所述的方法,其特征在于,所述通过在并发服务的不同处理部分注入的代码,跟踪所述不同处理部分在执行目标场景的测试用例时所形成的函数调用链路,包括:
在所述并发服务的不同处理部分对应的源代码的编译期注入代码,或者,在所述并发服务的不同处理部分对应的源代码的运行期注入代码,以使
所述注入的代码被执行时,跟踪所述不同处理部分在执行目标场景的测试用例时所形成的函数调用链路。
3.根据权利要求2所述的方法,其特征在于,所述在所述并发服务的不同处理部分对应的源代码的编译期注入代码,包括:
在所述并发服务的不同处理部分对应的源代码的编译期,基于编译器进行代码注入;
所述在所述并发服务的不同处理部分对应的源代码的运行期注入代码,包括:
在所述并发服务的不同处理部分对应的源代码的运行期,通过插桩和字节码操控框架结合的方式进行代码注入。
4.根据权利要求1所述的方法,其特征在于,所述跟踪所述不同处理部分在执行目标场景的测试用例时所形成的函数调用链路,包括:
获取所述不同处理部分在执行目标场景的测试用例时所调用的函数、以及每个所述函数被调用的先后顺序;
根据每个所述函数被调用的先后顺序,将各处理部分在执行目标场景的测试用例时所调用的函数进行组合,得到对应的函数调用链路。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述并发服务的不同处理部分的入口函数进行代码注入;
所述对所述不同处理部分的函数调用链路进行整合,包括:
当在所述入口函数中被注入的代码被执行时实现以下操作:
通过反射机制获取所述函数调用链路的函数所输出数据的唯一标识符;
根据所述唯一标识符,将所述不同处理部分的函数调用链路进行整合。
6.根据权利要求5所述的方法,其特征在于,所述根据所述唯一标识符,将所述不同处理部分的函数调用链路进行整合,包括:
在所述并发服务执行目标场景的测试用例时,识别所述唯一标识符在所述并发服务的不同处理部分的函数调用链路之间的传递顺序;
根据所述传递顺序将所述不同处理部分的函数调用链路进行整合。
7.根据权利要求1所述的方法,其特征在于,所述对所述不同处理部分的函数调用链路进行整合,包括:
对所述并发服务在数据处理维度包括的请求场景部分、并发处理部分、以及异步处理部分分别对应的函数调用链路进行整合,得到数据处理维度的全函数调用链路。
8.根据权利要求1所述的方法,其特征在于,所述对所述全维度的函数调用链路进行遍历处理,确定出区别于所述全函数调用链路的新函数调用链路,包括:
以所述全维度的函数调用链路的入口函数为起点、所述全维度的函数调用链路的最后一个函数为终点,进行遍历处理,确定出所有的函数调用链路;
删除合并前已存在的全函数调用链路,将剩余的函数调用链路确定为所述新函数调用链路。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
针对多个所述新函数调用链路中的任一新函数调用链路,生成与所述任一新函数调用链路对应的新测试用例;
通过与所述任一新函数调用链路对应的新测试用例,对所述任一新函数调用链路进行测试。
10.一种并发服务的测试用例处理装置,其特征在于,所述装置包括:
代码注入模块,用于通过在并发服务的不同处理部分注入的代码,跟踪所述不同处理部分在执行目标场景的测试用例时所形成的函数调用链路;
整合模块,用于对所述不同处理部分的函数调用链路进行整合,得到对应所述目标场景的全函数调用链路;
合并模块,用于将所述目标场景的全函数调用链路、以及所述目标场景的并发场景的全函数调用链路进行合并,得到全维度的函数调用链路;
遍历处理模块,用于对所述全维度的函数调用链路进行遍历处理,确定出区别于所述全函数调用链路的新函数调用链路;
测试用例生成模块,用于基于所述新函数调用链路生成对应的新测试用例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010252401.1A CN111459824B (zh) | 2020-04-01 | 2020-04-01 | 并发服务的测试用例处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010252401.1A CN111459824B (zh) | 2020-04-01 | 2020-04-01 | 并发服务的测试用例处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459824A true CN111459824A (zh) | 2020-07-28 |
CN111459824B CN111459824B (zh) | 2021-09-14 |
Family
ID=71678469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010252401.1A Active CN111459824B (zh) | 2020-04-01 | 2020-04-01 | 并发服务的测试用例处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459824B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949531A (zh) * | 2020-08-10 | 2020-11-17 | 腾讯科技(深圳)有限公司 | 区块链网络的测试方法、装置、介质及电子设备 |
CN112540930A (zh) * | 2020-12-28 | 2021-03-23 | 北京百家科技集团有限公司 | 一种针对软件更新的评测方法、装置以及电子设备 |
CN112558947A (zh) * | 2020-12-18 | 2021-03-26 | 京东数字科技控股股份有限公司 | 程序调用追踪方法、装置以及存储介质 |
CN112968954A (zh) * | 2021-02-10 | 2021-06-15 | 中国工商银行股份有限公司 | 一种服务迁移的流量控制方法、服务器及系统 |
CN113138927A (zh) * | 2021-04-30 | 2021-07-20 | 北京沃东天骏信息技术有限公司 | 一种软件功能测试方法和装置 |
CN113157590A (zh) * | 2021-05-20 | 2021-07-23 | 中国工商银行股份有限公司 | 测试案例生成方法及装置 |
CN117076329A (zh) * | 2023-10-12 | 2023-11-17 | 浙江云融创新科技有限公司 | 一种业务互斥状态下用例并发执行的方法及系统 |
WO2024077028A1 (en) * | 2022-10-07 | 2024-04-11 | The Bank Of New York Mellon | Application scenario injection and validation system |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902449A (zh) * | 2012-12-28 | 2014-07-02 | 百度在线网络技术(北京)有限公司 | 一种用于生成搜索引擎相关性排序测试用例的方法与设备 |
US20150301108A1 (en) * | 2014-04-18 | 2015-10-22 | Breker Verification Systems | Scheduling of scenario models for execution within different computer threads and scheduling of memory regions for use with the scenario models |
CN105677570A (zh) * | 2016-01-11 | 2016-06-15 | 北京航空航天大学 | 一种基于事件响应函数树的gui软件测试用例生成方法 |
CN106681921A (zh) * | 2016-12-27 | 2017-05-17 | 腾讯科技(深圳)有限公司 | 数据参数化的实现方法和装置 |
CN107590074A (zh) * | 2017-09-05 | 2018-01-16 | 郑州云海信息技术有限公司 | 一种测试用例的生成方法及装置 |
CN107783893A (zh) * | 2016-08-26 | 2018-03-09 | 上海计算机软件技术开发中心 | 一种基于场景描述的自动测试系统及其实现方法 |
CN107870852A (zh) * | 2016-09-26 | 2018-04-03 | 北京金山云网络技术有限公司 | 一种测试方法及装置 |
US9983965B1 (en) * | 2013-12-13 | 2018-05-29 | Innovative Defense Technologies, LLC | Method and system for implementing virtual users for automated test and retest procedures |
CN108459949A (zh) * | 2017-02-17 | 2018-08-28 | 腾讯科技(深圳)有限公司 | 一种测试方法及终端 |
CN110007957A (zh) * | 2018-12-17 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 调用链路构建方法、装置及设备 |
CN110134582A (zh) * | 2019-04-03 | 2019-08-16 | 口碑(上海)信息技术有限公司 | 测试用例的处理及数据处理方法及装置 |
CN110399284A (zh) * | 2018-04-24 | 2019-11-01 | 中移(杭州)信息技术有限公司 | 一种测试用例编写与执行方法及装置 |
-
2020
- 2020-04-01 CN CN202010252401.1A patent/CN111459824B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902449A (zh) * | 2012-12-28 | 2014-07-02 | 百度在线网络技术(北京)有限公司 | 一种用于生成搜索引擎相关性排序测试用例的方法与设备 |
US9983965B1 (en) * | 2013-12-13 | 2018-05-29 | Innovative Defense Technologies, LLC | Method and system for implementing virtual users for automated test and retest procedures |
US20150301108A1 (en) * | 2014-04-18 | 2015-10-22 | Breker Verification Systems | Scheduling of scenario models for execution within different computer threads and scheduling of memory regions for use with the scenario models |
CN105677570A (zh) * | 2016-01-11 | 2016-06-15 | 北京航空航天大学 | 一种基于事件响应函数树的gui软件测试用例生成方法 |
CN107783893A (zh) * | 2016-08-26 | 2018-03-09 | 上海计算机软件技术开发中心 | 一种基于场景描述的自动测试系统及其实现方法 |
CN107870852A (zh) * | 2016-09-26 | 2018-04-03 | 北京金山云网络技术有限公司 | 一种测试方法及装置 |
CN106681921A (zh) * | 2016-12-27 | 2017-05-17 | 腾讯科技(深圳)有限公司 | 数据参数化的实现方法和装置 |
CN108459949A (zh) * | 2017-02-17 | 2018-08-28 | 腾讯科技(深圳)有限公司 | 一种测试方法及终端 |
CN107590074A (zh) * | 2017-09-05 | 2018-01-16 | 郑州云海信息技术有限公司 | 一种测试用例的生成方法及装置 |
CN110399284A (zh) * | 2018-04-24 | 2019-11-01 | 中移(杭州)信息技术有限公司 | 一种测试用例编写与执行方法及装置 |
CN110007957A (zh) * | 2018-12-17 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 调用链路构建方法、装置及设备 |
CN110134582A (zh) * | 2019-04-03 | 2019-08-16 | 口碑(上海)信息技术有限公司 | 测试用例的处理及数据处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
庄俨: "基于UML合并状态图的测试用例生成", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
霍敏霞 等: "基于Petri网的并发程序测试用例产生方法", 《计算机科学》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949531B (zh) * | 2020-08-10 | 2022-02-25 | 腾讯科技(深圳)有限公司 | 区块链网络的测试方法、装置、介质及电子设备 |
CN111949531A (zh) * | 2020-08-10 | 2020-11-17 | 腾讯科技(深圳)有限公司 | 区块链网络的测试方法、装置、介质及电子设备 |
CN112558947A (zh) * | 2020-12-18 | 2021-03-26 | 京东数字科技控股股份有限公司 | 程序调用追踪方法、装置以及存储介质 |
CN112558947B (zh) * | 2020-12-18 | 2024-04-05 | 京东科技控股股份有限公司 | 程序调用追踪方法、装置以及存储介质 |
CN112540930A (zh) * | 2020-12-28 | 2021-03-23 | 北京百家科技集团有限公司 | 一种针对软件更新的评测方法、装置以及电子设备 |
CN112968954A (zh) * | 2021-02-10 | 2021-06-15 | 中国工商银行股份有限公司 | 一种服务迁移的流量控制方法、服务器及系统 |
CN112968954B (zh) * | 2021-02-10 | 2023-04-07 | 中国工商银行股份有限公司 | 一种服务迁移的流量控制方法、服务器及系统 |
CN113138927A (zh) * | 2021-04-30 | 2021-07-20 | 北京沃东天骏信息技术有限公司 | 一种软件功能测试方法和装置 |
CN113138927B (zh) * | 2021-04-30 | 2024-04-16 | 北京沃东天骏信息技术有限公司 | 一种软件功能测试方法和装置 |
CN113157590A (zh) * | 2021-05-20 | 2021-07-23 | 中国工商银行股份有限公司 | 测试案例生成方法及装置 |
WO2024077028A1 (en) * | 2022-10-07 | 2024-04-11 | The Bank Of New York Mellon | Application scenario injection and validation system |
CN117076329A (zh) * | 2023-10-12 | 2023-11-17 | 浙江云融创新科技有限公司 | 一种业务互斥状态下用例并发执行的方法及系统 |
CN117076329B (zh) * | 2023-10-12 | 2024-01-30 | 浙江云融创新科技有限公司 | 一种业务互斥状态下用例并发执行的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111459824B (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459824B (zh) | 并发服务的测试用例处理方法及装置 | |
Duan et al. | Automating Patching of Vulnerable Open-Source Software Versions in Application Binaries. | |
CN105808266B (zh) | 代码运行方法及装置 | |
Loring et al. | ExpoSE: practical symbolic execution of standalone JavaScript | |
Shatnawi et al. | Analyzing program dependencies in java ee applications | |
CN112817597B (zh) | 运行在用户空间的基于ebpf的软件容器实现方法 | |
KP et al. | Finite‐state model extraction and visualization from Java program execution | |
CN110543427A (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
Parizek et al. | Model checking of software components: Combining java pathfinder and behavior protocol model checker | |
CN115878207A (zh) | 一种微服务治理方法、装置及系统 | |
Zhang et al. | Run-time systems failure prediction via proactive monitoring | |
Anderson et al. | TESLA: temporally enhanced system logic assertions | |
CN111880804A (zh) | 应用程序代码的处理方法及装置 | |
de Boer et al. | Combining monitoring with run-time assertion checking | |
EP2721494B1 (en) | System and method to in-line script dependencies | |
CN116501596A (zh) | 应用程序的测试方法及装置 | |
CN115022312A (zh) | 多智能合约引擎的实现方法、装置、电子设备及存储介质 | |
Meier et al. | Automated transformation of palladio component models to queueing Petri Nets | |
Gargantini et al. | A metamodel-based simulator for ASMs | |
Eilertsen | Making software refactorings safer | |
CN113553250A (zh) | 一种代码的测试方法和装置 | |
Andersen et al. | Protocol combinators for modeling, testing, and execution of distributed systems | |
Brohi et al. | A metadata-based framework for object-oriented component testing | |
Digerås | Integration between Optima and Farkle and verification with a use case about file storage stack integration in a quality of service manager in OSE | |
Santos et al. | Building an HLA-based distributed simulation: a metadata approach |
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 |