CN112131095B - 压力测试方法和装置 - Google Patents

压力测试方法和装置 Download PDF

Info

Publication number
CN112131095B
CN112131095B CN201910555606.4A CN201910555606A CN112131095B CN 112131095 B CN112131095 B CN 112131095B CN 201910555606 A CN201910555606 A CN 201910555606A CN 112131095 B CN112131095 B CN 112131095B
Authority
CN
China
Prior art keywords
tested
service
real
response time
virtual
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.)
Active
Application number
CN201910555606.4A
Other languages
English (en)
Other versions
CN112131095A (zh
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.)
Beijing Jingdong Zhenshi Information Technology Co Ltd
Original Assignee
Beijing Jingdong Zhenshi Information Technology 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 Beijing Jingdong Zhenshi Information Technology Co Ltd filed Critical Beijing Jingdong Zhenshi Information Technology Co Ltd
Priority to CN201910555606.4A priority Critical patent/CN112131095B/zh
Publication of CN112131095A publication Critical patent/CN112131095A/zh
Application granted granted Critical
Publication of CN112131095B publication Critical patent/CN112131095B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)若被压测的协议是同步协议,只能同步进行压测,不能异步进行压测。因为如果被压测的服务是基于同步协议,则在模拟用户批量向被压测服务批量发送请求时,需要按照同步协议的约定,在接收到被压测服务的响应后,才能发送下一个请求,无法异步进行压测。
发明内容
有鉴于此,本发明实施例提供一种压力测试方法和装置,能够对于在压测环境中不允许调用的真实对象,以及由于调用链路较长或某些对象执行操作时间较长而不易实现压测的情况,通过创建对应的虚拟对象来模拟与待压测服务的交互,可以避免修改代码,提高测试效率以及使测试环境更加接近线上环境,保证测试效果;根据待压测服务真实的链路调用信息,配置待压测的链路,从而可以灵活设置压测过程,提高测试效率,而且不需要借助测试工具,便于进行同步发压和异步发压;进一步地,可以根据需求根据真实的响应时间设置虚拟对象的虚拟响应时间,可以进一步地使测试环境接近线上环境,压测结果更真实;通过拦截待压测服务的请求报文和响应报文,可以自动生成测试脚本,降低人力劳动,进一步提高测试效率。
为实现上述目的,根据本发明实施例的一个方面,提供了一种压力测试方法,包括:
拦截待压测服务的请求处理信息,基于所述请求处理信息,生成测试脚本和确定调用链路信息;
基于所述调用链路信息,创建与所述待压测服务调用的真实对象对应的虚拟对象,基于所述虚拟对象,配置所述待压测服务的待压测链路;所述虚拟对象用于模拟所述真实对象与待压测服务的交互;
根据所述测试脚本和所述待压测链路,对所述待压测服务进行压力测试。
可选地,所述方法还包括:基于所述调用链路信息,确定所述待压测服务调用的真实对象的响应时间;根据所述响应时间,配置所述虚拟对象与所述待压测服务交互的虚拟响应时间。
可选地,所述待压测服务的请求处理信息至少包括:待压测服务的请求报文、响应报文、调用的真实对象的名称和对应的响应时间;
基于所述请求处理信息,生成测试脚本和确定调用链路信息包括:根据所述请求报文和所述响应报文,生成测试脚本;根据所述调用的真实对象的名称和对应的响应时间,确定调用链路信息。
可选地,所述方法还包括:配置压测线程数和压测方式。
为实现上述目的,根据本发明实施例的另一个方面,提供了一种压力测试装置,包括:
拦截模块,用于拦截待压测服务的请求处理信息,基于所述请求处理信息,生成测试脚本和确定调用链路信息;
配置模块,用于基于所述调用链路信息,创建与所述待压测服务调用的真实对象对应的虚拟对象,基于所述虚拟对象,配置所述待压测服务的待压测链路;所述虚拟对象用于模拟所述真实对象与待压测服务的交互;
压测模块,用于根据所述测试脚本和所述待压测链路,对所述待压测服务进行压力测试。
可选地,所述配置模块还用于:基于所述调用链路信息,确定所述待压测服务调用的真实对象的响应时间;根据所述响应时间,配置所述虚拟对象与所述待压测服务交互的虚拟响应时间。
可选地,所述待压测服务的请求处理信息至少包括:待压测服务的请求报文、响应报文、调用的真实对象的名称和对应的响应时间;
所述拦截模块还用于:根据所述请求报文和所述响应报文,生成测试脚本;根据所述调用的真实对象的名称和对应的响应时间,确定调用链路信息。
可选地,所述配置模块还用于:配置压测线程数和压测方式。
为实现上述目的,根据本发明实施例的又一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的压力测试方法。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的压力测试方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用拦截待压测服务的请求处理信息,基于所述请求处理信息,生成测试脚本和确定调用链路信息;基于所述调用链路信息,创建与所述待压测服务调用的真实对象对应的虚拟对象,基于所述虚拟对象,配置所述待压测服务的待压测链路;所述虚拟对象用于模拟所述目标对象与待压测服务的交互;根据所述测试脚本和所述待压测链路,对所述待压测服务进行压力测试的技术手段,所以对于在压测环境中不允许调用的真实对象,以及由于调用链路较长或某些对象执行操作时间较长而不易实现压测的情况,通过创建对应的虚拟对象来模拟与待压测服务的交互,可以避免修改代码,提高测试效率以及使测试环境更加接近线上环境,保证测试效果;根据待压测服务真实的链路调用信息,配置待压测的链路,从而可以灵活设置压测过程,提高测试效率,而且不需要借助测试工具,便于进行同步发压和异步发压;进一步地,可以根据需求根据真实的响应时间设置虚拟对象的虚拟响应时间,可以进一步地使测试环境接近线上环境,压测结果更真实;通过拦截待压测服务的请求报文和响应报文,可以自动生成测试脚本,降低人力劳动,进一步提高测试效率。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的压力测试方法的主要流程的示意图;
图2是根据本发明实施例的压力测试方法的子流程的示意图;
图3是根据本发明实施例的压力测试方法的子流程的示意图;
图4是根据本发明实施例的压力测试装置的主要模块的示意图;
图5是本发明实施例可以应用于其中的示例性系统架构图;
图6是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的压力测试方法的主要流程的示意图,如图1所示,该方法包括:
步骤S101:拦截待压测服务的请求处理信息,基于所述请求处理信息,生成测试脚本和确定调用链路信息。
其中,测试脚本(Testing script)是对待压测服务进行压力测试的一系列指令。测试脚本可以根据待压测服务在线上环境中的请求报文和响应报文生成。
调用链路信息可以包括该待压测服务在提供服务时所调用的对象以及对应的响应时间。其中,所调用的对象可以是该待压测服务在提供服务时所调用的外围方法,则调用链路信息可以包括待压测服务在提供服务时所调用的外围方法名以及对应的响应时间。在实际应用中,一个系统中会有不同的服务,对于某一个服务而言,其他服务都是该服务的外围服务。每一个服务中都有多个方法,这些方法都可以看做另一个服务的外围方法。因此,根据调用链路信息可以确定待压测服务调用的外围方法。例如,服务A中的方法a调用了服务B中的方法b,则调用链路信息中包括方法a的名称、方法b的名称、方法a的响应时间和方法b的响应时间。
在可选的实施例中,所述待压测服务的请求处理信息至少包括:待压测服务的请求报文、响应报文、调用的真实对象的名称和对应的响应时间。如图2所示,基于所述请求处理信息生成测试脚本和确定调用链路信息的过程如下所示:
步骤S201:拦截待压测服务的请求报文、响应报文、调用的真实对象的名称和对应的响应时间;
步骤S202:根据所述请求报文和所述响应报文,生成测试脚本;
步骤S203:根据所述调用的真实对象的名称和对应的响应时间,确定调用链路信息。
在本实施例中,可以在网络层拦截待压测服务的请求报文、该请求报文的响应报文、以及调用的真实对象的名称和对应的响应时间。例如,利用tcpdump抓取上述信息。其中,tcpdump是一个用于截取网络分组,并输出分组内容的工具。报文(message)是网络中交换与传输的数据单元,报文包含了将要发送的完整的数据信息。请求报文从客户端流向服务端,向服务端发起请求,服务端响应请求,并向客户端发送响应报文。
在可选的实施例中,还可以按照待测试服务的服务协议类型,将请求报文和响应报文封装成该服务协议可以识别的请求响应文本。然后将识别的请求响应文本和调用链路信息保存在数据库中,并设置全局唯一的标识(如ID),在需要对待压测服务进行压力测试时可以直接从数据库中读取。以及在可选的实施例中,还可以预先拦截线上所有的服务的请求报文、该请求报文的响应报文、以及调用的真实对象的名称和对应的响应时间,然后保存在数据库中,在进行压测时,可以直接从数据库中读取。
步骤S102:基于所述调用链路信息,创建与所述待压测服务调用的真实对象对应的虚拟对象,基于所述虚拟对象,配置所述待压测服务的待压测链路;所述虚拟对象用于模拟所述真实对象与待压测服务的交互。
在该步骤中,根据调用链路信息,可以确定待压测服务在真实生产环境中提供服务时的调用的对象(即调用的外围方法),在进行压力测试时,由于某些外围方法不允许进行调用或者调用链路过长或者所调用的外围方法执行操作所需的时间很长(即响应时间长),很难达到压力测试的需要,即无法给待压测服务施加较大的压力,所以需要根据真实的链路构造待压测的链路。
具体的,如图3所示,可以包括:
步骤S301:基于所述调用链路信息,确定所述待压测服务所调用的真实对象以及对应的响应时间,并将所述真实对象中的至少一个真实对象作为目标对象;
步骤S302:创建与目标对象对应的虚拟对象,所述虚拟对象用于模拟所述目标对象与待压测服务的交互;
步骤S303:根据目标对象真实的响应时间,配置所述虚拟对象与所述待压测服务交互的虚拟响应时间;
步骤S304:基于所述虚拟对象以及所述真实对象中剩余的真实对象,确定所述待压测链路。
对于步骤S302,可以针对响应时间较长的对象(即外围方法)或者某些在压力测试环境下不允许调用的对象(即外围方法),创建相应的虚拟对象(即虚拟外围方法),利用该虚拟对象模拟与待压测服务的交互,即在压力测试环境下,被压测的服务不再调用真实的对象,而是调用对应的虚拟对象。
作为具体的示例,可以根据mock方法实现创建虚拟对象。其中,mock是指在测试过程中,对于一些不容易构造或获取的对象,创建一个虚拟对象来模拟对象的行为。
对于步骤S303,由于虚拟对象只是用于模拟与待压测服务的交互,所以该虚拟对象没有真实对象所具有的功能,因此需要为虚拟对象设置一个响应时间,即虚拟响应时间。在压力测试环境中,虚拟对象按照配置的虚拟响应时间向待压测服务反馈响应。在应用时,可以配置比真实响应时间短的虚拟响应时间,也可以配置比真实响应时间长或相同的虚拟响应时间。
在本步骤中,根据真实响应时间配置虚拟响应时间,可以使压测环境更接近真实生产环境(即线上环境),压测结果更真实。
对于步骤S304,将虚拟对象替换真实调用链路中的目标对象,从而得到待压测链路。通过上文的拦截服务可以记录待压测服务的调用关系,从而能够自动识别外围方法,在进行压力测试时可以根据需求灵活设置虚拟对象以及参考真实的响应时间设置虚拟响应时间。
步骤S103:根据所述测试脚本和所述待压测链路,对所述待压测服务进行压力测试。
在该步骤中,向待压测服务注入测试脚本,该待压测服务按照待压测链路的顺序依次调用真实对象和虚拟对象,虚拟对象按照配置的虚拟响应时间向待压测服务反馈响应,从而实现对待压测服务的压力测试。
在可以的实施例中,所述方法还包括:配置压测线程数和压测方式。其中,一条线程是指进程中的一个单一顺序的控制流,一个进程中可以并发多个线程,每个线程可以并行执行任务。压测方式可以包括同步压测和异步压测,其中,同步压测是指:在压测过程中,下一个请求需在得到服务端的响应后才会发送给服务端。异步发压是指:在压测过程中,所有请求在短时间内全部发送给服务端,不需要等待服务端响应。通过异步发压,可以更直接的确定服务端的抗压能力,比如在大量请求同时打到服务端时,可以直接得知服务的健壮性、容错能力、熔断方案、降级方案等的可靠性。
本发明实施例的压力测试方法,对于在压测环境中不允许调用的真实对象,以及由于调用链路较长或某些对象执行操作时间较长而不易实现压测的情况,通过创建对应的虚拟对象来模拟与待压测服务的交互,可以避免修改代码,提高测试效率以及使测试环境更加接近线上环境,保证测试效果;根据待压测服务真实的链路调用信息,配置待压测的链路,从而可以灵活设置压测过程,提高测试效率,而且不需要借助测试工具,便于进行同步发压和异步发压;进一步地,可以根据需求根据真实的响应时间设置虚拟对象的虚拟响应时间,可以进一步地使测试环境接近线上环境,压测结果更真实;通过拦截待压测服务的请求报文和响应报文,可以自动生成测试脚本,降低人力劳动,进一步提高测试效率。
图4是根据本发明实施例的压力测试装置400的主要模块的示意图,如图4所示,该装置400包括:
拦截模块401,用于拦截待压测服务的请求处理信息,基于所述请求处理信息,生成测试脚本和确定调用链路信息;
配置模块402,用于基于所述调用链路信息,创建与所述待压测服务调用的真实对象对应的虚拟对象,基于所述虚拟对象,配置所述待压测服务的待压测链路;所述虚拟对象用于模拟所述真实对象与待压测服务的交互;
压测模块403,用于根据所述测试脚本和所述待压测链路,对所述待压测服务进行压力测试。
可选地,所述配置模块402还用于:基于所述调用链路信息,确定所述待压测服务调用的真实对象的响应时间;根据所述响应时间,配置所述虚拟对象与所述待压测服务交互的虚拟响应时间。
可选地,所述待压测服务的请求处理信息至少包括:待压测服务的请求报文、响应报文、调用的真实对象的名称和对应的响应时间;
所述拦截模块401还用于:根据所述请求报文和所述响应报文,生成测试脚本;根据所述调用的真实对象的名称和对应的响应时间,确定调用链路信息。
可选的,所述配置模块403还用于:配置压测线程数和压测方式。
本发明实施例的压力测试装置,对于在压测环境中不允许调用的真实对象,以及由于调用链路较长或某些对象执行操作时间较长而不易实现压测的情况,通过创建对应的虚拟对象来模拟与待压测服务的交互,可以避免修改代码,提高测试效率以及使测试环境更加接近线上环境,保证测试效果;根据待压测服务真实的链路调用信息,配置待压测的链路,从而可以灵活设置压测过程,提高测试效率,而且不需要借助测试工具,便于进行同步发压和异步发压;进一步地,可以根据需求根据真实的响应时间设置虚拟对象的虚拟响应时间,可以进一步地使测试环境接近线上环境,压测结果更真实;通过拦截待压测服务的请求报文和响应报文,可以自动生成测试脚本,降低人力劳动,进一步提高测试效率。
上述装置可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
图5示出了可以应用本发明实施例的压力测试方法或压力测试装置的示例性系统架构500。
如图5所示,系统架构500可以包括终端设备501、502、503,网络504和服务器505。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息)反馈给终端设备。
需要说明的是,本发明实施例所提供的压力测试方法一般由服务器505执行,相应地,压力测试装置一般设置于服务器505中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图6,其示出了适于用来实现本发明实施例的终端设备的计算机系统600的结构示意图。图6示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括发送模块、拦截模块、确定模块和第一处理模块。其中,这些模块的名称在某种情况下并不构成对该单元本身的限定,例如,发送模块还可以被描述为“向所连接的服务端发送图片获取请求的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
拦截待压测服务的请求处理信息,基于所述请求处理信息,生成测试脚本和确定调用链路信息;
基于所述调用链路信息,创建与所述待压测服务调用的真实对象对应的虚拟对象,基于所述虚拟对象,配置所述待压测服务的待压测链路;所述虚拟对象用于模拟所述真实对象与待压测服务的交互;
根据所述测试脚本和所述待压测链路,对所述待压测服务进行压力测试。
本发明实施例的技术方案,对于在压测环境中不允许调用的真实对象,以及由于调用链路较长或某些对象执行操作时间较长而不易实现压测的情况,通过创建对应的虚拟对象来模拟与待压测服务的交互,可以避免修改代码,提高测试效率以及使测试环境更加接近线上环境,保证测试效果;根据待压测服务真实的链路调用信息,配置待压测的链路,从而可以灵活设置压测过程,提高测试效率,而且不需要借助测试工具,便于进行同步发压和异步发压;进一步地,可以根据需求根据真实的响应时间设置虚拟对象的虚拟响应时间,可以进一步地使测试环境接近线上环境,压测结果更真实;通过拦截待压测服务的请求报文和响应报文,可以自动生成测试脚本,降低人力劳动,进一步提高测试效率。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (8)

