Vegeta HTTP 负载测试工具

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

Go接口压测的第三方包,一个很好用的负载测试工具。vegeta测试工具组件(可执行文件)支持linux以及mac系统,这里指的是通过终端命令行进行进行测试,不需要从代码层面使用这个工具的时候支持linux以及mac系统,在windows上可能会出现问题。但是通过vegeta包代码执行的时候是可以在多平台执行的,但是在数据的展示上会有局限性,当然也可能是博主本人不会用没有找到对应的使用方式。

比如测试工具组件执行完命令后可以在终端控制台很直观的看到Histogram图,但是在代码层面测试后就很难分析出Histogram的情况

下面贴一下代码层面的吧,至于组件的方式大家百度一下有很多详细的教程

http的形式

传参,用户验证参数

package main

import (
	"encoding/base64"
	"encoding/json"
	"fmt"
	vegeta "github.com/tsenart/vegeta/lib"
	"net/http"
	"time"
)

func main() {
	// 测试目标 URL
	target := "https://your.domain.name/"
	// 测试参数
	rate := 20                  // 每秒请求数
	duration := 1 * time.Second // 测试时间

	// 请求体数据
	data := map[string]string{
		"key1": "value1",
		"key2": "value2",
	}
	body, _ := json.Marshal(&data)

	// Basic验证
	authString := "user:password"
	encodedAuthString := base64.StdEncoding.EncodeToString([]byte(authString))
	headers := http.Header{
		"Content-Type":  []string{"application/json"},
		"Authorization": []string{"Basic " + encodedAuthString},
	}

	// 使用自定义transport创建attacker
	attacker := vegeta.NewAttacker()

	// 创建 vegeta 目标
	targets := []vegeta.Target{{Method: "GET", URL: target, Header: headers, Body: body}}

	// 创建和执行 vegeta 测试
	results := attacker.Attack(vegeta.NewStaticTargeter(targets...), vegeta.Rate{Freq: rate, Per: time.Second}, duration, "Load Test")
	// 分析结果
	metrics := &vegeta.Metrics{}
	for res := range results {
		metrics.Add(res)
	}

	metrics.Close()
	// 打印结果
	fmt.Printf("Requests: %d\n", metrics.Requests)
	fmt.Printf("成功率: %.2f%%\n", metrics.Success*100)
	fmt.Printf("最大延迟: %s\n", metrics.Latencies.Max)
	fmt.Printf("平均延迟: %s\n", metrics.Latencies.Mean)
	fmt.Printf("P95 延迟: %s\n", metrics.Latencies.P95)
	fmt.Printf("P99 延迟: %s\n", metrics.Latencies.P99)
	fmt.Printf("QPS: %.2f\n", metrics.Rate)
}

Https的形式

传参,用户验证参数,跨过证书验证文章来源地址https://www.toymoban.com/news/detail-504757.html

package main

import (
	"crypto/tls"
	"encoding/base64"
	"encoding/json"
	"fmt"
	vegeta "github.com/tsenart/vegeta/lib"
	"net/http"
	"time"
)

func main() {
	// 测试目标 URL
	target := "https://your.domain.name/"
	// 测试参数
	rate := 20                  // 每秒请求数
	duration := 1 * time.Second // 测试时间

	// 请求体数据
	data := map[string]string{
		"key1": "value1",
		"key2": "value2",
	}
	body, _ := json.Marshal(&data)

	// Basic验证
	authString := "user:password"
	encodedAuthString := base64.StdEncoding.EncodeToString([]byte(authString))
	headers := http.Header{
		"Content-Type":  []string{"application/json"},
		"Authorization": []string{"Basic " + encodedAuthString},
	}

	// 创建http.Transport以跳过证书验证
	transport := &http.Transport{
		TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
	}

	// 使用自定义transport创建attacker
	attacker := vegeta.NewAttacker(vegeta.Client(&http.Client{Transport: transport}))

	// 创建 vegeta 目标
	targets := []vegeta.Target{{Method: "GET", URL: target, Header: headers, Body: body}}

	// 创建和执行 vegeta 测试
	results := attacker.Attack(vegeta.NewStaticTargeter(targets...), vegeta.Rate{Freq: rate, Per: time.Second}, duration, "Load Test")

	// 分析结果
	metrics := &vegeta.Metrics{}
	for res := range results {
		metrics.Add(res)
	}

	metrics.Close()
	// 打印结果
	fmt.Printf("Requests: %d\n", metrics.Requests)
	fmt.Printf("成功率: %.2f%%\n", metrics.Success*100)
	fmt.Printf("最大延迟: %s\n", metrics.Latencies.Max)
	fmt.Printf("平均延迟: %s\n", metrics.Latencies.Mean)
	fmt.Printf("P95 延迟: %s\n", metrics.Latencies.P95)
	fmt.Printf("P99 延迟: %s\n", metrics.Latencies.P99)
	fmt.Printf("QPS: %.2f\n", metrics.Rate)
}

