`
flynewton
  • 浏览: 62570 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

接口性能测试--JMeter

阅读更多

主要内容有:

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  setupTestJavaSamplerContext  context)  { 
28          super . setupTestcontext); 
29          personService  = ( PersonService)  ctx . getBean"personServiceClient"); 
30      } 
31  
32      @Override 
33      public  void  teardownTestJavaSamplerContext  context)  { 
34          super . teardownTestcontext); 
35      } 
36  
37      public  SampleResult  runTestJavaSamplerContext  arg0)  { 
38          SampleResult  result  =  new  SampleResult(); 
39          PersonResult  personResult  =  null
40          
41          result . setSampleLabel"result"); 
42          
43          try  { 
44              result . sampleStart(); 
45              personResult  =  personService . getPersonByLongIdsiteId ,  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 . setSamplerDatapersonResult . toString()); 
54              result . setSuccessfultrue); 
55          }  else  { 
56              result . setSuccessfulfalse); 
57          } 
58          
59          return  result
60      } 
61  
62      static  void  printResultSampleResult  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  mainString []  args)  { 
69          GetPersonByLongId  service  =  new  GetPersonByLongId(); 
70          JavaSamplerContext  context  =  new  JavaSamplerContextnull); 
71          service . setupTestcontext); 
72          SampleResult  res1  =  service . runTestcontext); 
73          printResultres1); 
74          service . teardownTestcontext); 
75          System . exit0); 
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  invokeTestString  testName ,  JavaSamplerContext  context ,SampleResult  sample)  { 
32          Method []  methods  =  this . getClass (). getMethods(); 
33          for ( Method  m  :  methods)  { 
34              if ( m . getName (). equalsIgnoreCasetestName))  { 
35                  try  { 
36                      return  m . invokethis ,  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  setupTestJavaSamplerContext  context)  { 
051          super . setupTestcontext); 
padding: 0px; marg
分享到:
评论

相关推荐

    性能测试-Jmeter.pptx

    【性能测试-Jmeter.pptx】的培训内容涵盖了性能测试的多个重要环节,包括数据制造、性能测试方案设计、脚本执行、性能监控与调优以及编写性能测试报告。以下是对这些知识点的详细阐述: 1. **如何制造数据**: - ...

    jmeter-results-detail-report_21接口测试报告优化-展示具体的请求及返回值

    JMeter是一款广泛应用的开源性能测试工具,它不仅支持压力测试,还适用于接口自动化测试。 在接口测试中,了解请求值和返回值的内容至关重要。请求值通常包括HTTP方法(如GET、POST等)、URL、请求头和请求体,这些...

    apache-jmeter-5.0压力测试安装包

    总的来说,"apache-jmeter-5.0压力测试安装包"是一个全面且强大的性能测试工具,无论你是想测试接口的稳定性还是Web服务的并发能力,都可以借助这个工具得到详尽的数据和分析。只要根据自身的测试需求进行适当的配置...

    apache-jmeter-3.0.zip和apache-jmeter-3.0_src.zip

    Apache JMeter是开源软件,...JMeter的使用不仅限于性能测试,还可以用于功能测试、负载测试、压力测试以及接口测试等多种场景。无论是开发人员、测试人员还是运维人员,都可以利用JMeter来提升系统的性能和稳定性。

    apache接口性能测试工具jmeter-5.0.rar

    总结起来,Apache JMeter是一个功能全面的性能测试工具,无论是在接口测试还是在性能评估方面,都能提供详尽的数据和深入的洞察。通过熟练掌握JMeter,开发者和测试工程师可以有效地优化和验证他们的系统性能。

    压力测试工具:apache-jmeter-5.0

    Apache JMeter是一款强大的、开源的压力测试工具,专为评估应用程序的性能和稳定性而设计。它最初是为了测试Web应用,但随着时间的发展,其功能已经扩展到支持多种协议和服务,包括HTTP、FTP、SMTP、JDBC、SOAP、RMI...

    apache-jmeter-5.4.3,接口压测工具jmeter

    Apache JMeter是一款强大的开源接口压测工具,由...总的来说,Apache JMeter是一个功能强大、易于上手的接口压测工具,无论是开发者还是测试人员,都可以利用它有效地进行性能测试,确保系统在高压力下的稳定性和效率。

    jmeter-plugins-dubbo-2.7.1-jar-with-dependencies

    本文将深入探讨“jmeter-plugins-dubbo-2.7.1-jar-with-dependencies”这一系统压测工具包,它专门针对基于Java的Dubbo服务进行性能测试。了解并熟练掌握这一工具,能帮助我们更好地优化服务性能,提升系统的稳定性...

    apache-jmeter-5.2.1性能测试工具.zip

    在"apache-jmeter-5.2.1"压缩包中,你可以找到核心的JMeter应用程序,包括各种组件和模块,这些都封装在"bin"目录下。通过运行"jmeter.bat"文件,你可以启动JMeter的图形用户界面。 在JMeter中,性能测试通常分为...

    jmeter-plugins-dubbo-2.7.1-jar-with-dependencies (1)

    在性能测试领域,Apache JMeter 是一款广泛应用的开源工具,它能够对各种类型的应用进行压力和负载测试。针对分布式服务框架Dubbo的测试需求,社区开发了JMeter Plugins for Dubbo,使得JMeter能够更好地支持Dubbo...

    jmeter-plugins-redis2

    在实际应用中,当接口之间存在依赖关系,比如一个接口的响应需要作为另一个接口的输入时,"jmeter-plugins-redis2"的作用尤为显著。例如,我们可以先使用插件将测试数据写入Redis,然后在后续的接口请求中,通过插件...

    apache-jmeter-3.2

    总之,"apache-jmeter-3.2"是一个强大的工具,能够帮助IT专业人士进行深入的性能测试和接口测试。它的灵活性和可扩展性使其成为测试团队不可或缺的一部分。无论是测试Web应用的前端性能,还是后端接口的响应速度,...

    jmeter接口测试-http接口请求

    JMeter是一款开源的压力测试工具,它不仅可以用来进行性能测试,还可以进行功能测试,特别是在接口测试方面具有强大的功能。本文将详细介绍如何使用JMeter进行HTTP接口测试。 #### 二、基本接口请求 1. **同级组件...

    apache-jmeter-3.3

    "apache-jmeter-3.3"这个压缩包包含了JMeter 3.3版本的所有必要文件,使得用户可以免费下载并安装进行性能测试。 JMeter的安装非常简单,只需解压缩"apache-jmeter-3.3"文件夹,然后运行其中的"bin"目录下的"jmeter...

    Windows系统下的 JMeter apache-jmeter-5.4.3.zip

    2. **解压**:"apache-jmeter-5.4.3.zip"文件,将解压后的目录添加到系统的PATH环境变量中,以便从命令行启动JMeter。 3. **启动JMeter**:运行bin目录下的jmeter.bat文件,启动JMeter应用程序。 4. **创建测试计划*...

    apache-jmeter-5.1.1.zip

    "apache-jmeter-5."和"jmeter"进一步强调了JMeter作为测试工具的角色,而"服务器压测软件"和"接口测试软件"明确了它的应用场景,即针对服务器性能和接口功能的测试。 在解压缩"apache-jmeter-5.1.1"后,用户将得到...

    Jmeter-Java接口自动化学习文档.rar

    Apache JMeter是开源软件,它可以用来做负载测试和性能测试。它最初设计是用来测试Web应用程序,但现已扩展到其他测试功能。 Apache JMeter可以用来测试包括基于静态和动态资源程序的性能,例如静态文件,Java ...

    接口测试工具-apacche-jmeter

    JMeter由Apache软件基金会开发,它支持多种协议,包括HTTP、HTTPS、FTP、JDBC、SMTP等,可以进行功能测试、压力测试、负载测试和性能测试。 接口测试是软件开发过程中的重要环节,它验证了系统组件间的通信是否正常...

    apache-jmeter-5.2.1(全).zip

    此文件包含: apache-jmeter-5.2.1基础版本 jmeter-plugins-manager-1.3.jar(插件管理器) JMeterPlugins-Standard.jar JMeterPlugins-Extras.jar 以及接口测试、性能测试常用插件。

Global site tag (gtag.js) - Google Analytics