1.一种压力测试方法,其特征在于,包括:
拦截待压测服务的请求处理信息,基于所述请求处理信息,生成测试脚本和确定调用链路信息,包括:根据请求报文和响应报文,生成测试脚本;根据所述调用的真实对象的名称和对应的响应时间,确定调用链路信息;其中,所述待压测服务的请求处理信息至少包括:待压测服务的请求报文、响应报文、调用的真实对象的名称和对应的响应时间;
基于所述调用链路信息,创建与所述待压测服务调用的真实对象对应的虚拟对象,基于所述虚拟对象,配置所述待压测服务的待压测链路,包括:基于所述调用链路信息,确定所述待压测服务所调用的真实对象以及对应的响应时间,并将所述真实对象中的至少一个真实对象作为目标对象;创建与目标对象对应的虚拟对象,所述虚拟对象用于模拟所述目标对象与待压测服务的交互;根据目标对象真实的响应时间,配置所述虚拟对象与所述待压测服务交互的虚拟响应时间;将虚拟对象替换真实调用链路中的目标对象,得到待压测链路;所述虚拟对象用于模拟所述真实对象与待压测服务的交互;
根据所述测试脚本和所述待压测链路,对所述待压测服务进行压力测试。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于所述调用链路信息,确定所述待压测服务调用的真实对象的响应时间;
根据所述响应时间,配置所述虚拟对象与所述待压测服务交互的虚拟响应时间。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:配置压测线程数和压测方式。
4.一种压力测试装置,其特征在于,包括:
拦截模块,用于拦截待压测服务的请求处理信息,基于所述请求处理信息,生成测试脚本和确定调用链路信息,包括:根据请求报文和响应报文,生成测试脚本;根据所述调用的真实对象的名称和对应的响应时间,确定调用链路信息;其中,所述待压测服务的请求处理信息至少包括:待压测服务的请求报文、响应报文、调用的真实对象的名称和对应的响应时间;
配置模块,用于基于所述调用链路信息,创建与所述待压测服务调用的真实对象对应的虚拟对象,基于所述虚拟对象,配置所述待压测服务的待压测链路,包括:基于所述调用链路信息,确定所述待压测服务所调用的真实对象以及对应的响应时间,并将所述真实对象中的至少一个真实对象作为目标对象;创建与目标对象对应的虚拟对象,所述虚拟对象用于模拟所述目标对象与待压测服务的交互;根据目标对象真实的响应时间,配置所述虚拟对象与所述待压测服务交互的虚拟响应时间;将虚拟对象替换真实调用链路中的目标对象,得到待压测链路;所述虚拟对象用于模拟所述真实对象与待压测服务的交互;
压测模块,用于根据所述测试脚本和所述待压测链路,对所述待压测服务进行压力测试。
5.根据权利要求4所述的装置,其特征在于,所述配置模块还用于:
基于所述调用链路信息,确定所述待压测服务调用的真实对象的响应时间;
根据所述响应时间,配置所述虚拟对象与所述待压测服务交互的虚拟响应时间。
6.根据权利要求4或5所述的装置,其特征在于,所述配置模块还用于:配置压测线程数和压测方式。
7.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-3中任一所述的方法。
8.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-3中任一所述的方法。
CN201910555606.4A 2019-06-25 2019-06-25 压力测试方法和装置 Active CN112131095B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910555606.4A CN112131095B (zh) 2019-06-25 2019-06-25 压力测试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910555606.4A CN112131095B (zh) 2019-06-25 2019-06-25 压力测试方法和装置

