天天看点

jmeter目录和主要组件介绍以及jmeter接口测试实例

目录:导读

一、jmeter目录介绍

1.1 backups(备份)

1.2 bin

1.3 docs

1.4 extras

1.5 lib

1.6 licenses

1.7 printable_docs

二、jmeter主要组件介绍

2.1 测试计划

2.2 Threads

2.3 测试片段

2.4 控制器

三、Jmeter接口测试实例

3.1 添加线程组

3.2 添加HTTP请求

3.3 添加查看结果树

3.4 参数化

3.5 添加断言

3.6 添加断言结果

3.7 添加聚合报告

四、总结

一、jmeter目录介绍

jmeter目录和主要组件介绍以及jmeter接口测试实例

1.1 backups(备份)

顾名思义,该目录是个备份目录,是将自己的各个Jmx脚本进行备份,所谓备份便是每次保存都会将该脚本进行保存到该目录下,如果保存多次便会保存多个同样的文件,文件名进行默认递增更改。

1.2 bin

jmeter目录和主要组件介绍以及jmeter接口测试实例
  1. examples(例子):该目录下存放Jmeter官方给的请求模板
  2. report-template(报告模板):该目录下存放Jmeter的报告模板(Jmeter是有自己的报告的)t
  3. templates(模板):该目录下存放Jmeter的各类配置模板,例如:JDBC、Beanshell、ThinkTime等
    jmeter目录和主要组件介绍以及jmeter接口测试实例
  4. Beanshell----:Beanshell请求、监听、断言、函数等
  5. Jmeter.bat:启动文件
  6. jmeter.properties:配置文件(属性在官方文档中有解释)
  7. jmeter-server.bat:用于分布式
  8. shutdown.cmd:硬停止
  9. stoptest.cmd:软停止
  10. xxx.sh:Linux下运行
  11. user.properties:用户配置i文件(同上)

1.3 docs

jmeter目录和主要组件介绍以及jmeter接口测试实例
  1. api:前面谈到Jmeter是开源的,此处便是它的API文档。
  2. css:xxxx
  3. Image:部分图片资源

1.4 extras

存放Build等配置,用于第三方集成构建

1.5 lib

存放各类jar包,组件类函数类等

1.6 licenses

许可证等

1.7 printable_docs

用户手册

二、jmeter主要组件介绍

2.1 测试计划

描述一个性能测试,包含本次测试所有相关功能

jmeter目录和主要组件介绍以及jmeter接口测试实例

其中各个配置的信息详见另一篇博文:https://blog.csdn.net/qq_34659777/article/details/99960544

2.2 Threads

jmeter目录和主要组件介绍以及jmeter接口测试实例
  1. Setup thread group:

一种特殊类型的线程,可用于执行预测试操作。即执行测试前进行定期线程组的执行

  1. Teardown thread group:

一种特殊类型的线程,可用于执行测试后动作。即执行测试结束后执行定期的线程组

以上两个线程组,举个例子:loadrunner的脚本除了action里是真正的脚本核心内容,还有初始化“环境”的初始化脚本和测试完毕后对应的清除信息的脚本块,与其对应

  1. Thread group:

通常添加使用的线程,一般一个线程组可看做一个虚拟用户组,其中每个线程为一个虚拟用户

2.3 测试片段

jmeter目录和主要组件介绍以及jmeter接口测试实例

2.5版本之后新增的一个选项,是一种特殊的线程组,在测试树上与线程组一个层级,但是它不被执行,除非它是一个模块控制器或者被控制器所引用时才会被执行

2.4 控制器

Jmeter有2种控制器:取样器(sampler)和逻辑控制器(Logic Controller)

作用:用这些原件驱动处理一个测试

2.4.1 取样器(Sampler)

jmeter目录和主要组件介绍以及jmeter接口测试实例

是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不同的sampler

如 HTTP Request Sampler 、 FTP Request Sampler 、TCP Request Sampler 、JDBC Request Sampler 等

每一种不同类型的 sampler 可以根据设置的参数向服务器发出不同类型的请求。

Java Request Sampler 和 Beanshell Request Sampler 是两种特殊的可定制的 Sampler (暂不讨论)

2.4.2 逻辑控制器(Logic Controller)

jmeter目录和主要组件介绍以及jmeter接口测试实例

