數據庫測試
JMeter可以做為Web服務器與瀏覽器之間的代理網關,以捕獲瀏覽器的請求和Web服務器的響應,這樣就可很容易的生成性能測試腳本。
根據腳本,JMeter可通過線程組來模擬真實用戶對Web服務器做壓力測試。本文描述使用JMeter進行數據庫測試的過程。創建測試計划,模擬
並發用戶發送SQL請求到數據庫。測試數據庫。
性能測試的目標是找到系統的性能瓶頸。本文將通過構造測試場景,完成對數據庫的測試。
場景:
1.單用戶: a.SQL語句優化; b.數據庫約束檢查; c.分頁查詢;
2.並發用戶: a.數據庫連接池、WEB線程池、數據庫死鎖;
步驟:
(數據庫)測試計划:
1.添加並發用戶
添加線程組(Thread Group),修改名稱為JDBC Users。設置線程數為5,循環次數為2。其他配置項不變。
2.添加JDBC請求
2.1.選中線程組,右鍵 添加->配置元件->JDBC Connection Configuration。其實,這個就是通過JDBC連接數據庫的配置文件。
修改 DataBase Connection Configuration 的配置:
Database URL:jdbc:mysql://localhost:3306/jmetertest
JDBC Driver class:com.mysql.jdbc.Driver
Username:username
Password:passwd
Variable Name:mysql 連接配置名在測試計划中是唯一的,后面會與JDBC請求綁定。
2.2.選中線程組,右鍵添加->采樣器(Sampler)->JDBC Request。這個就是通過JDBC向數據庫發送的請求。
修改:
Variable Name:mysql 這個和數據庫連接配置(JDBC Connection Configuration)中的配置名是一致的,代表一種對應關系。即我的這個JDBC請求是要通過名為mysql的
數據庫連接配置文件來向數據庫發送的。
Query:SELECT id,name,sex FROM users WHERE name='lisi'
3.添加監聽器用於查看/存儲測試結果
選中線程組,右鍵添加->監聽器->查看結果樹。
選中線程組,右鍵添加->-監聽器->聚合報告。
選中測試計划,右鍵添加->監聽器->圖形結果。
以上監聽器用來查看、保存測試結果。
說明:在點擊 “運行”之后,若在結果樹看到紅色的 JDBC Request 或是 聚合報告中Error一列非零。則說明測試執行有錯誤。
查看結果樹,取樣器結果頁簽,找到 Response message 信息,提示的就是錯誤原因。
比如:no suitable driver found for jdbc 。說明JDBC驅動(我連接的是mysql數據庫)有問題。
查看數據庫版本為 5.1.30。網上找到mysql-connector-java-5.1.30-bin.jar。復制到jmeter主目錄的lib子目錄下,然后在測試計划頁最下方添加Library即可解決此問題。
結果分析:
我在實際工作中很少接觸數據庫測試。所以也是摸着石頭過河。
接觸過一例數據庫假死的問題,原因是開發寫的SQL語句不嚴謹造成的。比如:SELECT * FROM user; 看着語句好像沒什么,但是這表里面有上千萬條數據。
在WEB頁面是只有主管級別的用戶才可以操作執行的,但是一執行的話WEB就進入假死狀態。大約30分鍾才結束這種狀態,實際是開發SQL語句的問題。多加幾個限制條件
就好了。其實,主管級別的用戶是有這個查詢的權限,但都是按條件查,實際不會做查詢全部用戶的操作。