基于jmeter的性能测试(一)

一、 接口性能工具jmeter

1. Jmeter介绍

Jmeter是一个非常小巧,解压即可使用的免安装工具,使用Java开发,方便进行二次开发,慢慢的替代了loadrunner(光是安装就有1个多G,且需付费)。

2. Jmeter启动

  • 将下载的安装包解压到任意目录,进入到bin文件夹,找jmeter.bat文件,双击启动。
    基于jmeter的性能测试(一)_第1张图片

  • 双击后会弹出一个黑框,是用来驱动jmeter的,不要做任何操作,等待几秒直到出现jmeter工作台。
    基于jmeter的性能测试(一)_第2张图片
    基于jmeter的性能测试(一)_第3张图片

  • 在使用jmeter时不要关闭黑框,最小化就行,黑框中会写入jmeter的日志

二、 性能测试脚本编写

1. Jmeter基本使用

Jmeter的主要思想:先构造用户,再让用户去请求对应的接口。

1.1 添加线程组

一个线程数相当于一个用户

添加方法:右键单击测试计划,选择添加->Threads(users)->线程组
基于jmeter的性能测试(一)_第4张图片
基于jmeter的性能测试(一)_第5张图片

1.2 在线程组下添加HTTP请求

添加方法:右键单击线程组,点击添加->sampler->HTTP请求

Sampler:取样器,用来模拟请求。选择HTTP请求,会显示配置接口的界面。

基于jmeter的性能测试(一)_第6张图片
基于jmeter的性能测试(一)_第7张图片

1.3 HTTP接口配置

(1)复制接口完整路径,将信息分别填入HTTP请求配置里面。分别填写服务器IP、端口号、协议、方法、编码方式、路径(以/开头)
(2)Timeouts:超时时间,一般不设置,单位是ms
(3)请求信息,如果content-type是json形式,需要选择body data,Parameters是表单形式
(4)可以在路径栏填写完整的URL地址,上面的选项都不填,接口也可以调成功
基于jmeter的性能测试(一)_第8张图片

1.4 在线程组下添加察看结果树

添加方式:右键单击线程组,点击添加->监听器->察看结果树

基于jmeter的性能测试(一)_第9张图片
基于jmeter的性能测试(一)_第10张图片

  • 察看结果树是查看请求结果的地方

  • 在察看结果树页面,点击上方的绿色按钮,运行请求。首次运行会提示需要保存结果树。
    基于jmeter的性能测试(一)_第11张图片

  • 默认保存路径在解压的bin目录,Jmeter脚本的后缀是.jmx
    基于jmeter的性能测试(一)_第12张图片

1.5 结果分析

(1) 看请求
基于jmeter的性能测试(一)_第13张图片

(2) 看响应数据
响应数据中有“成功”2个字,说明接口请求成功
基于jmeter的性能测试(一)_第14张图片

1.6 实现多个人同时请求

将线程组中的线程数修改为人数,重新运行即可。
基于jmeter的性能测试(一)_第15张图片
基于jmeter的性能测试(一)_第16张图片

2. HTTP信息头管理器

Jmeter默认传输请求信息的方式是表单类型,即Content-Type: application/x-www-form-urlencoded,如果接口的content-type要求json体,则需要修改。

修改方法:

(1)右键单击一个HTTP接口,选择添加->配置元件->HTTP信息头管理器,这个管理器属于这个接口。
基于jmeter的性能测试(一)_第17张图片

(2)复制Content-Type: application/json,添加到HTTP信息头管理器中。
基于jmeter的性能测试(一)_第18张图片

(3) 重新运行请求,发现content-type已经修改成功
基于jmeter的性能测试(一)_第19张图片

3. 参数化方法1-用户参数

  • 场景:批量注册不同账号,参数为用户名、密码、年级

  • 可使用用户参数的方法,这是Jmeter自带的方法,最简单

  • 添加用户参数,方法:右键单击线程组,点击添加->前置处理器->用户参数
    基于jmeter的性能测试(一)_第20张图片

