• マイ

Kiểm thử API thật dễ (1)

Xin chào mọi người, mình là Mai Cường - đến từ công ty Japan Quality Co.,Ltd.


COVID đã và đang làm cuộc sống hằng ngày của chúng ta thay đổi. Mọi người vẫn ổn chứ?

Hy vọng, đại dịch sẽ nhanh chóng kết thúc, và cuộc sống sẽ trở về với nhịp sống hòa bình vốn có của nó.


Trong bài viết trước, mình đã chia sẻ về API Testing và cách suy nghĩ về API Testing. Lần này hãy cùng thử thực hiện API Testing nhé.



Kiểm tra gì?


Kiểm thử API có thể thực hiện nhiều việc khác nhau như kiểm thử chức năng (functional testing), kiểm tra sức chịu đựng (stress testing), kiểm thử bảo mật (security testing), v.v.

Khi kiểm thử API, chúng tôi thường phân ra thành 2 kỹ thuật như dưới đây: “Kiểm thử hộp đen (Black Box Testing)” và “Kiểm thử hộp trắng (White Box Testing)”.







Kiểm thử hộp đen (Black Box Testing)

Kiểm thử hộp đen là kiểm tra xem API có hoạt động đúng như thiết kế hay không, trong đó tập trung vào các giá trị đầu vào và đầu ra. Cũng có thể xem đây là Unit Testing dành cho API. Nghĩa là đối với các Request, chúng ta sẽ xác nhận xem Response được trả về có đúng như mong đợi hay không.


API
図2: APIテストでの「Black Box Testing」


Kiểm thử hộp trắng (White Box Testing)

Kiểm thử hộp trắng sẽ chú trọng vào phần nội dung bên trong. Nội dung bên trong ở đây không phải nói về các dòng code. Bởi vì việc kiểm tra dựa trên các dòng code nên được thực hiện ở Unit Testing.

Như tôi đã nói trong bài viết trước, một điểm cộng lớn của kiểm thử API là có thể tiến hành kiểm tra kết hợp ở thời điểm sớm hơn so với các cách làm khác. Việc tiến hành kiểm thử hộp trắng ở đây sẽ được dựa trên quan điểm của kiểm tra kết hợp (intergration testing). Ví dụ như kết hợp với database, kết hợp với các chương trình khác, kết hợp với một server khác, v.v.



api testing
図3: APIテストでの「White Box Testing」

Kiểm thử hộp đen bằng RakAPIt


Trong bài viết này, chúng ta sẽ dùng RakAPIt để tiến hành kiểm thử hộp đen nhé.


Đầu tiên là tạo một Project. Chúng ta sẽ dùng một API gọi là Swagger Petstore.

Định nghĩa ở link dưới đây:

https://petstore.swagger.io/


