测试工具 go-stress-testing/fortio/vegeta 使用体验

这篇具有很好参考价值的文章主要介绍了测试工具 go-stress-testing/fortio/vegeta 使用体验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

go-stress-testing

简介

go-stress-testing 是一款由go语言实现的压测工具,源码开源、支持二次开发、可以压测http、webSocket请求、私有rpc调用,使用协程模拟单个用户,可以更高效的利用CPU资源

使用方法

  • 下载地址
  • 注意需要将项目源码 clone 到 $GOPATH 目录下
  • mac电脑下载如下这个
  • image.png
  • 放到 $GOPATH 目录下
  • image.png
    • 赋权 chmod +x go-stress-testing-mac
  • 在该目录下执行 ./go-stress-testing-mac 查看用法
  • image.png

测试请求百度页面

./go-stress-testing-mac -c 1 -n 100 -u https://www.baidu.com/

image.png

  • 还蛮好用,并且还支持二次开发

优点总结

  • 使用简单,只需要简单的命令行参数设置即可完成压力测试。
  • 支持多种协议,包括 HTTP、TCP、UDP 等。
  • 生成的报告直观,易于分析。

缺点总结

  • 功能相对较少,不支持多种高级特性。

fortio

简介

fortio以指定的每秒查询(qps)运行,并通过记录执行时间的直方图来计算百分比。(ex:p99,即响应时间,表示99%的请求所用时间小于该数字)。fortio支持设定运行的持续时间、固定数量的调用或直到中断。
fortio同时非常快,轻量级(其docker镜像仅4MB,具备最小依赖性),并且支持二次开发、支持嵌入的go库以及以命令行工具和服务器进程的形式使用。其服务包括一个简单的web UI 和 REST API 用于触发运行并查看结果的图形表示(包括单个延迟图和多个结果比较的最小值、最大值、平均值、qps和百分位数图)
fortio (类似 httpbin) 的服务器端功能,用来帮助调试和测试:请求回显(包括请求头)、添加具有概率分布的延迟或错误代码、tcp回显、tcp代理、http扇出/分散和收集代理服务器、GRPC回显/健康以及http等

使用和安装

  1. go的版本最低要求是 1.18
  2. 安装命令 go install fortio.org/fortio@latest
    1. 也可以使用 brew 安装 brew install fortio
  3. 启动 fortio server
    1. 特别注意,这个命令需要在 $GOPATH 目录下运行

遇到的问题

  • 在MAC系统下,使用 go install fortio.org/fortio@latest 安装 fortio 会把fortio 安装到 $GOPATH/bin 目录下
  • 将其移动到和 bin 目录同级,使用 ./fortio server 运行,可以看到如下输出
  • image.png
  • UI页面展示如下
  • image.png

测试运行

image.png

  • 生成的结果

image.png

优点总结

  • 有UI界面操作方便
  • 社区活跃,关注度高,质量有保证
  • 同样支持二次开发
  • 支持多种高级特性,例如分布式压力测试、持久连接测试、TLS 加密支持等。
  • 使用简单,提供可视化界面,易于使用和分析。

缺点总结

  • 使用门槛相对较高,全英文需要较多时间学习使用
  • 对于一些复杂的场景,需要编写注释来实现。

vegeta

简介

Vegeta是一个通用的HTTP负载测试工具,它是基于对具有恒定请求率的HTTP服务的需要而进行构建的。既可以用作命令行也可以作为库使用。

使用和安装

安装

  • brew update && brew install vegeta
    • 该命令执行报错
    • 可以执行 brew cleanup 或 关闭窗口 或 稍作等待再进行安装
  • 使用 go 的方式安装
    • go install github.com/tsenart/vegeta@latest
    • 如下,安装成功
    • image.png

测试使用

  1. 安装成功之后在 $GOPATH/bin 目录下可以看到下载成功的二进制文件
  2. 进入 $GOPATH/bin 目录下,执行 ./vegeta 查看命令行帮助信息

  1. 使用步骤
  2. 编写测试脚本
    1. 编写一个包含所有要测试的请求的文件,例如 test.txt 每一个请求占用一行,格式如下
