如何用jmeter测试本机上的软件

如何用jmeter测试本机上的软件,第1张

1.打开Java编译器,新建一个项目"TestLength",然后新建一个包"app".2.从Jmeter的安装目录lib/ext中拷贝两个文件"ApacheJMeter_core.jar"和"ApacheJMeter_java.jar"到"Tester"的项目中,然后引入这两个JAR文件.(具体的引入方法参考各个Java编译器的使用方法)3.在"app"包中新建一个类,名字叫"TestLength",不过这个类要继承"AbstractJavaSamplerClient"类,如果项目引入步骤二中的两个文件,就可以找到"AbstractJavaSamplerClient"类了.4."TestLength"类在继承"AbstractJavaSamplerClient"类的同时也会继承四个方法,分别是"getDefaultParameters","setupTest","runTest"和"teardownTest"方法."getDefaultParameters"方法主要用于设置传入的参数"setupTest"方法为初始化方法,用于初始化性能测试时的每个线程."runTest"方法为性能测试时的线程运行体"teardownTest"方法为测试结束方法,用于结束性能测试中的每个线程.5.具体实现代码如下:packageappimportorg.apache.jmeter.config.Argumentsimportorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClientimportorg.apache.jmeter.protocol.java.sampler.JavaSamplerContextimportorg.apache.jmeter.samplers.SampleResultimportcom.passpod.core.t8.*/***@author乐以忘忧**TODOTochangethetemplateforthisgeneratedtypecommentgoto*Window-Preferences-Java-CodeStyle-CodeTemplates*/publicclassTestLengthextendsAbstractJavaSamplerClient{privateSampleResultresultsprivateStringtestStr//初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行,类似于LoadRunner中的init方法publicvoidsetupTest(JavaSamplerContextarg0){results=newSampleResult()testStr=arg0.getParameter("testString","")if(testStr!=null&&testStr.length()>0){results.setSamplerData(testStr)}}//设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中publicArgumentsgetDefaultParameters(){Argumentsparams=newArguments()params.addArgument("testStr","")//定义一个参数,显示到Jmeter的参数列表中,第一个参数为参数默认的显示名称,第二个参数为默认值returnparams}//测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于LoadRunner中的Action方法publicSampleResultrunTest(JavaSamplerContextarg0){intlen=0results.sampleStart()//定义一个事务,表示这是事务的起始点,类似于LoadRunner的lr.start_transactionlen=testStr.length()results.sampleEnd()//定义一个事务,表示这是事务的结束点,类似于LoadRunner的lr.end_transactionif(len<5){System.out.println(testStr)results.setSuccessful(false)//用于设置运行结果的成功或失败,如果是"false"则表示结果失败,否则则表示成功}elseresults.setSuccessful(true)returnresults}//结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行,类似于LoadRunner中的end方法publicvoidteardownTest(JavaSamplerContextarg0){}}6.把上面的例子打包,然后把生成的"TestLength.jar"文件拷贝到Jmeter的安装目录lib/ext下.7.运行Jmeter,添加一个线程组,然后在该线程组下面添加一个Java请求(在Sampler中),在Java请求的类名称中选择咱们刚创建的类"app.TestLength",在下面参数列表的"testStr"后面输入要测试的字符串,然后添加一个监听器(聚合报告),设置一下模拟的用户数就可以测试了.如果测试不成功,Jmeter会在它自己个输出框中抛出这个字符串.通过上面的例子我们可以发现,使用Jmeter自定义Java测试代码,配合Jmeter自带的函数,就可以实现出LoadRunner中"JavaVuser"协议的绝大多数功能,而且是没有用户数限制和完全免费的(嘿嘿).上面的例子非常简单,而且没有任何实际意义,只是一个简单的Jmeter测试代码示例,用于抛砖引玉,希望大家一起交流,共同进步.

背景说明:

JMeter执行方式有两种,一种是GUI模式,一种是非GUI模式。

GUI模式就是界面模式,非GUI模式就是命令行模式。GUI模式主要用来编写和调试脚本用的,接口的性能测试最好是采用命令行模式,因为该模式可以和其它框架进行对接,进行自动化测试平台的集成。

非GUI模式适用场景:

1、更省资源,更容易实现多工具集整合;

2、当访问的接口服务需要通过代理服务器才能完成的;

3、当一台机器产生的压力不够时,采用分布式多机远程执行模式,使得一台主控机可以控制多台压力机,同时生成更多的压力请求,达到客户端能模拟大并发请求的目的;

4、可以通过外部传参,让命令行将数据传入到脚本中,使得外部系统调用jmeter时候能更好的进行集成和传参,比如通过jenkins启动和执行接口自动化时,将参数从jenkins的界面传入到jmeter中,就是通过命令行参数进行桥接的。

优点:

1、节约系统资源,无需启动界面

2、便捷快速:仅需启动命令行,输入命令便可执行

3、易于持续集成:可通过shell脚本命令执行

参数详解:

-h 帮助 ->打印出有用的信息并退出

-n 非 GUI 模式 ->在非 GUI 模式下运行 JMeter

-t 测试文件 ->要运行的 JMeter 测试脚本文件

-J 是设置本地jmeter属性,引用变量参数

-G 是设置server的jmeter属性

-l 日志文件 ->记录结果的文件

-r 远程执行 ->在Jmter.properties文件中指定的所有远程服务器

-H 代理主机 ->设置 JMeter 使用的代理主机

-P 代理端口 ->设置 JMeter 使用的代理主机的端口号

使用方法详解:

前提:为了方便管理,在jmeter的安装目录bin下创建一个文件夹testscript用来存放脚本(.jmx文件),再创建一个文件夹testresult用来存放脚本执行后的结果文件。

一、使用JMeter非GUI模式

1、将要测试的jmeter脚本放到testscript目录下

2、cmd打开命令行模式

3、进入到Jmeter安装目录下的bin目录下

4、执行命令:jmeter -n -t examples\testscript\apd_v3.7_perf.jmx -l examples\testresult\apd3.7-reslut.jtl -j report\01-log.log

可以看到以下信息

summary+ 是开始这个时点的报告。

summary= 是总结它之前的报告,呈现出的是当前时点之前总的情况,通常是均值。

最后一个summary=是本次压测总的情况,如果脚本按时正常结束的话,最后一次summary里面的值应该和你从GUI打开聚合报告或概括报告的值一致。

二、无界面分布式压测

当并发量过大单机无法承担需要做分布式压测

执行方法:

1、把脚本和参数文件存放到各台终端相同目录下

2、将每台终端的jmerter-server.bat打开等待主机发号施令

3、在主机命令窗口键入类似以下命令:

jmeter.bat -n -t testscript/Baidu.jmx -R 192.168.182.129:1100,192.168.182.130:1200 -l testresult/01-result.jtl -j report\01-log.log

命令中-R代表远程 remote ,后面跟随的是每台终端机jmeter-server窗口显示的 ip 和端口,同样,多台终端之间由逗号隔开,其他都与单机命令一样。于是可以看到各台终端机的jmeter-server窗口有关运行和阶段性summary的信息直至运行结束。总体的报告都在你主机保存的那个.jtl文件里。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12198113.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存