Publications (2)

Publication Number Publication Date
CN112131095A CN112131095A (zh) 2020-12-25
CN112131095B true CN112131095B (zh) 2023-09-01

Family

ID=73849378

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910555606.4A Active CN112131095B (zh) 2019-06-25 2019-06-25 压力测试方法和装置

Country Status (1)

Country Link
CN (1) CN112131095B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254323B (zh) * 2021-07-05 2021-10-29 中邮消费金融有限公司 线上全链路压测方法、装置及计算机设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106708818A (zh) * 2015-07-17 2017-05-24 阿里巴巴集团控股有限公司 一种压力测试方法和系统
CN108733527A (zh) * 2017-04-24 2018-11-02 北京京东尚科信息技术有限公司 用于测试服务器功能的系统、方法和装置
CN109491754A (zh) * 2017-09-12 2019-03-19 北京京东尚科信息技术有限公司 虚拟服务器的性能测试方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104951396B (zh) * 2014-03-31 2018-01-30 国际商业机器公司 基于虚拟机创建软件性能测试环境的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106708818A (zh) * 2015-07-17 2017-05-24 阿里巴巴集团控股有限公司 一种压力测试方法和系统
CN108733527A (zh) * 2017-04-24 2018-11-02 北京京东尚科信息技术有限公司 用于测试服务器功能的系统、方法和装置
CN109491754A (zh) * 2017-09-12 2019-03-19 北京京东尚科信息技术有限公司 虚拟服务器的性能测试方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TD系统基于网元仿真技术的压力测试应用;曹渊;陈天洲;;计算机工程(第05期);第283-285页 *

