CN112306845A - 一种并发测试方法、装置、设备及介质 - Google Patents

一种并发测试方法、装置、设备及介质 Download PDF

Info

Publication number
CN112306845A
CN112306845A CN201910700188.3A CN201910700188A CN112306845A CN 112306845 A CN112306845 A CN 112306845A CN 201910700188 A CN201910700188 A CN 201910700188A CN 112306845 A CN112306845 A CN 112306845A
Authority
CN
China
Prior art keywords
test
objects
test object
execution
breakpoint
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
CN201910700188.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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910700188.3A priority Critical patent/CN112306845A/zh
Publication of CN112306845A publication Critical patent/CN112306845A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

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是本发明提供的自动单元测试框架pyunit的目录结构示意图;
图2是本发明提供的自动单元测试框架pyunit实施本发明实施例所述的一种并发测试方法的实施环境示意图;
图3是本发明提供的一种并发测试方法流程图;
图4是本发明提供的根据所述测试参量集执行测试用例的执行逻辑示意图;
图5是本发明提供的根据所述测试参量集执行测试用例的执行逻辑示意图;
图6是本发明提供的控制服务器的文件结构示意图;
图7是本发明提供的基于所述自动测试交互框架执行测试用例test2的执行逻辑流程图;
图8是本发明提供的根据所述各个测试对象反馈的响应结果得到测试结果流程图;
图9是本发明提供的一种并发测试装置框图;
图10是本发明提供的一种用于实现本发明实施例所提供的方法的设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了使本发明实施例公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明实施例进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明实施例,并不用于限定本发明实施例。为了对于本发明实施例中所述的技术方案进行清晰的阐述,本发明实施例首先对与其相关技术名词、技术背景和技术环境进行解释:
并发测试:本发明实施例中的并发测试特指在分布式系统中,并发产生相同的请求以测试分布式系统对于相同的请求进行正确处理的能力。
在实际的业务场景之中,客户可能多次重复操作或者存在其它导致某个逻辑重复执行的情况从而产生相同的并发请求,相同的并发请求可能被分配至分布式系统中不同的节点进行处理,而节点的处理速度不一致可能导致并发请求分别被多个节点先后多次响应,从而产生响应异常。本发明实施例中的并发测试主要针对这一场景进行测试。在所述并发测试中,若对于并发产生的相同的请求进行了多于一次的成功响应,则判定分布式系统出现了响应异常。
LoadRunner:是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。现有技术中常常使用LoadRunner进行并发测试,但是这种并发测试为一种黑盒测试,在实际的并发测试过程中,导致分布式系统中不同节点的处理速度不一致的代码位置无法定位,因此,无法做到在被测代码中精准的在某一行进行并发测试。
gdb:GNU开源组织发布的的程序调试工具。gdb可以允许用户随心所欲的运行程序;可让被调试的程序在你所指定的调置的断点处被打断;当程序被停住时,可以检查此时程序中所发生的事件;也可以动态改变程序。
socket:套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将输入/输出(I/O)插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是互联网协议地址(IP地址)与端口的组合。
SSH:安全外壳协议。SSH为Secure Shell的缩写,为建立在应用层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。
pyunit:一种自动单元测试框架。
JSON:JavaScript Object Notation,即对象简谱,是一种轻量级的数据交换格式。
Linux:一种支持多用户、多任务、支持多线程和多CPU(中央处理器)的操作系统。
ptrace:提供了一种父进程可以控制子进程运行,并可以检查和改变它的核心手段。它主要用于实现断点调试。一个被跟踪的进程运行中,直到发生一个信号。则进程被中止,并且通知其父进程。在进程中止的状态下,进程的内存空间可以被读写。父进程还可以使子进程继续执行,并选择是否是否忽略引起中止的信号。
本发明实施例提供一种并发测试方法,所述并发测试方法用于测试分布式系统的对于相同并发请求的响应能力。以下述业务场景为例:假设在A、B机器部署相同服务,用户连续点击提现按钮,发出2个提现请求,分别路由到A,B机器。在正常情况下,预期应只有1个请求被成功响应。在测试该场景时,需要构造请求,并控制A、B机器上被测服务的处理进度,才能够达到并发测试的目的。进一步地,通过对A、B机器中具体的业务逻辑的控制,达到明确具体哪个逻辑会对并发测试的结果产生影响的目的。
本发明实施例所述并发测试方法能够应用于各种分布式系统之中,也可使用自动单元测试框架pyunit进行实施,该自动单元测试框架pyunit可包括如图1所示的目录结构,其中conf为运行环境配置文件,可JSON格式存储;data为运行账号资源,可JSON格式存储;framework为公共框架数据目录,其中可包括一些基础库接口的目录以及第三方库接口的目录;TestCase为测试用例目录,用于存储测试用例中的内容,特别是测试流程;TestObj为测试对象目录,用于存储测试用例中的测试对象的内容;web为展示测试用例的web展示要素;report为测试报告目录,用于存储测试用例的测试结果。本发明实施例所述并发测试方法的测试对象、测试逻辑以及测试相关各种参数均可以通过自动单元测试框架pyunit进行分类预先配置。
请参考图2,其示出了基于自动单元测试框架pyunit实施本发明实施例所述的一种并发测试方法的实施环境。所述实施环境可包括业务封装输出接口、业务测试对象存储模块、业务测试用例存储模块以及公共框架数据库。业务封装输出接口可为业务应用接口以及业务基础接口等,以便输出上述自动单元测试框架。业务测试对象存储模块用于存储用户界面接口、通用网关接口、底层服务接口以及定时脚本接口等测试对象,测试对象的协议基类以及继承基类可存储在公共框架数据库中。业务测试用例存储模块用于存储对上述测试对象进行接口自动化测试的测试流程,如加解密操作、协议转换操作、登录操作、并发操作以及远程执行操作等,上述测试流程的调用资源接口也可存储在公共框架数据库中。所述实施环境可以通过运行其中的测试用例,对测试对象进行并发测试,所述并发测试的具体逻辑将在下文详述。
本发明实施例提供了一种并发测试方法,如图3所示,所述方法包括:
S101.获取用于测试分布式系统的测试用例,所述测试用例中记录有测试请求和测试参量集,所述测试参量集包括至少两个测试参量,每个测试参量均指向一个测试对象和所述测试对象中的断点位置。
具体地,不同的测试对象可以位于所述分布式系统中不同的节点之上,其可以在不同的设备之上执行。
每个测试对象中均可以根据所述测试参量集被设置0个或多于0个断点,断点的设置可以打断所述测试对象执行所述测试用例的逻辑,从而控制测试对象执行所述测试用例的速度。对多个测试对象进行断点设置,并且向所述多个测试对象并发所述测试请求即可营造不同的设备先后响应相同的请求的测试场景。
S103.解析所述测试用例以得到所述测试请求和各个测试参量,为测试参量指向的测试对象设置断点;向各个测试对象并行发出测试请求,并控制各个测试对象的执行逻辑,以得到各个测试对象反馈的响应结果。
具体地,所述各个测试对象为所述测试用例中的测试对象。
具体地,所述控制各个测试对象的执行逻辑用于当测试对象执行到断点后,按照预设逻辑控制所述测试对象的在断点位置继续执行。
在一个可行的实施例中,可以为各个测试对象设置定时器,以便于所述测试对象的执行过程在被断点打断从而暂停执行的场景中,当暂停指定时间之后,在断点位置继续执行。所述指定时间也可以被记录于所述测试对象所在的测试参量之中。
在另一个可行的实施例中,可以为各个测试对象设置恢复执行条件,以便于所述测试对象的执行过程在被断点打断的情况下,当恢复执行条件被满足时,在断点位置继续执行。所述恢复执行条件也可以被记录于所述测试对象所在的测试参量之中。
下面以一个测试用例test1,并且所述测试用例的测试参量集包括三个测试参量为例:
测试请求:为用户自动扣费15元。
测试参量1:测试对象A机器,断点位置:第131行,指定时间:1秒。
测试参量2:测试对象B机器,断点位置:第10行,第167行,第399行,指定时间:100ms,100ms,200ms。
测试参量3:测试对象C机器,断点位置:空,指定时间:空。
根据所述测试参量集执行测试用例的执行逻辑如图4所示,可以概述如下:
测试对象A机器在其代码第131被添加断点,测试对象B机器在其代码第10行、第167行、第399行均被添加断点。
测试对象A、测试对象B和测试对象C分别独立响应于测试请求,在测试对象A中响应逻辑被执行到第131行后暂停,暂停1秒后继续执行直至响应逻辑执行完毕;在测试对象B中响应逻辑被执行到第10行后暂停100ms后继续执行,执行到第167行后暂停100ms后继续执行,执行到第399行后暂停200ms后继续执行直至执行完毕;测试对象C中一直执行直至执行完毕。
下面以另一个测试用例test2,并且所述测试用例的测试参量集只包括两个测试参量为例:
测试请求:为用户自动返现10元。
测试参量1:测试对象A机器,断点位置第261行,恢复执行条件:测试对象B执行完毕。
测试参量2:测试对象B机器,断点:空,恢复执行条件:空
根据所述测试参量集执行测试用例的执行逻辑如图5所示,可以概述如下:
测试对象A机器在其代码第261被添加断点,测试对象A和测试对象B分别独立响应于测试请求,在测试对象A中响应逻辑被执行到第261行后暂停,直至测试对象B响应逻辑被执行完后,测试对象A继续响应直至结束。
在一个可行的实施方式中,可以基于gdb为测试对象设置断点,并控制各个测试对象的执行逻辑。具体地,可以使用gdb中的break、next、continue等指令来控制各个测试对象的执行逻辑。其中,break可以用于为测试对象设置断点,next会把函数调用当作一条语句来执行,再次输入next会执行函数调用后的语句,continue可以用于让程序继续运行,直到下一个断点或者运行完为止。
为了进一步提升测试用例的自动化执行能力,在一个优选的实施方式中,可以基于gdb和socket控制各个测试对象的执行逻辑,即通过本发明实施例定义的自动测试交互框架来实施步骤S103。
具体地,所述自动测试交互框架包括控制服务器和多个分控服务器,所述控制服务器可以运行于pyunit框架之中,也可以运行于其它框架或设备之中,所述控制服务器用于获取测试用例,并解析所述测试用例以得到所述测试请求和各个测试参量,根据解析结果控制分控服务器。所述分控服务器运行于测试对象之中,所述分控服务器与测试对象为一一对应关系,所述分控服务器通过与控制服务器交互,为测试对象设置断点,向测试对象发出测试请求,并控制测试对象的执行逻辑,以得到各个测试对象反馈的响应结果。
所述控制服务器的文件结构如图6所示,其中gdb_manage.py为所述控制服务器中的主控程序,其用于获取测试用例,解析所述测试用例以得到所述测试请求和各个测试参量;创建socket_server(socket的服务器)以便于与分控服务器中运行的socket_client(socket的用户端)进行通信,交互信息与指令;以远程SSH方式启动A机器上的gdb程序;向分控服务器发布gdb控制指令以便于分控服务器根据所述gdb控制指令控制测试对象的执行。
在各个分控服务器中部署有socket_client和gdb_client.py。gdb_client.py可以基于socket_client与socket_server进行通信从而接收到gdb_manage.py发布的控制指令,进而控制测试对象的。比如,gdb_client.py中可以使用gdb.execute()函数来执行接收到的指令,比如重新注册断点暂停事件,gdb.events.stop.connect()以便接收暂停事件,向gdb_manage.py回报。
下面以基于所述自动测试交互框架执行测试用例test2为例描述步骤S103的执行逻辑,如图7所示,所述执行逻辑包括下述部分:
(1)gdb_manage.py启动,并拉起socket_server。
(2)gdb_manage.py解析所述测试用例可知只需要为测试对象A设置断点,即测试对象A中的执行逻辑需要被控制,因此控制测试对象A中的gdb_client启动,并拉起测试对象A的分控服务器socket_client。
(3)根据解析结果生成gdb指令,通过gdb_client将gdb指令传输至测试对象A中的gdb_client,从而为测试对象A打断点。
(4)向测试对象A和测试对象B发布测试请求。
(5)当测试对象A中断点事件被触发后,并在得到测试对象B响应结果后,通过与socket_client通信将gdb指令传输至测试对象A中的gdb_client,从而控制测试对象A继续执行。
(6)获取测试对象A的响应结果。
在上述过程中,gdb_manage.py可以启动两个线程,一个线程拉起socket_server,另一个线程远程启动测试对象A上的gdb程序,gdb程序加载gdb_client.py与socket_server建立socket连接。首次建立连接时,gdb_client.py可以向socket_server发送首次启动指令。socket_server收到后向gdb_manage.py反馈。
gdb_manage.py通过socket_server连接向gdb_client.py发送指令。设置断点,启动程序。完成后,gdb_manage.py再发出业务报文,所述业务报文包括测试请求,以触发测试对象A的断点。测试对象A中的gdb_client.py发现断点事件,向gdb_manage.py反馈。
gdb_manage.py向测试对象B发出业务报文,所述业务包括包括测试请求,当然,该步骤也可以不由gdb_manage.py控制,外部自行完成向测试对象B发出测试请求也可。gdb_manage.py通过socket_server向测试对象A中的gdb_client.py发继续指令,以继续测试对象A的执行流程。
具体地,对于上述执行逻辑,本发明给出示例代码:
#初始化
t=gdbManage()
t.socket_port=21000#gdb中链接的IP
t.m_a_ip='IPA'#加断点并执行的机器
t.m_b_ip='IPB'#正常执行的机器
t.first_gdb_cmd='bXXX.cpp:第X行|r'#需要gdb执行的语句多条指令用|分割
t.start_all()
A=服务A(t.m_a_ip)
B=服务B(t.m_b_ip)
#开始执行
#向A机器发送报文时,需要先让B结束,A不能阻塞,所以要用线程
thread_A=threading.Thread(target=A.send,args=())
thread_A.start()
#等待A遇到断点的信号
whilet.A_met_block!=True:
time.sleep(2)
#向B机器发送报文
B.send()
#A机器继续
t.A_continue=True
本发明实施例在对于步骤S103进行展开详述的过程中均以gdb作为测试对象的控制工具进行阐述,而gdb本身是建立在Linux的ptrace方法基础上,因此,也可以使用ptrace代替gdb实现本方案,本发明对此不做详细阐释。本发明实施例中的测试用例规定的控制逻辑精确到代码行,从而实现了白盒测试的测试效果。
S105.根据所述各个测试对象反馈的响应结果得到测试结果。
本发明实施例中的测试用例均包括至少两个测试对象,并且对某些或全部测试对象的测试流程进行打断,从而构造出不同的设备先后响应相同的请求的测试场景。
在正常情况下,分布式系统中所述相同的请求应该只有0个或一个能够被成功的响应,若存在多于一个成功的响应,则说明所述分布式系统出现了异常。以测试用例test1为例,若存在多于一个成功的响应,则会产生对用户的重复扣费,造成了用户的损失;以测试用例test2为例,若存在多于一个成功的响应,则为用户重复返现,造成了商家的损失。
由此,所述根据所述各个测试对象反馈的响应结果得到测试结果,如图8所示,包括:
S1051.根据各个测试对象反馈的响应结果统计目标响应结果,所述目标响应结果为表示被测试对象成功响应的响应结果。
S1053.若所述目标响应结果的数量大于1,则判定所述分布式系统出现异常。
进一步地,若判定所述分布式系统出现异常,还包括:记录所述测试用例。
本发明中每个测试用例都记录了测试对象中的断点位置,而断点位置本身就是对于查找程序缺陷至关重要的信息,基于所述断点位置进行分析有助于快速定位导致所述分布式系统出现异常的缺陷(bug),这也是本发明实施例在测试用例中设置断点位置的目的所在。
本发明实施例公开了一种并发测试方法,其可以在分布式系统中,通过精准地对各个测试对象的执行逻辑进行精确到代码行的控制,从而可以在并发测试的场景中快速获取引起分布式系统异常的测试用例的断点位置,进而根据断点位置进行分析,以便于快速定位导致所述分布式系统出现异常的缺陷。本发明实施例还进一步基于gdb和socket技术构建了自动测试交互框架,从而可以全自动执行所述并发测试方法,显著提升测试效率。
本发明实施例还公开了一种并发测试装置,如图9所示,所述装置包括:
测试用例获取模块201,用于获取用于测试分布式系统的测试用例,所述测试用例中记录有测试请求和测试参量集,所述测试参量集包括至少两个测试参量,每个测试参量均指向一个测试对象和所述测试对象中的断点位置。具体地,其可以用于执行步骤S101。
测试用例执行模块203,用于解析所述测试用例以得到所述测试请求和各个测试参量,为测试参量指向的测试对象设置断点;向各个测试对象并行发出测试请求,并控制各个测试对象的执行逻辑,以得到各个测试对象反馈的响应结果。具体地,其可以用于执行步骤S103。
具体地,所述测试用例执行模块基于自动测试交互框架运行;
所述自动测试交互框架包括控制服务器和多个分控服务器,所述控制服务器用于获取测试用例,并解析所述测试用例以得到所述测试请求和各个测试参量,根据解析结果控制分控服务器;
所述分控服务器运行于测试对象之中,所述分控服务器与测试对象为一一对应关系,所述分控服务器通过与控制服务器交互,为测试对象设置断点,向测试对象发出测试请求,并控制测试对象的执行逻辑,以得到各个测试对象反馈的响应结果。
测试结果获取模块205,用于根据所述各个测试对象反馈的响应结果得到测试结果。具体地,其可以用于执行步骤S105。
具体地,本发明实施例所述一种并发测试装置与方法实施例均基于相同发明构思。
本发明实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行本发明实施例所述的一种并发测试方法,所述方法至少包括下述步骤:
一种并发测试方法,所述方法包括:
获取用于测试分布式系统的测试用例,所述测试用例中记录有测试请求和测试参量集,所述测试参量集包括至少两个测试参量,每个测试参量均指向一个测试对象和所述测试对象中的断点位置;
解析所述测试用例以得到所述测试请求和各个测试参量,为测试参量指向的测试对象设置断点;向各个测试对象并行发出测试请求,并控制各个测试对象的执行逻辑,以得到各个测试对象反馈的响应结果;
根据所述各个测试对象反馈的响应结果得到测试结果。
优选的,所述测试对象所在的测试参量之中还包括恢复执行条件,所述控制各个测试对象的执行逻辑包括:
为各个测试对象设置恢复执行条件,以便于所述测试对象的执行过程在被断点打断的情况下,当恢复执行条件被满足时,在断点位置继续执行。
优选的,所述测试对象所在的测试参量之中还包括指定时间,所述控制各个测试对象的执行逻辑包括;
为各个测试对象设置定时器,以便于所述测试对象的执行过程在被断点打断从而暂停执行的场景中,当暂停指定时间之后,在断点位置继续执行。
优选的,所述为测试参量指向的测试对象设置断点;向各个测试对象并行发出测试请求,并控制各个测试对象的执行逻辑,包括:
基于gdb或ptrace为各个测试对象设置断点,并控制各个测试对象的执行逻辑;
或,
基于gdb和socket为各个测试对象设置断点,并控制各个测试对象的执行逻辑,
或,
基于ptrace和socket为各个测试对象设置断点,并控制各个测试对象的执行逻辑
优选的,所述基于gdb和socket为各个测试对象设置断点,并控制各个测试对象的执行逻辑,包括构建自动测试交互框架,根据所述自动测试交互框架为各个测试对象设置断点,控制各个测试对象的执行逻辑;
所述自动测试交互框架包括控制服务器和多个分控服务器,所述控制服务器用于获取测试用例,并解析所述测试用例以得到所述测试请求和各个测试参量,根据解析结果控制分控服务器;
所述分控服务器运行于测试对象之中,所述分控服务器与测试对象为一一对应关系,所述分控服务器通过与控制服务器交互,为测试对象设置断点,向测试对象发出测试请求,并控制测试对象的执行逻辑,以得到各个测试对象反馈的响应结果。
优选的,所述根据所述各个测试对象反馈的响应结果得到测试结果,包括:
根据各个测试对象反馈的响应结果统计目标响应结果,所述目标响应结果为表示被测试对象成功响应的响应结果;
若所述目标响应结果的数量大于1,则判定所述分布式系统出现异常。
进一步地,图10示出了一种用于实现本发明实施例所提供的方法的设备的硬件结构示意图,所述设备可以参与构成或包含本发明实施例所提供的装置或系统。如图10所示,设备10可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图10所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,设备10还可包括比图10中所示更多或者更少的组件,或者具有与图10所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到设备10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中所述的方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种并发测试方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括设备10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(NetworkInterfaceController,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与设备10(或移动设备)的用户界面进行交互。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种并发测试方法,其特征在于,所述方法包括:
获取用于测试分布式系统的测试用例,所述测试用例中记录有测试请求和测试参量集,所述测试参量集包括至少两个测试参量,每个测试参量均指向一个测试对象和所述测试对象中的断点位置;
解析所述测试用例以得到所述测试请求和各个测试参量,为测试参量指向的测试对象设置断点;向各个测试对象并行发出测试请求,并控制各个测试对象的执行逻辑,以得到各个测试对象反馈的响应结果;
根据所述各个测试对象反馈的响应结果得到测试结果。
2.根据权利要求1所述的方法,其特征在于:所述测试对象所在的测试参量之中还包括恢复执行条件,所述控制各个测试对象的执行逻辑包括:
为各个测试对象设置恢复执行条件,以便于所述测试对象的执行过程在被断点打断的情况下,当恢复执行条件被满足时,在断点位置继续执行。
3.根据权利要求1所述的方法,其特征在于:所述测试对象所在的测试参量之中还包括指定时间,所述控制各个测试对象的执行逻辑包括;
为各个测试对象设置定时器,以便于所述测试对象的执行过程在被断点打断从而暂停执行的场景中,当暂停指定时间之后,在断点位置继续执行。
4.根据权利要求1所述的方法,其特征在于,所述为测试参量指向的测试对象设置断点;向各个测试对象并行发出测试请求,并控制各个测试对象的执行逻辑,包括:
基于gdb或ptrace为各个测试对象设置断点,并控制各个测试对象的执行逻辑;
或,
基于gdb和socket为各个测试对象设置断点,并控制各个测试对象的执行逻辑,
或,
基于ptrace和socket为各个测试对象设置断点,并控制各个测试对象的执行逻辑。
5.根据权利要求4所述的方法,其特征在于,所述基于gdb和socket为各个测试对象设置断点,并控制各个测试对象的执行逻辑,包括构建自动测试交互框架,根据所述自动测试交互框架为各个测试对象设置断点,控制各个测试对象的执行逻辑;
所述自动测试交互框架包括控制服务器和多个分控服务器,所述控制服务器用于获取测试用例,并解析所述测试用例以得到所述测试请求和各个测试参量,根据解析结果控制分控服务器;
所述分控服务器运行于测试对象之中,所述分控服务器与测试对象为一一对应关系,所述分控服务器通过与控制服务器交互,为测试对象设置断点,向测试对象发出测试请求,并控制测试对象的执行逻辑,以得到各个测试对象反馈的响应结果。
6.根据权利要求1所述的方法,其特征在于,所述根据所述各个测试对象反馈的响应结果得到测试结果,包括:
根据各个测试对象反馈的响应结果统计目标响应结果,所述目标响应结果为表示被测试对象成功响应的响应结果;
若所述目标响应结果的数量大于1,则判定所述分布式系统出现异常。
7.一种并发测试装置,其特征在于,还包括:
测试用例获取模块,用于获取用于测试分布式系统的测试用例,所述测试用例中记录有测试请求和测试参量集,所述测试参量集包括至少两个测试参量,每个测试参量均指向一个测试对象和所述测试对象中的断点位置;
测试用例执行模块,用于解析所述测试用例以得到所述测试请求和各个测试参量,为测试参量指向的测试对象设置断点;向各个测试对象并行发出测试请求,并控制各个测试对象的执行逻辑,以得到各个测试对象反馈的响应结果;
测试结果获取模块,用于根据所述各个测试对象反馈的响应结果得到测试结果。
8.根据权利要求7所述的装置,其特征在于,所述测试用例执行模块基于自动测试交互框架运行;
所述自动测试交互框架包括控制服务器和多个分控服务器,所述控制服务器用于获取测试用例,并解析所述测试用例以得到所述测试请求和各个测试参量,根据解析结果控制分控服务器;
所述分控服务器运行于测试对象之中,所述分控服务器与测试对象为一一对应关系,所述分控服务器通过与控制服务器交互,为测试对象设置断点,向测试对象发出测试请求,并控制测试对象的执行逻辑,以得到各个测试对象反馈的响应结果。
9.一种设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1-6任一项所述的一种并发测试方法。
10.一种计算机存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如权利要求1-6任一项所述的一种并发测试方法。
CN201910700188.3A 2019-07-31 2019-07-31 一种并发测试方法、装置、设备及介质 Pending CN112306845A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910700188.3A CN112306845A (zh) 2019-07-31 2019-07-31 一种并发测试方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910700188.3A CN112306845A (zh) 2019-07-31 2019-07-31 一种并发测试方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN112306845A true CN112306845A (zh) 2021-02-02

Family

ID=74486068

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910700188.3A Pending CN112306845A (zh) 2019-07-31 2019-07-31 一种并发测试方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN112306845A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117076329A (zh) * 2023-10-12 2023-11-17 浙江云融创新科技有限公司 一种业务互斥状态下用例并发执行的方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6718484B1 (en) * 1999-11-08 2004-04-06 Fujitsu Limited Debugging method and apparatus for multitask programs and recording medium storing a program realizing the debugging method and apparatus
CN101727389A (zh) * 2009-11-23 2010-06-09 中兴通讯股份有限公司 一种分布式综合业务自动化测试系统及方法
CN106155901A (zh) * 2015-04-21 2016-11-23 中国科学院信息工程研究所 黑盒与白盒相结合的执行反馈驱动的并行模糊测试方法
CN107844414A (zh) * 2016-09-21 2018-03-27 南京大学 一种基于缺陷报告分析的跨项目、并行化缺陷定位方法
CN109271325A (zh) * 2018-10-26 2019-01-25 携程旅游网络技术(上海)有限公司 应用的测试方法、系统、电子设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6718484B1 (en) * 1999-11-08 2004-04-06 Fujitsu Limited Debugging method and apparatus for multitask programs and recording medium storing a program realizing the debugging method and apparatus
CN101727389A (zh) * 2009-11-23 2010-06-09 中兴通讯股份有限公司 一种分布式综合业务自动化测试系统及方法
CN106155901A (zh) * 2015-04-21 2016-11-23 中国科学院信息工程研究所 黑盒与白盒相结合的执行反馈驱动的并行模糊测试方法
CN107844414A (zh) * 2016-09-21 2018-03-27 南京大学 一种基于缺陷报告分析的跨项目、并行化缺陷定位方法
CN109271325A (zh) * 2018-10-26 2019-01-25 携程旅游网络技术(上海)有限公司 应用的测试方法、系统、电子设备和存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117076329A (zh) * 2023-10-12 2023-11-17 浙江云融创新科技有限公司 一种业务互斥状态下用例并发执行的方法及系统
CN117076329B (zh) * 2023-10-12 2024-01-30 浙江云融创新科技有限公司 一种业务互斥状态下用例并发执行的方法及系统

Similar Documents

Publication Publication Date Title
US7117411B2 (en) Methods and systems for testing communications network components
US11416377B2 (en) Automated application testing system
US7657789B1 (en) Multi-machine testing system and method for testing software
US11405302B1 (en) Methods, systems, and computer readable media for network testing using configurable test infrastructure
CN113760704A (zh) Web UI的测试方法、装置、设备以及存储介质
Zhuang et al. {NetCheck}: Network Diagnoses from Blackbox Traces
GB2418755A (en) Error handling using a structured state tear down
CN115525490A (zh) 一种内存眼图测试方法、硬件调试设备及存储介质
Fiterău-Broştean et al. DTLS-Fuzzer: A DTLS protocol state fuzzer
CN112306845A (zh) 一种并发测试方法、装置、设备及介质
WO2014075471A1 (zh) 一种物联网终端应用一体化生成系统和方法
US11539612B2 (en) Testing virtualized network functions
Seifermann Application performance monitoring in microservice-based systems
CN117041111A (zh) 车云功能测试方法、装置、电子设备及存储介质
Xiong et al. RealProct: reliable protocol conformance testing with real nodes for wireless sensor networks
CN110347409B (zh) 自动控制方法、客户端和服务器
Kim et al. HDF: Hybrid debugging framework for distributed network environments
CN113641575A (zh) 一种测试方法、装置、设备及存储介质
CN114092169A (zh) 下单测试方法和系统以及执行下单测试方法的设备
CN114741273A (zh) 一种远程真实移动终端测试方法、装置、存储介质及设备
CN112433938A (zh) 移动端应用测试的方法和装置
CN111984523B (zh) 消息处理任务测试方法、装置、系统、设备及介质
Pfrommer et al. Deploying software functionality to manufacturing resources safely at runtime
CN110554966A (zh) 一种驱动调试方法、行为分析方法及驱动调试系统
CN112241359B (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