主要内容有:
1.JMeter Java Sampler介绍
2.多接口性能测试
=================================================================================================
1.JMeter Java Sampler介绍
setupTest做些初始化的工作,每个线程只执行一次
teardownTest做些清理工作,每个线程只执行一次
runTest具体的测试执行工作,每个并发每次循环都将执行一次
SampleResult记录测试结果,result.sampleStart()一个事务开始,result.sampleEnd()一个事务结束
main方法用于调试
01 package com . xxx . yyy . perf;
02
03 import org.apache.jmeter.config.Argument;
04 import org.apache.jmeter.config.Arguments;
05 import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
06 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
07 import org.apache.jmeter.samplers.SampleResult;
08 import org.springframework.context.ApplicationContext;
09 import org.springframework.context.support.ClassPathXmlApplicationContext;
10
11 import com.xxx.udb.client.PersonService;
12 import com.xxx.udb.client.result.PersonResult;
13
14 /**
15 *
16 * @author flynewton
17 */
18 public class GetPersonByLongId extends AbstractJavaSamplerClient {
19 private static final ApplicationContext ctx = new ClassPathXmlApplicationContext(
20 "spring-udb.xml");
21 private static PersonService personService = null;
22 private static final String loginId = "00000sb";
23 private static final String siteId = "CN";
24
25
26 @Override
27 public void setupTest( JavaSamplerContext context) {
28 super . setupTest( context);
29 personService = ( PersonService) ctx . getBean( "personServiceClient");
30 }
31
32 @Override
33 public void teardownTest( JavaSamplerContext context) {
34 super . teardownTest( context);
35 }
36
37 public SampleResult runTest( JavaSamplerContext arg0) {
38 SampleResult result = new SampleResult();
39 PersonResult personResult = null;
40
41 result . setSampleLabel( "result");
42
43 try {
44 result . sampleStart();
45 personResult = personService . getPersonByLongId( siteId , loginId);
46 result . sampleEnd();
47 } catch ( Throwable t) {
48 this . getLogger (). error( "Exception:" + t);
49 return null;
50 }
51
52 if ( personResult != null && personResult . getCode() == 0) {
53 result . setSamplerData( personResult . toString());
54 result . setSuccessful( true);
55 } else {
56 result . setSuccessful( false);
57 }
58
59 return result;
60 }
61
62 static void printResult( SampleResult res) {
63 System . out . println( "test is success:" + res . isSuccessful() + " used:"
64 + ( res . getEndTime() - res . getStartTime()) + "ms " + " result:"
65 + res . getSampleLabel() + ":" + res . getSamplerData());
66 }
67
68 public static void main( String [] args) {
69 GetPersonByLongId service = new GetPersonByLongId();
70 JavaSamplerContext context = new JavaSamplerContext( null);
71 service . setupTest( context);
72 SampleResult res1 = service . runTest( context);
73 printResult( res1);
74 service . teardownTest( context);
75 System . exit( 0);
76 }
77
78 }
2.多接口性能测试
按照上面的方法进行测试,每个需要测试的接口和场景都需要写一个这样的测试类,对于有些具有相似初始化,清理等工作,只有具体的那行事务代码不一样的情况,会有很多重复的工作。如下:
可以考虑采用反射的方式来解决这个问题,尤其是业务非常类似的接口和场景。当然,反射会带来压力机的性能消耗,但是这个可以通过调整JMeter的JVM参数和增加JMeter实例来解决。
1)利用反射后的结构如下:
2)AbstractServiceClient是一个抽象基类
16 package com . xxx . yyy . perf . base;
17
18 import java.lang.reflect.Method;
19
20 import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
21 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
22 import org.apache.jmeter.samplers.SampleResult;
23
24 /**
25 * Comment of AbstractServiceClient
26 * @author flynewton
27 */
28
29 public abstract class AbstractServiceClient extends AbstractJavaSamplerClient {
30
31 public Object invokeTest( String testName , JavaSamplerContext context ,SampleResult sample) {
32 Method [] methods = this . getClass (). getMethods();
33 for ( Method m : methods) {
34 if ( m . getName (). equalsIgnoreCase( testName)) {
35 try {
36 return m . invoke( this , context , sample);
37 } catch ( Throwable t) {
38 this . getLogger (). error( "execute method:" + testName + " falied" , t);
39 }
40 }
41
42 }
43 return null;
44 }
45 }
3)GetPersonTest为某一类具有相似业务场景的测试类
其中 getDefaultParameters方法设置默认参数:test传入具体要执行的测试方法;info传入日志级别,利用main方法进行调试时设置为true,真正进行性能测试的时候设置为false
016 package com . xxx . yyy . perf;
017 018 import org.apache.jmeter.config.Argument;
019 import org.apache.jmeter.config.Arguments;
020 import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
021 import org.apache.jmeter.samplers.SampleResult;
022 import org.springframework.context.ApplicationContext;
023 import org.springframework.context.support.ClassPathXmlApplicationContext;
024 025 import com.xxx.udb.client.PersonService;
026 import com.xxx.udb.client.result.MultiPersonResult;
027 import com.xxx.udb.client.result.PersonResult;
028 import com.xxx.udb.perf.base.AbstractServiceClient;
029 030 /** 031 * Test get person 032 * @author flynewton 033 */ 034 public class GetPersonTest extends AbstractServiceClient { 035 private static final ApplicationContext ctx = new ClassPathXmlApplicationContext(
036 "spring-udb.xml");
037 private static PersonService personService = null;
038 private static String loginIdCache = "00000sb";
039 private static String loginIdWithoutCache = "01haytham";
040 private static String siteIdCache = "CN";
041 private static String siteIdWithoutCache = "IN";
042 private static String alimailCn = "gchg2008@zzgcchen.cn";
043 private static String alimailUdb = "000001@lvcuinm.com.cn";
044 private static String uidCache = "300113578";
045 private static String uidWithoutCache = "in5002997";
046 private static String emailCache = "00000sb@alibaba-test.com";
047 private static String emailWithoutCache = "5002997@alibaba-inc.com";
048 049 @Override 050 public void setupTest(
JavaSamplerContext context)
{ 051 super . setupTest(
context);
padding: 0px; marg
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
【性能测试-Jmeter.pptx】的培训内容涵盖了性能测试的多个重要环节,包括数据制造、性能测试方案设计、脚本执行、性能监控与调优以及编写性能测试报告。以下是对这些知识点的详细阐述: 1. **如何制造数据**: - ...
JMeter是一款广泛应用的开源性能测试工具,它不仅支持压力测试,还适用于接口自动化测试。 在接口测试中,了解请求值和返回值的内容至关重要。请求值通常包括HTTP方法(如GET、POST等)、URL、请求头和请求体,这些...
总的来说,"apache-jmeter-5.0压力测试安装包"是一个全面且强大的性能测试工具,无论你是想测试接口的稳定性还是Web服务的并发能力,都可以借助这个工具得到详尽的数据和分析。只要根据自身的测试需求进行适当的配置...
Apache JMeter是开源软件,...JMeter的使用不仅限于性能测试,还可以用于功能测试、负载测试、压力测试以及接口测试等多种场景。无论是开发人员、测试人员还是运维人员,都可以利用JMeter来提升系统的性能和稳定性。
总结起来,Apache JMeter是一个功能全面的性能测试工具,无论是在接口测试还是在性能评估方面,都能提供详尽的数据和深入的洞察。通过熟练掌握JMeter,开发者和测试工程师可以有效地优化和验证他们的系统性能。
Apache JMeter是一款强大的、开源的压力测试工具,专为评估应用程序的性能和稳定性而设计。它最初是为了测试Web应用,但随着时间的发展,其功能已经扩展到支持多种协议和服务,包括HTTP、FTP、SMTP、JDBC、SOAP、RMI...
Apache JMeter是一款强大的开源接口压测工具,由...总的来说,Apache JMeter是一个功能强大、易于上手的接口压测工具,无论是开发者还是测试人员,都可以利用它有效地进行性能测试,确保系统在高压力下的稳定性和效率。
本文将深入探讨“jmeter-plugins-dubbo-2.7.1-jar-with-dependencies”这一系统压测工具包,它专门针对基于Java的Dubbo服务进行性能测试。了解并熟练掌握这一工具,能帮助我们更好地优化服务性能,提升系统的稳定性...
在"apache-jmeter-5.2.1"压缩包中,你可以找到核心的JMeter应用程序,包括各种组件和模块,这些都封装在"bin"目录下。通过运行"jmeter.bat"文件,你可以启动JMeter的图形用户界面。 在JMeter中,性能测试通常分为...
在性能测试领域,Apache JMeter 是一款广泛应用的开源工具,它能够对各种类型的应用进行压力和负载测试。针对分布式服务框架Dubbo的测试需求,社区开发了JMeter Plugins for Dubbo,使得JMeter能够更好地支持Dubbo...
在实际应用中,当接口之间存在依赖关系,比如一个接口的响应需要作为另一个接口的输入时,"jmeter-plugins-redis2"的作用尤为显著。例如,我们可以先使用插件将测试数据写入Redis,然后在后续的接口请求中,通过插件...
总之,"apache-jmeter-3.2"是一个强大的工具,能够帮助IT专业人士进行深入的性能测试和接口测试。它的灵活性和可扩展性使其成为测试团队不可或缺的一部分。无论是测试Web应用的前端性能,还是后端接口的响应速度,...
JMeter是一款开源的压力测试工具,它不仅可以用来进行性能测试,还可以进行功能测试,特别是在接口测试方面具有强大的功能。本文将详细介绍如何使用JMeter进行HTTP接口测试。 #### 二、基本接口请求 1. **同级组件...
"apache-jmeter-3.3"这个压缩包包含了JMeter 3.3版本的所有必要文件,使得用户可以免费下载并安装进行性能测试。 JMeter的安装非常简单,只需解压缩"apache-jmeter-3.3"文件夹,然后运行其中的"bin"目录下的"jmeter...
2. **解压**:"apache-jmeter-5.4.3.zip"文件,将解压后的目录添加到系统的PATH环境变量中,以便从命令行启动JMeter。 3. **启动JMeter**:运行bin目录下的jmeter.bat文件,启动JMeter应用程序。 4. **创建测试计划*...
"apache-jmeter-5."和"jmeter"进一步强调了JMeter作为测试工具的角色,而"服务器压测软件"和"接口测试软件"明确了它的应用场景,即针对服务器性能和接口功能的测试。 在解压缩"apache-jmeter-5.1.1"后,用户将得到...
Apache JMeter是开源软件,它可以用来做负载测试和性能测试。它最初设计是用来测试Web应用程序,但现已扩展到其他测试功能。 Apache JMeter可以用来测试包括基于静态和动态资源程序的性能,例如静态文件,Java ...
JMeter由Apache软件基金会开发,它支持多种协议,包括HTTP、HTTPS、FTP、JDBC、SMTP等,可以进行功能测试、压力测试、负载测试和性能测试。 接口测试是软件开发过程中的重要环节,它验证了系统组件间的通信是否正常...
此文件包含: apache-jmeter-5.2.1基础版本 jmeter-plugins-manager-1.3.jar(插件管理器) JMeterPlugins-Standard.jar JMeterPlugins-Extras.jar 以及接口测试、性能测试常用插件。