jmeter接口测试[-面试篇-]
1 . 使用jmeter请求接口【背在一起】
- 线程组、
- 取样器(http请求)------- HTTP信息头管理器 ------HTTP请求默认值
- 监听器(察看结果树)
【HTTP请求】中,添加接口的请求方法、url,请求体。
其他:
- 配置元件【用户定义变量】存一些变量值。
- 请求前,参数处理、可以使用【前置处理器-JSR223预处理程序】,使用groovy语言,比如密码的MD5加密处理 (具体代码可以问c知道)
import java.security.MessageDigest
// 定义要加密的字符串
def password = "${password}"
// 创建 MessageDigest 实例并指定算法为 MD5
MessageDigest md = MessageDigest.getInstance("MD5")
// 将字符串转换为字节数组并更新摘要
md.update(password.getBytes("UTF-8"))
// 获取加密后的字节码数组并转换为十六进制表示形式
byte[] digest = md.digest()
String hashValue = digest.encodeHex().toString()
// 将加密后的值存储到 JMeter 变量中
vars.put("encryptedPassword", hashValue)
log.info("原始密码: ${password}")
log.info("加密后的密码: ${hashValue}")
提取响应体信息
要用到后置处理器
- 【json提取器】,json路径写法是$开头(可以现在察看结果树中测试)如果是对象中, 就 点属性,如果是数组, 就是 [0], 还可以 $.. 后面两个点,直接到下一层去找
- 【正则表达式提取器】, 可以获取字符串中某截数据
2. 请求接口如何判断是否正确(断言)【背在一起】
添加【断言-响应断言】
3. jmeter工具中可以怎么设置变量。【背在一起】
使用变量用${}, 定义变量有:
- 【-测试计划-】元件
- 【-配置元件-用户自定义变量-】元件
- csv数据 文件参数化--------
- 【配置元件 -- csv数据 文件设置】
- 进行数据驱动,可以是多个参数
7. jmeter中操作mysql数据库【背在一起】
- 【配置元件】-JDBC连接配置器
- 【取样器】-JDBC请求
- sql中可以使用变量
- 可以获取查询结果
- 可以写更新语句、删除语句
其他问题
4. jmeter怎么录制脚本
测试计划 --非测试元件---http代理服务器 (没在用)
还可以使用badboy录制,后导出jmeter格式。(也没咋用)
5. 定时器说说
固定定时器(Constant Timer)的主要功能是在同一线程内的请求之间引入固定的延时。通过这种方式,可以模拟更真实的用户行为
同步定时器,可以设置集合一小组用户,后并发请求。 若设置了超时时间,不为0,那么如果到了超时时间,没有等到那么多用户数,也会把已经集合的并发出去。
(线程组中,假如设置了100个线程,ramp-up时间为10秒,同步定时器可以指定 10个线程以小组)
注意:
- 【同步定时器】要放到要同步请求的前面
- 确保同步数 < 总线程数
- 100个线程,ramp-up时间为10秒 表示按约0.1秒/个的间隔逐步启动。 即大约 1秒启动10个
6. 非GUI执行.jmx文件
注: 改属性:jmeter.properties 其中 jmeter.save.saveservice.output_format=csv
注: -o 后面的报告文件,不支持覆盖。每次需要给一个新的
-l 生成的 xxx.jtl 可以被覆盖
# 先生成 jtl
jmeter -n -t xxxx.jmx -l xxx.jtl # 生成jtl再生成html , -n 表示非gui
jmeter -g xxx.jtl -o ./tmp/xxxreport1 # 注要有 tmp , xxxreport是要新创建的
# jmeter -n -t xxx.jmx -l ./jtl/xxx.jtl # 也可以加个目录
# 直接生成html
jmeter -n -t xxx.jmx -l xxxx.jtl -e -o ./tmp/xxxxreport2