Tải file Swagger ở web ghi ở trên và import file Swagger đó ở màn hình Project list (https://rakapit.dockyard.biz/projects).



RakAPIt
Hình 1: Tạo Project


Tạo dữ liệu (Test data)

Tại “Swagger Information” ở góc dưới bên trái màn hình sẽ hiển thị danh sách các API. Chúng ta sẽ lấy Endpoint trên cùng để làm đối tượng test lần này. Khi nhấn vào 「→」sẽ di chuyển đến màn hình Request Spec.



RakAPIt
Hình 2: Thông tin file Swagger

Ở màn hình Request Spec, các thông tin đã được nhập vào Endpoint, Header và Body. Các thông tin này được lấy từ file Swagger.


Tiếp đến, nhấn vào tab Body.

Phía bên phải là định dạng của Body, còn bên trái là danh sách các parameter được định nghĩa tại Endpoint mà bạn đã chọn lúc đầu.



RakAPIt API
Hình 3: Màn hình Request Spec

Tiếp theo, nhập các mẫu dữ liệu vào mỗi parameter.

RakAPIt cung cấp chức năng “Test Data Generation”, chức năng giúp tự động tạo các dữ liệu từ các định nghĩa của parameter trong file Swagger. Các dữ liệu sẽ được tạo ra từ kiểu dữ liệu, giá trị lớn nhất, giá trị nhỏ nhất, giá trị mẫu…., bằng phương pháp như phân vùng tương đương, phân tích giá trị biên,...Ví dụ, nếu parameter là kiểu số nguyên (integer) và có giá trị từ 1 đến 10 thì giá trị 0, 1, 10, 11 sẽ được tự động nhập vào.


Chúng ta có thể tạo dữ liệu một cách tự động cho tất cả các dữ liệu của các parameter c, nhưng để dễ giải thích thì mình sẽ chỉ lấy 3 parameter ở trên cùng để làm ví dụ. Nhấn vào nút “Generate Data” và chọn id, category.id, category.name, khi đó các dữ liệu sẽ được tự động thêm vào.



API tool
Hình 4: Chỉnh sửa thông số của phần Body

Ở những chỗ khác thì hãy nhập các dữ liệu đúng, ví dụ như dưới đây:

  • name : (string) “doggie”

  • photoUrls: (string) “http://swagger.io”

  • tags: (array) [{ "id": 0,"name": "pet”}]

  • status: (string) “available”



Tạo Test case


Chúng ta đã nhập được dữ liệu của từng parameter và định nghĩa của API. Giờ thì tiến hành tạo test case thôi.


Test case sẽ được tạo ra bằng cách kết hợp các mẫu dữ liệu của các parameter. Với RakAPIt, người dùng có thể hợp các mẫu dữ liệu lại bằng 2 phương pháp, đó là phương pháp kết hợp All combination và phương pháp kết hợp All-pairs. Tôi sẽ sử dụng phương pháp All-pairs.


※Phương pháp All-pairs:

Trong quá trình Test bằng cách tổ hợp, đây là cách nhóm cặp các thông số, sao cho mỗi cặp của các thông số phải được xuất hiện ít nhất một lần. Nghĩa là kiểm thử "tổ hợp theo cặp cụ thể" thay vì kiểm thử "tổ hợp toàn bộ".


(Nguồn: https://www.atmarkit.co.jp/ait/articles/1506/11/news013_2.html )


Bước cuối cùng, nhấn vào “Create” và test case sẽ được tự động tạo ra.



APIツール
Hình 5: Màn hình Test case list

Về việc tạo test case, có những option dưới đây:



Ngoài ra, tùy thuộc vào các mẫu dữ liệu của parameter đã được nhập vào, test case sẽ được phân ra thành 2 loại normal và abnormal.

Response Code cho các test case normal được đặt mặc định là 200, và cho các test case abnormal là 400. Khi test thực tế, hãy tuân theo các thông số kỹ thuật của API và điền các giá trị thích hợp vào.

Tiến hành kiểm thử

Test sẽ được thực hiện chỉ với việc chọn test case và nhấn nút chạy test case.

Các bạn có thể tùy chọn môi trường kiểm thử trong RakAPIt : “RakAPIt Server” hoặc “Local Environment”

  • RakAPIt Server Nơi gửi Request đi sẽ là máy chủ của RakAPIt.

  • Local Environment Nơi gửi Request đi là PC của người dùng. Chọn Local Environment đối với các trường hợp API chưa được công khai hoặc API đang được phát triển trên môi trường Local.



API 開発
Hình 6: Kết quả test case


Ngoài ra, có thể xuất cURL Script và tiến hành kiểm thử trên Command Line.

Thiết lập Assertion

RakAPIt cho phép người dùng có thể thiết lập các Assertion của Status Code, Header và Body.


Assertion của Status Code sẽ được nhập vào một cách mặc định. Ngoài ra, Header Assertion có thể thực hiện với việc chỉ định key của Header và được tự động tạo ra từ định nghĩa Swagger. Trường hợp muốn kiểm tra những Header không được định nghĩa trong Swagger, bạn có thể thêm Assertion.


Assertion của Body gồm có kiểm tra Schema và Property Assertion.

Schema có thể tạo tự động từ định nghĩa Swagger. Nó giúp người dùng kiểm tra được toàn bộ định dạng của Response Body. Ngoài ra, trường hợp bạn muốn kiểm tra thêm các giá trị cụ thể , hãy thêm Assertion của Property.



APIテスト
Hình 7: Assertion

Đến đây thì chúng ta đã có thể đại khái hoàn thành xong từ việc tạo dữ liệu đến việc kiểm thử rồi.


TÓM LẠI

Các bạn thấy thế nào?


Trước đây mình thường tự tạo dữ liệu và test case trong Excel, sau đó lần lượt gửi Request đi bằng một cái tool nào đó và phải tự dò lại Response bằng mắt. Làm như vậy quả thật khá là vất vả.


Tuy nhiên, giờ đây với RakAPIt, mình có thể tiết kiệm thời gian và công sức hơn, công việc cũng trở nên dễ dàng hơn rất nhiều.


Nguồn tham khảo:

  1. Swagger Petstore https://petstore.swagger.io/




306回の閲覧

最新記事

すべて表示