专栏首页用户7466307的专栏K6性能测试工具的使用入门

K6性能测试工具的使用入门

"""

之前偶然听到k6这款便捷的性能测试工具,好奇之下就用来玩了一下,结果真的不懒,做一些单接口的压测完全够用了,

所以写下这个介绍文档,第一是自己做一个笔记,第二是为有需要的朋友简单介绍一下,方便快速上手。

"""

简介

k6是高性能的负载测试工具,也是一种高性能工具,旨在在预生产和QA环境中以高负载运行测试,可使用JavaScript编写脚本。它是一个以开发人员为中心(当然,测试人员亦可以使用,因为真的很方便),免费和开源的负载测试工具,旨在使性能测试具有生产力和令人愉悦的体验,可最大程度地减少系统资源的消耗。官网:https://k6.io/

安装与运行

以window系统为例,到官网下载最新版本,根据安装提示默认安装即可。安装完成后在命令窗口输入:K6,检测是否安装成功。出现如下图就是成功了:

执行脚本的只需要在输入:k6 run +脚本名。如下图:

执行完成后会在界面给出测试结果:

将测试结果保存到指定的位置:

HTTP请求

k6可以使用JavaScript进行快速的编写脚本,对有前端经验的同学特别友好,我在实际的使用过程中也是使用的JavaScript进行编写。下面简单举两个常见请求类型的例子。

GET请求

如图所示,k6的请求方式和其他工具的接口请求方式并无太大的区别,只需要导入 import http from 'k6/http';; 按照js的语法依次传入URL,header即可。

POST请求

post请求如下图所示,依次传入URL,传参,header即可。

断言设置

K6的断言个人认为是比较简洁的,导入check()后即可,而且一个check()可以添加多个断言。

设置并发

k6中有两种设置并发、运行时间的方法。

第一种是在命令行内:

第二种是在脚本内:

K6还有支持更多的条件设置,请阅读官网文档。

cookie设置

k6有多种的cookie的写法,如图是能够快速入手的写法:

测试结果

名称

描述

vus

当前的虚拟用户数

vus_max

虚拟用户的最大数量(已预先分配VU资源,以确保在扩大负载级别时性能不会受到影响)

iterations

测试中的VU执行JS脚本(default函数)的总次数。

iteration_duration

完成默认/主函数的完整迭代所花费的时间。

dropped_iterations

在k6 v0.27.0中引入,由于缺少VU(对于到达率执行程序)或缺少时间(由于基于迭代的执行程序中的maxDuration过期)而无法启动的迭代次数。

data_received

接收到的数据量

data_sent

发送的数据量

checks

断言成功率

其中iteration_duration中,我们可以看到平均消耗时间,最大最小,以及百分之90请求所用时间等,这点与jmeter相识。

其他操作

在K6执行测试任务时,我们可以再次打开一个新的命令窗口来控制测试的暂停测试等操作:

  • k6 pause -暂停测试执行,暂停所有VU
  • k6 resume -取消暂停k6,导致所有活动的VU恢复执行
  • k6 scale -更改活动VU的数量(或允许的最大VU数量)
  • k6 stats -报告当前已收集的统计信息
  • k6 status -报告测试的一般状态

本文分享自微信公众号 - 软件测试test(gh_d29759b02f67),作者:OceZz

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 什么是数据驱动测试?学习创建框架

    数据驱动测试是一种软件测试方法,其中测试数据以表或电子表格格式存储。数据驱动的测试允许测试人员输入单个测试脚本,该脚本可以对表中的所有测试数据执行测试,并期望测...

    用户7466307
  • 2020年排名前20位的最佳自动化测试工具(综合列表)

    全球有4,000多家公司使用Ranorex Studio(一种用于台式机,Web和移动应用程序测试的多合一工具)。对于初学者来说,无代码的即点即用界面非常容易,...

    用户7466307
  • Linux系统下一步到位搭建bug管理系统——禅道

    作为测试人员,有时候进入一个新的环境,部分公司可能已经存在比较完善的测试环境,我们入职即可使用。但是有的公司在测试数据,测试环境方面可能还是空白,需要我们自...

    用户7466307
  • Java NIO深入理解ServerSocketChannel

    JAVA NIO有两种解释:一种叫非阻塞IO(Non-blocking I/O),另一种也叫新的IO(New I/O),其实是同一个概念。它是一种同步非阻塞的I...

    用户1251985
  • 1.10 VR扫描:HTC又双叒叕研发无线VR解决方案啦!

    VRPinea
  • 全球首个 AI 发球机器人诞生,国球练出新高度

    场景描述:近日,全球首台智能乒乓球发球机器人诞生,这款机器人将进行乒乓球的辅助教学工作。除了发球外,它还具备运动轨迹与动作分析能力,让训练数据化、智能化。

    HyperAI超神经
  • iOS 性能监测之FPS

    且行且珍惜_iOS
  • [AWR报告]db file sequential read

    顺序读是物理读的一种方式,这里的顺序指的是读取数据块到一个连续的内存区域,而且总是读取单个数据块(single-block read)

    bsbforever
  • SDL的几个宽高概念讲解(文中有福利)

    SDL系列讲解(一) 简介 SDL系列讲解(二) 环境搭建 SDL系列讲解(三) 工具安装 SDL是什么,能干什么,为什么我们要学习它? SDL系列讲解(四)...

    用户1263308
  • AHB学习笔记1.AHB概述2.AHB信号3.AHB传输4.控制信号

    1.AHB概述 AHB总线是一种专为高性能同步传输设计的总线,层次高于APB总线,支持以下特性: 突发传输 拆分事务 主设备单时钟周期传输 单时钟沿操作 非三态...

    月见樽

扫码关注云+社区

领取腾讯云代金券