包含两类原件:

一类是控制Test Plan中Sampler节点发送请求的逻辑顺序控制器,常用的有:If Controller、Swith Controller、Loop Controller、Random Controller等

另一类是用来组织和控制Sampler节点的,如Transaction Controller、Throughput Controller等

三、Jmeter接口测试实例

3.1 添加线程组

jmeter目录和主要组件介绍以及jmeter接口测试实例
jmeter目录和主要组件介绍以及jmeter接口测试实例

线程组参数详解:

  1. 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
  2. Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
  3. 循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
  4. Delay Thread creation until needed:直到需要时延迟线程的创建。
  5. 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)

    持续时间(秒):测试持续时间,会覆盖结束时间

    启动延迟(秒):测试延迟启动时间,会覆盖启动时间

    启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。

    结束时间:测试结束时间,持续时间会覆盖它。

现在先试一个简单的例子,后面再进行详细的配置。

3.2 添加HTTP请求

jmeter目录和主要组件介绍以及jmeter接口测试实例

这里我用了聚合数据的新闻API:

jmeter目录和主要组件介绍以及jmeter接口测试实例

接口文档如上,在JMeter中填写就是这个样子:

jmeter目录和主要组件介绍以及jmeter接口测试实例

Http请求主要参数详解:

  1. Web服务器

协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP

服务器名称或IP :HTTP请求发送的目标服务器名称或IP

端口号:目标服务器的端口号,默认值为80,非必填项

  1. Http请求

方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

路径:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分)

Content encoding :编码方式,默认为ISO-8859-1编码,也可配置为utf-8

  1. 下面的几个多选框

自动重定向:如果选中该项,发出的http请求得到响应是301/302,jmeter会重定向到新的界面

Use keep Alive:jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信(默认选中)

Use multipart/from-data for HTTP POST :当发送HTTP POST 请求时,使用

  1. Parameters

parameter是指函数定义中参数

  1. Body Data

实体数据,就是请求报文里面主体实体的内容,一般我们向服务器发送请求,携带的实体主体参数,可以写入这里

  1. Files Upload

指的是:从HTML文件获取所有有内含的资源:被选中时,发出HTTP请求并获得响应的HTML文件内容后还对该HTML 进行Parse 并获取HTML中包含的所有资源(图片、flash等):(默认不选中)

如果用户只希望获取特定资源,可以在下方的Embedded URLs must match 文本框中填入需要下载的特定资源表达式,只有能匹配指定正则表达式的URL指向资源会被下载

3.3 添加查看结果树

jmeter目录和主要组件介绍以及jmeter接口测试实例
jmeter目录和主要组件介绍以及jmeter接口测试实例

3.4 参数化

jmeter目录和主要组件介绍以及jmeter接口测试实例

在这里我们添加一个新的变量:

jmeter目录和主要组件介绍以及jmeter接口测试实例

然后在之前的HTTP请求中调用,调用格式为${keji_type}:

jmeter目录和主要组件介绍以及jmeter接口测试实例

启动就会在结果树中查看到相应的结果。

3.5 添加断言

jmeter目录和主要组件介绍以及jmeter接口测试实例

因为我们刚刚查找的是科技类的文章,所以我们来断言,响应结果中是否有“科技”字段。

jmeter目录和主要组件介绍以及jmeter接口测试实例

3.6 添加断言结果

jmeter目录和主要组件介绍以及jmeter接口测试实例
jmeter目录和主要组件介绍以及jmeter接口测试实例

3.7 添加聚合报告

存放性能测试报告,在每次测试之前需要点击小扫把按钮清除之前的调试结果。

jmeter目录和主要组件介绍以及jmeter接口测试实例
jmeter目录和主要组件介绍以及jmeter接口测试实例

聚合报告参数详解:

  1. Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
  2. #Samples:请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
  3. Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
  4. Median:中位数,也就是 50% 用户的响应时间
  5. 90% Line:90% 用户的响应时间
  6. Min:最小响应时间
  7. Max:最大响应时间
  8. Error%:错误率——错误请求数/请求总数
  9. Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数
  10. KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量。

这样,我们就完成了一个完整HTTP接口的JMeter性能测试脚本编写。

四、总结

如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:软件测试技术群:603401995,群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。