请求方法 URI1
请求方法 URL2
{"post请求": "请求参数"}
  1. 运行测试
    1. echo "GET [https://www.baidu.com/"](https://www.baidu.com/) | vegeta attack -duration=5s | tee results.bin | vegeta report
    2. 解释:[https://www.baidu.com/](https://www.baidu.com/) 发起一个为期 5 秒的 GET 请求,并将结果记录在 results.bin 文件中,然后显示有关请求的报告
    3. 测试结果如下
    4. image.png
    5. 可以在当前目录看到生成的 results.bin 文件

优点总结

  • 灵活性强,可以通过简单的配置文件实现多种复杂场景的压力测试。
  • 支持 HTTP/1.1、HTTP/2 和 TCP 协议。
  • 生成的报告详细,易于分析。

缺点总结

  • 学习曲线较陡峭,需要一定的学习成本。
  • 没有可视化界面,不太易于使用。

总结

选择那一种压力测试工具,需要根据具体的需求和场景来决定。如果需要支持多种高级特性和分布式压力测试,则 fortio 较为适合。如果需要灵活性较强的测试工具,则可以选择 vegeta;如果需求比较简单,则可以选择 go-stress-testing

完结撒花

  • 祝你生活愉快

参考

https://github.com/link1st/go-stress-testing
https://github.com/fortio/fortio
https://github.com/tsenart/vegeta文章来源地址https://www.toymoban.com/news/detail-472521.html

到了这里,关于测试工具 go-stress-testing/fortio/vegeta 使用体验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stress-ng工具压力测试linux系统

    stress-ng兼容stress, 支持产生各种复杂的压力。 选项 含义 -t, --timeout 指定运行多少秒停止 –backoff 指定等待N微妙后开始运行 -c, --cpu 指定产生N个处理sqrt()函数的CPU进程,也就是每个进程不停计算随机数的平方根 -i, --io 指定产生N个处理sync()函数的磁盘I/O进程,sync()用于将内存上

    2024年01月17日
    浏览(28)
  • linux下压力测试工具stress(cpu,内存,io)

    stress-1.0.2-1.el7.rf.x86_64.rpm下载地址,centos7适用: fr2.rpmfind.net/linux/dag/redhat/el7/en/x86_64/dag/RPMS/stress-1.0.2-1.el7.rf.x86_64.rpm 安装: rpm -Uivh stress-1.0.2-1.el7.rf.x86_64.rpm stress-ng源码下载: https://kernel.ubuntu.com/~cking/tarballs/stress-ng/ 编译: make 安装: sudo make install yum安装 yum install -y epel-rel

    2024年01月17日
    浏览(31)
  • 交叉编译Linux下压力测试工具 - stress-ng

    下载地址:https://fossies.org/linux/privat/stress-ng-0.14.03.tar.gz 如果提示不存在,则可以进入到 https://fossies.org/linux/privat,搜索 stress-ng 的最新版本,进行下载。 下载源码 解压并进入目录 设置环境变量 这里拿 aarch64-linux-gnu-gcc 进行举例,实际设置成你自己的交叉编译工具即可。 交叉

    2024年02月11日
    浏览(29)
  • API Testing 一个基于 YAML 文件的开源接口测试工具

    目录 前言: 如何使用? 本地模式 服务端模式 文件格式 后续计划 API Testing 是一个基于 YAML 文件的开源接口测试工具,它可以帮助开发者快速地进行接口测试。 在选择工具时,可以从很多方面进行考量、对比,以下几点是该工具的特色或者优点:

    2024年02月16日
    浏览(33)
  • 【Cmake】Ctest测试工具 cmake命令之add_test和set_tests_properties使用案例

    目录 前言 一、初识CTest 二、使用方法 三、完整的简单测试工程 附录 附录一 cmake命令 enable_testing add_test 原文:CTest - https://www.cnblogs.com/457220157-FTD/p/4139149.html        CTest是CMake集成的一个测试工具,在使用CMakeLists.txt文件编译工程的时候,CTest会自动configure、build、test和展现

    2023年04月17日
    浏览(25)
  • 测试go test

    Go 语言从开发初期就注意了测试用例的编写。特别是静态语言,由于调试没有动态语言那么方便,所以能最快最方便地编写一个测试用例就显得非常重要了。 testing 方便进行 Go 包的自动化单元测试、基准测试 net/http/httptest 提供测试 HTTP 的工具 Go语言中的测试依赖go test命令。

    2024年02月10日
    浏览(31)
  • GO——单元测试(test)

    go test用来做什么 做单元测试,测试函数是否符合预期 go test在哪个包 testing 如何使用 参考: https://geektutu.com/post/quick-go-test.html 以 my_func.go 中的Add方法为例 在同一个文件夹下添加my_func_test.go文件 测试文件以_test.go为结尾 里面的测试方法以Test开头,但是不一定是要跟方法名,

    2024年01月20日
    浏览(38)
  • Go Test测试教程

    go中测试既有类似有 pytest 中的功能测试,也有 benchMark 的基准测试,以及单元测试( Unit Tests , UT ).这里从单元测试UT引入本篇的话题,单元测试的重要性不言而喻,尤其在大型项目中跨团队合作时,无法mr合格的代码,很容易影响整个团队的交付进度和质量。或者会说直接

    2024年02月15日
    浏览(28)
  • 从 `go build` 到 `go test`:Go 语言命令行工具全解析

    在当今的软件开发领域,Go 语言以其简洁、高效和强大的并发处理能力受到广泛的欢迎。作为一门现代编程语言,Go 不仅拥有丰富的标准库,还提供了一系列强大的命令行工具,极大地简化了开发者的编程和管理工作。这些工具的有效运用,可以帮助开发者提高工作效率,优

    2024年01月18日
    浏览(43)
  • 【测试开发】单元测试、基准测试和性能分析(以 Go testing 为例)

    你写不出 bug-free 的代码。 你认为自己写出了 bug-free 的代码,但它在你意想不到的地方出错了。 你觉得自己写出了永不出错的代码,但它的性能十分糟糕。 “测试左移”距离真正落地或许还有不短的距离,但在开发过程中注重自己的代码质量,至少养成 写单测 的习惯还是很

    2024年02月04日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包