Transformer 使用
- 1、引言
- 2、安装及调用
- 2.1 介绍
- 2.2 安装
- 2.3 使用
- 2.3.1 保存HAR files
- 2.3.2 命令行工具
- 2.3.3 作为库被调用
- 3、 创建HAR-file
- 3.1 简介
- 3.2 录制场景
- 3.3 保存HAR
- 3.4 特定场景
- 3.4.1 制定权重
- 3.4.2 分层方案
- 3.4.3 忽略特定URL
1、引言
在使用Locust时, 都会想到,
那么,有没有一种工具,把浏览器的记录,自动的转换成locust文件呢?
那么,又是如何转换的呢?
今天,就跟着小鱼一起,看看如何把浏览器记录 自动转换成 Locust文件
2、安装及调用
2.1 介绍
Transformer概括来说就是一个命令行工具 和Python库,用户将web浏览器的记录(HAR files) 转换成Locust负载测试方案(即 “locustfiles”)。
用它来重播HAR file(存储浏览器的浏览记录)在Locust的负载测试中。
2.2 安装
安装方式,同样是 pip 安装
transformer 安装
注意
Tranformer 暂时并不支持新的Locust 版本(1.0及以上版本)
所以,如果要使用Tranformer,就需要确认 Locust的版本。
我们来指定安装 Locust 版本:
Locust 安装
2.3 使用
2.3.1 保存HAR files
问:我们把浏览记录保存成HAR 格式,需要分几步?
答:需要分三步。
第一步
打开浏览器 开发者模式,即 按下 F12。
第二步
浏览数据,使其生成数据
第三步
选择需要保持的数据,点击鼠标右键→保存成 HAR 。
如下图
注:
关于如何创建HAR file,在第3章节,会详细介绍。
2.3.2 命令行工具
我们把HAR-files 转换成locustfiles,
直接转换即可,
注
my_har_files_directory 是刚刚保存的 HAR 文件
2.3.3 作为库被调用
我们把HAR-file 转换成locustfile,当成python库被调用。
老规矩,上代码。
代码
3、 创建HAR-file
3.1 简介
HAR文件是JSON文件,用于存储从服务器的角度“重放” Web浏览会话所需的所有内容。
它们包含由Web浏览器发出的所有Web请求以及来自服务器的相应响应。
因此,我们经常将HAR文件称为场景:就像戏剧或电影的场景一样,它描述了应该发生的情况。
Transformer将这些HAR文件转换为一个程序,该程序 通过大规模重放记录的场景来对访问的网站进行负载测试。
3.2 录制场景
因为小鱼对chrome是很钟爱的,所以,就拿chrome来举例,
但是firefox 浏览器操作方法也一样,所以,在这里就不单独说明了。
在录制场景时, 我们需要做以下几步:
①准备方案
②启动浏览器,(需要确认只有想要的Cookie,而没有多余的Cookie)
③打开开发者工具,(通常 F12)
④选择 Network tab
⑤选择禁用缓存并保存日志
⑥通过单击清除🚫按钮清除现有日志。
⑦确保已启用录制:“录制”按钮应为红色🔴(单击以进行切换)。
⑧通过在地址栏中输入URL来导航到目标站点。
⑨通过单击页面,填写表格,单击按钮等来执行方案。
注:
在每次单击/操作之后以及下一次单击/操作之前,
建议数据全部被加载完成,或者说数据被全部清理干净。
这样可以确保正确记录所有请求。
图片展示
3.3 保存HAR
在完成方案后,就可以执行以下的操作:
①单击“录制”🔴按钮结束录制。
②右键单击“Network”面板底部窗格中,输入文件名。
③选择 HAR 并"另存为…"到指定的位置。
注:
查看保存的HAR文件内容的方法:
将HAR文件拖放到Chrome开发者工具网络面板中即可
3.4 特定场景
3.4.1 制定权重
默认情况下,Transformer认为所有方案的权重均为1,
我们如果需要修改权重,可以创建关联的权重文件为每个HAR文件指定不同的权重。
例如
要权衡abc.har场景,请abc.weight在同一目录中创建一个文件。
abc.weight应该包含您要关联的权重abc.har,例如2或76。
注
权重 必须为正,非空正数
展示一下方案文件组构成
Transformer将在相应的locustfile中指定的权重:
情境 重量
scenario1.har 1个
scenario2.har 3
情景 | 权重 |
scenario1.har | 1 |
scenario2.har | 3 |
这就意味着 Locust 运行时,scenario2.har 是 scenario1.har 的3倍。
3.4.2 分层方案
在某些情况下,可能无法一视同仁:
・有些仅适用于您的负载测试目标的一部分,
・一些更繁琐的运行方案。
为了更适应这种运行方案,我们可以设置成一个分层结构,
每个目录都可能与特定权重相关联:
scenarios/
|-------Germany/
|--------|----------scenario_1.har
|--------|----------scenario_2.har
|--------|----------scenario_2.weight
|------- Germany.weight
|------- witzerland/
|--------|----------scenario_1.har
|--------Switzerland.weight
目录的重量文件(Germany.weight,Switzerland.weight)类似的场景重文件,但适用于整个目录(相对同级别的其他目录)。
就像HAR文件一样,没有权重文件的目录的默认权重为1。
同样,方案可以任意嵌套
scenarios/
|-------Germany/
|--------|----------beauty/
|--------|----------|-----checkout.har
|--------|----------kids/
|--------|----------|-----frontpage.har
|--------|----------kids.weight
|--------|----------|-----scenario_1.har
|------- Germany.weight
|------- witzerland/
|--------|----------scenario_1.har
|--------Switzerland.weight
Transformer将在结果locustfile中生成嵌套的Locust TaskSet。
3.4.3 忽略特定URL
默认情况下,Transformer提供的HAR文件中找到的所有请求。
但是,可以通过在执行Transformer的目录中创建文件来将某些URL列入黑名单(即忽略)
例如
创建 testurl.urlignore
则,在执行时的时候,会忽略带有上面信息的url地址
例如
・https://www.google.com,
・https://www.baidu.com/,
嗯,今天的分享,就到这里。