大家好,我是Zhang jintao。我将为您介绍一个工具-K6。它与K8没有直接关系。这是一种开源性能压力测试工具。
2016年8月,K6在Github上发布了第一个版本。此时,出色的开源负载压力测量工具进入了人们的视野。
2021年6月,Grafana Labs为Grafana和K6收购了K6。
实际上,Grafana和K6的命运可以追溯到两年前。
2019年,Grafana Labs在Grafana 6.0的短期令牌刷新行为中进行了一系列技术选择。
因为GO实现了Grafana Labs的大多数后端软件,因此K6符合OSS和GO的要求,并且负载测试是用JS编写的(Grafana Front -End -End -End Framework和UI)。K6的使命是从Grafana 6.0版本中跟踪Grafana开发人员和测试人员的错误。
图1,K6添加Grafana Labs
任何方便的自动负载压力测试工具都将大大提高程序开发人员的代码质量和效率。
在下图中是一些用于负载压力测试的常用工具。我们可以在Github上看到。目前,更频繁和活跃的项目是:Gatling,Jmeter和K6。
图2,压力测试工具
如何选择仅仅是工具效率的竞争。从以下两个方面考虑:
下图对上述工具进行了一些简单的比较。
在这里,我主要比较另外三个活跃的项目。
图3、3种比较的流行工具
或这样:
K6是用GO语言开发的。安装K6步骤很简单。只需在其GitHub的发行页面上直接下载二进制文件。例如:
或者,您也可以直接使用其Docker Mirror:
K6中的概念不多。其中最重要的是用于执行测试的虚拟用户(VU),这是并发执行任务的本质。
使用K6执行测试时,您可以通过或指定,默认值为1。
我个人认为K6是当前主流压力测试工具中更好的用户体验。使用JS(ES6)作为配置语言更方便。让我们做一些例子。
如果需要在需要HTTP请求时导入我们。
请注意,在K6中,默认情况下必须具有入口的函数,这与我们经常使用的功能相似。
执行后的效果如下:
K6默认值将执行结果输出到终端。在同一时间,它带有一些指标,可以同时输出。
这些指标基本上是语义。可以通过名称来理解它的含义,在这里没有人介绍。
我们可以同时向请求添加一些测试,以确定接口的响应值是否满足我们的期望。如下:
通过引入功能,执行了一些判断逻辑。当然,以上实际上是ES6中的缩写,可以作为正常功能开发。例如:
使用K6执行此脚本后,获得的输出比以前的内容更多:
从这里,我们可以查看我们当前的请求接口测试是否传递(也可以用于确定当前接口是否可以正常提供服务)。
接下来,我们尝试在压力测试过程中定义一些指标。只是指引导一些不同类型的指标。这基本与普罗米修斯的类型相同。
在这里,我添加了两个指标。一个统计数据进行了多少测试,并计算了计算率。
在这里,我们设置了2个VU,并且执行过程的输出设置如下:
您可以看到输出中还有两行:
这与我们的期望一致。
但这看起来不够直观,我们可以尝试使用K6云显示结果。
本文主要是引入具有现代用户体验的相对良好的压力测试工具K6。我目前计划将其引入我们项目的CI,以了解每个核心部分变化对项目性能的影响。
如果以下促销顺利进行,我们将分享如何将K6应用于CI环境,因此请继续关注。
欢迎订阅我的文章公共帐户[Moelove]