ab性能测试工具使用

最近发现了一个挺厉害的人工智能学习网站,内容通俗易懂,风趣幽默,感兴趣的可以点击此链接进行查看:床长人工智能教程

 废话不多说,请看正文!

ab全称为:apache bench
     ab是Apache超文本传输协议(HTTP)的性能测试工具。其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求。
     ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。


安装
     ab下载地址:https://www.apachehaus.com/cgi-bin/download.plx

ab性能测试工具使用_第1张图片

下载软件时,注意自己系统的位数,下载对应的安装包,下载后的文件解压,例如将解压的文件夹放在D盘,从文件夹进入D:\httpd-2.4.52-o111m-x64-vc15\Apache24\bin ,在文件路径上输入cmd回车,就会进入该路径的命令窗口,输入 httpd -k install 运行,然后执行 ab -h 会显示一堆ab的帮助,则以及安装成功了。

ab性能测试工具使用_第2张图片

ab性能测试工具使用_第3张图片

ab性能测试工具使用_第4张图片

 参数详解
   

-n   即requests,用于指定压力测试的请求数。
-c 即concurrency,用于指定压力测试的并发数。
-t 即timelimit,等待响应的最大时间(单位:秒)。
-b 即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p 即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
-u 即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
-T 即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。
-v 即verbosity,指定打印帮助信息的冗余级别。
-w 以HTML表格形式打印结果。
-i 使用HEAD请求代替GET请求。
-x 插入字符串作为table标签的属性。
-y 插入字符串作为tr标签的属性。
-z 插入字符串作为td标签的属性。
-C 添加cookie信息,例如:”Apache=1234”(可以重复该参数选项以添加多个)。
-H 添加任意的请求头,例如:”Accept-Encoding: gzip”,请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A 添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开转化为base64编码传值。
-P 添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
-X 指定使用的代理服务器和端口号,例如:”126.10.10.3:88”。
-V 打印版本号并退出。
-k 使用HTTP的KeepAlive特性。
-d 不显示百分比。
-S 不显示预估和警告信息。
-g 输出结果信息到gnuplot格式的文件中。
-e 输出结果信息到CSV格式的文件中。
-r 指定接收到错误信息时不退出程序。
-h 显示用法信息,其实就是ab -help。


用法样例
     执行 ab -n 10 -c 10 “https://tieba.baidu.com/index.html?traceid=“ 会报如下错误:SSL not compiled in; no https support,如果出现这样的错误把ab后面加上abs,abs用于执行https的请求,ab拥有执行http的请求。   
ab性能测试工具使用_第5张图片

 以上是测试结果的数据,除此之外还有其他一些信息,需要说明下,如下:
     Server Software  表示被测试的Web服务器软件名称。
     Server Hostname        表示请求的URL主机名。
     Server Port        表示被测试的Web服务器软件的监听端口。
     Document Path        表示请求的URL中的根绝对路径,通过该文件的后缀名,我们一般可以了解该请求的类型。
     Document Length        表示HTTP响应数据的正文长度。
     Concurrency Level        表示并发用户数,这是我们设置的参数之一。
     Time taken for tests        表示所有这些请求被处理完成所花费的总时间。
     Complete requests        表示总请求数量,这是我们设置的参数之一。
     Failed requests        表示失败的请求数量,这里的失败是指请求在连接服务器、发送数据等环节发生异常,以及无响应后超时的情况。如果接收到的HTTP响应数据的头信息中含有2XX以外的状态码,则会在测试结果中显示另一个名为“Non-2xx responses”的统计项,用于统计这部分请求数,这些请求并不算在失败的请求中。
     Total transferred        表示所有请求的响应数据长度总和,包括每个HTTP响应数据的头信息和正文数据的长度。注意这里不包括HTTP请求数据的长度,仅仅为web服务器流向用户PC的应用层数据总长度。
     HTML transferred        表示所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度。
     Requests per second  吞吐率,计算公式:Complete requests/Time taken for tests
     Time per request   用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。
     Time per requet(across all concurrent request)        服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests        正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency Level。
     Transfer rate   表示这些请求在单位时间内从服务器获取的数据长度,计算公式:Total                    trnasferred/ Time taken for tests        这个统计很好的说明服务器的处理能力达到极限时,其出口宽带的需求量。
     Percentage of requests served within a certain time(ms)   这部分数据用于描述每个请求处理时间的分布情况,比如以上测试,80%的请求处理时间都不超过6ms,这个处理时间是指前面的Time per request        即对于单个用户而言,平均每个请求的处理时间。
     

样例二:

输入命令
ab -n 100 -c 10 http://test.com/
其中-n表示请求数,-c表示并发数

测试结果分析

上面的命令运行完毕后就出来测试报告了

ab性能测试工具使用_第6张图片

  • 这段展示的是web服务器的信息,可以看到服务器采用的是nginx,域名是wan.bigertech.com,端口是80

  • 这段是关于请求的文档的相关信息,所在位置“/”,文档的大小为338436 bytes(此为http响应的正文长度)

  • 这段展示了压力测试的几个重要指标

ab性能测试工具使用_第7张图片

Concurrency Level: 100
//并发请求数
Time taken for tests: 50.872 seconds
//整个测试持续的时间
Complete requests: 1000
//完成的请求数
Failed requests: 0
//失败的请求数

Total transferred: 13701482 bytes
//整个场景中的网络传输量
HTML transferred: 13197000 bytes
//整个场景中的HTML内容传输量

Requests per second: 19.66 [#/sec] (mean)
//吞吐率,大家最关心的指标之一,相当于 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值
Time per request: 5087.180 [ms] (mean)
//用户平均请求等待时间,大家最关心的指标之二,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值
Time per request: 50.872 [ms] (mean, across all concurrent requests)
//服务器平均请求处理时间,大家最关心的指标之三

Transfer rate: 263.02 [Kbytes/sec] received
//平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

  • 这段表示网络上消耗的时间的分解

ab性能测试工具使用_第8张图片

  • 这段是每个请求处理时间的分布情况,50%的处理时间在4930ms内,66%的处理时间在5008ms内...,重要的是看90%的处理时间。

ab性能测试工具使用_第9张图片

关于登录的问题

有时候进行压力测试需要用户登录,怎么办?
请参考以下步骤:

  1. 先用账户和密码登录后,用开发者工具找到标识这个会话的Cookie值(Session ID)记下来

  2. 如果只用到一个Cookie,那么只需键入命令:
    ab -n 100 -C key=value http://test.com/

    如果需要多个Cookie,就直接设Header:
    ab -n 100 -H “Cookie: Key1=Value1; Key2=Value2” http://test.com/

你可能感兴趣的:(软件测试,测试工具,apache,ab测试,软件测试)