0

Sử dụng trực tiếp cơ sở dữ liệu khi kiểm thử với JMeter

I. Cấu hình JDBC Connection Configuration

  • Để có thể thực hiện một số thao tác với DB trong JMeter, ta cần phải thêm một kết nối được gọi là JDBC Connection Configuration.

1. JDBC

  • JDBC (Java Database Connectivity) là một API tiêu chuẩn dùng để tương tác với các loại cơ sở dữ liệu quan hệ. JDBC có một tập hợp các class và các Interface dùng cho ứng dụng Java để có thể trao đổi với các cơ sở dữ liệu.
  • Khi làm việc với cơ sở dữ liệu từ Java bạn cần phải có Driver ( là class điều khiển việc kết nối với loại cơ sở dữ liệu bạn muốn).
  • Trong JDBC chúng ta có java.sql.Driver, nó là một interface có sẵn trong JDK. Vì vậy bạn phải download thư viện Driver ứng với loại Database đang dùng. Ở đây, mình sẽ sử dụng MySQL nên sẽ sử dụng thư viện mysql jbcd
  • Các Driver class thông dụng (bảng 1)
JDBC driver name URL format
MySQL com.mysql.jdbc.Driver jdbc:mysql://hostname/ databaseName
ORACLE oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@hostname:port Number:databaseName
DB2 COM .ibm.db2.jdbc.net.DB2Driver jdbc:db2:hostname:port Number/databaseName
Microsoft SQL Server com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:microsoft:sqlserver://<HOST>:

; databaseName= <DATABASE_NAME>;SelectMethod=<SELECT_MODE>

2. Download thư viện JDBC

  • Điều đầu tiên để có thể kết nối tới cơ sở dữ liệu (SQL server, MySQL,...) chúng ta cần download mysql jbcd
  • Thêm thư viện JDBC tương ứng vào folder lib của JMeter

3. Thêm JDBC Connection Configuration

  • Sau khi add mới một Test plan: Click chuột phải vào Thread Group→ chọn Add → Config Element→JDBC Connection Configuration.

  • Trong phần Database Connection Configuration

  • Database URL: gồm 3 phần chính
    • URL format của MySQL: jdbc:mysql:// (tham khảo bảng 1)
    • Địa chỉ IP và port: localhost:3306/
    • Tên của Scheme trong database: learningsql
  • JDBC Driver class: Chọn class tương ứng với DB đang sử dụng (tham khảo bảng 1)
  • Username: Username đăng nhập vào DB
  • Password: Password đăng nhập vào DB

II. Tạo Request tới MySQL

1. JDBC Request

  • Nhấp chuột phải vào Thread group → Add → Sampler → JDBC Request

  • Sau khi Add JDBC Request chúng ta sẽ điền các thông tin để thực hiện truy vấn CSDL

  • Variable Name of Pool decleared in JDBC Connection Configuration: Điền tên biến chúng ta đã thiết lập ở bước 2 chỗ JDBC Connection Configuration.
  • Query Type: Chọn loại truy vấn tương ứng với câu truy vấn phía dưới, trong list sẽ có các loại như Select/ update/callable/rollback ...

2. Kiểm tra kết quả sau khi chạy JDBC request

  • Kết quả sẽ hiển thị ở Listeners → View Results Tree → Response Data
  • Dưới đây là kết quả tương ứng với truy vấn trên

III. Demo

1. Cấu hình JDBC Connection configuration và JDBC Request

  • Ở ví dụ này, mình sẽ sử dụng bộ data về account để login vào trang web : https://vnexpress.net
  • Tương tự các steps phía trên, chúng ta lần lượt
    • Cấu hình JDBC Connection Configuration
    • Thêm JDBC Request
    • Thêm các HTTP Request để call API test
    • Thêm Listeners để kiểm tra kết quả test
  • Sau khi config JDBC và nhập câu lệnh truy vấn data trực tiếp từ DB MySQL, mình sẽ kiểm tra kết quả truy vấn từ JDBC Request xem có okie chưa nhé.
  • Tiếp theo, chúng ta sẽ phải set biến để có thể lấy giá trị của data get từ JDBC Request đưa vào các HTTP Request cần test.
    • Cần phải set 2 biến ${email}, ${password} ở các mục Parameter values, Variable names, Result variable name
  • Không giống như thông thường chỉ cần sử dụng định dạng ${email}, ${password}. Ở đây, chúng ta có nhiều bộ dữ liệu (email/password) khác nhau và muốn mỗi thread sẽ sử dụng login với 1 bộ dữ liệu khác nhau, vì vậy cần phải thêm Counter.

2. Thêm Counter

  • Chọn Thread group → Add → Config Element → Counter
  • Starting value: Chúng ta sẽ set giá trị bắt đầu từ record "1". Nếu để trống, tool sẽ tự hiểu bắt đầu với record "0"
  • Increment: Tăng lên 1 đơn vị sau mỗi thread (nghĩa là sẽ chuyển đến record tiếp theo để get data)

3. Cấu hình biến trong HTTP request (Login)

  • Thực hiện request Login, sử dụng bộ dữ liệu đã được truy vấn từ database phía trên.
  • Vì chúng ta sử dụng trực tiếp data được truy vấn từ DB thông qua JDBC, nên các biến tương ứng phải trùng tên được khai báo lúc config cho JDBC Request.
    • Ví dụ: ${email}, ${password}
  • Thêm vào đó, để có thể sử dụng lần lượt các bộ dữ liệu khác nhau trong mỗi Thread với Counter, nên chúng ta cần sử dụng thêm hàm _V(A${N})
  • Ví dụ:
    • {_V(email_{Counter})}
    • {_V(password_{Counter})}

4. Thực hiện và kiểm tra kết quả test

  • Các bộ data đã được đưa vào giá trị param của Request login.
  • Kết quả (Passed/Failed) sẽ tương ứng với từng bộ data được truyền vào.

Tài liệu tham khảo

  1. https://jmeter.apache.org/usermanual/functions.html
  2. https://www.blazemeter.com/blog/jmeter-parameterization-the-complete-guide

All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.