📜  使用 k6 进行性能测试(1)

📅  最后修改于: 2023-12-03 15:06:48.222000             🧑  作者: Mango

使用 k6 进行性能测试

k6 是一个现代化的开源负载测试工具,它可以测量系统的性能并发现瓶颈。k6 使用 JavaScript 编写,可以在命令行中,也可以以扩展方式在 CI/CD 管道中集成。以下是使用 k6 进行性能测试的一些基本信息。

安装 k6

您可以在 官网 参考指南安装 k6,安装非常简单,只需要下载二进制文件或通过包管理工具安装即可。

编写性能测试代码

编写测试代码的主要任务是定义想要模拟的用户行为:这可以是浏览网站、发送请求、填写表单或执行任何其他类型的任务。下面是一个基本的示例代码:

import http from 'k6/http';
import { sleep } from 'k6';

export default function () {
  http.get('https://test.k6.io');
  sleep(1);
}

这个例子执行一个 GET 请求,然后等待一秒钟,然后重复执行。该代码可以保存为名为 test.js 的文件。

运行测试

现在,您可以使用 k6 执行测试了。如果您保存了上面的代码示例,只需在终端中输入:

k6 run test.js

然后可以看到测试结果的输出,类似于以下内容:

          /\      |‾‾| /‾‾/   /‾‾/   
     /\  /  \     |  |/  /   /  /    
    /  \/    \    |     (     /   (   
   /          \   |  |\  \   /  /‾/   
  / __________ \  |__| \__\ /__/ 

  execution: local
     output: -

  scenarios: (100.00%) default
   duration: 1m0s, iterations: 10
       test: test.js

  running (00m00.0s), 0/10 VUs, 1 complete and 0 interrupted iterations
  running (00m01.0s), 10/10 VUs, 10 complete and 0 interrupted iterations

     data_received..................: 33 kB 550 B/s
     data_sent......................: 9.3 kB 155 B/s
     http_req_blocked...............: avg=338.51µs min=91.71µs med=105.32µs max=1.73ms p(90)=153.47µs p(95)=243.92µs
     http_req_connecting............: avg=275.74µs min=0s med=0s max=1.32ms p(90)=505.13µs p(95)=711.16µs
     http_req_duration..............: avg=54.17ms  min=50.05ms med=53.47ms max=57.72ms p(90)=55.61ms p(95)=56.92ms
     http_req_receiving.............: avg=139.96µs min=111.78µs med=128.13µs max=290.53µs p(90)=205.22µs p(95)=247.51µs
     http_req_sending...............: avg=64.46µs  min=29.33µs med=58.13µs  max=123.17µs p(90)=96.45µs  p(95)=107.7µs
     http_req_tls_handshaking.......: avg=0s       min=0s      med=0s      max=0s      p(90)=0s       p(95)=0s
     http_req_waiting...............: avg=53.98ms  min=49.92ms med=53.29ms max=57.54ms p(90)=55.43ms p(95)=56.71ms
     http_reqs......................: 10     0.167491/s
     iteration_duration.............: avg=106.32ms min=103.39ms med=105.58ms max=126.27ms p(90)=110.63ms p(95)=121.27ms
     iterations.....................: 10     0.167491/s
     vus............................: 10     min=10 max=10
     vus_max........................: 10     min=10 max=10

您可以看到,本次测试使用了 10 个用户并发执行,每个用户重复执行 10 次迭代。可以看到每次迭代需要的时间,每次请求的结果,网络吞吐量和可用性等信息。

结论

使用 k6 进行性能测试非常容易且多功能。在测试之前,请确保您的测试代码是准确和充分的,以免产生错误结论。