1. 程式人生 > >性能測試入門(三):性能測試工具

性能測試入門(三):性能測試工具

需求 pre tor 不足 廠商 ecdh 腳本編寫 ssi 3.1

這篇文章介紹下性能測試工具:

簡單模擬工具

有很多場景下,我們只是想做一個簡單的壓測,對於監測結果要求並不高,壓測的場景也比較簡單,不想安裝復雜的工具,這種情況下,推薦使用簡單的模擬工具進行就可以了。

ab

ab即ApacheBench,是apache自帶的一款功能強大的測試工具,安裝了apache一般就自帶了,即httpd(在bin目錄下)。 ab主要是設計用來測試apache的性能,但是使用ab可以同時模擬多個並發請求,專門用於HTTP Server的壓測,

優點是:

  1. 小巧、性能好
  2. post請求,傳參等基本http功能齊全
  3. 支持windows(這點其實不容易)

缺點是:

  1. 得裝個apache web服務器
  2. 一次測試只能支持單個鏈接

命令格式簡單示例:

$ ab -n1000 -c100 https://www.baidu.com/

這句的意思是用100個並發線程完成1000次對網頁的訪問,返回結果如下:

This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.baidu.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        BWS/1.1
Server Hostname:        www.baidu.com
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128

Document Path:          /
Document Length:        227 bytes

Concurrency Level:      100
Time taken for tests:   3.581 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      872000 bytes
HTML transferred:       227000 bytes
Requests per second:    279.25 [#/sec] (mean)
Time per request:       358.107 [ms] (mean)
Time per request:       3.581 [ms] (mean, across all concurrent requests)
Transfer rate:          237.80 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       87  255  61.1    257    1217
Processing:    28   73  43.1     60     256
Waiting:       28   57  29.2     47     242
Total:        141  328  51.0    323    1371

Percentage of the requests served within a certain time (ms)
  50%    323
  66%    335
  75%    344
  80%    353
  90%    373
  95%    384
  98%    431
  99%    465
 100%   1371 (longest request)

最關鍵的指標是:

Requests per second:    279.25 [#/sec] (mean)
Time per request:       358.107 [ms] (mean)

標明的是QPS為279.25 ,請求處理的平均時間是358ms。

siege

siege是一個linux下的壓測工具,基本功能和ab差不多,但是他是個獨立的工具,可以獨立安裝。另支持傳入文件列表,可以允許一次性壓測多個鏈接(註意是隨機訪問,不是順序訪問)。

官方網站:https://www.joedog.org/siege-home/

下載地址:http://download.joedog.org/siege/siege-3.1.4.tar.gz

安裝

# tar -xzvf siege-3.1.4.tar.gz 
# cd siege-3.1.4
# ./configure
# make 
# make install

使用方式及返回結果與ab類似,看官網或者看其他類型文章即可,不做贅述。

註意:http_load和webbenche都是linux下不錯的Web壓測工具,非常小巧,是用來也比較簡單。但是都不支持post的請求,沒有ab和siege均衡,返回結果也顯得簡單,因此不做推薦。

專業壓測工具

Jmeter

官方:http://jmeter.apache.org/download_jmeter.cgi

Gatling出來之前,在免費領域的工具,其實基本上只有Jmeter一個選擇。Jmeter使用java語言開發,擁有完善的一個UI界面、錄制腳本、報表展示、支持思考時間、參數傳遞等復雜功能。學習一個壓力測試工具網絡上已經有太多的教程了,隨便搜索即可。這裏只談兩點:

  1. Jmeter的錄制腳本的功能,可以使用另外一個工具badboy來代替。
  2. Jmeter是可以在linux下使用命令行執行的,不需要必須使用UI界面。這點很多同學都不知道。因為在一些環境下,Linux服務是不放開圖形界面的,所以這一點也非常重要。

Jmeter的缺點主要是使用了Java編寫,並采用一個並發一個線程的方式,本身性能並不很好,在需要很大壓力的情況下,往往對於客戶端要求配置比較高。另外報表醜了點。

Gatling

Gatling號稱新一代的服務器性能測試工具,其實也是基於Java研發的,但是它采用了Akka Actors和Async IO,因此理論上性能上比Jmeter會更好一點,最近幾年越來越流行。程序員的世界裏喜新厭舊是永恒的主題,後浪總能把前浪排在沙灘上。

  • 在測試腳本撰寫方面,Gatling選擇了Scala代碼,而JMeter選擇的是XML代碼。所以Scala更容易看出邏輯,相對更好維護。
  • 在報表上,Gatling的報表更輕量級,更好用一點。

但是新生事物其實也存在他的問題,比如中文文檔相對較少,可能會存在某些未知的坑,目前中文環境下介紹Gatling的並沒有那麽多,建議多參考下官網:

https://gatling.io/

LoadRunner

收費軟件,龐大無比,功能強大,特別是報表UI、腳本錄入等功能,但是隨著開源軟件以及雲壓測工具的興起,漸漸顯露疲態,受到關註小多了。

雲壓測工具

進入到互聯網軟件領域,隨著軟件的規模原來越大,所需要壓測量級越來越大,對於模擬數據的真實性也越來越高,性能測試不再是單機或者幾臺機器能完成的,隨之而來的壓測工具也變成了分布式的,逐步走向服務化。比如阿裏雲的PTS、APM的雲壓測工具,騰訊的WeTest都是解決特定Web領域的壓測軟件,目前都是近幾年剛剛興起,走在發展的道路上。但是這部分軟件目前只解決了壓力上不去的問題,讓非IT專業人士也能操作,但是靈活度不足,使用方式上類似於第一類【簡單模擬工具】,對於腳本編寫支持一般,比較適合需要持久大規模壓力的需求。

總結

本文主要介紹了性能測試工具的幾種類型。簡單模擬工具安裝簡單,使用簡單,比較適合程序員自行壓測解決軟件問題。專業壓測工具主要面向專門測試人員,有一定的入門門檻,需要使用人有撰寫腳本或者至少修改腳本的能力,提供的功能也更多,數據也更準確。雲壓測工具主要適用於雲端,對於壓力要求較高,或者使用了該廠商的其他雲組件服務,或者本身沒有專業性能測試能力,可以考慮下雲壓測工具。

性能測試入門(三):性能測試工具