Hướng Dẫn Cấu Hình REST API Trong Jmeter

Ở bài viết trước, chúng tôi đã hướng dẫn cách cấu hình SOAP API (web services) trên Jmeter. Bạn có thể xem lại tại đây.

Trong bài viết này, chúng tôi sẽ hướng dẫn cách cấu hình REST API (web services) trên Jmeter.

Trước khi bắt đầu vào việc config 1 API dạng REST chúng ta hãy cùng tìm hiểu xem nó là gì và hoạt động như thế nào?

REST là gì?

REST là một kiểu cấu trúc (architectural style) cung cấp API thông qua internet để xử lý các hoạt động CRUD trên dữ liệu. REST tập trung vào việc truy cập các tài nguyên được đặt tên thông qua một giao diện duy nhất. Thay vì sử dụng XML để tạo request, REST dựa vào một URL đơn giản. Trong một số trường hợp, bạn phải cung cấp thông tin bổ sung theo những cách đặc biệt, nhưng hầu hết các Web Services sử dụng REST đều dựa hoàn toàn vào việc thu lại các thông tin cần thiết bằng phương pháp URL. REST có thể sử dụng bốn hình thái HTTP 1.1 khác nhau (GET, POST, PUT và DELETE) để thực hiện các tasks.

Một vài lý do khiến ngày nay REST được ưa chuộng hơn so với SOAP:
REST sử dụng chuẩn HTTP nên nó đơn giản hơn nhiều so với trước đây. Tạo clients, phát triển các API, tài liệu dễ hiểu hơn và không có nhiều thứ mà REST không làm được. Về cơ bản điều này thực sự tốt hơn SOAP.
REST cho phép nhiều định dạng dữ liệu khác nhau trong khi SOAP chỉ cho phép XML. Mặc dù điều này có vẻ như làm tăng thêm sự phức tạp cho REST vì bạn cần phải xử lý nhiều định dạng. JSON phù hợp hơn cho dữ liệu và phân tích cú pháp nhanh hơn. REST cho phép hỗ trợ tốt hơn cho browser client do nó có hỗ trợ cho JSON.

REST có hiệu suất tốt hơn và khả năng mở rộng. Những lần đọc của REST có thể cahced lại được còn SOAP thì không.
Có một điều thú vị là REST hoàn toàn có thể sử dụng SOAP web services để thực hiện.

Một thông điệp SOAP được chia thành hai phần là header và body. Phần header chỉ ra địa chỉ Web Service, Host, Content-Type, Content-Length tương tự như một thông điệp HTTP.

Cấu hình REST API trên Jmeter

Chúng tôi sẽ sử dụng 1 API dạng REST để cấu hình trên Jmeter.

Step 1: Add Thread Group

Để bắt đầu 1 Test Plan việc đầu tiên là phải add 1 Thread Group: Click chuột phải vào Test Plan -> Add -> Threads (Users) -> Thread Group

Step 2: Add HTTP Request Sampler

Sau khi đã có Thread Group, chúng ta tiếp tục chuột phải vào Thread Group -> Add -> Sampler -> HTTP Request. HTTP Request chính là nơi chứa body của API SOAP.

Step 3: Add HTTP Header Manager

Sau khi đã add HTTP Request chúng ta tiếp tục add Header của API. Chuột phải vào HTTP Request -> Add -> Config Element -> HTTP Header Manager.


Step 4: Add View Results Tree Listener

Để kiểm tra kết quả sau khi config và chạy API, chúng ta add thêm 1 Listener có tên là View Results Tree. Các bạn chuột phải vào Thread Group -> Add -> Listener -> View Results Tree.

Chúng ta đã thiết lập được xong “khung sườn” trước khi bắt tay vào thiết lập 1 API như bên dưới:

Step 5: Thiết lập body của API REST

Để thiết lập các thông tin của body API REST, chúng ta mở xem lại thông tin của request, click vào HTTP Request Bây giờ chúng tôi sẽ thực hiện config API đầu tiên là: User login. Thông tin của API này như sau:

