1. Jemter的下载和启动
下载网址: https://jmeter.apache.org/download_jmeter.cgi

解压使用:
- 打开bin下面的jmeter.properties中配置。修改sampleresult.default.encoding的值为UTF-8
sampleresult.default.encoding=UTF-8
- 双击 jmeter.bat 启动

- 如果界面是英文,可以调整成中文

2. 开始使用
- 测试计划--右键--线程--添加线程组

- 线程组--右键--取样器--http请求
这里以请求百度为例,内容根据需要填上对应的值

- 点中测试计划--右键--添加监听器--查看结果树

- 点中查看结果树,运行。
如果接口返回json格式化结果那里可以选择json

- 将测试计划保存下来,方便下次使用

3. 相关概念理解
- 测试计划 测试计划可以看做一个项目
- **线程组:**项目下面有多个模块(线程组)
- **http请求:**模块下面有好多接口(http请求)
- **查看结果树:**查看结果树就是接口返回的结果
4. 查看结果树的额外说明
- 点中Http请求,ctrl+c。 再点中线程组 ctrl+v,复制一个Http请求(改个名字改成Http请求2)

- 点中线程组,ctrl+c 。再点中执行计划 ctrl+v,复制出一个线程组2

- 现在 查看结果树,线程组,线程组2平级。都是在测试计划下面。
选中查看结果树点击运行按钮。我们可以看到四个请求全部发送

- 把查看结果数拖到线程组内,再次点击运行,只会查看当前线程组内的请求结果

5. 并发和顺序执行
并发执行:多个线程组同时执行(默认情况)

可以看出不同线程组下面是没有顺序的。
顺序执行: 多个线程组顺序执行
在测试计划下勾上独立运行每个线程组

再次运行就能看到请求是有顺序的

5. 优先和最后执行的线程组
点击测试计划新增两个线程组

然后执行

可以看出setUp 线程组的优先级比较高会先执行。
tearDown 线程组的优先级比较低会最后执行。
疑问:如果有两个setUp或者两个tearDown哪个优先级高?

结论:哪个线程组在上面,哪个就是爸爸。优先级高
6. 线程组常用的属性

7. HTTP请求默认值
对于多个接口url而言,可能就是请求路径部分不同。而请求协议,请求的服务器名或ip,端口都一样。这样我就可以吧共同的部分抽取出来。在jmeter中http请求默认值可能做到这一点。
- 新增一个Http请求默认值

- 把共同的部分抽取出来

- http请求中只要写路径

8. HTTP信息头管理器
对于一些新增或者修改接口。我们需要提交一些json数据,如果没添加请求头可能会报一些错误。
如下:新增一个用户,接口报错


这时我们需要用http信息头管理器添加请求头解决


9. 参数化
1. 用户定义的变量

新增一个addUser的变量。值为接口路径(/user)

在请求中引用变量即可

2. csv批量操作
假设我想新增多个user,我们可以用csv进行批量添加。
- 我们先用Excel写好三个用户并另存为csv文件。

- 新增csv数据文件设置

- 我们的csv中有两列。我们在变量名称那一行定义好变量名用英文逗号分割
变量名name,age对应csv中的姓名和年龄

- 在请求中引用name和age变量

- 选中查看结果树,点击运行

我们发现只是新增了一个。还有的数据没有新增。是因为我们还需要做一项设置,把线程组的永远勾上。就会循环添加所有用户了。

- 再次运行

3. 用户参数
- 在请求上添加用户参数

- 添加两个用户

- 点击线程组,把线程数调整为2,因为我们这里模拟的是两个用户操作

- 点击查看结果树,运行

4. 计数器函数
- 我们定义一个请求百度的http请求,并给线程组设置如下

- 执行后我们可以看到发送了6次请求 (2 * 3 )

- 这时我们想统计总共发了几次请求。就需要加一个计数器函数

- 使用复制的变量

- 可以看到有2个用户。每个用户单独统计

- 如果把变量中的true改成false 则每个请求都会计数一次,可以看到一共发送了6个请求

5. 随机数函数
- 复制出一个请求。然后将禁用上一个计数器函数的请求

- 选择随机数函数

- 在参数位置使用随机函数可以生成随机数

- 运行结果

6. 时间函数
- 再复制一个请求,禁用调其他两个

- 选择time函数

- 运行可以看到每个请求后面都带了时间,

- 当然我们也可以用这个放在请求参数的位置,来作为请求参数,这里就不演示了
10.JDBC请求
我们可以创建一个jdbc请求来查询数据库
- 在测试计划里面设置我们的mysql驱动包

- 添加jdbc配置元件

- 配置如下:起个名字和配置一下连接信息

- 在线程组下面添加一个Jdbc请求


- 执行可以看到结果

- 再新建一个调式取样器

- 再次执行,我们就能看到之前的userName变量的用处了

- 我们可以拿到上一步的userName_xxx变量,请求百度搜索


11. 断言
1. 响应断言
用来判断响应内容和响应状态码
- 对请求添加一个响应断言

- 对断言进行设置

- 由于响应体里面包含张三所有没有报错

- 我们改一下条件让响应体里面包含李四,再次执行,可以看到断言失败

对于其他的响应类型可以自行尝试

2. 大小断言
判断响应内容的字节长度
- 新增一个大小断言


3. 断言持续时间
判断响应时间
- 新增断言持续时间


- 执行报错,因为接口超过了1ms
