深聊性能测试,从入门到放弃之:Locust性能自动化(七)HAR-files→locustfiles自动转换 :Transformer的使用

1、引言

在使用Locust时, 都会想到,
那么,有没有一种工具,把浏览器的记录,自动的转换成locust文件呢?
那么,又是如何转换的呢?
今天,就跟着小鱼一起,看看如何把浏览器记录 自动转换成 Locust文件

2、安装及调用

2.1 介绍

Transformer概括来说就是一个命令行工具Python库,用户将web浏览器的记录(HAR files) 转换成Locust负载测试方案(即 “locustfiles”)。
用它来重播HAR file(存储浏览器的浏览记录)在Locust的负载测试中。

2.2 安装

安装方式,同样是 pip 安装

transformer 安装

pip install har-transformer

注意

Tranformer 暂时并不支持新的Locust 版本(1.0及以上版本)

所以,如果要使用Tranformer,就需要确认 Locust的版本。

我们来指定安装 Locust 版本:
Locust 安装

pip install locustio==0.14.6

2.3 使用

2.3.1 保存HAR files

:我们把浏览记录保存成HAR 格式,需要分几步?
:需要分三步。

第一步
打开浏览器 开发者模式,即 按下 F12。

第二步
浏览数据,使其生成数据

第三步
选择需要保持的数据,点击鼠标右键→保存成 HAR

如下图
在这里插入图片描述

注:

关于如何创建HAR file,在第3章节,会详细介绍。

2.3.2 命令行工具

我们把HAR-files 转换成locustfiles
直接转换即可,

transformer my_har_files_directory/ >locustfile.py

my_har_files_directory 是刚刚保存的 HAR 文件

2.3.3 作为库被调用

我们把HAR-file 转换成locustfile,当成python库被调用
老规矩,上代码。

代码

# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-10-27
"""

import transformer

#打开文件
with open ("locustfile.py","w") as f :
	transformer.dump(f, ["my_har_files_directory/"])

3、 创建HAR-file

3.1 简介

HAR文件是JSON文件,用于存储从服务器的角度“重放” Web浏览会话所需的所有内容。
它们包含由Web浏览器发出的所有Web请求以及来自服务器的相应响应。

因此,我们经常将HAR文件称为场景:就像戏剧或电影的场景一样,它描述了应该发生的情况

Transformer将这些HAR文件转换为一个程序,该程序 通过大规模重放记录的场景来对访问的网站进行负载测试。

3.2 录制场景

因为小鱼对chrome是很钟爱的,所以,就拿chrome来举例,
但是firefox 浏览器操作方法也一样,所以,在这里就不单独说明了。

在录制场景时, 我们需要做以下几步

①准备方案

②启动浏览器,(需要确认只有想要的Cookie,而没有多余的Cookie)

③打开开发者工具,(通常 F12)

④选择 Network tab

⑤选择禁用缓存并保存日志

⑥通过单击清除🚫按钮清除现有日志。

⑦确保已启用录制:“录制”按钮应为红色🔴(单击以进行切换)。

⑧通过在地址栏中输入URL(例如 https://blog.csdn.net/wuyoudeyuer)来导航到目标站点。

⑨通过单击页面,填写表格,单击按钮等来执行方案。

注:

在每次单击/操作之后以及下一次单击/操作之前,
建议数据全部被加载完成,或者说数据被全部清理干净。
这样可以确保正确记录所有请求。

图片展示
在这里插入图片描述

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。

权重 必须为正,非空正数

展示一下方案文件组构成

$ ls
scenario1.har
scenario2.har
scenario2.weight

$ cat scenario2.weight
3

Transformer将在相应的locustfile中指定的权重:
情境 重量
scenario1.har 1个
scenario2.har 3

情景权重
scenario1.har1
scenario2.har3

这就意味着 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


google
www.baidu.com
https://csdn

则,在执行时的时候,会忽略带有上面信息的url地址
例如

・https://www.google.com,
・https://www.baidu.com/,
・https://blog.csdn.net/wuyoudeyuer,

嗯,今天的分享,就到这里。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl_奕然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值