CN114564378A - 一种基于Java的多线程性能测试的方法、装置及系统 - Google Patents
一种基于Java的多线程性能测试的方法、装置及系统 Download PDFInfo
- Publication number
- CN114564378A CN114564378A CN202210197024.5A CN202210197024A CN114564378A CN 114564378 A CN114564378 A CN 114564378A CN 202210197024 A CN202210197024 A CN 202210197024A CN 114564378 A CN114564378 A CN 114564378A
- Authority
- CN
- China
- Prior art keywords
- performance test
- thread
- multithreading
- java
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明属于计算机技术领域,具体涉及一种基于Java的多线程性能测试的方法、装置及系统,包括:接收启动多线程性能测试的指令,多线程性能测试的指令包括并发的线程数及指定测试执行的时长;根据并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行时长;执行多线程性能测,得到多线程性能测试结果;将所述多线程测试结果保存到预先创建的Java类中,并返回所述多线程性能测试执行完成的消息。本发明利用Java代码编写一个通用的简洁灵活的压测小工具,快速解决当我们无法直接使用通用的性能测试工具的问题。此方法通用性强,可移植性高,用户只需要将要测试的业务场景修改即可快速完成性能测试。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种基于Java的多线程性能测试的方法、装置及系统。
背景技术
现有技术中,在做性能测试会使用到Jmeter工具,比如平常用到的Http,Dubbo还有TCP链接等,但当某些性能测试是基于一些复杂的SDK应用且非通常接口的性能测试时,如果使用Java Sampler也无法完成性能测试时,就需要依赖研发的开发框架且在框架内部完成性能测试的代码。此时,就无法直接使用Jmeter等一些开源工具。
基于此,如何在无法直接使用Jmeter等一些开源工具的时候,使得性能测试顺利进行,是亟待解决的问题。
发明内容
为了解决现有技术存在的在无法直接使用Jmeter等一些开源工具的时候,无法进行性能测试的问题,本发明实施例提供以下技术方案:
第一方面,本发明提供一种基于Java的多线程性能测试的方法,包括:
接收启动多线程性能测试的指令,所述多线程性能测试的指令包括并发的线程数及指定测试执行的时长;
根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行时长;
执行所述多线程性能测,得到多线程性能测试结果;
将所述多线程测试结果保存到预先创建的Java类中,并返回所述多线程性能测试执行完成的消息。
进一步地,所述根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行的时长,包括:
若当前时间不超过指定测试执行的时长,则继续创建线程,并在每个Runnable线程体内,添加要进行性能测试的业务逻辑代码,并通过Java代码将线程提交给线程池去运行。
进一步地,所述根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行的时长,包括:
若当前时间已超过指定测试执行的时长,则不再继续创建新的线程。
进一步地,所述执行所述多线程性能测,得到多线程性能测试结果,所述多线程性能测试结果包括:成功线程数、失败线程数、成功率以及指定测试执行的时长。
第二方面,本发明提供一种基于Java的多线程性能测试的装置,包括:
接收模块,用于接收启动多线程性能测试的指令,所述多线程性能测试的指令包括并发的线程数及指定测试执行的时长;
创建模块,用于根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行时长;
执行模块,用于执行所述多线程性能测,得到多线程性能测试结果;
存储模块,用于将所述多线程测试结果保存到预先创建的Java类中,并返回所述多线程性能测试执行完成的消息。
第三方面,本发明提供一种基于Java的多线程性能测试的系统,包括:
存储器,其上存储有可执行程序;
处理器,用于执行所述存储器中的所述可执行程序,以实现第一方面中任一项所述方法的步骤。
本发明具有以下有益效果:
本发明提供一种基于Java的多线程性能测试的方法,包括:接收启动多线程性能测试的指令,所述多线程性能测试的指令包括并发的线程数及指定测试执行的时长;根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行时长;执行所述多线程性能测,得到多线程性能测试结果;将所述多线程测试结果保存到预先创建的Java类中,并返回所述多线程性能测试执行完成的消息。本发明利用Java代码编写一个通用的简洁灵活的压测小工具,快速解决当我们无法直接使用通用的性能测试工具的问题。此方法通用性强,可移植性高,用户只需要将要测试的业务场景修改即可快速完成性能测试。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例中一种基于Java的多线程性能测试的方法流程示意图。
图2是本发明一个实施例中一种基于Java的多线程性能测试的方法交互示意图。
图3是本发明另一个实施例中一种基于Java的多线程性能测试的装置结构示意图。
图4是本发明一个实施例中一种基于Java的多线程性能测试的系统结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
针对相关技术中的问题,本发明提供一种基于Java的多线程性能测试的方法,图1为本申请一个实施例提供的一种基于Java的多线程性能测试的方法的流程示意图,如图1所示,该方法包括如下步骤:
步骤S101、接收启动多线程性能测试的指令,所述多线程性能测试的指令包括并发的线程数及指定测试执行的时长;
步骤S102、根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行时长;
步骤S103、执行所述多线程性能测,得到多线程性能测试结果;
步骤S104、将所述多线程测试结果保存到预先创建的Java类中,并返回所述多线程性能测试执行完成的消息。
其中,预先创建的Java类是,预先编写的一个用来存放结果的Java类,其定义有运行时长、线程数、TPS(成功运行数除以总线程数)、运行线程总数、成功线程数、失败线程数的几个属性。
在一个实施例中,用户通过调用代码写好的启动性能测试的方法来发起性能测试运行,用户需要提供并发的线程数及指定测试执行的时长,多线程性能测试开始运行,则根据用户指定并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前检查当前时间是否已超过用户指定测试执行的时长,若当前时间不超过指定测试执行的时长,则继续创建线程,并在每个Runnable线程体内,添加要进行性能测试的业务逻辑代码,并通过Java代码将线程提交给线程池去运行。在每个Runnable线程体内在执行性能测试时,如果有异常情况将统计失败数加1,否则为成功数加1。若当前时间已超过指定测试执行的时长,则不再继续创建新的线程。使用Java中的CountDownLatch这个类来确保所有线程都执行完成。所有线程执行完成后,将计算成功线程数、失败线程数、及TPS(成功运行数除以总线程数)、用户指定的运行时长,线程数一起保存到预先创建的Java类中。并会给用户返回性能测试执行完成的消息。
另外,本申请还为用户提供了查看测试结果的方法,用户通过调用代方法来查看运行结果,用户在调用查看结果的方法时,通过将临时保存到Java类中的结果返回给用户。
为便于理解,请参阅图2本申请还提供了一种基于Java的多线程性能测试的方法的交互图。
可以理解为,本发明提供一种基于Java的多线程性能测试的方法,包括:接收启动多线程性能测试的指令,所述多线程性能测试的指令包括并发的线程数及指定测试执行的时长;根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行时长;执行所述多线程性能测,得到多线程性能测试结果;将所述多线程测试结果保存到预先创建的Java类中,并返回所述多线程性能测试执行完成的消息。本发明利用Java代码编写一个通用的简洁灵活的压测小工具,快速解决当我们无法直接使用通用的性能测试工具的问题。此方法通用性强,可移植性高,用户只需要将要测试的业务场景修改即可快速完成性能测试。
请参阅图3,图3是本发明一个实施例中一种基于Java的多线程性能测试的装置,如图3所示,基于Java的多线程性能测试的装置包括:
接收模块301,用于接收启动多线程性能测试的指令,所述多线程性能测试的指令包括并发的线程数及指定测试执行的时长;
创建模块302,用于根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行时长;
执行模块303,用于执行所述多线程性能测,得到多线程性能测试结果;
存储模块304,用于将所述多线程测试结果保存到预先创建的Java类中,并返回所述多线程性能测试执行完成的消息。
关于上述实施例中的基于Java的多线程性能测试的装置,其中各个模块执行操作的具体方式已经在上述相关方法的实施例中进行了详细描述,此处将不做详细阐述说明。
可以理解为,本发明所提供的一种基于Java的多线程性能测试的装置,通过接收模块接收启动多线程性能测试的指令,所述多线程性能测试的指令包括并发的线程数及指定测试执行的时长;通过创建模块根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行时长;通过执行模块执行所述多线程性能测,得到多线程性能测试结果;通过存储模块将所述多线程测试结果保存到预先创建的Java类中,并返回所述多线程性能测试执行完成的消息。
请参阅图4,图4是本发明一个实施例中一种基于Java的多线程性能测试的系统结构图,如图3所示包括:
存储器401,其上存储有可执行程序;
处理器402,用于执行所述存储器401中的所述可执行程序,以实现如上任一项所述方法的步骤。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (6)
1.一种基于Java的多线程性能测试的方法,其特征在于,包括:
接收启动多线程性能测试的指令,所述多线程性能测试的指令包括并发的线程数及指定测试执行的时长;
根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行时长;
执行所述多线程性能测,得到多线程性能测试结果;
将所述多线程测试结果保存到预先创建的Java类中,并返回所述多线程性能测试执行完成的消息。
2.根据权利要求1所述的方法,其特征在于,所述根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行的时长,包括:
若当前时间不超过指定测试执行的时长,则继续创建线程,并在每个Runnable线程体内,添加要进行性能测试的业务逻辑代码,并通过Java代码将线程提交给线程池去运行。
3.根据权利要求2所述的方法,其特征在于,所述根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行的时长,包括:
若当前时间已超过指定测试执行的时长,则不再继续创建新的线程。
4.根据权利要求1所述的方法,其特征在于,所述执行所述多线程性能测,得到多线程性能测试结果,所述多线程性能测试结果包括:成功线程数、失败线程数、成功率以及指定测试执行的时长。
5.一种基于Java的多线程性能测试的装置,其特征在于,包括:
接收模块,用于接收启动多线程性能测试的指令,所述多线程性能测试的指令包括并发的线程数及指定测试执行的时长;
创建模块,用于根据所述并发的线程数进行循环创建Java代码中的Runnable类型的多线程,并在线程创建前判断当前时间是否已超过指定测试执行时长;
执行模块,用于执行所述多线程性能测,得到多线程性能测试结果;
存储模块,用于将所述多线程测试结果保存到预先创建的Java类中,并返回所述多线程性能测试执行完成的消息。
6.一种基于Java的多线程性能测试的系统,其特征在于,包括:
存储器,其上存储有可执行程序;
处理器,用于执行所述存储器中的所述可执行程序,以实现权利要求1-4中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210197024.5A CN114564378A (zh) | 2022-03-01 | 2022-03-01 | 一种基于Java的多线程性能测试的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210197024.5A CN114564378A (zh) | 2022-03-01 | 2022-03-01 | 一种基于Java的多线程性能测试的方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114564378A true CN114564378A (zh) | 2022-05-31 |
Family
ID=81715376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210197024.5A Pending CN114564378A (zh) | 2022-03-01 | 2022-03-01 | 一种基于Java的多线程性能测试的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114564378A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991750A (zh) * | 2023-09-28 | 2023-11-03 | 北京索云科技股份有限公司 | 利用多线程和分布式代理实现大并发模拟的压力测试方法 |
-
2022
- 2022-03-01 CN CN202210197024.5A patent/CN114564378A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116991750A (zh) * | 2023-09-28 | 2023-11-03 | 北京索云科技股份有限公司 | 利用多线程和分布式代理实现大并发模拟的压力测试方法 |
CN116991750B (zh) * | 2023-09-28 | 2023-12-22 | 北京索云科技股份有限公司 | 利用多线程和分布式代理实现大并发模拟的压力测试方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8756460B2 (en) | Test selection based on an N-wise combinations coverage | |
JP7105371B2 (ja) | ソフトウェアシステムで原因および結果を決定的に報告する方法 | |
US8276123B1 (en) | Adaptive regression test selection within testing environments | |
KR101903805B1 (ko) | 프로그램 상태를 체크포인팅하며 복원하기 위한 방법 | |
US20110016452A1 (en) | Method and system for identifying regression test cases for a software | |
US7721250B2 (en) | System and method for interactive and integrated software development process and phases | |
CN110673936B (zh) | 编排业务的断点续作方法、装置、存储介质及电子设备 | |
WO2020232951A1 (zh) | 一种任务执行方法及装置 | |
CN111538659B (zh) | 业务场景的接口测试方法、系统、电子设备和存储介质 | |
CN114564378A (zh) | 一种基于Java的多线程性能测试的方法、装置及系统 | |
US8230413B2 (en) | Detecting incorrect versions of files | |
US8533544B2 (en) | System for tree sequence testing of a device and method for tree sequence testing of a device in a test framework architecture | |
CN113721948A (zh) | 一种数据库升级方法、系统及存储介质 | |
US20070150866A1 (en) | Displaying parameters associated with call statements | |
CN113760491A (zh) | 一种任务调度系统、方法、设备及存储介质 | |
US20230101154A1 (en) | Resumable instruction generation | |
US7318222B2 (en) | Methods for execution control acquistion of a program and for executing an optimized version of a program | |
EP2820547B1 (en) | Debugging method and computer program product | |
US20090094614A1 (en) | Direct synchronous input | |
CN113342512B (zh) | 一种io任务静默与驱动方法、装置及相关设备 | |
JPH11175369A (ja) | プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援プログラムを記録した媒体 | |
CN111581088B (zh) | 基于Spark的SQL程序的调试方法、装置、设备及存储介质 | |
CN112558982A (zh) | 代码检测方法、装置及计算机设备 | |
JP2005174045A (ja) | ソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体 | |
CN114780283B (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 |