JMeter性能测试

一、JMeter运行原理

JMeter是运行在JVM虚拟机上的,再者Java也是支持多线程的,所以JMeter是以线程的方式来运行的。JMeter运行场景不仅可以在GUI方式中完成,还可以使用命令行,而且命令行运行的方式对于负载机的资源消耗会更小。

Jmeter调用Python预研结果:
方案一:使用jython调Python代码;但jython只支持到2.7.2版本,无法支持Python3;–排除
方案二:编写C代码,通过java调C,然后C调Python;绕的很远,且无法监控到响应时间等详细信息,除非自己再封装;–排除
方案三:抛弃jmeter,使用locust;locust工具支持Python代码进行性能测试。

二、JMeter测试计划要素

1、脚本中测试计划只能有一个
2、测试计划中至少要有一个线程组
3、至少要有一个取样器
取样器的作用:模拟用户请求
4、至少要有一个监听器

监听器的作用:用于衡量系统性能

三、Jmeter环境介绍

由于JMeter是纯Java开发的,所以一般来说。能运行Java程序的系统一般都可以运行JMeter。JMeter下载好之后只需要解压到相关目录即可,配置好Java环境变量就可以启动,JDK建议安装1.6或者以上版本,不然会出现版本不匹配的问题。

Jmeter组件以jar包的形式放置在lib/ext目录下,如果我们要扩展JMeter组件,扩展后的jar包即放在此目录,JMeter启动时会加载此目录下的jar包。JMeter依赖的一些基础包则要放在lib根目录下。

启动:Windows双击jmeter.bat,Linux双击jmeter.sh。

如果启动过程中屏幕一闪而过多半是启动不成功,请检查你的JAVA_HOME配置是否正确。
在这里插入图片描述
如果启动完成后能够进入上图界面且红色标记处显示0代表正常启动了,如果非0代表加载组件出错了,即加载lib/ext目录下的jar包出错了,往往是我们扩展JMeter功能时出错,错误原因通常是依赖的jar包缺失。

四、BeanShell取样器

官网:www.beanshell.org/

1.BeanShell常用内置变量

JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量的使用方法如下:
(1)log:写信息到jmeter.log文件,使用方法log.info(“this is log info!”)
(2)vars:操作JMeter变量
vars.get(“变量名”):获得变量的值
vars.put(“变量名”, “变量值”):将数据存到JMeter变量中
(3)ctx:该变量引用了当前线程的上下文
(4)props:操作JMeter属性
props.get(“属性名”),属性名定义于jmeter.properties
props.put(“属性名”, “属性值”)
(5)prev:获取当前的sample返回的信息,常用方法
getResponseDateAsString():获取响应信息
getResponseCode():获取响应code

SamplerResult:Jmeter中的一个对象

//设置响应代码  
ResponseCode = 500;  
//设置响应信息  
ResponseMessage = "This is a test";  
//设置是否成功  
IsSuccess = false;  
//设置响应数据  
SampleResult.setResponseData("Hello world");  

2. 自定义函数

(1)在TestPlan中添加一个变量,hello=word
(2)BeanSell取样器前后的调试取样器什么都不处理,用来查询对比Beahshell处理前后的结果
在这里插入图片描述
调试取样器(Debug Sampler)的作用:
(1)想知道参数化的变量取值是否正确
(2)想知道正则表达式提取的值是否正确
(3)想知道JMeter属性
(4)调试时服务器返回了些什么内容
通常与察看结果树元件组合使用!

3. 引入外部java文件

(1)生成一个java源文件,名为:Myclass.java,代码如下

package com.xxx;

public class MyClass {

    public static int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {

    }
}

(2)BeanShell使用代码如下:
在BeanShell中通过source(“代码路径”)方法引入java,然后调用方法和java一样,new一个class,然后调用add方法。
在这里插入图片描述

4. 引入外部class文件

(1)直接将上个示例中的Myclass.java编译成class文件;
(2)BeanShell使用代码如下:
用addClassPath(“文件路径”)的方法引入class文件,再用import导入包以及类,然后就可以像java一样调用了。
在这里插入图片描述

5. 引入外部jar包

JMeter中引入外部jar包两种方式:
(1)把jar包放在jmeter\lib\ext目录下
(2)在测试计划的右侧面板最下方直接添加需要引用的jar包,如下图

在这里插入图片描述

6. 其他用法

在Test Plan中定义如下三个变量:a,b,c,如下图所示:
在这里插入图片描述
BeanShell可以接受传入参数,如下图:${a} ${b} ${c},参数可通过bsh.args[]顺序提取
BeanShell提供了一个内置变量Parameters,来保存参数的集合
在这里插入图片描述
Java代码里必须要写main方法,不然Open Module Settings -> Artifacts会找不着自己写的主类,配置好之后会在src同级目录下生成META_INF目录即为配置成功。

点击Build -> Build Artifacts -> Build/Rebuild,会在工程目录下生成一个out目录,jar包就存放在里面。

五、参数化

① 用户定义的变量

② CSV数据文件设置:可以从指定的文件中一行一行的提取文本内容,根据分隔符拆解这一行内容并把内容与变量名对应上,然后这些变量就可以供取样器调用了

③ 函数助手

六、JMeter元件运行顺序

JMeter执行顺序逻辑如下:
(1)配置元件(如果存在)
(2)前置处理器(如果存在)
(3)定时器(如果存在)
(4)取样器(如果存在)
(5)后置处理器(如果存在且取样器的结果不为空)
(6)断言(如果存在且取样器的结果不为空)
(7)监听器(如果存在且取样器的结果不为空)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值