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

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 深聊性能测试,从入门到放弃之: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 。


如下图


image.png

注:


关于如何创建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)来导航到目标站点。


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


注:


在每次单击/操作之后以及下一次单击/操作之前,

建议数据全部被加载完成,或者说数据被全部清理干净。

这样可以确保正确记录所有请求。


图片展示


image.png

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

Transformer将在相应的locustfile中指定的权重:

情境 重量

scenario1.har 1个

scenario2.har 3

image.png

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


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


相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
4天前
|
运维 Ubuntu 测试技术
自动化运维的利剑:Ansible在配置管理中的应用软件测试的艺术:探索性测试的深度与广度
【8月更文挑战第27天】 在数字化浪潮中,高效的运维工作是支撑企业IT系统稳定运行的关键。Ansible,作为一款简易而强大的自动化运维工具,正逐渐成为IT专业人士的新宠。本文将通过浅显易懂的语言和生动的案例,带你了解Ansible的核心概念、安装步骤、基础命令以及它在配置管理中的实际应用。我们的目标是让初学者能够轻松上手Ansible,同时为有经验的运维工程师提供一些实用的技巧和思路。
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
探索软件测试的未来:AI与自动化的融合
在数字化浪潮中,软件测试正经历着前所未有的变革。本文将带领读者穿越时间的长河,探讨软件测试的演变历程,并着重分析人工智能和自动化技术如何重塑这一领域。文章旨在启发思考,预测未来趋势,同时以通俗易懂的方式,为初学者和资深从业者提供有价值的见解和建议。
|
1天前
|
监控 测试技术 Python
软件测试的艺术与科学:探索测试自动化的奥秘
【8月更文挑战第30天】在软件开发的海洋中,测试是那把确保航船不偏离航线的罗盘。本文将带您一探究竟,从测试的基础到高级自动化策略,揭示如何通过代码和工具提升测试效率。准备好启航,因为我们将深入探讨软件测试的核心,以及如何利用自动化技术来优化您的测试流程。
11 4
|
1天前
|
物联网 测试技术 持续交付
软件测试的艺术与科学:探索自动化测试框架未来技术的融合与创新:探索区块链、物联网和虚拟现实的交汇点
【8月更文挑战第30天】在软件开发的海洋中,测试是确保航行安全不可或缺的灯塔。本文将带领读者揭开软件测试神秘的面纱,深入理解自动化测试框架的重要性和实现方法。通过实际案例,我们将一起探索如何构建高效、可靠的自动化测试系统,从而保障软件质量,提升开发效率。
|
2天前
|
测试技术
基于LangChain手工测试用例转Web自动化测试生成工具
该方案探索了利用大模型自动生成Web自动化测试用例的方法,替代传统的手动编写或录制方式。通过清晰定义功能测试步骤,结合LangChain的Agent和工具包,实现了从功能测试到自动化测试的转换,极大提升了效率。不仅减少了人工干预,还提高了测试用例的可维护性和实用性。
12 4
|
1天前
|
敏捷开发 测试技术 持续交付
软件测试中的自动化策略与实践云计算时代的网络安全挑战与对策
【8月更文挑战第30天】在软件开发的海洋中,自动化测试是一艘能够带领团队高效航行的帆船。本文将探讨如何搭建这艘帆船,从选择适合的自动化测试框架开始,到编写有效的测试脚本,再到持续集成的实施和测试结果的分析,我们将一步步揭开自动化测试的神秘面纱。你将学习到如何通过自动化测试来提升软件质量和开发效率,以及如何克服实施过程中的挑战。让我们一起启航,探索自动化测试的世界。
|
4天前
|
机器学习/深度学习 人工智能 算法
探索软件测试的未来:AI与自动化的融合之路
【8月更文挑战第27天】在数字化浪潮中,软件测试正经历一场由人工智能(AI)和自动化技术驱动的变革。本文将揭示这一趋势如何重塑测试流程,提升效率,并预测未来的发展方向。我们将一起走进智能测试工具的世界,探索它们如何协助人类同事确保软件质量,并展望一个更加互联、高效和智能的软件测试新时代。
|
4天前
|
机器学习/深度学习 人工智能 算法
探索软件测试的未来:自动化与AI的融合之路移动应用开发的新纪元:从原生到跨平台
【8月更文挑战第27天】在软件开发的世界中,测试是确保产品质量的关键步骤。随着技术的不断进步,传统的手动测试方法正逐渐被自动化和人工智能(AI)技术所取代。本文将探讨自动化测试的现状与挑战,并展望未来AI如何重塑软件测试领域,同时提供实用的代码示例,引领读者一窥自动化测试的未来趋势。
|
5天前
|
测试技术 持续交付 UED
软件测试中的自动化策略与实践
【8月更文挑战第26天】在软件开发的海洋中,自动化测试是一艘能够带领团队穿越波涛汹涌的质量保证之海的坚固船只。本文将探讨如何搭建这艘“船”,即构建有效的自动化测试框架,以及如何利用它来确保软件的稳定性和性能。我们将从基础的自动化测试概念出发,逐步深入到实际案例分析,展示如何通过自动化测试提升工作效率和产品质量,最终实现软件开发流程的优化。
|
5天前
|
机器学习/深度学习 数据采集 测试技术
利用Python实现简单的机器学习模型软件测试的艺术与科学:探索自动化测试框架的奥秘
【8月更文挑战第27天】在本文中,我们将一起探索如何通过Python编程语言创建一个简单的机器学习模型。我们将使用scikit-learn库中的线性回归模型作为示例,并通过一个实际的数据集来训练我们的模型。文章将详细解释每一步的过程,包括数据预处理、模型训练和预测结果的评估。最后,我们会用代码块展示整个过程,确保读者能够跟随步骤实践并理解每个阶段的重要性。
下一篇
云函数