URL: POST https://uat-gke.cif-operator.com/authapi/user/login

Request
{
“userName”: “adminh3”,
“password”: “[email protected]
}

Response

{
“accessToken”: {
“token”: “eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6ImFkbWluaDMiLCJuYW1laWQiOiIxMmMwYjUxZS0zODMzLTQyNjgtYTc3My1lOWNmMzBjYmY5ZWEiLCJyb2xlIjoiSHV1cmRlciIsIlBhcnRpZXMiOiJbe1wiSWRcIjpcIjEzXCIsXCJOYW1lXCI6XCJDQUlXXCIsXCJTeXN0ZW1OYW1lXCI6XCJPVElTXCIsXCJEb21haW5cIjoxLFwiVHlwZVwiOjB9LHtcIklkXCI6XCIxNFwiLFwiTmFtZVwiOlwiUkZcIixcIlN5c3RlbU5hbWVcIjpcIlJGXCIsXCJEb21haW5cIjoxLFwiVHlwZVwiOjB9LHtcIklkXCI6XCIxNVwiLFwiTmFtZVwiOlwiQ0FJV1wiLFwiU3lzdGVtTmFtZVwiOlwiTkVUQURNSU5cIixcIkRvbWFpblwiOjEsXCJUeXBlXCI6MH0se1wiSWRcIjpcIjE2XCIsXCJOYW1lXCI6XCJDQUlXXCIsXCJTeXN0ZW1OYW1lXCI6XCJDUlNcIixcIkRvbWFpblwiOjEsXCJUeXBlXCI6MH0se1wiSWRcIjpcIjE3XCIsXCJOYW1lXCI6XCJPcHRpY2tzXCIsXCJTeXN0ZW1OYW1lXCI6XCJPcHRpY2tzMlwiLFwiRG9tYWluXCI6MSxcIlR5cGVcIjowfSx7XCJJZFwiOlwiMThcIixcIk5hbWVcIjpcIlNPTENPTlwiLFwiU3lzdGVtTmFtZVwiOlwiU09MQ09OXCIsXCJEb21haW5cIjoxLFwiVHlwZVwiOjB9LHtcIklkXCI6XCIxOVwiLFwiTmFtZVwiOlwiV1NSVlwiLFwiU3lzdGVtTmFtZVwiOlwiV1NSVlwiLFwiRG9tYWluXCI6MSxcIlR5cGVcIjowfSx7XCJJZFwiOlwiMjBcIixcIk5hbWVcIjpcIlBMTlFcIixcIlN5c3RlbU5hbWVcIjpcIlBMTlFcIixcIkRvbWFpblwiOjEsXCJUeXBlXCI6MH0se1wiSWRcIjpcIjIxXCIsXCJOYW1lXCI6XCJGYWtlSHV1cmRlclwiLFwiU3lzdGVtTmFtZVwiOlwiRmFrZUhcIixcIkRvbWFpblwiOjEsXCJUeXBlXCI6MH0se1wiSWRcIjpcIjIzXCIsXCJOYW1lXCI6XCJDQUlXMlwiLFwiU3lzdGVtTmFtZVwiOlwiTkVUQURNSU4yXCIsXCJEb21haW5cIjoxLFwiVHlwZVwiOjB9LHtcIklkXCI6XCIyNFwiLFwiTmFtZVwiOlwiRkZSSFwiLFwiU3lzdGVtTmFtZVwiOlwiRkZSSFwiLFwiRG9tYWluXCI6MSxcIlR5cGVcIjowfSx7XCJJZFwiOlwiMjVcIixcIk5hbWVcIjpcIkZGUkgtTTJcIixcIlN5c3RlbU5hbWVcIjpcIkZGUkgtTTJcIixcIkRvbWFpblwiOjEsXCJUeXBlXCI6MH0se1wiSWRcIjpcIjI2XCIsXCJOYW1lXCI6XCJDQUlXMlwiLFwiU3lzdGVtTmFtZVwiOlwiT1RJUzJcIixcIkRvbWFpblwiOjEsXCJUeXBlXCI6MH0se1wiSWRcIjpcIjI4XCIsXCJOYW1lXCI6XCIySFwiLFwiU3lzdGVtTmFtZVwiOlwiSDJcIixcIkRvbWFpblwiOjAsXCJUeXBlXCI6MH0se1wiSWRcIjpcIjI3XCIsXCJOYW1lXCI6XCJDQUlXX1NwaWVcIixcIlN5c3RlbU5hbWVcIjpcIkNBSVdfU3BpZVwiLFwiRG9tYWluXCI6MSxcIlR5cGVcIjowfSx7XCJJZFwiOlwiMzJcIixcIk5hbWVcIjpcIkFTUkhcIixcIlN5c3RlbU5hbWVcIjpcIkFTUkhcIixcIkRvbWFpblwiOjAsXCJUeXBlXCI6MH0se1wiSWRcIjpcIjMzXCIsXCJOYW1lXCI6XCJBU1JIMVwiLFwiU3lzdGVtTmFtZVwiOlwiQVNSSDFcIixcIkRvbWFpblwiOjAsXCJUeXBlXCI6MH0se1wiSWRcIjpcIjM1XCIsXCJOYW1lXCI6XCJDQUlXXCIsXCJTeXN0ZW1OYW1lXCI6XCJDUlNcIixcIkRvbWFpblwiOjAsXCJUeXBlXCI6MH0se1wiSWRcIjpcIjM2XCIsXCJOYW1lXCI6XCJDQUlXXCIsXCJTeXN0ZW1OYW1lXCI6XCJUT1BERVNLXCIsXCJEb21haW5cIjowLFwiVHlwZVwiOjB9LHtcIklkXCI6XCIzN1wiLFwiTmFtZVwiOlwiQ0FJV1wiLFwiU3lzdGVtTmFtZVwiOlwiQ1JTMVwiLFwiRG9tYWluXCI6MCxcIlR5cGVcIjowfSx7XCJJZFwiOlwiMzlcIixcIk5hbWVcIjpcIkZha2VIdXVyZGVyXCIsXCJTeXN0ZW1OYW1lXCI6XCJGYWtlSFwiLFwiRG9tYWluXCI6MCxcIlR5cGVcIjowfSx7XCJJZFwiOlwiNDFcIixcIk5hbWVcIjpcIk9wdGlja3NcIixcIlN5c3RlbU5hbWVcIjpcIk9wdGlja3MyXCIsXCJEb21haW5cIjowLFwiVHlwZVwiOjB9LHtcIklkXCI6XCI0MlwiLFwiTmFtZVwiOlwiUExOUVwiLFwiU3lzdGVtTmFtZVwiOlwiUExOUVwiLFwiRG9tYWluXCI6MCxcIlR5cGVcIjowfSx7XCJJZFwiOlwiNDVcIixcIk5hbWVcIjpcIlJGXCIsXCJTeXN0ZW1OYW1lXCI6XCJSRlwiLFwiRG9tYWluXCI6MCxcIlR5cGVcIjowfSx7XCJJZFwiOlwiNTBcIixcIk5hbWVcIjpcIldTUlZcIixcIlN5c3RlbU5hbWVcIjpcIldTUlZcIixcIkRvbWFpblwiOjAsXCJUeXBlXCI6MH1dIiwibmJmIjoxNTg0MTk5NDQ4LCJleHAiOjE1ODQyMDAwNDgsImlhdCI6MTU4NDE5OTQ0OH0.h_RgaLO58IEEn5zLiSfPcUqj2wXek3roJkn_F5kY574”,
“expiresIn”: 600
},
“refreshToken”: “USyIh5+Q17lsd/mpHxpG9LjJOsCk1+8aPiZoH4i6LfU=”,
“userDto”: {
“id”: “12c0b51e-3833-4268-a773-e9cf30cbf9ea”,
“userName”: “adminh3”,
“password”: “AQAAAAEAACcQAAAAEE3dvsNWh3RnliY59ZIHuWrO5E6cdO7Ca4hE0bxM4aQsykbXDK8qOYOjpu134fp+Ww==”,
“firstName”: null,
“lastName”: “ht”,
“email”: “[email protected]”,
“parties”: [
{
“id”: “13”,
“name”: “CAIW”,
“systemName”: “OTIS”,
“domain”: 1,
“type”: 0
}
],
“roles”: [
{
“id”: “43bf7ced-785a-46b6-8eca-b3fc0a307a57”,
“name”: “Huurder”,
“description”: “description is updated”,
“permissions”: null
}
],
“additionalPermissions”: null
}
}

