性能測試工具經過模擬協議模擬壓力html
測試計劃的元素執行是有序的,經過如下方式執行:java
1-配置結點linux
2-前置處理器正則表達式
3-定時器數據庫
4-取樣器apache
5-後置處理器(只在有結果可用狀況下執行)windows
6-斷言(只在有結果可用狀況下執行)瀏覽器
7-監聽器(只在有結果可用狀況下執行)服務器
Apache JMeter是Apache組織的開放源代碼項目,是一個純Java桌面應用,用於壓力測試和性能測試。它最初被設計用於Web應用測試但後來擴展到其餘測試領域。session
Jmeter不是瀏覽器,它只負責發出請求和接收請求,不運行JavaScript,不包括渲染。
Apache JMeter能夠用於對靜態和動態的資源(文件,Servlet,Perl腳本,Java對象,數據庫和查詢,FTP服務器或是其餘資源)的性能進行測試。JMeter能夠用於分析不一樣壓力條件下的整體性能狀況。
也可使用JMeter提供的圖形化界面,分析性能指標或者在高負載狀況下測試你的服務器,腳本,對象。
建議安裝JDK環境,雖然JRE也能夠,可是壓測https須要JDK裏面的 keytool工具。壓測須要HTTPS
JDK環境:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
安裝,這裏使用的操做系統是Windows,選最後一個下載,下載完直接運行安裝。安裝完設置一下環境參數。
打開cmd,運行java –version,能獲得下面的輸出就表示配置正確了。
目前都是自動配置的。
http://jmeter.apache.org/download_jmeter.cgi
下載解壓就行。
bin:核心可執行文件,包含配置 jmeter.bat: windows啓動文件: jmeter: mac或者linux啓動文件: jmeter-server:mac或者Liunx分佈式壓測使用的啓動文件 jmeter-server.bat:mac或者Liunx分佈式壓測使用的啓動文件 jmeter.properties: 核心配置文件 extras:插件拓展的包 lib:核心的依賴包 ext:核心包 junit:單元測試包
D:\apache-jmeter-4.0\bin(此目錄爲安裝目錄)下的 jmeter.properties 文件。37行默認爲 #language=en 改爲language=zh_CN,如今默認中文,要改爲英文的話,把#去掉便可
用於生成測試過程當中服務器、負載機的資源代碼。(LR中的VuGen)
一般是一個腳本運行引擎,根據腳本要求模擬指定的用戶行爲。(LR中的Controller)
根據測試中實時地的數據生成報表,提供可視化的數據顯示方式。(LR中的Analysis)
用於產生負載,一般以多線程或是多進程的方式模擬用戶行爲。(LR中的Load Generators)
用來描述一個性能測試,包含與本次性能測試全部相關的功能。也就是說本次性能測試的全部內容是基於一個計劃的。
一種特殊類型的 ThreadGroup,可用於執行 預測試 操做。這些線程的行爲徹底像一個征程的線程組元件。不一樣的是,這些類型的線程執行 測試前 進行按期線程組的執行。
一種特殊類型的ThreadGroup,可用於執行 測試後 動做。這些線程的行爲徹底像一個正常的線程組元件。不一樣的是,這些類型的線程執行 測試結束 後執行按期的線程組。
這個就是咱們一般添加運行的線程。能夠看作一個虛擬用戶組,線程組中的每一個線程均可以理解爲一個虛擬用戶。線程組中包含的線程數量在測試執行過程當中是不會發生改變的。
測試片斷元素是控制器上的一種特殊的線程組。它在測試樹上與線程組處於一個層級。它與線程組不有所不一樣,由於它 不被執行,除非它是一個模塊控制器或者是被控制器所引用時纔會被執行。
如下是線程組的 8 類可執行元件
配置元件(config element)用於提供對 靜態數據 配置的支持。如 CSV Data Set config 能夠將本地數據文件造成數據池(Data Pool)
定時器(Timer)用於操做之間設置等待時間,等待時間是性能測試中經常使用的控制客戶端QPS的手段。JMeter定義了 Bean Shell Timer、Constant Throughput Timer、固定定時器等不一樣類型的Timer。
用於在實際的請求發出以前對即將 發出的請求 進行特殊處理。例如,HTTP URL 重寫修復符則能夠實現URl重寫,當URL中有sessionID一類的session信息時,能夠經過該處理器填充發出請求的實際的sessionID。
用於對Sampler發出請求後獲得的 服務器響應 進行處理。通常用來提取響應中的特定數據。
斷言用於檢查測試中獲得的相應數據等是否符合預期,斷言通常用來設置檢查點,用以保證性能測試過程當中的數據交互是否與預期一致。
是用來對 測試結果數據 進行處理和可視化展現的一系列元件。圖形結果、查看結果樹、聚合報告。都是咱們常常用到的元件。注意:這個監聽器可不是用來監聽系統資源的元件。
JMeter有兩種類型的控制器:取樣器(sample)和 邏輯控制器(Logic Controller),用這些原件來驅動處理一個測試。
取樣器(Sample)是性能測試中向服務器發送請求,記錄響應信息,記錄響應時間的最小單元,JMeter原生支持多種不一樣的sampler,如HTTP Request Sampler、FTP Request Sample、TCP Request Sample、JDBCRequest Sampler等,每一種不一樣類型的 sampler 能夠根據設置的參數向服務器發出不一樣類型的請求。
邏輯控制器,包括兩類元件,一類是用於控制test plan 中 sampler 節點發送請求的邏輯順序的控制器,經常使用的有 若是(if)控制器、switch Controller 、Runtime Controller、循環控制器等。另外一類是用來組織可控制 sampler 來節點的,如 事務控制器、吞吐量控制器。
下載:http://www.badboy.com.au
badboy是一個強大的工具,旨在幫組測試和開發複雜的動態應用。Badboy包括一個簡單而全面的捕獲/回放界面,強大的負載測試的支持,詳細的報告圖表等等,從而使Web測試和開發變得更加容易。
彈窗問題
訪問者所使用的瀏覽器不能徹底支持頁面裏的腳本,造成「腳本錯誤」。遇到「腳本錯誤」時通常會彈出一個很是難看的腳本運行錯誤警告窗口,而事實上,腳本錯誤並不會影響網站瀏覽,所以這一警告可謂畫蛇添足。要關閉警告則能夠在瀏覽器的工具菜單選擇Internet選項,而後單擊高級屬性頁。進入到瀏覽標籤,並選中「禁止腳本調試」複選框,之後你就不會再收到這些警告了。
檢查點設置:選擇要檢查的文字,而後在Tools>step1裏添加斷言,再回放。
8類可被執行的元件(測試計劃與線程組不屬於 可執行元件),這些元件中,取樣器(samlper)是典型的不與其餘元件發生交互做用的元件,邏輯控制器只對其子節點的取樣器有效,而其餘元件(配置元件、定時器、斷言、監聽器)須要與取樣器(sampler)等元件交互。
在jmeter中,元件的做用域是靠測試計劃的樹型結構中元件的 父子關係 來肯定的,做用域的原則是:
取樣器(sampler)元件不和其餘元件相互做用,所以不存在做用於的問題。
邏輯控制器(Logic Controller)元件只對 其子節點 中的 取樣器和邏輯控制器 做用。
除取樣器和邏輯控制器元件外,其餘6類元件,若是是某個取樣器的子節點,則該元件對其父子節點起做用。若是其父節點不是取樣器,則其做用因而該元件父節點下的其餘全部後代節點(包括子節點、子節點的子節點等)。
前置處理器、後置處理器和斷言等元件功能對 取樣器 做用,所以,若是在它們的做用域內沒有任何取樣器,則不會被執行。
若是在同一做用域範圍內有多個同一類型的元件,則這些元件按照它們在測試計劃中的上下順序依次執行。
測試需求:測試 20個用戶訪問 http:http://www.qiakr.com/t 在載達到30 QPS時的平均響應時間。
QPS:Query Per Second 每秒查詢率。是一臺查詢服務器每秒可以處理的查詢次數。在因特網上,做爲域名系統服務器的性能常常用每秒查詢率來衡量。
線程組主要包含三個參數:線程數、準備時長(Ramp-Up Period(in seconds))、循環次數。
線程數:虛擬用戶數。一個虛擬用戶佔用一個進程或線程。設置多少虛擬用戶數在這裏也就是設置多少個線程數。
準備時長(單位爲s):設置的虛擬用戶數須要多長時間所有啓動。若是線程數爲20,準備時長爲10,那麼須要10秒鐘啓動20個線程,也就是每秒鐘啓動2個線程。
循環次數:每一個線程發送請求的次數。若是線程數爲20,循環次數爲5,那麼每一個線程發送5次請求。總請求數爲20*5=100.若是勾選了「永遠」,那麼全部線程會一直髮送請求,一到選擇中止運行腳本。
一個HTTP請求有着許多的配置參數,下面將詳細介紹:
從HTML文件獲取全部有內容的資源:當該選項被選中時,jmeter在發出HTTP請求並得到響應的HTML文件內容後,還對該HTML進行分析並獲取HTML中包含的全部資源(圖片、flash等),默認不選中,若是用戶只但願獲取頁面中的特定資源,能夠在下方的Embedded URLs must match文本框中填入須要下載的特定資源表達式,這樣,只有能匹配指定正則表達式的URL指向資源會被下載。
用做監視器:此取樣器被當成監視器,在Monitor Results Listener 中能夠直接看到基於該取樣器的圖形化統計信息。默認不選中。
Save response as MD5 hash?:選中該項,在執行時僅記錄服務端響應數據的MD5值,而不記錄完整的響應數據。在須要進行數據量很是大的測試時,建議選中該項以減小取樣器記錄響應數據的開銷。
Jmeter提供了一個很是有用的定時器,稱爲Constant Throughput Timer(常數吞吐量定時器),該定時器能夠方便地控制給定的取樣器發送請求的吞吐量。
Constant Throughput Timer 的主要屬性介紹:
Target throughput(in samplers per minute):目標吞吐量。注意這裏是每分鐘發送的請求數,實際填的數值爲:60*QPS。
其次,Calculate Throughput based on 有5個選項,分別是:
腳本的主要部分設置完成後,須要經過某種方式得到性能測試中的測試結果,在本例中,咱們關係的是請求的響應時間。
Jmeter中使用監聽器元件收集取樣器記錄的數據並以可視化的方式來呈現。Jmeter有各類不一樣的監聽器類型,由於上HTTP請求,咱們可在添加聚合報告,更爲直觀的查看測試結果。
添加聚合報告,右鍵點擊線程組,在彈的菜單(添加--->監聽器-->聚合報告)中選擇聚合報告。
若是出現403,網址有作一個保護,即對網站請求源作了保護,若是是來源不明的請求就會拒絕訪問(防止爬蟲什麼的),因此須要在jmeter中添加模擬瀏覽器的信息。
模擬瀏覽器的信息是存在了User-Agent中,這個參數在百科中的解釋:User Agent中文名爲用戶代理,簡稱 UA,它是一個特殊字符串頭,使得服務器可以識別客戶使用的操做系統及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。
一些網站經常經過判斷 UA 來給不一樣的操做系統、不一樣的瀏覽器發送不一樣的頁面,所以可能形成某些頁面沒法在某個瀏覽器中正常顯示,但經過假裝 UA 能夠繞過檢測。
Term | Definition |
Label | 每一個JMeter的element(例如 HTTP Request)都有一個Name屬性,這裏顯示的就是Name屬性的值 |
#Samples | 表示你此次測試中一共發出了多少個請求,若是模擬10個用戶,每一個用戶迭代10次,那麼這裏顯示100 |
Average | 平均響應時間--默認狀況下是單個Request的平均響應時間,當使用了Transaction Controller時,也能夠以Transaction爲單位顯示平均響應時間 |
Median | 中位數,也就是50%用戶的響應時間 |
90%Line | 90%用戶的響應時間 |
Min | 最小響應時間 |
Max | 最大響應時間 |
Error% | 本次測試中出現錯誤的請求的數量/請求的總數 |
Throughput | 吞吐量---默認狀況下表示每秒完成的請求數(Request per Second)。 |
KB/sec | 每秒從服務器端接收到的數據量。 |
斷言是在請求的返回層面增長一層判斷機制。由於請求成功了,並不表明結果必定正確,所以須要檢測機制提升測試準確性。下面介紹經常使用的jmeter三種斷言。
模式匹配規則:
包括:返回結果包括你指定的內容
匹配:根據指定內容進行匹配
Equals:返回結果與你指定結果一致
Substring:返回結果是指定結果的字串
否:不進行匹配
若是響應時間大於設置的響應時間,則斷言失敗,不然成功!(見代碼Assertion.jmx)
Filename:參數項文件
File Encoding:文件的編譯方法,通常爲空
Vaiable Names:文件中各列所表示的參數項;各參數項之間利用逗號分隔;參數項的名稱應該與HTTP Requset中的參數項一致。
Delimiter:如文件中使用的是逗號分隔符,則填寫逗號;如使用的是TAB,則填寫 \t 。
Recycle on EOF?:True=當讀取文件到結尾時,再重頭讀取文件,False=當讀取文件到結尾時,中止讀取文件。
Stop thread on EOF?:當Recycle on EOF?一項爲False時起效;True=當讀取文件到結尾時,中止進程。
現有以下 csv 格式的文件,放在桌面。C:\Users\Administrator\Desktop\工做表.csv
把CSV數據文件設置 設置成以下
因爲有四組內容,線程組循環4次
運行,結果以下:
生成函數後
下一次發送的passwd就是1-100隨機數
操做步驟:step1---->定時器---->Synchronizing Timer
表示要先生成10個用戶在進行訪問,沒有所有生成完不訪問。後面的時候表示訪問延時。
正則表達式部分配置說明
引用名稱:下一個請求要引用的參數名稱,如填寫 activityID,則可用 $(activityID)引用它。
正則表達式:省略。
模板:用$$引用起來,若是在正則表達式中有多個正則表達式,則能夠是 $2$3$等等,表示解析到的第幾個值給 title。如:$1$表示解析到的第一個值。
匹配數字:0表明隨機取值,1表明所有取值。
缺省值:若是參數沒有取獲得值,那默認給一個值讓它取。
1.建立一個線程組
2.線程組-添加-配置元件-FTP請求缺省值
說明:
IP:爲你FTP服務的IP
Remote file:爲你FTP服務器上的一個文件
local file:爲本地你存放到本機上的路徑
選擇get(RETR)爲下載方式。
登陸配置:填寫你的FTP服務器的用戶名密碼。
按照第三步再添加一個FTP請求,選擇put爲上傳方式。
添加一個監控器:線程組-》添加-》監控器-》Spline Visualizer