一、写脚本注意事项(回顾):
-
协议: http,https必须写
-
域名或ip: 不能有/
-
请求方法: 看清楚接口文档
-
路径: 不要把 域名和ip再次
路径中,前后空格要看清楚 %20 空格的urlencoded编码
-
内容编码: utf8
-
请求体编码控制:
-
内容编码
-
消息头
-
参数,勾选编码 urlencoded
-
响应乱码:
-
乱码原因: GUI的编码
-
修改配置文件
-
请求体:
参数: form-data application/x-www-form-urlencoded
-
消息体数据: json xml,要特别注意:一定要添加请求头,Content-Type:application/json
二、脚本知识点延展:
-
没有接口文档?
-
可以通过抓包: F12 、fiddler、wireshark、Charles
-
第三接口:api接口
-
swagger: 获取接口信息
2. 录制脚本:
badboy: 曾经很流行,现在已经不维护,已经被遗弃
代理录制: 用于脚本参数比较多,或者用手动编写脚本,一时半会写不出来。代理服务器: 自己启动一个代理服务器,本地,要使用代理服务器的ip和端口,使用自己启动的代理服务器
代理录制脚本:
-
添加线程组
-
测试计划 > 非测试元件 > http代理服务器
-
ip就是你自己电脑的ip,port是可以修改,默认8888
-
目标控制器,一定要修改 修改为 测试计划>线程组
添加过滤器
3. 启动代理服务器时,会出现一个证书的弹窗,如果要抓取https信息时,就必须使用证书
4. 本地浏览器使用 代理服务器上网
三、脚本功能增强
-
关联: 前面接口的响应信息,有动态值,作为后续接口的参数
-
变量: 用户定义变量,用户参数
-
用户定义变量: 配置元件、测试计划,全局变量**
作用域:作用于整个‘测试计划’
在启动运行时,获取一次值,在运行过程中,不会动态获取值,在运行过程中,值一直都不变。
-
用户参数:前置处理器,局部变量
作用域: 作用于当前线程组或当前的取样器
在启动运行时,获取一次值,在运行过程中,还会动态获取值。
如:定义用户变量
var_user: 1888888888
引用变量: ${var_user}
jmeter的函数: 方法
1888888${__Random(1000,9999,)}: 字符串的连接
使用用户定义变量,设置5循环 register + login: 1次register-success 5次login-success
使用用户参数,设置5循环 register + login: 5次register-success 0次login-success
-
迭代: 一个线程组下所有的接口,全部执行完1次,才算1个迭代,可以勾选每一次迭代循环一次就会出现5,5
-
函数:方法,双下划线开头,函数名称,严格区分大小写,tools>函数助手
-
重要的函数
${__counter(,)} 计数器
${__dateTimeConvert(,,,)} 时间格式转换
${__digest(,,,,)} 加密 简单加密
${__intSum(,,)} 整数相加函数
${__P(,)} 获取属性函数
${__property(,,)} 获取属性函数
${__setProperty(,,)} 设置属性函数
${__Random(,,)} 设置随机数
${__RandomString(,,)} 设置随机字符串
${__threadNum} 获取线程号函数
${__time(,)} 获取当前时间戳函数
${__timeShift(,,,,)} 数据格式化
${__V(,)} 拼接函数