API Testing với Postman (Phần 1)

Sau buổi offline với club Testingvn về chủ đề API testing với Jmeter, mình rất có hứng thú với chủ đề này, nhưng lại chưa có nhiều kinh nghiệm sử dụng Jmeter và mình quen dùng Postman hơn (dễ cài dặt, giao diện dễ nhìn và cũng mạnh mẽ không thua kém là mấy). Chủ đề này mình sẽ cố gắng viết ngắn gọn khoảng 2-3 bài để không bị kéo dài lan man, còn tất nhiên là có kết thúc được hay không thì không biết. :))))))

I.API là gì? Vì sao phải test API?

1. Nói trên phương diện mô hình Client – Server

API là cái cầu nối giữa client và server. Client ở đây có thể là máy tính, điện thoại sử dụng hệ điều hành khác nhau và được viết bằng những ngôn ngữ khác nhau. Tương tự, server back-end cũng được viết bằng các ngôn ngữ khác nhau. Để 2 thằng này có thể nói chuyện được với nhau chúng phải nói cùng 1 ngôn ngữ. Ngôn ngữ ấy chính là API.

Chúng ta hãy lấy một ví dụ đơn giản cho vấn đề này :
Giả sử bạn là 1 người hướng dẫn viên du lịch, và quản lý 1 nhóm du lịch hợp chủng quốc. Trong nhóm có người Nga, Mỹ, Nhật, Thụy Điển, Đức, Pháp, Việt Nam. Để có thể làm mọi việc một cách suôn sẻ, tất cả cái nhóm này phải cùng nói 1 ngôn ngữ, có thể là tiếng anh hoặc tiếng Việt. Ở đây người hướng dẫn viên sẽ đóng vai trò là Server, người du lịch sẽ đóng vai trò là client.

Khi đi trên đường hoặc đến thăm địa danh du lịch, những người khách có thể hỏi hướng dẫn viên “Cái kia là gì ?”,  “Ăn quả này như thế nào?”.. Với mỗi một hành động hỏi như vậy, tương ứng với việc gửi 1 request lên server với những tham số đầu vào như “Cái kia” hay “quả này”. (Gửi request còn được gọi là Call API). Với mỗi câu hỏi, người hướng dẫn viên sẽ trả lời 1 cách khác nhau – cái này gọi là response. “Cái đó là cái để đập vào đầu những đứa nào hỏi nhiều”, “Quả này cứ cho vào mồm là xong”. :)))

2. Nói trên phương diện tổng quát:

API là cầu nối giữa 2 đối tượng (Object).

Ví dụ, trong cuộc sống thực tế, bạn có 1 cái case máy tính và 1 màn hình. 2 cái đó muốn kết nối với nhau thì bắt buộc phải thông qua 1 dây nối với 2 đầu tiếp xúc. Hai cái đầu tiếp xúc đó chính là API. Điểm tiếp xúc đó là cố định, nếu 1 màn hình khác muốn sử dụng thì cũng phải có đầu tiếp giống như thế, nếu không là không kết nối được.

Khi bạn làm việc, thường sẽ gặp trường hợp tích hợp với service của bên thứ 3, có khi 1 app phải tích hợp với rất nhiều bên. Để các bên có thể chia sẻ dữ liệu qua lại lẫn nhau thì chỉ có cách là tạo ra các public API để bên khác có thể kết nối vào.

Ví dụ cụ thể:

Trang web thương mại điện tử X có tích hợp với 1 cổng thanh toán Y (Payment gateway)

  1. Người dùng nhập thông tin thẻ tín dụng
  2. X sử dụng (thông tin thẻ + số tiền phải thanh toán) gọi 1 API của Y
  3. Y trả lại thông tin về việc thanh toán có thành công hay ko?
  4. X lấy thông tin đó, hiển thị lên cho người dùng biết họ đã thanh toán thành công chưa.

Định dạng trong việc hỏi và trả lời ở trên có thể thông qua trò chuyện trực tiếp hoặc viết giấy. Ở trong API thì có 2 định dạng chính là xml và json. Hiện tại, mình chỉ có kinh nghiệm với json nên chỉ giới thiệu và lấy ví dụ ở những bài sau bằng json thôi.

II. Vì sao phải test API?

  • Trong quá trình triển khai dự án, phần server và client làm độc lập với nhau nên có nhiều chỗ client chưa làm xong, mình không thể chờ client làm xong để test được dữ liệu mà test API bằng công cụ khác luôn –> Lúc này việc test hoàn toàn không phụ thuộc gì vào client.
  • Kể cả khi client làm xong rồi, nếu mình test trên client mà thấy lỗi liên quan đến logic và dữ liệu thì cũng cần test thêm cả API để biết chính xác là server sai hay client sai –> fix lỗi sẽ nhanh hơn.
  • Khi làm hệ thống web services, dự án của mình chỉ viết API cho bên khác dùng, mình sẽ không có client để test giống như các dự án khác –> phải test API hoàn toàn.
4.5 11 votes
Article Rating
Subscribe
Notify of
guest
23 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback

[…] lại kiến thức 1 chút: API chỉ là cầu nối nói chuyện giữa Client và Server. API không thực hiện 1 business […]

Hằng
Hằng
6 years ago

Mình có thắc mắc muốn hỏi:
Mình được bên A cấp API. Mình có thể tạo ra hệ thống, hay web để có thể cho nhiều người khác xem kết quả của API của mình được không
A cấp API cho B
B tạo mã cho C, D, E
C, D, E đăng nhập vào xem kết quả của C, D, E theo mã cá nhân của họ

Dũ Trương
6 years ago

hihi. chào đại ca Giang
nhớ em không ^^.

le xuan huong
le xuan huong
5 years ago

công ti mình chuẩn bị mở 1 sàn giao dịch tiền ảo và muốn làm 1 API thông qua 1 ngân hàng ở VN, nhưng mình vẫn k hiểu vai trò của API này giữa ngân hàng với sàn này lắm, có thể giải thích cho mình được không ạ?

Đạt
Đạt
5 years ago

Loạt bài viết này của anh thật sự rất dễ hiểu và bám sát với sử dụng thực tế trong testing. Cám ơn anh Giang rất nhiều! 🙂

Giang
Giang
5 years ago

Cảm ơn anh đã chia sẻ kiến thức. Các bài viết rất bổ ích. Mong a có thêm nhiều bài viết nữa ạ!!

trackback

[…] Docker được xây dựng theo cấu trúc client-server, giao tiếp với nhau thông qua Restful API. […]

ThuLTN
ThuLTN
4 years ago

Cám ơn Giang đã chia sẽ bài viết

Phu
Phu
3 years ago

Mình đang viết test case API cho 1 app, nhưng bên dev chỉ gửi file Json về app đó. Mình mở lên nhưng đọc không hiểu trong file Json đó để viết phần cho phần expected result như thế nào? Help mình với

Tiến Trần Tiên Sinh
Tiến Trần Tiên Sinh
2 years ago

bài viết rất hay thích hợp cho những newbie

Cookchechow
Cookchechow
1 year ago

Mình bắt đầu tìm hiểu về API. Đọc bài của bạn dễ hiểu quá. Cảm ơn Giang.

Minh
Minh
1 year ago

Anh ơi, cho e hỏi, ví dụ test Api Login, thì client là FE, server là BE đúng k ạ? Call api trả về lỗi 4xx thì là lỗi FE, 5xx thì là BE. Hiểu như vậy có đúng k ạ

Phuong
Phuong
1 month ago
Reply to  Giang Nguyen

Ui câu trả lời rất dễ hiểu ạ