如何将JMeter与Firebase连接并认证以开展移动应用负载测试
用JMeter实现Firebase负载测试的连接与认证步骤
1. 先抓包分析移动端的Firebase认证流程
- 给移动端设置代理(用Charles或Fiddler都行),完整记录一次登录/认证的请求链:
- 记下请求的URL(比如
https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=你的Firebase项目API_KEY) - 确认请求方法(一般是POST)、必填请求头(比如
Content-Type: application/json) - 复制请求体的JSON结构,比如邮箱密码登录的请求体是包含
email、password、returnSecureToken: true的格式 - 留意响应里的
idToken和refreshToken,这俩是后续请求的核心认证凭证
- 记下请求的URL(比如
2. 搭建JMeter基础测试框架
- 新建线程组,设置好并发数、循环次数这些负载参数
- 添加HTTP请求默认值,把Firebase API的域名(比如
identitytoolkit.googleapis.com)填进去,后续所有请求都能复用这个配置 - 添加HTTP Header管理器,把抓包得到的必要请求头加进去,比如
Content-Type: application/json
3. 实现Firebase认证请求
- 添加HTTP请求,配置细节:
- 请求方法选POST
- 路径填抓包到的认证接口路径,比如
/v1/accounts:signInWithPassword?key=你的API_KEY - 请求体用抓包的JSON格式,要是想批量测多用户,就用CSV数据文件设置导入邮箱密码列表,把请求体里的硬编码值换成变量,比如:
{ "email": "${email}", "password": "${password}", "returnSecureToken": true }
- 加个JSON提取器,从认证响应里把
idToken提出来:- 提取表达式填
$.idToken - 引用名称设为
idToken,后面的请求直接用这个变量
- 提取表达式填
4. 验证认证是否生效
- 加一个HTTP请求,调用你的应用里需要认证的Firebase接口(比如Firestore查询、Storage文件访问)
- 在HTTP Header管理器里加一行
Authorization: Bearer ${idToken},把提取到的令牌带进去 - 加个响应断言,检查返回状态码(比如200)或者特定响应内容,确认认证成功
5. 处理令牌过期问题(可选)
- Firebase的
idToken默认1小时过期,要是测试时长超过1小时,就用refreshToken刷新:- 新建HTTP请求,路径填
/v1/token?key=你的API_KEY - 请求体用:
{ "grant_type": "refresh_token", "refresh_token": "${refreshToken}" } - 再用JSON提取器把新的
idToken提取出来,替换原来的变量值就行
- 新建HTTP请求,路径填
6. 其他认证方式的适配(可选)
- 自定义令牌认证:如果你的应用用自定义令牌,先在后端生成合法令牌,然后调用
/v1/accounts:signInWithCustomToken接口,请求体传token和returnSecureToken: true - OAuth第三方登录:比如Google、Facebook登录,得抓包移动端的OAuth授权流程,拿到授权码后再调用Firebase的令牌交换接口,也可以用JMeter的OAuth插件简化操作
内容的提问来源于stack exchange,提问作者mahmoud rabie
相关产品推荐
相关产品推荐

