Jmeter脚本录制功能依赖第三方工具Badboy,所以在安装了Jmeter之后,还需要再安装一个工具。
Badboy本身自带浏览器,相关操作只能在Badboy上进行操作,偶尔可能会遇到浏览器兼容的问题导致录制失败。
有没有不需要安装第三方工具,不限制浏览器兼容的方法呢?
HTTP代理服务器
Jmeter自带的组件-HTTP代理服务器来进行脚本的录制,此功能可以录制Web/APP端的脚本。
一、录制Web端的脚本
本次使用的是Jmeter 5.0版本,chrome浏览器
1.浏览器设置
设置-高级设置-打开代理设置-局域网设置-代理服务器
地址可以是localhost或127.0.0.1,端口与HTTP代理服务器端设置的端口号一致
2.Jmeter添加-线程组
用于指定脚本录制路径
3.Jmeter添加-HTTP代理服务器
测试计划>右键>添加>非测试原件>HTTP代理服务器
端口:
默认为8888,可修改。但要注意,端口不能被其它程序占用,端口信息要与浏览器设置保持一致。
cmd.exe中使用如下命令检查端口使用情况:
1)netstat -an --列出本机所有使用端口信息
2)netstat -aon|findstr "8888" --查询端口是否被占用
3)tasklist|findstr "8888" --查询对应端口被什么程序占用
目标控制器:
录制脚本存放路径,可指向第2步创建的线程组(测试计划>线程组)
分组:
录制脚本时会增加很多节点,为了便于查看与管理,可以对这些节点进行分组
可选值有:不对样本分组、在组间添加分隔、每个组放入一个新的控制器、只存储每个组的第一个样本、将每个组放入新的事务控制器中
记录HTTP信息头:将Header头信息录制下来
添加断言:录制时加入空的断言,后需需要手工增加断言内容
Regex Matching:是否使用正则表达式匹配断言。应用时需要增加一个正则表达式提取器。
HTTP Sampler settings:
Prefix-为录制脚本增加前缀,配置为登录,脚本展示为,参见图中登录5、登录9;
Tracnsaction name-为录制脚本命名,配置为首页加载,脚本展示为,参考图中11 首页加载。
通过此配置,可以手工将脚本进行分组,便于后需查看和编辑。
Type:生成那种类型的取样器,可选值有HTTPclient4、java和空。
历史版本默认为JAVA,不知什么时候改为默认空了。
从HTML文件获取所有内含的资源:是否从HTML文件获取所有内含的资源。
自动重定向:当遇到重定向,自动跳转,不记录重定向过程请求。
跟随重定向:默认勾选,当遇到重定向时,记录重定向过程请求。
使用KeepAlive:默认勾选,对应Http响应头中的Connection:Kepp-Alive
Requests Filtering请求筛选
通过此功能筛选掉不必要的请求,Jmeter会把js、png、swf及动态请求全部录制下来,会有很多冗余脚本。
Content -type filtert:通过Content-type进行筛选。常见的包含application/x-www-form-urlencoded、text/xml、application/json、multipart/form-data等。
排除模式:可以添加URL、路径等信息作为排除项
Notify Child Listeners of filtered samplers:通知筛选的采样器的子侦听器,匹配一个或多个排除模式的任何响应都不会传递给子侦听器。
4.启动代理服务器
点击“启动”,(首次加载较慢)会提示Root CA certificate Apache Jmeter TemporaryRootCA Created in Jmeter bin directory:
此消息只是让用户信任JMeter proxy的身份,有两种方法都可以解决
1)直接在浏览器录制时选择信任发来的证书;
2)提前将JMeter Proxy的Root CA证书导入浏览器,完成信任,再开始录制动作。
不过忽略也可以,在浏览器中进行相关操即会被记录下来。
5.应用
本地可以访问系统并录制脚本,外网访问会受限制,浏览器去除代码设置后返回正常。
日常接口测试,如果不想手工录制信息到Jmeter,也可以通过此方式进行录制。
二、录制APP端脚本
其实在电脑端的设置和Web录制中的设置都是一样的,只不过在APP端需要设置代理。
通过无线网络设置代理,计算机开启wifi,手机连接,保证手机连接的网络与电脑网络在同一局域网内。
无线设置》WLAN》链接对应的无线网络》点击链接的无线网络》配置代理
与Web端配置类似,服务器IP配置为电脑IP,端口与HTTP代理服务器中的设置的一致
配置完成后,就可以进行相关录制操作。