Tự học kiểm thử tự động với Jmeter - Ep2: Tìm hiểu các element trong JMeter
Một kịch bản kiểm thử của JMeter bao gồm các thành phần phân cấp và có trật tự được tổ chức theo dạng cây:
Element in JMeter
1. Test Plan
Test Plan là là thành phần quan trọng nhất như là rễ của cây.
Test plan
Khung thiết lập của Test Plan gồm 3 phần
1. Name
2. User Define Variable
Chứa tên và giá trị các biến môi trường. Bạn có thể thêm biến bằng cách click button Add.
Các biến này sẽ được sử dụng trong suốt quá trình chạy project nếu nó được gọi đến
3. Test Plan Properties
Có 3 thuộc tính chính để cấu hình một Test Plan mà bạn có thể thể sử dụng để kiểm soát hành vi của Test Plan theo yêu cầu. Ba thuộc tính đó là:
Run Thread Groups Consecutively(i.e. one at a time)
Trong 1 Test Plan thì yêu cầu tối thiểu phải có ít nhất 1 Thread Group. Trong trường hợp Test Plan có nhiều hơn 1 Thread Group thì chúng sẽ thực hiện lần lượt từng cái nếu checkbox này được tick chọn. Ngược lại nếu checkbox này không được tick chọn thì tất cả các Thread Group sẽ được chạy song song.
Run tearDown Thread Groups after shutdown of main threads
Các luồng TearDown sẽ được thực thi sau khi việc thực hiện kiểm thử kết thúc thực hiện các luồng thông thường của nó. Nếu checkbox này được chọn, thì luồng này sẽ được chạy sau khi hoàn thành việc kiểm thử. Tính năng tearDown thường được sử dụng để báo cáo hoặc xóa các hoạt động trước đó.
Ví dụ: Nếu bạn muốn log sẽ được xóa tự động sau khi thực hiện chạy 1 Test Plan hoặc muốn các báo cáo có định dạng cụ thể thì có thể sử dụng thuộc tính này của Test Plan.
Functional Test Mode(i.e. save Response Data and Sampler Data) Nếu checkbox này được chọn, thì các thông tin của sampler requests (các requests gửi lên server) và response data (dữ liệu server phản hồi về) sẽ được lưu vào trong các listener (thành phần trong JMeter hiển thị các thông tin về request, response cũng như các thông số tính toán trong kiểm thử hiệu năng sẽ được nói chi tiết ở phần sau). Checkbox này cho phép chúng ta xác minh rằng kết quả trả về có đúng như mong đợi hay không.
Note: Thread Group là 1 thành phần con của Test Plan. Mỗi Thread Group đại diện cho 1 test case (Chúng ta sẽ hiểu rõ hơn ở phần sau).
Lưu ý: Tại 1 thời điểm chỉ có thể chạy duy nhất được 1 Test Plan
2. Thread Group
Thread group elements là điểm bắt đầu của một test plan bất kỳ. Tất cả các Controllers và Samplers phải được đặt dưới một thread group.
Những elements còn lại ( ví dụ Listeners ) có thể đặt trực tiếp dưới test plan. Trong trường hợp đó chúng sẽ áp dụng đến tất cả thread group.
Thread group element điều khiển số lượng threads mà JMeter sẽ sử dụng để thực thi kịch bản test.
Các điều khiển cho mộtThread Group cho phép bạn đặt số lượng thread cho mỗi nhóm.
Ví dụ: nếu bạn đặt số lượng thread là 100; JMeter sẽ tạo và mô phỏng 100 yêu cầu của người dùng đến máy chủ đang được kiểm thử
Thread Group
3. Samplers
Ở bài chia sẻ trước, mình có đề cập rằng JMeter hỗ trợ kiểm tra HTTP, FTP, JDBC và nhiều giao thức khác.
Chúng ta cũng đã biết rằng Thread Groups mô phỏng yêu cầu người dùng đến máy chủ.
Nhưng làm thế nào để một Thread Groups biết loại yêu cầu nào (HTTP, FTP, v.v.) cần thực hiện?
Câu trả lời là Samplers
Yêu cầu người dùng có thể là FTP Request, HTTP Request, JDBC Request ... Vv.
Dưới đây là một số sapmler phổ biến chúng ta cần lưu ý:
Samplers
- FTP Request:
Hãy tưởng tượng bạn muốn kiểm tra hiệu suất máy chủ FTP. Bạn có thể sử dụng FTP request sampler trong JMeter để thực hiện nhiệm vụ này. Bộ điều khiển này cho phép bạn gửi yêu cầu "download file" hoặc "upload file" FTP đến máy chủ FTP.
FTP Request
Ví dụ: nếu bạn muốn tải xuống tệp "Test.txt" từ máy chủ FTP đang thử nghiệm, bạn cần định cấu hình một số tham số trong JMeter như hình dưới đây
FTP Request
JMeter sẽ gửi lệnh FTP đến máy chủ FTP ftp.example.com , sau đó tải xuống tệp Test.txt từ máy chủ đó.
- HTTP request: Sampler này cho phép bạn gửi yêu cầu HTTP / HTTPS đến máy chủ web. Hãy xem xét ví dụ dưới đây. JMeter gửi yêu cầu HTTP đến trang web của Google và truy xuất các tệp hoặc hình ảnh HTML từ trang web này.
HTTP Request
Nếu bạn muốn gửi nhiều request http đến cùng một máy chủ, hãy cân nhắc sử dụng HTTP Request Defaults Configuration Element để bạn không phải nhập cũng 1 thông tin Server Name or IP cho mỗi request
- JDBC request:
Sampler này cho phép bạn thực hiện Kiểm tra hiệu suất cơ sở dữ liệu . Nó gửi một Yêu cầu JDBC (một truy vấn SQL) đến cơ sở dữ liệu.
JDBC Request
Ví dụ: máy chủ cơ sở dữ liệu có trường test_result được lưu trữ trong tên bảng test_tbl. Bạn muốn truy vấn dữ liệu này từ máy chủ cơ sở dữ liệu; bạn có thể định cấu hình JMeter để gửi truy vấn SQL đến máy chủ này để truy xuất dữ liệu.
JDBC Request Format
- BSF request: Sampler này cho phép bạn viết một sampler bằng ngôn ngữ kịch bản BSF .
Dưới đây là một ví dụ về BSF Sampler trong JMeter
BFS Sampler
- Access Log Sampler: Sampler này cho phép bạn đọc nhật ký truy cập và tạo các HTTP request. Nhật ký có thể là hình ảnh, Html, CSS ...
Access Log Sampler
- SMTP Sampler: Nếu bạn muốn kiểm thử một mail server, bạn có thể sử dụng SMTP sampler. Sampler này được sử dụng để gửi email bằng giao thức SMTP.
SMTP Sampler
4. Listener
Listener hiển thị kết quả thực hiện test. Nó có thể hiển thị kết quả ở định dạng khác nhau như cây, bảng, biểu đồ hoặc file log.
Listeners
- Kết quả dạng biểu đồ hiển thị thời gian phản hồi của máy chủ ở dạng biểu đồ như sau:
Graph
-
Xem kết quả dạng cây hiển thị kết quả của yêu cầu người dùng ở định dạng HTML cơ bản:
Tree -
Bảng kết quả hiển thị tóm tắt kết quả kiểm tra ở định dạng bảng:
View table
- File log hiển thị tóm tắt kết quả kiểm tra trong tệp văn bản:
Log Summary
5. Config Element
Một số yếu tố cấu hình thường được sử dụng trong JMeter:
Configuration Elements
- CSV Data Set Config: Giả sử bạn muốn kiểm tra một trang web cho 100 người dùng đăng nhập bằng các thông tin đăng nhập khác nhau. Bạn không cần phải ghi lại kịch bản 100 lần! Bạn có thể tham số hóa tập lệnh để nhập thông tin đăng nhập khác nhau. Thông tin đăng nhập này (ví dụ: Tên người dùng, mật khẩu) có thể được lưu trữ trong một tệp văn bản. JMeter có một yếu tố cho phép bạn đọc các tham số khác nhau từ tệp văn bản đó. Đó là "CSV Data Set Config", được sử dụng để đọc các dòng từ tệp và chia chúng thành các biến.
CSV Data Set Config
Đây là một ví dụ về CSV Data. Đó là một tệp văn bản chứa thông tin người dùng và mật khẩu để đăng nhập trang web mục tiêu của bạn
CSV Data
- HTTP Cookie Manager
Có một ví dụ n hư sau:
Bạn đã sử dụng trình duyệt của mình (Firefox, IE, Chrome... Vv) để duyệt www.google.com
Bạn đăng nhập bằng username và password của bạn. username và password của bạn sẽ được lưu trữ trong máy tính của bạn dưới dạng cookie. Lần tới, khi bạn truy cập www.google.com , bạn không cần phải đăng nhập lại vì trình duyệt của bạn sẽ sử dụng cookie làm dữ liệu người dùng để đăng nhập.
Trình quản lý cookie HTTP cũng có tính năng tương tự như trình duyệt web. Nếu bạn có HTTP request và phản hồi có chứa cookie, trình quản lý cookie sẽ tự động lưu trữ cookie đó và sẽ sử dụng nó cho tất cả các yêu cầu trong tương lai tới trang web cụ thể đó.
- HTTP request default
Phần tử này cho phép bạn đặt các giá trị mặc định mà HTTP Request controllers của bạn sử dụng.
Ví dụ:
Bạn đang gửi 100 HTTP requests đến máy chủ google.com .
Bạn sẽ phải nhập thủ công tên máy chủ = google.com cho tất cả 100 yêu cầu này.
Thay vào đó, bạn có thể thêm một HTTP request defaults với trường "Server Name or IP" = google.com.
Không cần gõ 100 lần!
HTTP Request Default
- Login Config Element
Login Config Element cho phép bạn thêm hoặc ghi đè cài đặt tên người dùng và mật khẩu trong bộ lấy mẫu.
Ví dụ: bạn muốn mô phỏng một người dùng đăng nhập vào trang web www.facebook.com bằng username và password. Bạn có thể sử dụng Login Config Element để thêm cài đặt username và password này trong yêu cầu người dùng:
Login Config Element
So sánh Login Config Element với CSV data Config
Login Config Element | CSV Data Config |
---|---|
Được sử dụng để mô phỏng một người dùng đăng nhập | Được sử dụng để mô phỏng đăng nhập nhiều người dùng |
Chỉ thích hợp cho tham số đăng nhập (người dùng và mật khẩu) | Thích hợp cho số lượng lớn các tham số |
Tham khảo: https://www.guru99.com/jmeter-element-reference.html
All rights reserved