松勤軟體性能測試
前面的微信介紹項目的部署也是為性能測試做鋪墊,只有對已經部署的項目做性能測試才有意義,因為中間價Nginx、uWSGI是影響系統性能的重要一環。
Locust性能測試工具
LoadRunner、JMeter都是非常好用的性能測試工具。
Locust同樣也是性能測試工具,完全基於Python語言,採用Pure Python描述測試腳本,並且HTTP請求完全基於Requests庫,除了HTTP/HTTPS協議外,Locust還可以測試其他協議的系統,只需要採用Python調用對應的庫進行請求描述即可。
LoadRunner、JMeter採用進程、線程的方式,這種方式很難在單機上模擬出較高的並發壓力。
Locust的並發機制摒棄了進程和線程,採用協程(gevent)的機制。協程避免了系統級資源的調度,因此可以大幅度提高單機的並發能力。
安裝Locust
如果是python 2.*版本,則使用pip進行安裝;
如果是python 3版本,則建議從GitHub克隆島本地進行安裝。
Locust安裝目錄下的setup.py文件的要求:
install_requires=["gevent>=1.1.2","flask>=0.10.1","requests>=2.9.1","msgpack-python>=0.4.2","six>=1.10.0","pyzmq==15.2.0"]
gevent:在Python中實現協程的一個第三方庫,協程,又稱微線程(Coroutine),使用gevent可以獲得極高的並發性能;
flask:Python的一個Web開發框架,它與Djanog的地位相當;
requests:做HTTP介面測試的庫;
msgpack-python:一種快速、緊湊的二進位序列化格式,適用於類似JSON的數據;
six:它提供了一些簡單的工具來封裝Python 2和Python 3之間的差異性;
pyzmq:如果你打算把Locust運行在多個進程/機器,建議安裝pyzmq;
試運行一下locust,查看幫助信息:
性能測試案例
對於Web應用來說,它本質上是由一個個的Web頁面構成,一般我們可以通過不同的URL地址來得到不同的頁面。
1. 編寫性能測試腳本
使用Locust編寫一個簡單性能測試行為表述腳本,創建文件:locustfile.py
UserBehavior類繼承TaskSet類,用於描述用戶行為;
baidu_page()方法表示一個用戶行為,訪問百度首頁,使用@task裝飾該方式為一個事務;
client.get()用於指定請求的路徑「/」,因為是百度首頁,所以指定為根路徑。
WebsiteUser類用於設置性能測試:
task_set:指向一個定義的用戶行為類;
min_wait:執行事務之間用戶等待時間的下界,單位:毫秒;
max_wait:執行事務之間用戶等待時間的上界,單位:毫秒;
2. 執行性能測試
首先,啟動性能測試:
其中:
-f:指定性能測試腳本文件;
–host:指定被測試應用的URL地址,注意訪問百度使用的HTTPS協議;
通過瀏覽器訪問:http://127.0.0.1:8089(Locust啟動網路監控器,默認埠號為8089),如圖:
其中:
Number of users to simulate:設置模擬用戶數;
Hatch rate(users spawned/second):每秒產生(啟動)的虛擬用戶數;
單擊「Start swarming」按鈕,開始運行性能測試,各個參數如下:
Type:請求的類型,例如GET/POST;
Name:請求的路徑,這裡為百度首頁,即https://www.baidu.com/;
request:當前請求的數量;
fails:當前請求失敗的數量;
Median:中間值,單位毫秒,一半的伺服器響應時間低於該值,而另一半高於該值;
Average:平均值,單位毫秒,所有請求的平均響應時間;
Min:請求的最小伺服器響應時間,單位毫秒;
Max:請求的最大伺服器響應時間,單位毫秒;
Content Size:單個請求的大小,單位位元組;
reqs/sec:每秒鐘請求的個數。
※LoadRunner中錯誤解決辦法(三)
※App測試中ios和Android的區別
※松勤軟體自動化測試
TAG:松勤軟體學院 |