JMeter使用教程(一)

Apache JMeter是Apache组织开发的一款开源软件,是典型的纯Java开发的应用程序,可以在不同平台比如Windows、Linux或macOS系统上进行软件测试。JMeter主要用于应用程序的功能负载测试以度量软件的性能,也可以用于其他类型的测试比如接口测试,API测试等。

01测试计划

一个测试计划用来定义这次要测试的内容。

保存后的测试计划是一个.jmx文件。

可以导入已有的测试计划jmx文件;

可以在测试计划中添加其他各个组件,完成测试;

 

1.1配置

独立运行每个线程组勾选后,独立运行每个线程组,确保线程组1的执行一定在线程组2之前;不勾选,运行时测试计划下所有线程组同时执行;

主线程结束后运行tearDown:默认是从上到下执行;交替控制器、随机控制器、随机顺序控制器和循环控制器等可以改变取样器的执行顺序;

函数测试模式:如果选中此项,监听组件如“查看结果树”配置了保存到一个文件中,那么jmeter会将每次请求结果保存到文件中,不建议勾选;

添加目录或jar包到ClassPath:可以引入测试项目特有的jar等。

1.2操作

运行、清除

[启动]:执行测试计划下所有启用状态的节点。

[清除]:清除运行结果。

02线程组

【添加线程组】测试计划->添加->线程->线程组

线程组:模拟一定数量的并发用户发送请求,在线程组下配置用户要进行的操作(如添加http请求)

虽然有三个添加线程组的选项,名字不一样, 创建之后,其界面是完全一样的。

1) setup 线程组

可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。

2) teardown 线程组

可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组。

3) 线程组

这个就常用添加运行的线程。可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。

配置信息

[线程属性]:相当于要模拟的虚拟用户数,以及启动线程的时间,循环的次数。

[线程数]:虚拟用户数。

[Ramp-Up 时间]:多长时间启动全部线程,单位秒。如配置为1,即表示在1秒结束前启动完所有线程。每个线程启动的延迟时间=线程数,如线程数是1,即表示每隔1秒启动1个线程。如果要模拟测试绝对并发,可以把Ramp-Up 时间配置为0。

[循环次数]:即每个线程发送请求的次数。勾选永远,即一直执行,直到强制停止。

[在取样器错误后要执行的动作]:默认选择继续、启动下一个进程循环、停止线程、停止测试、立刻停止测试。

[调度器]:勾选后可以配置线程组持续时间、启动延迟。

 

03取样器

取样器:模拟各种请求,如http请求等。

【添加取样器】线程组->添加->取样器

目前最常用的是HTTP请求

04断言

可以添加断言配置测试的期望值,执行时jmeter会判断请求响应的结果是否与期望值一致。

【添加断言】测试计划/线程组/请求->添加->断言(有多种断言方式)

断言中有很多类型,我们常用的是响应断言

4.1响应断言

响应断言编辑页面,可选择断言应用范围和要测试的响应字段,匹配规则等。

(1)Apply to(应用范围 ): Main sample and sub-samples,Main sample only , Sub-samples only ,Jmeter Variable 一共4种。

大多数勾选“,Main sample only” 就足够了,因为一个请求,实质上只有一个请求。

(2)响应字段:响应文本,响应代码,响应信息,响应头,请求头,URL样本,文档(文本),请求数据一共8种

  • 响应文本: 服务器响应文本,一般普通http响应,通常勾选这个

  • 响应代码:http响应代码,

例如:101,102,404,505等
  • 响应信息:http响应代码对应的响应信息

例如:OK, Found

        HTTP/1.1 200 Ok

        HTTP/1.1 302 Found
  • 头:响应头信息

例如:               

  Cache-Control:private

    Connection:Keep-Alive

  Content-Encoding:gzip

    Content-Length:84 

  Content-Type:text/html;charset=utf-8

  Date:Sun, 27 Jul 2021 08:08:03 GMT
    Expires:Sun, 27 Jul 2021 08:08:03 GMT
    Server:BWS/1.0
    Vary:Accept-Encoding
  • 请求头:请求头信息

例如:               

    Accept:text/plain, */*; q=0.01
  Accept-Encoding:gzip, deflate, sdch
  Accept-Language:zh-CN,zh;q=0.8
  Connection:keep-alive
  Cookie:XXX
  Host:www.baidu.com
  Referer:https://www.baidu.com/
  X-Requested-With:XMLHttpRequest

(3)模式匹配规则:包括、匹配、相等、字符串、否、或者

  •  包括:返回结果包括指定的内容,支持正则匹配

例如:

    响应字段为:响应文本

  模式匹配规则:匹配

  断言为:1、success    2、[a-z]+

  当返回值为:{"msg":"login success."} , 这两个断言都是ok的,返回true
  • 匹配:   

            (1) 相当于 equals 。当返回值固定时,可以返回值做断言,效果和equals相同

   (2) 正则匹配 。用正则表达式匹配返回结果,但必须全部匹配。即正则表达式 必须能匹配整个返回值,而不是返回值的一部分。

  例如:

    响应字段为:响应文本

    模式匹配规则:匹配

    断言为:1、{"msg":"login success."},2、\{"msg":"[a-z]+ success\."\} ,3、[a-z]+

    当返回值为:{"msg":"login success."}   ,断言1 2 是ok的, 断言3是false,原因是,断言1 只能用于equals,而断言3 只匹配了返回值部分,而不是全部匹配。
  • 相等 : 返回结果与指定断言完全一致

  • 字符串:与 “包括”差不多,都是指返回结果包括你指定的内容,但是subString不支持正则字符串 

例如:

    响应字段为:响应文本

    模式匹配规则:匹配

    断言为:1、success    2、[a-z]+

    当返回值为:{"msg":"login success."} , 断言1返回true, 但断言2返回false
  • 否:就相当于取反。如果上面断言结果为true,勾选“否”后,最终断言结果为false。如果上面断言结果为false,勾选“否”后,则最终断言结果为 true


🎙️我是一个热衷分享测试干货的软件测试工程师
🎆欢迎点赞 👍 收藏、留言 📝 如有错误敬请指正!
⛽️获取更多干货,可以关注公众号:软件测试开发区

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值