什么是k6
K6性能压测工具诞生于2016年8月,当时它作为开源项目发布,并迅速在开发者和企业中流行开来。它的产生背景主要是为了解决当时在测试过程中遇到的一些问题,比如ab测试功能不足、jemeter不容易代码化等。
K6是用Go编写的,它可以轻松编写测试脚本,并且结合了JavaScript运行时,支持用户编写测试脚本的测试套件。它适用于各种应用程序和系统的性能测试需求,能够快速、准确地评估系统的性能和稳定性2。
在2021年6月,Grafana Labs收购了k6,而事实上,Grafana与k6的缘分还要追溯到更早的2年前。在进行Grafana 6.0的短期令牌刷新行为的压测时,Grafana Labs进行了一系列的技术选型,由于Grafana Labs的大部分后端软件是使用Go来实现的,恰巧k6满足OSS和Go需求,并且负载测试是使用JS编写(Grafana前端框架及UI都在使用),这使得k6自Grafana 6.0版本开始,不断地为Grafana开发者及测试者完成追踪bug的使命。
安装k6
Mac,推荐brew安装
brew install k6
Windows,推荐winget安装
Windows 10 1709 (build 16299),赶紧安装winget吧
winget install k6
当然,如果WIndows 7 也可以用chocolatey安装
choco install k6
也可以通过官网下载.msi文件安装:Installation
选择自己想要下载的版本(本教程中,我们参照 windows 安装指南,使用官方的提供的安装程序进行安装。直接下载安装包进行安装。)
出现以下表示安装成功
浏览器扩展 + Cloud
实际复杂的测试怎么办呢?也用不着自己写所有的脚本。而是通过浏览器插件结合云端的方式,自动生成绝大部分脚本。
1、安装浏览器扩展
1、可翻墙,直接访问k6 Chrome插件地址:
k6 Browser Recorder
2、不能翻墙的话,访问这个网址:
Chrome Extension CRX Downloader
3、输入k6浏览器扩展的ID:phjdhndljphphehjpgbmpocddnnmdbda,下载crx文件。
4、把下载好的文件拖进来
5、插件安装好,先不要尝试录制,因为插件需要结合云端,待会录制接口再使用就好了
2、Cloud,注册github账号
1、直接登录github账号,没有账号点击注册账号
2、复制API,命令行运行
k6 login cloud --token <YOUR_K6_CLOUD_API_TOKEN>
录制脚本
1、在k6的浏览器扩展这里点击 Start recording,在浏览器上进行操作,录制接口
2、点击Start recording之后,即可进行操作,让扩展知道你操作了什么,录制完成后点击Stop。
3、扩展自动打开了http://app.k6.io云端:
4、保存脚本
录制完成后需要查看脚本,有时会出现少录或无脚本的情况,可借助其他抓包工具或者浏览器自带网络监测做对比,完善脚本内容
设置用户并发量
options可以编辑模拟用户并发量的
下面设置就是:前1分钟,虚拟用户增长到20.然后持续3分30秒,虚拟用户维持在20个。然后1分钟内,虚拟用户减到0,完成测试。
运行
1、公网
如果是公网直接点击run test 就可以运行
2、局域网
这里我模仿一下局域网测试,这种情况多在政府或国企内网非常常见。
打开右上角的Script,然后COPY SCRIPT
复制到编辑器,保存为.js格式
命令行运行:k6 run 文件名.js
第一个红框,显示的是综合测试指标,平均响应时间、最小响应时间、最大响应时间,p90、p95等数据。
第二个红框,显示的是每次迭代测试测数据,比上面的数据都多了1秒。因为这是模拟用户使用习惯,也就是sleep(1),每次用户访问页面之后会停留(浏览页面)1秒。