Also Published As

Publication number Publication date
CN112131095A (zh) 2020-12-25

Similar Documents

Publication Publication Date Title
CN110442524B (zh) 一种针对带有认证授权的web服务接口测试方法和装置
CN111786939B (zh) 物联网管理平台测试的方法、装置和系统
CN107608901B (zh) 基于Jmeter的测试方法及装置、存储介质、电子设备
CN107766509B (zh) 一种网页静态备份的方法和装置
CN109218041B (zh) 用于服务器系统的请求处理方法和装置
CN110888639A (zh) 一种业务代码编译打包方法和装置
CN111800223B (zh) 生成发送报文、处理接收报文的方法、装置和系统
CN112015383A (zh) 一种登录方法和装置
CN112131095B (zh) 压力测试方法和装置
CN111953718B (zh) 一种页面调试方法和装置
CN111414154A (zh) 前端开发的方法、装置、电子设备和存储介质
CN113485902B (zh) 测试业务平台的方法、装置、设备和计算机可读介质
CN113434384B (zh) 一种压力测试方法和装置
CN112860447B (zh) 一种不同应用间的交互方法和系统
CN113407229B (zh) 用于生成离线脚本的方法及装置
CN112579447A (zh) 一种浏览器测试方法和装置
CN113760693A (zh) 用于微服务系统的本地调试的方法和装置
CN110768855B (zh) 链路化性能测试的方法和装置
CN113760715A (zh) 一种对系统进行测试的方法和装置
CN109271310B (zh) 移动应用程序网络功能的开发测试方法和装置
CN113722115A (zh) 调用接口的方法、装置、设备和计算机可读介质
CN113704079A (zh) 基于Protobuf的接口测试方法和装置
CN112559001A (zh) 更新应用的方法和装置
CN112579428A (zh) 接口测试的方法、装置、电子设备和存储介质
CN113342633B (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
GR01 Patent grant
GR01 Patent grant