软件测试:k6(新一代性能测试工具,千字让你了解并爱上它)

大家好,我是不许😎,今天为大家带来的是超级好用的测试工具k6。一起来学习,让我们小白也能称为测试高手!本篇只是简介,后续将会进行实际的测试@希望大家能关注不许,谢谢大家

在这里插入图片描述

一、什么是k6

简介

k6 是一个免费、开源、高性能的负载测试工具,能有效提高性能测试的生产力。它总结了LoadImpact在负载和性能测试行业的多年经验,提供了简洁、方便的脚本API,支持本地和云端执行,可进行灵活的配置。

k6 支持的功能特性

🐒使用基于ES6语法的编写脚本:支持模块化,以便更好地实现代码复用

🐒所有的东西都是代码:为了版本控制更友好,测试逻辑和配置选项都在JS脚本中

🐒友好:检查和阈值的存在,使得持续化配置构建更加容易

🐒支持HTTP1、HTTP2、WebSocket和gRPC协议

🐒支持TLS:配置客户端证书、SSL/TLS版本以及加密套件

🐒内置支持了很多特性:Cookies、加密、自定义指标、编码、环境变量、JSON、HTML表单等

🐒内置HAR转换器:将浏览器搜集的网络信息har文件直接转换为k6脚本

二、k6的安装

进入官网

https://k6.io/docs/getting-started/installation/

在这里插入图片描述

然后,向下拉

在这里插入图片描述

下载完成后,执行这个文件

(我已经安装过了,所以不再演示。安装过程一路next就可以。)

测试是否安装成功

打开终端,输入k6

在这里插入图片描述
如图所示,则安装成功!🐒🐒🐒

k6 支持三种测试执行模式

🐒当地:在本地计算机或 CI 服务器上。
🐒云:在由 k6 Cloud 管理的云基础架构上。
🐒群集:在由您管理的多台计算机上。尚不支持.

三、基础案例

编写js文件

我用的编译器是visualStudioCode,其它类型的编译器也可以,根据读者自己的习惯

import http from 'k6/http';
import { sleep } from 'k6';

export default function () {
  http.get('https://test.k6.io');
  sleep(1);
}

将js保存在你熟悉的路径下,然后执行
例如,我的文件在D:\visualStudioCode\js存放
所以输入

k6 run D:\visualStudioCode\js\script.js

在这里插入图片描述
此时,正在测试,稍等后
在这里插入图片描述
其中有很多参数

名称类型作用
data_receivedCounter接收的数据量
data_snetCounter发送的数据量
http_req_blockedTrend在启动请求之前,被阻止(等待空闲的 TCP 连接槽位)所花费的时间
http_req_connectingTrend建立与远程主机的 TCP 连接所花费的时间
http_req_durationTrend请求的总时间。它等于http_req_sending + http_req_waiting + http_req_receiving(即,在没有初始 DNS 查找/连接时间的情况下,远程服务器处理请求和响应所需的时间)
http_req_failedRate根据setResponseCallback
http_req_receivingTrend从远程主机接收响应数据所花费的时间
http_req_sendingTrend将数据发送到远程主机所花费的时间
http_req_tls_handshakingTrend与远程主机握手 TLS 会话所花费的时间
http_req_waitingTrend等待来自远程主机的响应所花费的时间(也称为“第一个字节的时间”或“TTFB”)
http_reqsCounterk6 生成的 HTTP 请求总数
iteration_durationTrend完成一次完整迭代所花费的时间,包括花费的时间设置和拆卸.要计算特定场景的迭代函数的持续时间
iterationsCounterVU 执行 JS 脚本的聚合次数(违约函数)
vusGauge当前活动虚拟用户数
vus_maxGauge最大可能数量的虚拟用户(VU 资源是预先分配的,确保在纵向扩展负载级别时不会影响性能)

运行一个负载测试,其中包含20个虚拟用户和20s持续时间

输入指令(注意自己保存的script.js文件的路径)

k6 run --vus 20 --duration 20s D:\visualStudioCode\js\script.js

在这里插入图片描述

🐒到此为止,你基本上就初步了解了什么是k6以及最简单的案例使用。

四、测试类型

在这里插入图片描述

🐒烟雾测试角色是验证您的系统是否可以处理最小的负载,而不会出现任何问题。

🐒负载测试主要关注根据每秒并发用户数或请求数评估系统的性能。

