Ab測試工具是apache自帶的測試工具,具備簡單易上手的特性,下面我總結一下個人使用方法,首先去官方下載apache程序包,我下的最新版本apache2.4.23,下載地址http://httpd.apache.org/download.cgihtml
我下載的windows版本,解壓後放到某一目錄便可。shell
一、呼出控制檯apache
可使用系統自帶cmd或者Xshell工具都可json
二、進入apache下的bin目錄ab.exe就在此處windows
三、使用方法服務器
直接在此目錄下輸入ab回車就會羅列出使用幫助併發
使用方式:ab [options] [http://]hostname[:port]/pathapp
這裏我只介紹經常使用命令工具
-n:總請求次數(最小默認爲1)post
-c:併發次數(最小默認爲1且不能大於總請求次數,如:10個請求,10個併發,實際就是1人請求1次)
-p:post參數文檔路徑(-p和-T參數要配合使用)
-T:header頭內容類型(此處切記是大寫英文字母T)
後面直接寫請求路徑便可:http://www.test.com/xxx/xxx.html
四、無參方式請求
輸入:ab -n 10 -c 10 http://paycenter.gotrip8.com/querypay.aspx
五、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沒法識別&符號
六、Post方式請求
參數文檔:參數文檔內容使用「key=value&key=value&key=value...」方式進行拼接,還有json的方式,但我實驗沒有成功,接收不到參數,具體緣由未知
輸入: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
七、測試結果
主要看三個數據
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
能夠根據固定併發數,增長請求次數或者固定請求次數,調整併發數來查看上面三個值得變化來調優服務器
八、未解決問題
在使用中我發現兩個問題
一是沒法傳遞json的post參數,網上的方法都試過了,接不到參數
二是傳參時沒法改變參數,或者說沒法傳遞不一樣參數,好比下單接口測試,每次都應該傳遞不一樣的訂單號,或者註冊接口,每次都應該傳遞不一樣的帳號密碼,但在參數文檔中如何寫也實現不了,還望高手解答,謝謝