推荐一款压力测试工具使用(Siege)

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

有时候在测试或者开发调试的时候,需要对自己的接口性能有所了解;

对于一款性能测试工具的选择,比较随意但是一定要轻巧,所以推荐Siege

Siege安装步骤

$ wget <http://download.joedog.org/siege/siege-latest.tar.gz> 

$ tar zxf siege-latest.tar.gz 

$ cd siege-4.0.2/ 

$ ./configure 

$ sudo make 

$ sudo make install 
复制代码
查看是否安装成功 
查看siege安装路径: 

$ which siege 

/usr/local/bin/siege

查看siege版本: 

$ siege -V 

SIEGE 4.0.2 
复制代码
siege命令举例  

10个并发某接口url&method&parameters发送请求10分钟,开启调试模式,无间隔时间,XX日志写入XX目录 

siege --debug -c10 -t10M '<http://mapp.xxxxx.com/api/product/list> POST systemVersion=6.0&deviceId=864361034921867&deviceToken=9cab8a947832db553951ea716c417eab&source=android&appVersion=3.0.3&t=1495179270635&pageIndex=1&pageSize=20&regChannel=app&resolution=1080*1812&deviceModel=EVA-AL00&density=3.0& ' >>/data/siegelogs/siege2017051917.log

10个并发url&method&parameters发送请求20次,开启调试模式,无间隔时间,XX日志写入XX目录 

siege -c10 -r20 '<http://mapp.xxxxx.com/api/product/list> POST systemVersion=6.0&deviceId=864361034921867&deviceToken=9cab8a947832db553951ea716c417eab&source=android&appVersion=3.0.3&t=1495179270635&pageIndex=1&pageSize=20&regChannel=app&resolution=1080*1812&deviceModel=EVA-AL00&density=3.0& ' >>/data/siegelogs/siege201705191750.log

模拟同一用户重复提交10次购买请求 

siege '接口地址 POST 具体入参' -r 1 -c 10 

siege 'https://mapp.xiaoniuapp.com/api/product/buyProduct.do POST parameters' -r 1 -c 10

模拟不同的用户并发同一个接口请求,迭代次数=1  

首先创建文件test_urls,将请求信息写入test_urls文件

请求 URL&parameters1 (缺陷,需要参数化登录用户名)

URL&parameters2

URL&parameters3
复制代码

具体命令如下 :

siege --debug -r 2 -c 1 -b -f /data/siegefiles/test_urls -b >>/data/siegelogs/siege201705221136.log

同一用户并发提交多个接口  

准备接口测试文件-bingfa,譬如同一个用户在购买活期宝的同时也在赎回活期宝,测试是否有数据错乱的情况

  • 具体命令如下 

siege --debug -r 1 -c 2 -b -f /data/siegefiles/bingfa -b >>/data/siegelogs/siege201705221136.log 

总结

从安装到使用,那最后的结果呢?不能是一味的只会使用,更要看懂其中的关键,譬如结果分析。
是不是对输出的结果有很多问号?作者也帮你整理好了。

压力测试的结果包括如下内容:
Transactions: 访问次数

Availability: 成功次数

Elapsed time: 测试用时

Data transferred: 测试传输数据量

Response time: 平均响应时间

Transaction rate:每秒事务处理量

Throughput: 吞吐率

Concurrency: 并发用户数

Successful transactions: 成功传输次数

HTTP OK received:接收成功响应次数

Failed transactions: 失败传输次数

Longest transaction: 最长响应时间

Shortest transaction: 最短响应时间
复制代码