k6测试框架的快速入门及进阶(一)

一、初识k6

k6是由Load Impact开发的,用于对API、微服务和其他基于HTTP的系统进行负载测试和性能分析。k6本身使用Go语言编写,具有轻量级、高性能和易扩展的特点。它可以模拟数万并发用户,帮助开发者在开发过程中发现和解决性能问题。

k6使用JavaScript作为脚本语言,任何支持js格式的代码开发工具都能跟k6测试框架无缝集成。与传统的负载测试工具相比,k6编写和维护测试脚本都更加容易,用户可以创建自定义的性能测试脚本,模拟多种负载场景,包括并发用户数、请求速率、请求类型、网络带宽等,在真实的环境中对应用程序进行压力测试,发现问题并进行优化。

同时,k6支持与多种监控和数据分析工具集成,如Prometheus、Grafana和InfluxDB,方便进行性能测试结果的分析和可视化展示。k6支持多种协议,包括HTTP/2、WebSockets、gRPC以及SSL\TSL。

二、k6的执行模式

  • Local:测试完全发生在一台机器、一个容器或 CI 服务上,k6 run script.js(本文示例均使用Local模式
  • Distribute:测试通过 K8S 集群分布式地执行,kubectl apply -f /path/k6-resource.yaml,Distribute模式资料
  • Cloud:测试执行在 k6 的 cloud 环境上,k6 cloud script.js,Cloud模式资料

三、安装k6

1、Linux环境

首先确保你的系统上安装了Node.js 和 npm。你可以通过运行以下命令来安装 Node.js 和 npm:

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs

//安装完 Node.js 后,使用 npm 安装 k6
npm install -g k6

2、macOS环境

brew install k6

3、Windows环境

4、验证安装

四、编写简单代码并运行k6

如下图编写完代码之后,在Terminal终端输入:k6 run src/actions/simple-run.js,即可启动k6框架进行测试。

五、K6测试的生命周期

  • init code,通常指 import 一些必要的 module、定义 k6 的 options 和加载所需的本地文件
  • setup code,测试所需的前置步骤,一般是准备测试数据以及初始化测试环境
  • VirtualUser code,具体测试的逻辑代码在这里,一般是 API 调用逻辑以及度量的指标。对于业务而言,虚拟用户就是最大并发量,每个并发都要执行VirtualUser code中的所有代码。在 VirtualUser code 中还可以使用 scenario function 来代替 default function,关于 scenario 后面后续有机会再详细讲解。
  • teardown code,一般包括测试结果的处理、关闭测试环境和数据回收。

六、k6命令详解

1、基础命令

k6 run src/actions/simple-run.js

2、k6 run的参数

k6 run --console-output console_output.log --out json=json_output.log --vus 2 --duration 3s src/actions/simple-run.js
  •  --vus 2:2个虚拟用户,指最大并发量是2
  • --duration 3s:VirtualUser Code内容要持续执行3秒
  • -i 3:VirtualUser Code内容要执行3次(-i和--duration通常不一起使用
  • --console-output console_output.log:把console相关的内容输出到文件console_output.log中,比如:console.log()
  • --out json=json_output.log:以json格式输出粒度测试结果。默认情况下不使用任何输出,仅显示汇总的测试结束摘要。
  • k6 run --help 可以查看其他参数的作用

3、--out json=json_output.log示例

 在 json_output.log 文件中,可以通过 metric 的名字查到对应的明细,然后根据明细的 value 来判断本条校验是成功还是失败。value=1表示成功、value=0表示失败,这样我们就能找到哪条没有成功,进而分析解决。

七、options的作用

第六部分中第2点的截图显示我们可以把 --vus 2 --duration 3s 放到命令中,除此之外我们还可以通过options来实现相同的效果。options这个变量名是固定的,而且json对象中键值对的name必须跟k6 run支持的参数名一致。

八、重点语法

1、Object.assign()

2、文件读取

//打开文件并将其转换成Json对象
let serverConfig = JSON.parse(open("../config/data/server.json"));
//把Json对象转换成Json字符串
let configStr = JSON.stringify(serverConfig);

九、总结

认真看完本文后,相信你已经可以使用k6进行一些基础的测试了,而且有能力进行调试,console.log()可以辅助调试,--console-output console_output.log 可以把日志打印出来。也有能力找到失败的测试,--out json=json_output.log 可以把所有测试的执行结果全部记录下来。如果有更进一步的需求可以使用 k6 run help 来查看其他参数的作用,到此为止你就已经入门了,怎么样还是挺快的吧!

如果各位看官觉得本文对你有所帮助,请点赞、收藏、评论支持一下,我将感激不尽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

changuncle

若恰好帮到您,请随心打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值