jmeter学习

1丶jmeter常用组件

组件: 前三个必备测试计划:jmeter接口测试的起点

线程组:一定虚拟用户(测试片段)

配置元件:配置信息

请求前:

前置处理器:请求之间的操作

逻辑控制器:控制请求的逻辑

定时器:延迟请求

取样器:发送请求

请求后:

后置处理器:请求之后的操作

断言:判断接口是否正常返

回监听器:收集测试结果

接口测试:

1.测试计划

2.线程组(测试片段)

3.Http请求默认值

4.Http Cookie管理器

5.http请求6.查看结果树

线程组:一个人执行接口测试,可以单独运行。测试片段:一个团队执行接口测试,不能单独运行。如果想要调试的话,自己需要通过【模块控制器】来运行,现在把测试片段发给测试组长之后组长需要通过【include控制器】来运行。

测试A,测试B,测试C,测试组长

2丶项目的接口协议

协议有: http,https,dubbo,webservice

接口路径组成部分协议:http服务器IP:101.34.221.219服务器端口:8010接口名称:s=index/index接口参数:application=app 可以是web或appapplication_client type=weixin 可以是pc或h5或weixin....

鉴权码token=token

异步请求ajax=ajax

3丶接口调试

1.查看请求四要素:请求方式,请求路径,请求参数,请求头

2.加调试取样器

接口分为前端接口和后端接口前端接口:不需要鉴权可以直接访问,谁都可以访问。后端接口:需要登陆才可以访问。

Content-Type:application/json用于指定请求的数据类型。

4丶接口关联

都是通过表达式取获取我们需要的值。

1.json提取器$

表达式都是从"$"开头,代表是根目录

“ . ” 代表子目录

凡是碰到{}通过"."取值,凡是碰到[ ]下标取值,下标从0开始。

“$..”+要找的名称 :递归查找

使用json变量: ${变量名 xxx} 

5丶参数 化配置

6丶通过查询数据库获得ID

1> 在测试计划中关联数据库驱动包

 

2>JDBC数据库连接配置  

Database URL: jdbc:mysql://IP:端口号/数据库名称?characterEncoding=UTF-8 

3> 创建 jdbc Request 填写2>步骤中的名称domeTest1, sql语句,定义变量名称。  

 

测试效果:

重点 uid_#: 代表的是总共查询了多少条数据

请求参数中可以使用 列: uid=${uid_1} 来获取数据库中的值

7丶查询多个商品:jmeter+mysql+ddt(笨)

 重点:如果说在取值的时候需要用到嵌套${ } 取值就需要使用到工具中的【函数助手对话框中的V函数。

1>添加循环控制器

2>在循环控制器中设置计数器

 

3>设置函数

 ${__V(uid_${number},)} 拿去接口处使用

案例图:

8丶 查询多个商品:jmeter+mysql+ddt(更简介)
逻辑控制器里添加 forEache控制器
9丶随机查询多个商品

以下方法比较麻烦,可以直接在 jdbcRequest中用sql去实现

1》随机生产一个数

先使用函数助手中的Random 生成一个随机数

生产后要稍加修改加前缀,uid_#在参数中要加 ${} 成为变量

例 : uid${__Random(1,${uid#},)}

单反牵扯到嵌套都要使用V函数来转换才能使用

 

2》随机生产多个数

1.使用sql

select id from 表名 order by rand() asc limit 5 //随机生产5组数据按升序排列

10丶无接口文档如何实现Jmeter接口自动化
一丶 加密接口测试

加密算法:www.bejson.com单向加密:不需要秘钥,加密不可逆,MD5,SHA

双向加密:对称加密:加密和解密使用的是相同的秘钥,AES,DES,BASE64

非对称加密:加密和解密使用的是不同的秘钥,RSA

自定义加密:由开发团队自己定义,由多种加密组成。

签名SIGN:验签规则比较繁琐

Jmeter支持的有:Base64,MD5,SHA系列五种,urlencode,其他没有了RSA加密,对不起,jmeter很难做。jmeter可以通过beanshel来处理。可以调用japa或python代码去实现。

//Base64加密方式:
import java.util.Base64;
//初始化一个Base64对象,调用encodeTostring()方法
String username = Base64.getEncoder().encodeToString("admin".getBytes("UTF-8"));
String password = Base64.getEncoder().encodeTostring("123".getBytes("UTF-8"));
//定义全局变量
vars.put("us"username);
vars.put("pw",password);

在前置处理中添加 BeanShell 预处理程序

 

定义完了后在接口中即可使用

 

MD5加密:

digest支持:MD5,SHA系列(SHA3不支持) 加密这两种

 

二、Jmeter命令行执行

全局设置:jmeter.save.saveservice.output_format=xml

jmeter.save.saveservice.response_data=true

jmeter.save.saveservice.samplerData=true

命令行的参数:-n 命令行执行用例

-t 指定你的测试脚本

-l生成 jtl 报告

jmeter -n -t a.jmx -l result.jtl

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值