Với thông tin ở trên, như vậy chúng ta sẽ thực hiện config 1 API REST có Method là POST với tên là login, với ô Request là thông tin cần điền vào và ô Response là thông tin kết quả mong muốn với 200 là response code, bên dưới là data trả về. Tương ứng trên JMeter chúng ta sẽ lần lượt thực hiện các bước như sau:

– Protocol ở đường dẫn là “https”

– Server Name or IP là domain của URL “uat-gke.cif-operator.com”

– Method của Request này là “POST” (như ở hình trên khoanh tròn)

– Path của URL là “/authapi/user/login”

Tiếp theo chúng ta sẽ config body data. Đối với REST API, body data có 2 dạng, 1 là dạng Parameter, trên giao hiện HTTP Request, ở tab Parameter các bạn click vào button Add để thêm từng param và value tương ứng. Dạng thứ 2 là Body data, trên JMeter các bạn click vào tab Body Data bên cạnh và điền data tương ứng vào ở bên dưới.

Notes: Việc hệ thống của bạn sử dụng dạng Parameter hay Body Data là do từng hệ thống define, nếu chưa rõ hệ thống của mình thuộc loại nào nên xem lại Requirement hoặc lấy thêm thông tin về API.
Ở đây chúng tôi sử dụng dạng thứ 2 là body data, các bạn click vào tab Body Data bên cạnh và điền data tương ứng vào ở bên dưới.

