如何对需身份验证的网页执行性能测试?
测试需JWT身份验证的网页(JMeter实现方案)
针对Angular这类依赖浏览器localStorage存储JWT的客户端应用,用JMeter测试需身份验证的网页可以按以下步骤来:
1. 先获取有效的JWT令牌
- 添加HTTP请求元件,模拟登录接口调用:设置请求方法为POST,填写登录接口地址,根据后端要求的格式(JSON或表单)传入用户名、密码等参数。
- 添加JSON提取器(如果登录响应是JSON格式),从响应体里提取JWT字段,把它存为一个变量,比如命名为
JWT_TOKEN。如果响应是纯文本或其他格式,用正则表达式提取器也行。
2. 给浏览器注入JWT到localStorage
因为这类客户端应用是从localStorage读取令牌验证身份,所以需要用JMeter的WebDriver Sampler操作浏览器:
- 确保已经通过JMeter插件管理器安装了Selenium/WebDriver Support插件。
- 添加WebDriver Sampler,写入JavaScript代码,把提取到的JWT存入浏览器localStorage:
window.localStorage.setItem('token', '${JWT_TOKEN}');
(注意这里的token要和前端代码里读取的localStorage键名一致,比如有的项目叫authToken,要对应上)
3. 访问目标页面并验证
- 继续在WebDriver Sampler里添加导航代码,或者单独加一个WebDriver Sampler:
WDS.browser.get('https://example.com/orders');
- 添加响应断言或WebDriver里的断言逻辑,比如检查页面是否出现订单列表元素、页面标题是否符合预期,确认成功访问了需要验证的页面。
额外注意事项
- 如果JWT有过期时间,要在测试流程里加入令牌有效性检查,过期就重新调用登录接口刷新令牌。
- 每次测试前建议清理浏览器缓存和localStorage,避免旧令牌影响测试结果。
- 如果是API层面的测试(而非UI页面),直接在HTTP请求的请求头里添加
Authorization: Bearer ${JWT_TOKEN}即可,不需要操作localStorage。
内容的提问来源于stack exchange,提问作者Sohlae
相关产品推荐
相关产品推荐

