jmeter資料庫性能測試
Ⅰ 如何使用jemeter讀取禪道資料庫的測試用例
1 JMeter環境變數配置
由於JMeter是純java程序,因此運行需要配置環境變數,JMeter主要使用CLASSPATH變數。
配置如下環境變數:
JAVA_HOME=D:\Program Files\Java\jdk1.7.0_55;
CLASSPATH=.;%JAVA_HOME%\jre\lib\ext;
Path=;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
2 配置JDBC
2.1 環境變數配置
到網上下載資料庫的JDBC,以Mysql為例,如:mysql-connector-java-5.1.26-bin.jar,將其放到Java的環境變數下,具體路徑:D:\Program Files\Java\jdk1.7.0_55\jre\lib\ext,如下圖:
2.2 JMeter載入配置
瀏覽添加具體的JDBC路徑即可,如下圖:
3 線程組
線程數:並發用戶數
Ramp-Up Period(in second):載入並發用戶的時間
循環次數:執行次數
3.1 添加資料庫連接配置
Database URL:jdbc:mysql://IP:Port/database
JDBC Driver class:Mysql資料庫,默認com.mysql.jdbc.Driver,不同資料庫有不同默認值
3.2 添加資料庫操作
Query Type:選擇操作類型
文本框:填寫操作語句
4 監聽器
4.1 察看結果樹
響應數據:SQL語句查詢結果
4.2 聚合報告
Ⅱ JMeter能做那些性能測試
Apache JMeter™是Apache組織開發的一款開源軟體,它是 功能和性能測試 的工具,是典型的 純Java開發 的應用程序,可以在不同平台比如Windows、Linux或macOS系統上進行軟體測試。
1、基準測試:
即單用戶測試,測試環境確定以後,對 業務模型 中的 重要業務 做單獨的測試,獲取 單用戶運行時的各項性能指標 ,為多用戶並發測試和綜合場景測試等性能分析 提供參考依據。
[個人理解:分別模擬單用戶使用某個重要業務場景; 業務即功能 ,如何去實現它,是業務邏輯的實現;例如登錄業務,登錄的過程是業務邏輯的實現;添加、修改、刪除定時任務都是業務]
我們在查看平均事務響應時間的時候,先看整體曲線走勢,如果整體趨勢比較平滑,沒有忽上忽下的波動情況,取「Average Time」與「90 Percent Time」都可以;如果整體趨勢毫無規律,波動非常大,我們就不用「Average Time」而使用「90 Percent Time」可能更真實些。 詳細分析
2、並發測試
主要指當測試多用戶並發訪問同一個應用、模塊、數據時是否產生隱藏的並發問題,如 內存泄漏、線程鎖、資源爭用問題 ,幾乎所有的性能測試都會涉及並發測試。
是多用戶執行某一操作,形成瞬時壓力(精確到毫秒),是一種嚴格的測試,主要考察系統對瞬時較大壓力的承受能力。
註: 同步定時器 實現並發
3、負載測試
模擬實際軟體系統所承受的負載條件的系統負荷,通過不斷載入(如逐漸增加模擬用戶的數量)或其它載入方式來觀察 不同負載下 系統的 響應時間 和 數據吞吐量 、 系統佔用的資源(如CPU、內存 )等,以發現系統可能存在的性能瓶頸、內存泄漏、不能實時同步等問題。
4、壓力測試
又稱為強度測試:是在強負載( 大數據量、大量並發用戶 等)下的測試,查看應用系統在峰值使用情況下操作行為,從而有效地發現系統的某項功能隱患、系統是否具有良好的容錯能力和可恢復能力。
壓力測試分為高負載下的長時間(如24小時以上)的穩定性壓力測試和極限負載情況下導致系統崩潰的破壞性壓力測試。
一直重復長時間給系統極限壓力,看系統是否能承受
壓力測試時,系統內存溢出解決方案:
修改 apache-jmeter-2.11\bin\jmeter.bat
5、穩定性測試:
主要測試 持續一段時間 訪問介面,測試介面的穩定性。
主要涉及的配置為:
1)線程組設置循環次數永久,持續時間設置為15分鍾(根據自己的項目要求而定)
2)必要的時候,添加統一隨機定時器元件
主要有兩個參數:
隨機的最大時間(ms):在這個范圍內進行隨機
常量延時時間(ms):固定的延時時間
最後的延時時間=隨機的時間+常量延時時間
6、業務場景測試:
主要測試多個介面聯動,模擬真實介面的調用,增加統一隨機定時器模擬用戶真實操作
比如添加購物的流程涉及到:登錄介面–搜索商品介面–瀏覽商品介面–添加到購物車介面
其中主要最難的是:登錄介面提交的驗證碼處理,我之前的項目是開發給定了一個固定的萬能驗證,進行提交登錄,添加HTTP Cookie管理器(用於自動保存登錄之後的信息,下面的請求就可以使用同一個登錄狀態進行訪問:https://blog.csdn.net/_39372836/article/details/91442231)。
使用事務控制器元件(https://blog.csdn.net/_39372836/article/details/99445618)進行管理這些介面,這些介面就屬於一個事務流程,只要一個測試失敗,則事務通過失敗。
一般情況下JMeter元素按照如下順序依次執行:
一個簡單的例子:
其中①為取樣器、②為配置元件、③為定時器、④為監聽器、⑤為前置處理器、⑥為後置處理器、⑦為斷言。
執行順序為:②-->③-->⑤-->①-->⑥-->⑦-->④
參考資料:
https://blog.csdn.net/_39372836/article/details/101194892
Ⅲ jmeter怎麼測試其他伺服器上的測試資料庫
1.測試計劃是使用 JMeter 進行測試的起點,它是其它 JMeter 測試元件的容器。
2.線程組:代表一定數量的並發用戶,它可以用來模擬並發用戶發送請求。實際的請求內容在Sampler中定義,它被線程組包含。可以在「測試計
劃->添加->線程組」來建立它,然後在線程組面板里有幾個輸入欄:線程數、Ramp-Up Period(in
seconds)、循環次數,其中Ramp-Up Period(in seconds)表示在這時間內創建完所有的線程。如有8個線程,Ramp-Up
= 200秒,那麼線程的啟動時間間隔為200/8=25秒,這樣的好處是:一開始不會對伺服器有太大的負載。線程組是為模擬並發負載而設計。
3、取樣器(Sampler):模擬各種請求。所有實際的測試任務都由取樣器承擔,存在很多種請求。如:HTTP 、ftp請求等等。
4、監聽器:負責收集測試結果,同時也被告知了結果顯示的方式。功能是對取樣器的請求結果顯示、統計一些數據(吞吐量、KB/S……)等。
6、斷言:用於來判斷請求響應的結果是否如用戶所期望,是否正確。它可以用來隔離問題域,即在確保功能正確的前提下執行壓力測試。這個限制對於有效的測試是非常有用的。
7、定時器:負責定義請求(線程)之間的延遲間隔,模擬對伺服器的連續請求。
5、邏輯控制器:允許自定義JMeter發送請求的行為邏輯,它與Sampler結合使用可以模擬復雜的請求序列。
8. 配置元件維護Sampler需要的配置信息,並根據實際的需要會修改請求的內容。
9. 前置處理器和後置處理器負責在生成請求之前和之後完成工作。前置處理器常常用來修改請求的設置,後置處理器則常常用來處理響應的數據。
二、Jmeter報告 (轉載)
http://www.cnblogs.com/jackei/archive/2006/11/13/558720.html
1、Aggregate Report 解析
Aggregate Report 是 JMeter 常用的一個 Listener,中文被翻譯為「聚合報告」。今天再次有同行問到這個報告中的各項數據表示什麼意思,順便在這里公布一下,以備大家查閱。
如果大家都是做Web應用的性能測試,例如只有一個登錄的請求,那麼在Aggregate Report中,會顯示一行數據,共有10個欄位,含義分別如下。
Label:每個 JMeter 的 element(例如 HTTP Request)都有一個 Name 屬性,這里顯示的就是 Name 屬性的值
#Samples:表示你這次測試中一共發出了多少個請求,如果模擬10個用戶,每個用戶迭代10次,那麼這里顯示100
Average:平均響應時間——默認情況下是單個 Request 的平均響應時間,當使用了 Transaction Controller 時,也可以以Transaction 為單位顯示平均響應時間
Median:中位數,也就是 50% 用戶的響應時間
90% Line:90% 用戶的響應時間
Note:關於 50% 和 90% 並發用戶數的含義,請參考下文
http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html
Min:最小響應時間
Max:最大響應時間
Error%:本次測試中出現錯誤的請求的數量/請求的總數
Throughput:吞吐量——默認情況下表示每秒完成的請求數(Request per Second),當使用了 Transaction Controller 時,也可以表示類似 LoadRunner 的 Transaction per Second 數
KB/Sec:每秒從伺服器端接收到的數據量,相當於LoadRunner中的Throughput/Sec
基本知識:
1、吞吐量:是指在沒有幀丟失的情況下,設備能夠接受的最大速率。
2、存儲的最小單位是位元組Byte,對於存儲單位,有以下幾個單位,GB、MB和KB,那麼這三者之間的換算關系是:1GB=1024MB,1MB=1024KB,1KB=1024Bytes。
Bit :「位」,稱為bit,也就是比特,有的時候也稱為位。一個位元組為8位二進製表示。
Byte:「位元組」,一個位元組就是8比特。
3、Mbps (million bits per second 兆位/秒) 代表每秒傳輸1,000,000比特。該縮寫用來描述數據傳輸速度。例如:4Mbps=每秒鍾傳輸4M比特。
數據傳輸速率的單位,字母b(bit)是比特和字母 B (Byte)是位元組。
4、吞吐量與帶寬的區分:吞吐量和帶寬是很容易搞混的一個詞,兩者的單位都是Mbps.先讓我們來看兩者對應的英語,吞吐
量:throughput ; 帶寬: Max net bitrate
。當我們討論通信鏈路的帶寬時,一般是指鏈路上每秒所能傳送的比特數。我們可以說乙太網的帶寬是10Mbps。但是,我們需要區分鏈路上的可用帶寬(帶
寬)與實際鏈路中每秒所能傳送的比特數(吞吐量)。我們傾向於用「吞吐量」一次來表示一個系統的測試性能。這樣,因為實現受各種低效率因素的影響,所以由
一段帶寬為10Mbps的鏈路連接的一對節點可能只達到2Mbps的吞吐量。這樣就意味著,一個主機上的應用能夠以2Mbps的速度向另外的一個主機發送
數據。
5、方差和標准差都是用來描述一組數據的波動性的(集中還是分散),標准差的平方就是方差。方差越大,數據的波動越大。
三.利用BadBoy生成測試計劃(測試腳本)
badBoy可以非常容易的生成web的測試腳本。類似與LoadRunner的使用,輸入站點的URL,點擊Record開始錄制。File –> Export to Jmeter ,導出為Jmeter認識的測試腳本。
四.一個簡單的測試示例思路(目前自己思路,不斷改進)
a. 需要的「測試腳本」,對應web的應用使用badboy生成測試腳本。直接導入Jmeter,進行配置。
b.如圖
TestPlan :是整個Jmeter測試執行的容器。
ThreadGroup :模擬請求,定義線程數、Ramp-Up Period、循環次數。
Step1 :循環控制器 ,控制Sample的執行次數。
Sample取樣器 :決定進行那種類型的測試,如http、ftp等。
監聽器 :圖形結果、聚合報告。
定時器 :Random類型,定義線程請求的延遲。
c.聚合報告的解釋
Label :各個模擬測試的名稱
#Samples :各個測試的樣本總數
Average :每個請求的平均響應時間
Median :中值,即50%請求的平均響應時間
90%Line :90%請求的響應時間
Min :最小響應時間 ,Max :最大的響應時間
Error% :錯誤響應的概率。即無法響應的概率。
ThroughPut :吞吐量 -- 默認情況下表示每秒完成的請求數(Request per Second)。
KB/Sec :每秒從伺服器端接收到的數據量。
五.Jmeter常見問題 (轉載) http://www.51testing.com/?uid-128005-action-viewspace-itemid-84094
說明:這些問答是從網上轉載的,自己修改了其中的一些內容,如果大家興趣,可以將大家在使用Jmeter的時候碰到的問題寫下來,我們一起補充到這個問答裡面,共同努力完善jmeter的資料。
1. JMeter的工作原理是什麼?
向伺服器提交請求;從伺服器取回請求返回的結果。
2. JMeter的作用?
JMeter可以用於測試靜態或者動態資源的性能(文件、Servlets、Perl腳本、java對象、資料庫和查詢、ftp伺服器或者其他的資源)。
JMeter用於模擬在伺服器、網路或者其他對象上附加高負載以測試他們提供服務的受壓能力,或者分析他們提供的服務在不同負載條件下的總性能情況。你可
以用JMeter提供的圖形化界面分析性能指標或者在高負載情況下測試伺服器/腳本/對象的行為。
3. 怎樣能看到jmeter提供的腳本範例?
在\JMeter\jakarta-jmeter-2.0.3\xdocs\demos目錄下。
4. 怎樣設置並發用戶數?
選中可視化界面中左邊樹的Test Plan節點,單擊右鍵,選擇Add-> Thread Group,其中Number of Threads參數用來設置發送請求的用戶數目。
5. JMeter的運行指示?
Jmeter在運行時,右上角有個單選框大小的小框框,運行是該框框為綠色,運行完畢後,該框框為白色。
6. User Parameters的作用是什麼?
提高腳本可用性
7. 在result里會出現彩色字體的http response code,說明什麼呢?
Http response code是http返回值,彩色字體較引人注目,可以使用戶迅速關注。象綠色的302就說明在這一步驟中,返回值取自本機的catch,而不是server。
8. 怎樣計算Ramp-up period時間?
Ramp-up period是指每個請求發生的總時間間隔,單位是秒。如果Number of Threads設置為5,而Ramp-up
period是10,那麼每個請求之間的間隔就是10/5,也就是2秒。Ramp-up period設置為0,就是同時並發請求。
9. Get和Post的區別?
他們是http協議的2種不同實現方式。Get是指server從Request URL取得所需參數。從result中的request中可以看到,get可以看到參數,但是post是主動向server發送參數,所以一般看不到這些參數的。
10. 哪些原因可能導致error的產生?
a. Http錯誤,包括不響應,結果找不到,數據錯誤等等;
b. JMeter本身原因產生的錯誤。
11. 為什麼Aggregate Report結果中的Total值不是真正的總和?
JMeter給結果中total的定義是並不完全指總和,為了方便使用,它的值表現了所在列的代表值,比如min值,它的total就是所在列的最小值。下圖就是total在各列所表示的意思。
12. JMeter的Thread Number是提供多個不同用戶並發的功能么?
不是,Thread Number僅僅是指並發數,如果需要實現多個不同用戶並發,我們應該採用其它方法,比如通過在jmeter外建立csv文件的方法來實現。
13. 同時並發請求時,若需要模擬不同的用戶同時向不同的server並發請求,怎樣實現呢?
方法很靈活,我們可以將不同的server在thread裡面預先寫好。或者預先將固定的變數值寫入csv文件,這樣還可以方便修改。然後將文件添加到User Parameters。
14. User Parameter中的DUMMY是什麼意思?
當其具體內容是${__CSVRead(${__property(user.dir)}${FILENAME},next())}時用來模擬讀文件的下一行。
15. 當測試對象在多server間跳轉時,應該怎樣處理?
程序運行時,有些http和隱函數會攜帶另外的server IP,我們可以從他們的返回值中獲取。
16. 為何測試對象是http和https混雜出現?
Https是加密協議,為了安全,一般不推薦使用http,但是有些地方,使用https過於復雜或者較難實現,會採用http協議。
17. Http和https的默認埠是什麼?
Apache server (Http)的默認埠是80;
SSL (Https)的默認埠是443。
18. 為何在run時,有些頁面失敗,但是最後不影響結果?
原因較多,值得提及的一種是因為主流頁面與它不存在依賴關系,所以即使這樣的頁面出錯,也不會影響運行得到正常結果,但是這樣會影響到測試的結果以及分析結果。
19. 為什麼腳本剛開始運行就有錯誤,其後來的腳本還可運行?
在Thread
Group中有相關設置,如果選擇了continue,即使前面的腳本出現錯誤,整個thread仍會運行直到結束。選擇Stop
Thread會結束當前thread;選擇Stop Test則會結束全部的thread。推薦選項是Stop Thread。
20. 在Regular Expression Extractor會看到Template的值是$1$,這個值是什麼意思呢?
$1$是指取第一個()裡面的值。如果Regular Expression的數值有多個,用這種方法可以避免不必要的麻煩。
21. Regular Expression中的(.*)是什麼意思?
那是一個正則表達式(regular expression)。』.』等同於sql語言中的』?』,表示可有可無。』*』表示0個或多個。』()』表示需要取值。(.*)表達任意長度的字元串。
22. 在讀取Regular Expression時要注意什麼?
一定要保證所取數值的絕對唯一性。
23. 怎樣才能判斷什麼樣的情況需要添加Regular Expression Extractor?
檢查Http Request中的Send Parameters,如果有某個參數是其前一個page中所沒有給出的,就要到原文件中查找,並添加Regular Expression Extractor到其前一page的http request中。
24. 在自動獲取的腳本中有時會出現空的http request,是什麼意思呢?
是因為在獲取腳本時有些錯誤,是腳本工具原因。在run時這種錯誤不參與運行的。
25. 在運行結果中為何有rate為N/A的情況出現?
可能因為JMeter自身問題造成,再次運行可以得到正確結果。
26. 常用http錯誤代碼有哪些?
400無法解析此請求。
403禁止訪問:訪問被拒絕。
404找不到文件或目錄。
405用於訪問該頁的HTTP動作未被許可。
410文件已刪除。
500伺服器內部錯誤。
501標題值指定的配置沒有執行。
502 Web伺服器作為網關或代理伺服器時收到無效的響應。
27. Http request中的Send Parameters是指什麼?
是指code中寫定的值和自定義變數中得到的值,就是在運行頁面時需要的參數。
28. Parameters在頁面中是不斷傳遞的么?
是的。參數再產生後會在頁面中一直傳遞到所需頁面。所以我們可以在動態參數產生時捕獲它,也可以在所需頁面的上一頁面捕獲。(但是這樣可能有錯誤,最好在產生頁面獲取)
29. 在使用JMeter測試時,是完全模擬用戶操作么?造成的結果也和用戶操作完全相同么?
是的。JMeter完全模擬用戶操作,所以操作記錄會全部寫入DB.在運行失敗時,可能會產生錯誤數據,這就取決於腳本檢查是否嚴謹,否則錯誤數據也會進入DB,給程序運行帶來很多麻煩。
六.Jmeter測試心得(轉載) http://www.iteye.com/topic/211216
企業應用開發過程中,性能測試是很重要的一個環節,在這個環節中Apache的JMeter以它開源、100%純Java、操作方便等優點發揮著很大的作用。
經過一段時間的使用,多少有些心得和技巧,拿出來共享,希望能有些幫助。
1、製作測試腳本:
手工製作測試腳本,需要你知道請求的url和攜帶的參數等等,太花費時間,
所以可以用badboy工具錄制腳本。這個工具雖然不是開源的,但是卻可以用來免費的錄製成.jmx的腳本,使用起來很方便。
官方網站是:http://www.badboy.com.au/
2、出現亂碼了?
在用JMeter發行HTTPRequest時,在請求參數中有中文時,發現存儲到DB中後,相應的欄位是亂碼,
明明在參數後面的Encode選項中打了V。後來發現badboy錄制腳本的時候並沒有記錄編碼方式,所以修改腳本,
在Content encoding中設置正確的編碼方式就不會出現亂碼了。
3、JMeter的妙用---准備測試數據:
要求性能測試開始前,先准備5W條數據。當然可以通過直接修改DB,但是如果這5W條數據涉及到很多表的關聯,
甚至還要通過存儲過程的處理怎麼辦,直接修改DB很容易出現錯誤的數據,要是在客戶的機器上弄錯,可就闖禍了。
這時候想到了JMeter,它本來是用來模擬大量用戶並發請求的,現在用它來批量的生成數據吧。
如果要求每條數據都不同,就要修改腳本,使用JMeter的函數來動態產生數據,比較常用的是CSVRead函數,
記不住名的話Ctrl+F可以呼喚出函數助手。使用這個函數的時候需要注意幾點,首先是csv文件的編碼格式,
使用ansi沒有問題,使用unicode時會使讀取的第一行數據出現錯誤;
${__CSVRead(data.txt,0)}---讀取本行的第一列值
${__CSVRead(data.txt,1)}${__CSVRead(data.txt,next)}---讀取本行的第二列值,並把行標移動到下一行
試驗證明JMeter應該做好了同步,在多線程環境下上面的調用方法沒有問題;
最後,修改JMeter的線程數會加快數據生成的速度,原理是當並發線程在20左右的時候會達到最大的吞吐量(request/分),
所以應該設定線程數20左右。
4、JMeter中debug方法:
JMeter提供了log函數輸出log,但是有時候並不好用,比如我想輸出某個函數的返回值看是不是正確的,
${__log(${__CSVRead(data.txt,1)})}這樣的寫法是錯誤的,JMeter會拋出異常,該怎麼辦呢?
答案是巧用監聽器(Listener)來輸出想看到的數據,結果顯示為樹的那個監聽器,
它可以讓你查看每個sampler的請求數據和響應數據,在請求數據中就有你想看到的信息。
5、常用的功能:
・使用HTTP Cookie Manager或URL重寫實現同一線程內的多個請求共享Session。
・把Login的請求放到只執行一次的控制器中,那麼即使循環多次,Login也只請求一次。
・如果想讓多個線程在同一時刻同時請求,那麼用Synchronizing Timer來做集合點。
・為了節省系統資源,使用非窗口模式運行JMeter(jmeter -n -t test.jmx)
・如果模擬並發用戶過多,比如200線程,那麼可以分散到多台機器上運行Jmeter(比如4台電腦,每台50線程)
更多功能請參照使用手冊
中文手冊(未完成)http://wiki.javascud.org/pages/viewpage.action?pageId=5566
6、在winnt系統上,使用perfmon來幫助Jmeter採集伺服器的系統資源數據,可以配置log輸出這些數據作為性能瓶頸分析時使用。
七.置信區間 http://java.chinaitlab.com/tools/355421.html
對數據進行更科學的分析,確定測試結果。類似於Jmeter聚合報告的90% Line給出的參考,而不能僅僅參考均值。