🐒压力测试和尖峰测试关注在极端条件下评估系统的极限和稳定性。

🐒浸泡测试告诉您有关系统在较长时间内的可靠性和性能的信息。

烟雾测试

概述

冒烟测试是一种常规负载测试,配置为最小负载。您希望在每次编写新脚本或修改现有脚本时将冒烟测试作为健全性检查。

目的

1、验证测试脚本是否没有错误。
2、验证您的系统在最小负载下不会引发任何错误。

负载测试

概述

负载测试是一种性能测试类型,用于确定系统在正常和峰值条件下的行为。

负载测试用于确保当许多用户同时访问应用程序时,应用程序执行得令人满意。

目的

🐒评估系统在典型负载和峰值负载下的当前性能。
🐒确保在对系统(代码和基础结构)进行更改时继续满足性能标准。

🐒🐒🐒请注意,此测试有一个简单的阈值。99% 请求的响应时间必须低于 1.5 秒。阈值是确保系统满足为其设置的性能目标的一种方式。

阈 值

什么是阈值?

阈值是通过/未通过标准,用于指定受测系统的性能预期。

压力测试

概述

压力测试是一种负载测试,用于确定系统的极限。该测试的目的是验证系统在极端条件下的稳定性和可靠性。

目的

🐒您的系统在极端条件下的行为。
🐒就用户或吞吐量而言,系统的最大容量是多少。
🐒系统的断点及其故障模式。
🐒如果您的系统将在压力测试结束后无需手动干预即可恢复。

尖峰测试

概述

尖峰测试是一种压力测试,它会立即通过极端的负载激增使系统不堪重负。

目的

🐒您的系统在流量突然激增的情况下将如何运行。
🐒 如果您的系统将在流量消退后恢复。

侵泡测试

概述

浸泡测试可发现由于系统长时间处于压力下而导致的性能和可靠性问题。

可靠性问题通常与错误、内存泄漏、存储配额不足、配置不正确或基础结构故障有关。性能问题通常与不正确的数据库调整、内存泄漏、资源泄漏或大量数据有关。

通过浸泡测试,您可以在短短几个小时内模拟几天的流量。

目的

🐒验证您的系统是否没有受到错误或内存泄漏的影响,这些错误或内存泄漏会导致崩溃或在运行数小时后重新启动。
🐒验证预期的应用程序重新启动不会丢失请求。
🐒查找与偶尔出现的争用条件相关的 Bug。
🐒确保您的数据库不会耗尽分配的存储空间并停止。
🐒确保您的日志不会耗尽分配的磁盘存储。
🐒确保您所依赖的外部服务在执行一定数量的请求后不会停止工作。

🐒🐒🐒后续将会进行具体的测试案例,希望大家关注我,持续更新更多有用的干货!!!

  • 49
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 44
    评论
k6 是一款开源的负载测试工具,用于对网站、应用程序和后端 API 进行性能测试。在进行 k6 性能测试时,我们可以通过设置不同的参数来实现不同的测试目标和需求。 1. 虚拟用户数量(VUs): k6 允许我们根据需要模拟不同数量的虚拟用户,并发地执行测试脚本。根据被测试应用程序的预期负载,我们可以设置虚拟用户数来模拟实际使用情况。 2. 请求频率(rps): 通过设置每秒钟发送的请求数,我们可以模拟用户在一段时间内对应用程序的访问频率。可以根据实际需要调整请求频率,以测试应用程序在不同负载下的性能表现。 3. 测试持续时间: 我们可以设置测试的持续时间,即在一段时间内执行测试脚本。测试持续时间取决于所需的测试精度和测试目标。较短的持续时间可能适用于初步评估性能问题,而较长的持续时间则更适合进行长时间负载测试。 4. 结果输出: k6 提供了多种结果输出选项,例如将结果保存到本地文件、生成 CSV 或 JSON 格式的报告,或将结果发送到云平台进行集中存储和分析等。通过设置适当的结果输出参数,我们可以方便地获取测试结果以便分析和评估性能。 总结来说,通过调整虚拟用户数量、请求频率、测试持续时间和结果输出等参数,我们可以根据测试需求对应用程序进行性能测试,并得出相应的结果分析,以帮助开发人员优化应用程序的性能和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不许代码码上红

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

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

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

打赏作者

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

抵扣说明:

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

余额充值