Sau khi config xong chúng ta sẽ được màn hình của HTTP Request như sau:


Step 6: Thiết lập Header

Như đã nói ở trên, API đã đưa ra có yêu cầu Header là Content-Type: application/json (lưu ý rằng thông tin header các bạn cũng phải bám vào Requirements hoặc lấy thông tin từ hệ thống, mỗi hệ thống sẽ có 1 quy định về header riêng), bây giờ chúng ta sẽ thực hiện việc thiết lập Header trên JMeter.
Click vào HTTP Request Header đã tạo, click button Add và điền thông tin header vào:

Content-Type: application/json


Step 7: Chạy thử API

Như vậy là chúng ta đã hoàn thành việc config API REST, để bắt đầu chạy API trên JMeter, chúng ta click vào button Run có biểu tượng màu xanh như hình dưới, sau đó click vào View Results Tree để xem kết quả.


Ở màn hình View Results Tree, click vào HTTP Request, mặc định sẽ hiển thị tab Sampler result thông tin của request sau khi chạy.

Click vào tab tiếp theo là Request sẽ là nơi hiển thị thông tin của request đã gửi lên server, bao gồm Request Body và Request Header là thông tin về Body và Header đã thực hiện gửi.

Click vào tab tiếp theo là Response data, nơi chứa thông tin mà server thực hiện response về các thông tin mà bạn vừa gửi bao gồm Response Body và Response Header. 

Như vậy chúng ta đã hoàn thành việc thực hiện config 1 API có dạng REST ở trên JMeter và chạy thành công.

Nguồn: https://octoperf.com/blog/2018/04/23/jmeter-rest-api-testing/

Leave a Reply