到了这里,关于Vegeta HTTP 负载测试工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 探究HTTP API接口测试:工具、方法与自动化

    本文将深入探讨HTTP API接口测试的重要性,并介绍了相关工具、方法以及自动化测试的实施,同时比较了HTTP和API接口测试的区别。从不同角度解析这一关键测试领域,帮助读者更好地理解和应用于实际项目中。 在如今数字化的世界中,软件开发和应用越来越离不开HTTP API接口

    2024年02月11日
    浏览(36)
  • 性能测试工具locust压测介绍

    官方文档:https://docs.locust.io/en/stable/index.html 1、初识locust         Locust 完全基于Python 编程语言,采用python 编写压测脚本,且所有请求完全基于requests库。除了 HTTP/HTTPS 协议,Locust 也可以测试其它协议的系统,只需要采用Python调用对应的库进行请求描述即可。locust是一个

    2024年02月07日
    浏览(60)
  • 精通api接口测试,接口分类,接口架构,http,webservice,dubbo接口协议,接口流程,接口工具,cookie,session,token接口鉴权原理以及实战

    接口口测试和接口自动化测试一直都是很多人混乱的概念。所以搞清楚2个的概念是很重要的一件事情。 接口:一段具备逻辑处理功能的程序代码组成的,可被其他方法、服务或应用所使用。 对于调用接口的那一方,可以把接口看做一只黑匣子,只需要负责按约定传入参数,

    2024年02月02日
    浏览(37)
  • jmeter工具测试和压测websocket协议【杭州多测师_王sir】

    一、安装JDK配置好环境变量,安装好jmeter 二、下载WebSocketSampler发送请求用的 ,地址:https://bitbucket.org/pjtr/jmeter-websocket-samplers/downloads/?spm=a2c4g.11186623.2.15.363f211bH03KeI 下载解压后的jar包放到D:JMeterapache-jmeter-3.3libext目录下 三、如果需要在jmeter中安装那么就需要下载jmeter的插件

    2024年02月13日
    浏览(32)
  • 性能测试工具jmeter对数据库mysql进行性能测试(压测保姆级教程)

    打开mysql官网:MySQL 找到mysql connectors,选择操作系统独立版本,将下载jar包导入到jmeter的lib目录下。 参考文档:https://www.jb51.net/article/190860.htm 1、添加测试计划 2、添加JDBC request 3、添加JDBC connection configuration,并修改配置 1、Cannot create PoolableConnectionFactory (Communications link fai

    2024年02月02日
    浏览(45)
  • Locust:分布式负载测试工具的利器

    引言: 在软件开发过程中,负载测试是确保系统能够承受高并发访问的重要环节。然而,传统的负载测试工具往往无法满足大规模并发测试的需求。为了解决这一问题,Locust应运而生。本文将介绍Locust的特点、使用方法以及其在分布式负载测试中的应用,帮助读者了解并掌握

    2024年02月03日
    浏览(29)
  • 接口测试工具——Postman测试工具 & Swagger接口测试+SpringBoot整合 & JMeter高并发测试工具

    头部携带token 类型选择JSON https://apifox.com/ swagger2,较多 swagger3, Knife4j的前身是swagger-bootstrap=ui,前身swagger–bootstrap-ui是一个纯swagger–ui的ui皮肤项目 https://doc.xiaominfo.com/docs/quick-start 底层就是swagger 序号 注解 作用 1 @Api(tags = “图书的api接口类”) 左侧名字 2 @ApiOperation(“findPa

    2024年02月12日
    浏览(46)
  • 性能测试之使用Jemeter对HTTP接口压测

    我们不应该仅仅局限于某一种工具,性能测试能使用的工具非常多,选择适合的就是最好的。笔者已经使用Loadrunner进行多年的项目性能测试实战经验,也算略有小成,任何性能测试(如压力测试、负载测试、疲劳强度测试等)都可以使用该工具。但我并不鼓励这样做,我们应

    2024年02月07日
    浏览(34)
  • 一文搞定接口测试及常用接口测试工具解析

    目录 首先,什么是接口呢? 一、常见接口: 二、前端和后端: 三、什么是接口测试: 四、接口组成 五、为什么要做接口测试: 六、接口测试怎么测:  七、用什么工具测 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。 系统对外的接口:比如你要

    2024年02月03日
    浏览(79)
  • 接口测试及接口抓包常用的测试工具

    接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 是节省时间前后端不同步时便可以进行测试; 是测试一

    2024年02月12日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包