Ab测试工具是apache自带的测试工具,具有简单易上手的特性,下面我总结一下我的使用方法,首先去官方下载apache程序包,我下的最新版本apache2.4.23,下载地址http://httpd.apache.org/download.cgi
我下载的windows版本,解压后放到某一目录即可。
1、呼出控制台
可以使用系统自带cmd或者Xshell工具均可
2、进入apache下的bin目录ab.exe就在此处
3、使用方法
直接在此目录下输入ab回车就会罗列出使用帮助
使用方式:ab [options] [http://]hostname[:port]/path
这里我只介绍常用命令
-n:总请求次数(最小默认为1)
-c:并发次数(最小默认为1且不能大于总请求次数,如:10个请求,10个并发,实际就是1人请求1次)
-p:post参数文档路径(-p和-T参数要配合使用)
-T:header头内容类型(此处切记是大写英文字母T)
后面直接写请求路径即可:http://www.test.com/xxx/xxx.html
4、无参方式请求
输入:ab -n 10 -c 10 http://paycenter.gotrip8.com/querypay.aspx
5、Get方式请求
输入:ab -n 10 -c 10 "http://paycenter.gotrip8.com/querypay.aspx?Version=1.0&InputCharset=GBK&SignType=MD5&PlatFormCode=CPOTA&OrderNo=TEST0123456784&Sign=185FA68CA23AAE7B3A02A226ABD30297"
注意:请求URL要使用双引号括起来,否则ab无法识别&符号
6、Post方式请求
参数文档:参数文档内容使用“key=value&key=value&key=value...”方式进行拼接,还有json的方式,但我实验没有成功,接收不到参数,具体原因未知
输入:ab -n 10 -c 10 -p d: estquerypay.txt -T application/x-www-form-urlencoded http://paycenter.gotrip8.com/querypay.aspx
注意:-p是参数文档路径,-T是大写英文字母,post表单格式为:application/x-www-form-urlencoded
7、测试结果
主要看三个数据
Requests per second:吞吐率
服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
计算公式:总请求数 / 处理完成这些请求数所花费的时间,即
Request per second = Complete requests / Time taken for tests
Time per request:上面的是用户平均请求等待时间
处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)
Time per request:下面的是服务器平均请求处理时间
处理完成所有请求数所花费的时间 / 总请求数,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也=用户平均请求等待时间/并发用户数,即
Time per request / Concurrency Level
可以根据固定并发数,增加请求次数或者固定请求次数,调整并发数来查看上面三个值得变化来调优服务器
8、未解决问题
在使用中我发现两个问题
一是无法传递json的post参数,网上的方法都试过了,接不到参数
二是传参时无法改变参数,或者说无法传递不同参数,比如下单接口测试,每次都应该传递不同的订单号,或者注册接口,每次都应该传递不同的账号密码,但在参数文档中如何写也实现不了,还望高手解答,谢谢
安装ab工具
yum install httpd-tools
参数说明
-n:执行的请求个数,默认时执行一个请求
-c:一次产生的请求个数,即并发个数
-p:模拟post请求,文件格式为gid=2&status=1,配合-T使用
-T:post数据所使用的Content-Type头信息,如果-T 'application/x-www-form-urlencoded'
1.模拟get请求
直接在url后面带参数即可
ab -c 10 -n 10 http://www.test.api.com/?gid=2
2.模拟post请求
在当前目录下创建一个文件post.txt
编辑文件post.txt写入
cid=4&status=1
相当于post传递cid,status参数
ab -n 100 -c 10 -p 'post.txt' -T 'application/x-www-form-urlencoded' 'http://test.api.com/ttk/auth/info/'