「Go开源」vegeta: http压力测试工具库

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读2.7k次,点赞85次,收藏12次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502今天给大家推荐的是一个对HTTP接口做压力测试的工具:vegeta

项目地址:github.com/tsenart/veg…

一、特点

  • 命令行和Go第三方库都可以使用
  • 命令行使用UNIX风格设计
  • 可扩展多种压测报告形式
  • 对于分布式测试也非常简单易用
  • 易安装、易使用

二、安装

2.1 MacOS下安装

macos下使用brew即可安装,如下:

brew update && brew install vegeta

2.2 Arch Linux下安装

pacman -S vegeta

2.3 FreeBSD下安装

pkg install vegeta

2.4 自行编译

git clone https://github.com/tsenart/vegeta
cd vegeta
make vegeta
mv vegeta ~/bin # Or elsewhere, up to you.

三、使用教程

vegeta工具主要有4个子命令组成,分别是attackencodereportplot

  • attack子命令:该子命令主要设置和要压测的接口请求有关。比如要压测的接口地址、接口的body参数、接口的header头、并发的请求数量、压测的时间、压测的速率等等。
  • **encode子命令:**该子命令主要是指定压测结果输出的位置以及输出的格式。比如以csv格式输出还是以json格式输出,输出到哪个文件。
  • **report子命令:**该子命令主要是针对压测结果生成统计报告。
  • plot子命令: 该子命令的功能主要是将测试结果以图表的形式进行展示。

3.1 指定压测的接口地址

在指定压测地址时有两种方式:通过标准的stdin和指定具体的文件。

  • 通过stdin指定压测地址
echo "GET https://www.baidu.com" | vegeta attack -duration=5s

如上所示,通过管道的方式将要压测的接口地址输出给vegeta的attack命令。这里需要注意,在指定压测接口时,一定要指定请求的方法,同时请求方法必须都是大写。例如GET、POST。而Get或Post则是无效的方法。

  • 通过targets参数指定文件

通过文件可以指定一个或多个要压测的url地址。指定格式如下:

GET https://foo.bar/a/b/c
Header-X: 123
Header-Y: 321

POST https://foo.bar/b/c/a
Header-X: 123
@/path/to/body/file

在文件中,通过空行来区分两个url的部分。每个url部分以方法名和url地址开头,后续可以跟着对应的Header头信息。在POST请求中,可以通过@指定具体的body体内容的文件。

3.2 指定body体内容

要指定body体,只能通过文件的方式来指定。vegeta attack有两种方式来指定body的文件名。第一种是刚才上面提到,在targets的文件中,可以通过“@”符号来指定对应的body体。第二种是通过命令行参数-body指定一个文件名:

vegeta attack -body

3.3 指定接口返回内容为止

通过vegeta encode子命令来指定接口自身输出的内容(即接口的响应值)被保存的位置以及输出内容的格式(csv、json等) 这里主要有两个参数项:

  • -output string:指定接口响应被存储的位置
  • -to string:指定内容输出的格式。例如csv、json、gob。默认为json。

3.4 生成测试报告

vegeta的测试报告是通过report子命令来生成的。该命令的输入数据是encode子命令产生的输出。如下示例所示:

sh-3.2# echo "GET https://www.baidu.com" | vegeta attack -duration=5s | vegeta report
Requests      [total, rate, throughput]         250, 50.21, 49.11
Duration      [total, attack, wait]             5.09s, 4.979s, 111.653ms
Latencies     [min, mean, 50, 90, 95, 99, max]  18.132ms, 32.41ms, 21.998ms, 55.54ms, 106.41ms, 171.889ms, 276.545ms
Bytes In      [total, mean]                     56750, 227.00
Bytes Out     [total, mean]                     0, 0.00
Success       [ratio]                           100.00%
Status Codes  [code:count]                      200:250 

可以看到,在报表中输出的信息有:

  • 请求相关的统计:请求总数、速率以及吞吐量。
  • 持续时间:压测的总时长、实际发送请求的时长以及等待的时间。
  • 响应延迟:最小、最大延迟。50分位、90分位、95分位响应延迟。
  • 输入、输出的字节
  • 响应成功率。
  • 状态码统计。

通过-type参数可以按响应时间区间统计,如下:

sh-3.2# echo "GET https://www.baidu.com" | vegeta attack -duration=5s | vegeta report -type="hist[0,100ms,200ms,300ms]"
Bucket           #    %       Histogram
[0s,     100ms]  247  98.80%  ##########################################################################
[100ms,  200ms]  3    1.20%   
[200ms,  300ms]  0    0.00%   
[300ms,  +Inf]   0    0.00% 

按不同的响应时间的区间统计响应的结果量。

四、总结

vegeta是一个命令行的工具。一个压测工具最基本的功能就是输入url及参数、启动指定量的协程来进行压力测试,同时把响应结果保存下来,并以报表的形式进行统计输出。同时,该开源包也是大家学习使用golang进行命令行开发较好的参考。建议有兴趣的朋友可以阅读下源码。

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值