1、前言
性能测试对软件测试的重要性在于它可以评估软件在特定负载条件下的性能表现,包括响应时间、吞吐量、并发用户数、资源利用率等。通过性能测试,可以识别并解决可能存在的性能问题,提高软件的可靠性、稳定性和可伸缩性。性能测试还可以帮助确定软件的容量需求,以便在生产环境中正确配置硬件和软件资源。因此,性能测试是软件测试中不可或缺的一部分,可以提高软件的质量和用户体验。
常见的性能测试工具有JMeter、LoadRunner等,本文将介绍另一款性能测试工具 - wrk,能够通过很少的线程压出很大的并发HTTP请求,进行服务器性能测试。
2、简介
wrk为C语言编写的轻量级HTTP性能测试工具,可以在单核CPU上运行时能够产生显著的负载,它将多线程设计与可扩展的事件通知系统(如epoll和kqueue)相结合。可选的LuaJIT脚本可以执行HTTP请求生成、响应处理和自定义报告。
github地址:
https://github.com/wg/wrk/
3、安装
一、Linux上安装
1、安装git
cd /usr/local/src
sudo yum install git -y
2、安装openssl
sudo yum install openssl-devel
3、下载、编译(需安装gcc)
git clone https://github.com/wg/wrk.git
cd wrk
make
二、Mac上安装
brew install wrk
4、快速上手
输入wrk,查看帮助信息。
Usage: wrk <options><url>
Options:
-c, --connections <N> Connections to keep open
-d, --duration <T> Duration of test
-t, --threads <N> Number of threads to use
-s, --script <S> Load Lua script file
-H, --header <H> Add header to request
--latency Print latency statistics
--timeout <T> Socket/request timeout
-v, --version Print version details
Numeric arguments may include a SI unit (1k, 1M, 1G)
Time arguments may include a time unit (2s, 2m, 2h)
1、Get示例:
使用12个线程(threads),保持400个HTTP连接(connections)开启,测试时间持续5秒(seconds)。
wrk -t12 -c400 -d5s https://www.httpbin.org/
测试结果:
平均响应时间364.15ms
2、Post示例:
wrk只能直接使用get、delete请求,post请求需要用到lua脚本。
创建post.lua文件,添加HTTP方法、主体和请求头。
wrk.method = "POST"
wrk.body = "username=admin&password=123456"
wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"
使用4个线程(threads),保持200个HTTP连接(connections)开启,测试时间持续3秒(seconds),打印延迟统计信息。
wrk -t4 -c200 -d3s --script=post.lua --latency https://www.httpbin.org/post
测试结果:
Latency:响应时间
Req/Sec:单个线程处理请求数
Avg:平均值
Stdev:标准差,值越大说明机器或服务性能不稳定导致
Max:最大值
+/- Stdev:正负标准差比例,差值比标准差大或小的数据比率
Latency Distribution:延时分布多少ms以下请求数比例
Requests/sec:平均每秒处理请求数
Transfer/sec:平均每秒传输数据量
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!