前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K6负载测试工具初探

K6负载测试工具初探

作者头像
Python研究所
发布2022-06-17 08:56:04
8050
发布2022-06-17 08:56:04
举报
文章被收录于专栏:大飞的部落阁大飞的部落阁

前言

近几年,k6 测试工具逐步出现在我们的视野中。其被人们称为新一代负载测试工具,对 JmeterLocustWrk 等传统负载测试工具提出了挑战。

关于 k6

k6 是用 Go 语言开发,使用 JavaScript 作为驱动脚本来进行负载测试的工具。其作为后起之秀,拥有灵活性高、并发能力强等特点。唯一的要求就是使用者需要熟悉 JavaScript 语法。

呆猫

安装 k6

Windows

windowswinget 是系统自带,但是速度堪忧;所以 windows 我建议使用 choco 安装 k6,但是 choco 是需要我们手动安装的。

安装 choco

代码语言:javascript
复制
# cmd
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

# powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

安装 k6

代码语言:javascript
复制
choco install k6
# 或者
winget install k6
MacOS
代码语言:javascript
复制
brew install k6
Linux
代码语言:javascript
复制
# apt系
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6

# dnf/yum系
sudo dnf install https://dl.k6.io/rpm/repo.rpm
sudo dnf install k6
# 或者
sudo yum install https://dl.k6.io/rpm/repo.rpm
sudo yum install k6

查看 k6 安装结果

k6版本信息
k6版本信息

k6 测试脚本

安装好了 k6,我们就可以开始开发测试脚本了。

这个例子我们计划对 k6 官方测试接口进行负载测试。

代码语言:javascript
复制
import http from 'k6/http';
import { sleep } from 'k6';
export default function () {
  http.get('http://test.k6.io');
  sleep(1);
}

执行测试

测试命令

代码语言:javascript
复制
k6 run --vus 10 --duration 30s .\demo.js
  • --vus:虚拟用户数
  • --duration:持续测试时间

更多参数可以通过 k6 run --help 查询

测试过程
测试过程
测试结果
测试结果

测试结果指标

项目

释义

data_received

k6 收到的数据和速率

data_sent

k6 发送的数据和速率

http_req_blocked

请求发起前阻塞的时间

http_req_connecting

和远程主机 TCP 链接所花费的时间

http_req_duration

请求总共花费的时间,等于:发送+等待+接收

http_req_failed

失败的请求比例和数量

http_req_receiving

从远程主机接收数据花费的时间

http_req_sending

数据发送到远程主机所花费的时间

http_req_tls_handshaking

与远程主机 TLS 握手花费的时间

http_req_waiting

等待远程主机响应所花费的时间

http_reqs

k6 总共生成的请求数和速率

iteration_duration

完成一次测试花费的时间,包含 setup 和 teardown

iterations

测试中 VU 执行测试脚本的总次数

vus

用户数范围

vus_max

最大的虚拟用户数

对于如上的指标,我们比较关注的是 http_req_duration(Time)、http_reqs(TPS)。

对于以上测试,我们可以得出 Avg-Response-Time622.59msP90-Response-Time1.05sTPS7.6

以上就是我们今天的全部内容了,希望能够对你入门 k6 有所帮助。

参考:https://k6.io/docs/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 关于 k6
  • 呆猫
    • 安装 k6
      • Windows
      • MacOS
      • Linux
    • k6 测试脚本
      • 执行测试
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档