Apache ab测试工具使用方法(无参、get传参、post传参)

Ab测试工具是apache自带的测试工具,具有简单易上手的特性,下面我总结一下我的使用方法,首先去官方下载apache程序包,我下的最新版本apache2.4.23,下载地址http://httpd.apache.org/download.cgi

我下载的windows版本,解压后放到某一目录即可。

1、呼出控制台

可以使用系统自带cmd或者Xshell工具均可

2、进入apache下的bin目录ab.exe就在此处

Apache ab测试工具使用方法(无参、get传参、post传参)

3、使用方法

直接在此目录下输入ab回车就会罗列出使用帮助

Apache ab测试工具使用方法(无参、get传参、post传参)

使用方式: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

Apache ab测试工具使用方法(无参、get传参、post传参)

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无法识别&符号

Apache ab测试工具使用方法(无参、get传参、post传参)

6、Post方式请求

参数文档:参数文档内容使用“key=value&key=value&key=value...”方式进行拼接,还有json的方式,但我实验没有成功,接收不到参数,具体原因未知

Apache ab测试工具使用方法(无参、get传参、post传参)

输入:ab -n 10 -c 10 -p d:\test\querypay.txt -T application/x-www-form-urlencoded http://paycenter.gotrip8.com/querypay.aspx

注意:-p是参数文档路径,-T是大写英文字母,post表单格式为:application/x-www-form-urlencoded

Apache ab测试工具使用方法(无参、get传参、post传参)

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

可以根据固定并发数,增加请求次数或者固定请求次数,调整并发数来查看上面三个值得变化来调优服务器

Apache ab测试工具使用方法(无参、get传参、post传参)

8、未解决问题

在使用中我发现两个问题

一是无法传递json的post参数,网上的方法都试过了,接不到参数

二是传参时无法改变参数,或者说无法传递不同参数,比如下单接口测试,每次都应该传递不同的订单号,或者注册接口,每次都应该传递不同的账号密码,但在参数文档中如何写也实现不了,还望高手解答,谢谢

上一篇:如何使用Apache的ab工具进行网站性能测试


下一篇:JS---如何避免用户在请求时“猛击”