+1

Kiểm thử Jmeter với bộ data có sẵn - JMeter with CSV data set config

I.Tham số hóa trong JMeter là gì ?

  • Tham số hóa trong JMeter là sử dụng nhiều bộ Input Data khác nhau cho mỗi lần kiểm thử. Nhờ vậy có thể mô phỏng được thao tác của nhiều người dùng khác nhau trên server.
  • Ví dụ:
    • Khi thực hiện scenario cho hành động Login vào hệ thống, thông thường JMeter có thể hỗ trợ tất cả các lần với thông tin của 1 user (user name + password).
    • Thay vào đó, JMeter cũng sẽ có tính năng thực hiện với 50, 100 hoặc 1000... người dùng với thông tin khác nhau để có thể login, register, hoặc giả lập có 100, 200... lượt tìm kiếm với keywords khác nhau.

II. Cấu hình CSV data config trên JMeter

1. Thêm elements

Để thực hiện một scenario test, ta phải thêm các elements cần thiết (như phần trước) trước khi bắt đầu một test plan.

  • Thêm Group :AddThread UserThread group
  • HTTP Request Defaults: AddConfig elementsHTTP Request Defaults
  • CSV data set config: AddConfig elementCSV data set config
  • Listeners: AddListenersView Results Tree

2. Cấu hình giá trị cho CSV data set config

Các elements trong CSV data set config bao gồm:

  • Filename: Tên của tệp dữ liệu mà chúng ta sẽ sử dụng .csv
  • Variable Names: Được mô tả như danh sách tất cả các tên biến (phân cách bởi dấu phẩy) theo thứ tự giống với vị trí các biến trong file CSV. (Chúng ta sẽ để trống trường này, JMeter sẽ hỗ trợ bằng việc lấy hàng đầu tiên từ tệp CSV để làm biến cho mỗi cột)
  • Delimiter: Được sử dụng để tách từng bảng ghi trong tệp CSV.
  • Allow quote data ? : Chọn "TRUE" trong trường hợp bạn muốn bỏ qua dấu kép và cho phép các phần tử như vậy chứa dấu phân cách.
  • Recycle on EOF? : Khi số lượng thread lớn hơn số lượng data được sử dụng trong file CSV, chọn "TRUE" nếu bạn muốn tiếp tục thực hiện kiểm thử bằng cách quay lại đọc từ đầu file.
  • Stop thread on EOF? : Nếu chọn "SET", khi chạy đến end of file thì thread sẽ tự động dừng lại.
  • Sharing mode: Định nghĩa hành vi chia sẻ của file CSV. Giá trị mặc định thường là "All threads".
    • All threads: Nếu trong trường hợp kiểm thử với nhiều element CSV config cùng tham chiếu đến một CSV thì CSV Data Set Config kế tiếp sẽ tiếp tục đọc file CSV đã được mở từ CSV data set config trước đó.
    • Current thread group: Nếu trong script có nhiều hơn một element CSV data set config cùng tham chiếu đến một file, CSV data set config kế tiếp sẽ mở lại file cho từng thread group.
    • Current thread: Mỗi file csv được mở riêng biệt cho từng thread khi chọn option này.

III. Thực hiện test plan với Data set config

1. Cấu hình CSV data set config

  • Thực hiện kiểm thử hoạt động login vào trang web https://vnexpress.net/ với nhiều bộ account (email/password) khác nhau.
  • Điều cần thiết nhất là chuẩn bị một file CSV.

  • Tạo một Thread group có tên loginVnExpress và thêm CSV Data Set Config

  • Tiếp theo chúng ta sẽ cấu hình CSV data set config trong JMeter

    • Filename: Đường dẫn đến file CSV. Cần chú ý rằng JMeter scripts và file CSV nên được đặt trong cùng một chỗ. Nhấp vào nút Browse... để chọn đường dẫn.
    • Variable Names (comma-delimited): Cung cấp tên biến tùy ý theo file CSV của bạn. Ở đây, các biến được dùng sẽ là "email" và "password".
    • Delimiter: ','
    • Reccycle on EOF: True
    • Stop thread on EOF: False
    • Sharing Mode: All threads

2. Thêm các request (HTTP Request)

  • Ở đây, mình sẽ mô phỏng các steps của người dùng thực để có thể login vào trang web. Vì vậy chúng ta sẽ có 3 request là gotoHome/gotoLogin/login

  • Với mỗi request, sẽ có URL, path, method, request data tương ứng.

    • gotoHome:

    • gotoLogin:

    • login:

  • Cái chúng ta cần quan tâm nhất ở đây là Parameters của request \login. Tất nhiên, parameters phải chính xác theo các biến (name và value tương ứng) :

    • csrf: ${csrf}
    • myvne_email: ${email}
    • myvne_password: ${password}
    • view_app: 0
  • Email và Password, thay vì điền trực tiếp ta sử dụng với biến ${email} và ${password} đã được khai báo ở mục Variable Names của CSV data set config.

3. Run test plan

  • Trong file csv ví dụ, mình có 4 records data tương ứng với 4 account, vì vậy mình sẽ setting Thread properties với giả định 4 users chạy đồng thời.

  • Và đừng quên thêm Listeners để xem kết quả sau khi chạy nhé, ở đây mình sẽ xem kết quả ở dạng View Results Tree để có thể kiểm tra chi tiết từng request. Sau khi chạy, chúng ta sẽ được:

  • Cùng check xem, request login có lấy data từ file csv không nhé.

  • Như kết quả, có 1 request *login *Passed và 3 requests Failed. Vì chỉ account đầu tiên với giá trị email= "[email protected]" and password= "Abcd123". Nên kết quả trả về Passed còn 3 account còn lại, mình chưa đăng ký, vì vậy sẽ Failed.

Note

  • Trong test plan của mình có 2 điểm cần chú ý. (Những phần này các bạn có thể tìm hiểu thêm theo keyword dưới hoặc mình sẽ update link sau nhé)
    • Để có thể check được xem request "Passed" hay "Failed" thông thường server sẽ trả về response code, tuy nhiên với API phía trên luôn trả về response code: 200 nên chúng ta cần config thêm Response Assertion để check được request login nào đúng.
    • Trong phần Parameter của request login, chúng ta có 1 biến là csrf= ${csrf} . Để có thể có giá trị csrf tương ứng, bạn phải setting thêm Regular Expression Extractor để có thể gọi.

Tài liệu tham khảo

  1. https://softwaretester.info/dynamic-data-for-jmeter/
  2. https://www.blazemeter.com/blog/jmeter-parameterization-the-complete-guide
  3. https://viblo.asia/p/tham-so-hoa-trong-jmeter-su-dung-csv-data-set-config-4P856jvL5Y3

All Rights Reserved

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