Những việc bạn bắt buộc phải thành thạo khi làm API testing

Tiêu đề hơi “chém gió” để câu view. =))))

Dưới đây là những thứ mình gặp đi gặp lại khi làm API testing mà mình nghĩ là ai làm cũng nên nắm rõ, nó không hề liên quan đến tool hay ngôn ngữ lập trình. Nếu sau này mình rảnh, mình sẽ viết hướng dẫn cách xử lý từng tình huống. Bắt đầu luôn cho đỡ mất thời gian.

I. Cấu trúc của 1 test:

gồm 3 phần:

  • Data test: Với mỗi test lại có 1 data test khác nhau nên chúng ta nên khởi tạo data trong scope của mỗi test. Tất nhiên là những đoạn nào chung có thể viết vào 1 chỗ rồi dùng lại.
  • Thực hiện actions: Chính là việc call API
  • Kiểm tra kết quả: Tự động kiểm tra kết quả sau mỗi lần call API

Với mỗi 1 mục trong 3 phần trên ta sẽ có khá nhiều việc phải làm

II. Làm gì với data test:

Khi làm việc với data test bạn sẽ nhận ra được là có 2 kiểu data input đầu vào:

  • Dùng lại được
  • Không dùng lại được

Dùng lại được” có nghĩa là nếu là cái data test đấy bao nhiêu lần đi chăng nữa thì vẫn không ảnh hưởng đến kết quả hay không hề gây ra error.

Không dùng lại được” có nghĩa là cái data test đó bạn chỉ được dùng 1 lần. Ví dụ như khi bạn register 1 account trong hệ thống, bạn không thể dùng đi dùng lại 1 email được. Hệ thống sẽ báo lỗi là “email đã tồn tại”

Nói đến đây có thể bạn sẽ nghĩ là thế thì chỉ cần xử lý data “không dùng lại được” thôi –> Đúng mà cũng không đúng.

Bạn nên xử lý cả 2 phần data trên trước khi call API

  • Với data dùng lại được, bạn nên có thêm 1 cái gì đó để bạn có thể phân biệt sau mỗi lần run hoặc để phân biệt giữa manual test và automation test, sau này nếu có lỗi thì có nhiều thông tin để debug hơn. Ví dụ như trường thông tin mô tả, bạn có thể cho thêm date-time kiểu như "Automation test at 08/07/2019 16:40:22"
  • Với data không dùng lại được, bạn sẽ cần có thêm 1 cái gì đó để phân biệt và không bị trùng lặp. Có 2 cách khá dễ dàng đó là sử dụng: UUID hoặc timestamp. Ví dụ: testemail1562310163272@sharklasers.com
  • Với các loại data khác, bạn cũng phải cần biết cách để xử lý như phone number, name, company, date-time, ID… Hãy tìm những function hoặc library để giúp bạn tạo ra data 1 cách nhanh chóng. Ví dụ như Faker của Java, Faker của JS hay Function của Jmeter
  • Với các loại data mà nó nằm ở response của API khác thì bạn phải biết cách extract data. Nếu data dạng json thì có 2 loại dữ liệu bạn phải biết cách lấy, đó là dạng object và array. Bạn có thể đọc thêm https://goessner.net/articles/JsonPath/ và thực hành trước ở đây http://jsonpath.com/

Muốn biết thêm nhiều kỹ thuật nữa, hãy đăng ký lớp postman script!

III. Call API thì có gì phải lưu ý:

  • Domain của URL nên được config 1 cách dễ dàng. Ví dụ:
    {{url}}/get?foo1=bar1&foo2=bar2 thay vì http://postman-echo.com/get?foo1=bar1&foo2=bar2
  • Những test case có dùng chung path thì cũng nên đặt biến để dùng chung, sẽ tránh được các lỗi về typos (lỗi chính tả).
  • Test case để test 1 api thì nên viết chung phần call API ra 1 function. Ví dụ như hình.

IV. Check kết quả API như thế nào?

  • Nên check response code cho tất cả các test
  • Nếu API nào có liên quan đến logic thì bạn phải biết extract dữ liệu từ response trả về và sử dụng các library giúp check kết quả như JUnit/hamscret/AssertJ hoặc có thể sử dụng các built-in function của các tools như trong Postman hoặc Jmeter.

Nếu muốn học sâu hơn, hãy đăng ký lớp Rest-assured!

V. Kết luận

Trên đây là những tasks mà hầu như test API nào cũng gặp phải, hãy cố gắng thành thạo chúng để có thể viết test hiệu quả hơn.

5 5 votes
Article Rating
Subscribe
Notify of
guest
6 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
HaoHo
HaoHo
3 years ago

Hello bạn, bài viết của bạn khá bổ ích.
Nhân tiện mình muốn hỏi thêm 1 chút về API Automation test với Rest Assured
+ Với 1 API bạn sẽ tập trung viết các TCs logic cho nó hay tập trung validate input, Authorization hay cả 2. Bạn có thể liệt kê một số loại TCs (gọi là checklist cũng được) nên được viết auto để tiết kiệm nguồn lực cũng như hiệu quả được không?
+ Với mỗi API trung bình bạn viết mấy TCs ?
Cám ơn và mong phản hồi từ bạn

Nghĩa Võ
Nghĩa Võ
3 years ago

Em nghĩ nên có tính năng Like bài viết, em đọc bài nào của anh cũng muốn bấm Like để ủng hộ tinh thần hết 😀

Sherry
Sherry
5 months ago

Em cảm ơn anh ạ, bài viết của anh rất bổ ích ạ.