如何使用JMeter录制Angular JS/React JS应用请求及创建性能测试用例
解决JMeter录制Angular/React应用请求不显示的问题
Angular和React这类单页应用(SPA)依赖异步AJAX/Fetch请求交互,JMeter默认代理经常抓不到请求,按下面的方法排查解决:
- 配置HTTPS证书:SPA大多用HTTPS,JMeter代理没证书抓不到加密请求。启动HTTP(S) Test Script Recorder,点击"Generate Root CA"生成证书,然后把证书安装到浏览器或系统证书库,务必设置为信任状态。
- 关闭浏览器缓存:SPA会缓存静态资源甚至部分API请求,录制前打开浏览器开发者工具,在Network面板勾选"Disable cache",避免请求被缓存跳过录制。
- 调整代理过滤规则:在JMeter的HTTP(S) Test Script Recorder里,检查"URL Patterns to Include",把应用的API路径加进去(比如
/api/*),别让默认规则把关键请求过滤掉;同时确保"Target Controller"选对要保存请求的线程组。 - 用HAR文件导入替代录制:如果代理还是不好使,直接用浏览器Network面板导出HAR文件(右键请求列表→Save all as HAR with content),然后在JMeter的HTTP(S) Test Script Recorder里点"Load HAR"导入,自动生成测试脚本,这个方法比代理录制更靠谱。
针对Angular/React应用创建性能测试用例的方法
SPA的性能测试重点在后端API,别浪费精力在前端静态资源上,按以下步骤来:
- 聚焦核心业务流程:先梳理用户常用操作,比如登录、数据查询、表单提交、页面切换,只针对这些操作对应的API做测试,静态资源(css、js、图片)直接忽略,或者用JMeter的"HTTP Request Defaults"设置排除规则。
- 处理动态参数:SPA的请求常带动态参数,比如登录返回的token、请求签名、时间戳。用JMeter的JSON Extractor从响应里提取这些参数,比如提取
access_token,然后在后续请求的请求头或参数里用${access_token}引用。 - 模拟真实用户行为:SPA页面切换是前端路由,不会刷新页面,但会触发API调用。按用户操作顺序编排请求,比如登录→加载列表→查看详情→提交修改,还要加思考时间(用Constant Timer设置1-3秒间隔),模拟用户操作的停顿。
- 保持会话状态:SPA一般用Cookie或LocalStorage存会话,JMeter默认自动管理Cookie,但如果是LocalStorage里的token,要手动提取后加到请求头里(比如
Authorization: Bearer ${token})。 - 参数化测试数据:用CSV Data Set Config把用户名、查询条件、表单数据存到CSV文件里,让每个线程用不同的数据,模拟多用户不同操作场景。
- 加断言和监控:每个API请求都要加响应断言,比如检查状态码是200,或者响应体包含预期关键词,确保请求成功。再添加Summary Report、Graph Results这类监听器,实时看吞吐量、响应时间、错误率。
内容的提问来源于stack exchange,提问作者Everest
相关产品推荐
相关产品推荐

