(目录)JMeter

知识点

1、JMeter原理:接口和性能的自动化测试,通过添加一个线程组和HTTP请求和结果树,运行得出结果,将结果保存在结果树中

2、官方文档(帮助文档):https://jmeter.apache.org/usermanual/component_reference.html

3、执行顺序

  配置元件

  取样器

  监听器

4、接口输入的数据来源:

  • 手动输入
  • 读表配置
  • 从之前的接口的响应提取的

5、怎么判断接口是否成功?

  • 查看结果树 - 绿色(协议发送成功)
  • 本质-接口有没有实现相应的业务

6、请求的组成:(Request)

  • 请求行
  • 请求头
  • 中间空一行
  • 请求body

7、HTTP响应组成:

  • 状态行
  • 消息报头
  • 空行
  • 响应正文

 8、请求参数介绍

  • Get请求:
    • 参数都在请求行里 --可以在Webforms的QueryString查看(抓包工具)
    • 可配置在Path后面或Parameters(Jmeter)(参数只填一个地方即可)
  • Post请求:
    • 参数类型在请求头Content-Type 数据类型查看(抓包工具)
    • 参数可配置在:
      • x-www-form-urlencoded格式:在JMeter中填写在Parameters中
      • json格式:配置在JMeter中一定要填写在Body Data中,还要加信息头管理器因为jmeter默认发送的数据类型是 x-www-form-urlencoded

9、 参数化方法:

  函数参数化 -- 随机,

  csv参数化 -- 变量已存在

  数据库参数化

10、响应的content-type

 

 

11、语法:

  变量的引用:${变量名}

  函数的引用:(直接在函数助手复制)

 

12、脚本编写流程

  • 流水式的代码先写好  --  毛坯房
  • 优化脚本               -- 装修
    • 参数化
    • 关联
    • 断言

一、常用快捷键

1、ctrl + s:保存

2、ctrl + e:清除

3、ctrl + r:运行

二、快速上手JMeter

1、参考:https://www.cnblogs.com/wwho/p/14069876.html

 

三、线程组

 

四、取样器

1、HTTP请求

  主请求里面有很多子请求(JMetr可勾选显示出来)

2、调试取样器

  • 可以查看参数有没有读错

 

五、配置元件

1、HTTP请求默认值:https://www.cnblogs.com/wwho/p/14102497.html

2、HTTP Cookie管理器:

  https://www.cnblogs.com/wwho/p/14102451.html

  • 保存登录信息,HTTP是没有状态的,使用cookie来保存状态
  • 反复清除Cookie,如果有需要迭代的时候,比如登录不同用户购买不同商品就要勾上,因为一个用户登录了,会保存下Cookie,下一个用户登录的时候还是会用着前面那个用户登录的Cookie

3、HTTP信息头管理器

4、CSV数据文件设置(CSV Data set config)

 

六、监听器

1、查看结果树

 

七、函数助手

0

1、官方文档

2、函数参数化格式:${变量名}

3、random函数

4、__UUID函数(重复几率很少)

5、__time函数

6、__RandomDate:随机时间

  • ${__RandomDate(,2022-01-01,2022-02-01,,)}

7、_RandomString:随机字符串

  • 固定长度的随机数字,可用随机字符串来实现,用随机数字的话,第一位0会不显示

 

八、后置处理器

1、json提取器:https://www.cnblogs.com/wwho/p/14154912.html

  • JSONPath格式https://goessner.net/articles/JsonPath/
    • 取最后一个值用-1:
      • $.[0].children[-1:].children[0].title
  • 作用:可以把响应的数据提取出来作为变量让后面的接口使用
  • 注意事项:
    • json提取器提取的要放在想要其他数据的请求子集里面,不能跟请求同级,否则会出现后面的请求影响到前面的请求提取的数据
    • 例如,要把新建的学校禁用了,用JSON提取器提取新建学校的id和schoolID,如果把JSON提取器放到跟新建学校同级,会出现调试采样器能看到变量的值,但是执行完禁用学校后,变量的值没了。导致禁用学校出错

2、边界提取器:https://www.cnblogs.com/wwho/p/14154912.html

  固定两边取中间

  缺省值:边界提取器填错了取不到东西,就用缺省值取代替

3、正则提取器

  • 关联和正则:https://www.cnblogs.com/wwho/p/14147970.html
  • 提取器的作用:提取数据
  • 特殊字符含义:
    • .点:匹配任何单个字符,除了\n\r之外
    • +加号:匹配前面的子表示式一次或者多次
    • ?问号:当该字符紧跟在任何一个其他限制符(*,+,?)后面时,匹配模式是非 贪婪的,非贪婪模式尽可能少地匹配所搜索的字符串
    • *星号:匹配前面的子表达式任意次
    • ()小括号:将()之间的表示式定义为“组”,并且将匹配这个表示式的字符保存到一个临时区域
  • 正则表达式提取器里面重要参数:模板、组、匹配(match)的说明

  •  正则表达式提取的数据讲解:

  •  正则表达式提取器的使用步骤
    • 先找到需要提取的文本
    • 确定左右边界
    • 取什么   就把那些值  用 (.*?) 代替
    • 例子:laccount":(.+?),"statisticDatas
  • 转义字符 \:  https://www.cnblogs.com/wwho/p/14147970.html

 

九、断言

1、断言介绍:

  用于对采样器执行结果的检查,让jmeter工具自己判断接口是否成功,检验业务成功还是失败

  断言一般断主请求(接口)的响应,所以最好放在请求的子集里面

2、怎么找断言:

  • 断言断的是响应的数据,在响应数据(响应正文)里面找
  • 断言一般断成功的标记,一般是断业务状态码,message信息等;
    • 业务状态码一般由开发决定
  • 返回的是json格式:断code reson等
  • html格式 ,对比找关键字

3、断言的结果:

  断言成功,没有显示

  断言失败,变红,响应里面没有包含期望的东西

4、响应断言https://www.cnblogs.com/wwho/p/14106842.html

5、json断言:https://www.cnblogs.com/wwho/p/14133692.html

  Json断言取值JSONPath格式https://goessner.net/articles/JsonPath/

  JSONPath格式

    使用点表示法:$.store.book[0].title

    使用括号表示法:$['store']['book'][0]['title']

  Json取值只能一个个取,不能同时取多个

  JSon断言跟响应断言的区别

  • json断言更加精确一点
  • 只有响应是json格式的,才能使用json断言

 

十、使用jmeter的例子

1、jmeter查询天气等信息(key:要去申请才会给(聚合API))

  https://www.cnblogs.com/Samkes/p/16041715.html

  

报错整理

1、报错排查

  • 去结果树中检查requst的组成
  • 检查Request Body组成

2、错误码(Response code):

  • 500:服务器发生不可预期的错误
    • 可能请求里面没加信息头

3、登录不成功,因为网址的地方(POST http:....)多了个%20(空格),回到提交登录请求那里,把path里面的空格去掉

 

posted @ 2022-03-22 21:44  Samkes  阅读(55)  评论(0编辑  收藏  举报