(1)添加变量和用户,变量名随便取,此处假设需要同时注册3个账号
基于jmeter的性能测试(一)_第21张图片

(2)参数化
参数化含义:将写死的东西变成变量

格式:${参数名}
基于jmeter的性能测试(一)_第22张图片

(3)运行查看结果
基于jmeter的性能测试(一)_第23张图片

4. 参数化方法2-CSVREAD函数

调用一个自带的自定义函数CSVREAD函数,用于读取CSV文件。CSV文件的特点是以逗号分隔,可以使用Excel打开。

4.1 CSV文件制作

提前新建一个CSV文件,最好将该文件放在bin目录下,在填写文件路径值可以只填写文件名。如果在其他路径,则需要使用绝对路径,可能会出问题。
(1) 新建一个Excel文件,将文件后缀名修改为.csv或者另存为csv文件
(2) 在文件里面写入数据,如下:
基于jmeter的性能测试(一)_第24张图片

(3) 可用notepad++打开,如下:
基于jmeter的性能测试(一)_第25张图片

4.2 CSVREAD函数使用方法

(1) 选项->函数助手对话框->函数助手,选择CSVRead函数
(2) 填入文件名和文件列号
(3) 点击生成
(4) 复制函数字符串
基于jmeter的性能测试(一)_第26张图片

(5) 将函数字符串粘贴到请求信息中
基于jmeter的性能测试(一)_第27张图片

(6) 运行查看结果
基于jmeter的性能测试(一)_第28张图片

5. 参数化方法3-CSV DATA SET CONFIG

(1) 添加CSV data set config:右键单击线程组->添加->配置元件->CSV Data Set Config
基于jmeter的性能测试(一)_第29张图片

(2) 填入文件名(filename)、编码方式(file encoding)、变量名(以逗号分隔)
基于jmeter的性能测试(一)_第30张图片
基于jmeter的性能测试(一)_第31张图片
(3) Allow quoted data:是否考虑引号,默认不考虑(false),如果数据中有”123,456”,如果不考虑引号,则会按照逗号分隔,如果考虑引号,则引号中的逗号不会被分隔,即123,456是一个整体。
CSV数据如下:
基于jmeter的性能测试(一)_第32张图片

  • 考虑引号时,引号里面的内容被视为一个整体:
    基于jmeter的性能测试(一)_第33张图片
    基于jmeter的性能测试(一)_第34张图片

  • 不考虑引号时,严格按照逗号分隔:
    基于jmeter的性能测试(一)_第35张图片
    基于jmeter的性能测试(一)_第36张图片

(4) Recycle on EOF:文件读取结束后是否循环,默认循环(true),比如只有100个用户信息,但需要200个人登录,如果true,则会循环取数据
(5) Stop thread on EOF:当取不到数据时是否停止,true代表停止,false代表不停止,但取不到数据,会导致这几个请求实际没有传参。如果(4)选择了循环,则这一项永远不会触发。
CSV数据如下:
基于jmeter的性能测试(一)_第37张图片

  • 线程数设为5个人时,选择循环:
    基于jmeter的性能测试(一)_第38张图片

  • 线程数设为5个人时,选择不循环且读取完之后就停止:
    基于jmeter的性能测试(一)_第39张图片
    基于jmeter的性能测试(一)_第40张图片

  • 线程数设为5个人时,选择不循环且读取完之后不停止:
    基于jmeter的性能测试(一)_第41张图片

(6) Sharing mode:分享模式,all threads——给所有线程使用,current thread group——给当前线程组使用,current thread——给当前线程使用。
(7) 请求信息参数化
基于jmeter的性能测试(一)_第42张图片

(8) 运行查看结果
基于jmeter的性能测试(一)_第43张图片
基于jmeter的性能测试(一)_第44张图片

你可能感兴趣的:(性能测试,软件测试)