API Testing với POSTMAN

api testing postman

API Testing với POSTMAN là khoá học về API Testing dành cho người mới bắt đầu tìm hiểu về API. Bạn sẽ được hướng dẫn từng bước một với POSTMAN từ căn bản đến nâng cao để có thể sử dụng POSTMAN để thực hiện API Testing một cách thuần thục.
Và đặc biệt, đây là khoá học HOÀN TOÀN MIỄN PHÍ được iTMS Coaching tài trợ nhằm giúp đỡ cộng đồng kiểm thử phần mềm Việt Nam lớn mạnh.

Mọi ý kiến, đóng góp về khoá học vui lòng liên hệ với chúng tôi qua email: admin@itmscoaching.com. Nếu bạn mong muốn trở thành giảng viên tại iTMS Coaching, hãy liên hệ với chúng tôi qua hotline: 0707.54321.9 hoặc 0974.54321.9

Tìm hiểu về API

API là viết tắt của Application Programming Interface là giao diện lập trình ứng dụng, phần mềm trung gian cho phép các ứng dụng giao tiếp với nhau.Khi sử dụng ứng dụng trên thiết bị di động, ứng dụng sẽ kết nối Internet và gửi dữ liệu tới máy chủ. Sau đó máy chủ lấy dữ liệu, phân tích dữ liệu, thực hiện các hành động cần thiết và gửi dữ liệu trở lại thiết bị di động. Ứng dụng phân tích dữ liệu và hiển thị các thông tin đọc được cho nguời dùng được gọi là API.

Ví dụ có rất nhiều món ăn được liệt kê trong Menu của hàng hàng. Nhà bếp là một phần của hệ thống, thực hiện nhiệm vụ chuẩn bị các món mà bạn đặt. Vậy thì chúng ta sẽ cần người để truyền đạt món ăn mà bạn yêu cầu tới nhà bếp và mang đồ ăn ra cho bạn. Đó chính là người phục vụ, và ta có thể ví họ giống như là cầu nối API. Người phục vụ sẽ truyền đạt các yêu cầu của bạn tới nhà bếp và mang đồ ăn ra cho bạn.

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, vậy thì chúng ta không cần phải đợi phần client code xong nữa, mà chúng ta sẽ thực hiện việc test API luôn.
  • Kể cả khi client làm xong rồi, nếu test trên client mà thấy lỗi liên quan đến logic và dữ liệu thì chúng ta cũng cần test thêm cả API để biết chính xác là server sai hay client sai. (TESTER cần phải giúp developer tìm ra nguyên nhân của lỗi để giúp họ fix lỗi nhanh hơn).
  • Khi làm hệ thống web services, dự án chỉ viết API cho bên khác dùng, chúng ta không có client để test thì bắt buộc chúng ta phải test API hoàn toàn.

Protocol (giao thức) dùng trong Restful API là gì?

Protocol là tập hợp tất cả các quy tắc, quy ước để đảm bảo cho các máy tính trên mạng có thể giao tiếp với nhau gọi là giao thức. Như vậy các máy trên mạng muốn giao tiếp với nhau thì phải có chung một giao thức.

Ví dụ:

Có 2 người A và B nói chuyện với nhau qua điện thoại, nếu người A hỏi 1 câu rồi im lặng, người B sẽ biết rằng người A đang chờ đợi câu trả lời và đến lượt người B nói. Hai chiếc máy tính cũng giao tiếp 1 cách lịch sự như vậy và được mô tả với cái thuật ngữ “Protocol” – giao thức.

Tuy nhiên, luật lệ này chặt chẽ hơn rất nhiều so với giao tiếp giữa người với người. Máy tính sẽ không thông minh để có thể nhận biết 2 câu “A là chồng B” hay “B là vợ A” có cùng ý nghĩa. Để 2 máy tính giao tiếp hiệu quả, server phải biết chính xác cách mà client sắp xếp cái message nó gửi lên như thế nào.

Chúng ta đã từng nghe đến những Protocol cho những mục đích khác nhau, ví dụ như Mail có POP hay IMAP, message có XMPP, Kết nối thiết bị: Bluetooth. Trong web thì Protocol chính là HTTP – HyperText Transfer Protocol, vì sự phổ biến của nó mà hầu hết các công ty chọn nó là giao thức cho các API.

Lưu ý: API có thể viết trên nền Protocol khác, ví dụ như SOAP.

HTTP là gì?

HTTP (HyperText Transfer Protocol – Giao thức truyền tải siêu văn bản) là một trong các giao thức chuẩn về mạng Internet, được dùng để liên hệ thông tin giữa Máy cung cấp dịch vụ (Web server) và Máy sử dụng dịch vụ (Web client), là giao thức Client/Server dùng cho World Wide Web – WWW

HTTP hoạt động dựa trên mô hình Client – Server. Trong mô hình này, các máy tính của người dùng sẽ đóng vai trò làm máy khách (Client). Sau một thao tác nào đó của người dùng, các máy khách sẽ gửi yêu cầu đến máy chủ (Server) và chờ đợi câu trả lời từ những máy chủ này.

Phân tích Send Request và Get Response

Send REQUEST

Một request gồm có 4 thành phần:

  1. URL là địa chỉ định danh tài nguyên. Hiểu đơn giản, URL là đường dẫn. Trong trường hợp Request không yêu cầu tài nguyên cụ thể , URI có thể là dấu *.
  2. Method: Là phương thức để chỉ ra hành động mong muốn được thực hiện trên tài nguyên đã xác định.

Khi request đến server, server thực hiện một trong 3 hành động sau:

  • Server phân tích request nhận được, maps yêu cầu với tập tin trong tập tài liệu của server, và trả lại tập tin yêu cầu cho client.
  • Server phân tích request nhận được, thực thi chương trình và trả lại kết quả của chương trình đó.
  • Request từ client không thể đáp ứng, server trả lại thông báo lỗi.

Một số phương thức phổ biến thường hay dùng

  • GET: Yêu cầu truy cập thông tin từ server
  • POST: Yêu cầu server tạo một dữ liệu mới
  • PUT: Yêu cầu server chỉnh sửa dữ liệu đã tồn tại.
  • DELETE: Yêu cầu server xoá dữa liệu
  1. Header: nơi chứa các thông tin cần thiết của một request nhưng người dùng không biết có sự tồn tại của nó.
  2. Body: Chứa thông tin mà client sẽ gửi đến cho server. Ví dụ: username, password…

Return Response

Sau khi nhận được request từ phía client, server sẽ xử lý request đó và gửi ngược lại response cho client. Cấu trúc của một response tương đối giống phần request nhưng Status code sẽ thay thế cho URL và Method.
Status code là những con số có ba chữ số và có duy nhất một ý nghĩa.
Ví dụ: “404 Not Found”, “503 Service Unavailable”…

Các kiểu mã trạng thái:

1xx: Thông tin (100 -> 101)

  • VD: 100 (Continue), ….

2xx: Thành công (200 -> 206)

  • VD: 200 (OK) , 201 (CREATED), …

3xx: Sự điều hướng lại (300 -> 307)

  • VD: 305 (USE PROXY), …

4xx: Lỗi phía Client (400 -> 417)

  • VD: 403 (FORBIDDEN), 404 (NOT FOUND), …

5xx: Lỗi phía Server (500 -> 505)

  • VD: 500 (INTERNAL SERVER ERROR)

Những điều cần lưu ý khi thực hiện API Testing

Kiểm thử API nên được thực theo các phương pháp kiểm thử trong quy trình phát triển phần mềm:

  • Discovery testing: Kiểm tra các API khi truy cập các tài nguyên và xem các API truy cập các tài nguyên, có được các quyền xem, xóa và sửa hợp lệ hay không
  • Usability testing: Loại kiểm thử này kiểm tra xem API có làm đúng chức năng và thân thiện hay không và API được tích hợp tốt trên các nền tảng khác hay không
  • Security testing: Loại kiểm thử này bao gồm các loại xác thực được yêu cầu và xem các dữ liệu nhạy cảm có được mã hóa thông qua HTTP hoặc cả hai hay không
  • Automated testing: Kiểm thử API được nâng cao trong việc tạo ra các đoạn mã hoặc công cụ mà có thể chạy API thường xuyên
  • Documentation: Tester phải đảm bảo rằng các tài liệu thích hợp và cung cấp đầy đủ các thông tin để tương tác với API. Tài liệu nên là một phần khi bàn giao

Các thực hành tốt cho kiểm thử API

  • Test case nên được nhóm theo loại kiểm thử
  • Trên mỗi test case, nên bao gồm cả phần khai báo các API được gọi
  • Các tham số lựa chọn nên được liệt kê dầy đủ trong các test case
  • Nên đặt độ ưu tiên cho các API được gọi để dễ dàng test hơn
  • Mỗi test các nên được khép kín, độc lập và tránh ít phục thuộc
  • Nên tránh kiểm tra xâu chuỗi (test chaining) trong quá trình phát triển
  • Đặc biệt chú ý khi thực hiện xử lý các chức năng gọi một lần như xóa, đóng cửa sổ….
  • Gọi trình tự nên được thực hiện và lập kế hoạch tốt
  • Để đảm bảo hoàn thành các kiểm thử, tạo test case cho tất cả các tổ hợp đầu vào có thể có của API

Các test case cho kiểm thử API

Các test case cho kiểm thử API được dựa trên:

  • Dữ liệu trả về dựa trên điều kiện đầu vào: Điều này tương đối dễ dàng kiểm tra, như đầu vào có thể được xác định và kết quả có thể được xác thực.
  • Không trả về gì cả: Khi không có giá trị trả về, hành vị của API trên hệ thống có thể được kiểm tra
  • Kích hoạt một vài API/event/interrupt: Nếu đầu ra của một API kích hoạt các event hoặc interrupt, thì các listeners của event và interrupt nên đươc kiểm tra
  • Cập nhật cấu trúc dữ liệu: Cập nhật cấu trúc dữ liệu sẽ có một vài kết quả hoặc ảnh hưởng lên hệ thống, và chúng nên được kiểm tra
  • Chỉnh sửa các tài nguyên(resources) nhất định: Nếu API gọi chỉnh sửa một vài tài nguyên thì nó nên được xác nhận bằng cách truy cập vào các tài nguyên tương ứng

Sự khác nhau giữa API testing và Unit testing

Unit testing API testing
Lập trình viên thực hiện Tester thực hiện
Từng chức năng được kiểm thử Các chức năng liên quan đến nhau cần được kiểm thử
Lập trình viên có thể truy cập vào source code Tester không thể truy cập vào source code
Phải kiểm tra cả UI Chỉ kiểm tra các hàm API
Chỉ các chức năng đơn giảm được kiểm thử Tất cả các chức năng được kiểm thử
Giới hạn phạm vi Phạm vi rộng hơn
Thường được chạy trước khi build Thường được chạy sau khi build

Bài kiểm tra về API

0%
0 votes, 0 avg
9

You have 1 minutes to pass to the quiz.


Created on

Hỏi nhanh về API

1 / 3

Một API có thể thiếu METHOD hay không?

2 / 3

Có bao nhiêu kiểu mã trạng thái trong API Response?

3 / 3

Status Code trả về của API có bao nhiêu chữ số?

Please fill in empty fields

Your score is

The average score is 85%

0%

Did you like this quiz

Giới thiệu chung về Postman

Postman là một công cụ rất thuận tiện cho việc test Rest API, được 1.5 triệu developer trên toàn thế giới tin dùng. Với Postman, ta có thể gọi RestAPI mà không cần viết dòng code nào. Làm chủ Postman, các bạn sẽ thấy việc gọi các RestAPI (như Facebook, Google, Youtube) chẳng có gì phức tạp cả.

điểm:
– Dễ sử dụng, hỗ trợ cả chạy bằng UI và non-UI.
– Hỗ trợ viết code cho assert tự động bằng Javascript. – Hỗ trợ cả RESTful services và SOAP services.
– Có chức năng tạo API document.

Nhượđiểm:
– Những bản tính phí mới hỗ trợ những tính năng advance: Làm việc theo team, support trực tiếp…

Cài đặt Postman

Download tại địa chỉ: https://www.getpostman.com/

Sau khi cài đặt, giao diện đăng nhập sẽ hiện ra. Bạn có thể bấm “Skip This” để bỏ qua phần đăng nhập, tuy nhiên nên tạo account và đăng nhập vì Postman có thể đồng bộ dữ liệu của bạn trên nhiều máy, khá tiện lợi.

Các thành phần chính của Postman

Settings: chứa các thông tin về cài đặt chung.

  • Thông tin Account: dùng để Login, logout và sync data.
  • Settings tùy chỉnh: themes, shortcut, format…
  • Import data từ ngoài vào

Collections: Collection là một tập hợp của nhiều request. Những request liên quan tới nhau thì ta gom lại vào chung 1 collection để dễ quản lý hơn.
API content: hiển thị nội dung chi tiết API và các phần hỗ trợ giúp thực hiện test API. Đây là phần mà tester phải làm việc nhiều nhất.
Trong phần này gồm có 3 thành phần chính:

  • Enviroments: Trong dự án thực tế, người ta thường dùng deploy RestAPI trên nhiều môi trường (local, test, production). Postman hỗ trợ cài đặt các biến môi trường (url gốc, API key, …), thuật tiện hơn khi cần test trên nhiều môi trường
  • Request: Để sử dụng RestAPI, ta sẽ gửi một HTTP Request tới endpoint của API đó. Ví dụ như để lấy thông tin các STATUS, ta sẽ gửi HTTP GET Request tới endpoint: https://localhost/api/v1/status

Mỗi request này chứa những thông tin như URL, method (POST, GET), body (trường hợp dùng POST hay PUT), HTTP header.

  • Reponse: Chứa các thông tin trả về.

Hướng dẫn tạo mới Request

Các chức năng hay được sử dụng của Postman bao gồm:

  • Cho phép gửi HTTP Request với các method GET, POST, PUT, DELETE.
  • Cho phép thay đổi header của các request
  • Cho phép post dữ liệu dưới dạng form (key-value), text, json
  • Hiện kết quả trả về dạng text, hình ảnh, XML, JSON
  • Hỗ trợ authorization (Oauth1, 2)

Để gửi 1 request, ta chỉ cần điền URL vào khung text, chọn method, điền header, body, sau đó bấm Send là xong

Ví dụ:

  1. URL: https:// postman-echo.com/get
  2. Method: GET
  3. Headers: Không cần điền gì cả
  4. Body: Phương thức GET không có body, các bạn phải điền tham số vào Params

Thông tin trả về:
1. Định dạng dữ liệu: thông thường là json (nên để chế độ Pretty để cho dễ nhìn.)

  1. Nội dung dữ liệu: Đây là phần bạn phải kiểm tra.
  2. Trạng thái của API (status) và thời gian trả về.

Làm việc với POSTMAN Collection

Collections: Collection là một tập hợp của nhiều request. Những request liên quan tới nhau thì ta gom lại vào chung 1 collection để dễ quản lý hơn.
Tạo 1 Collection.
1. Click vào button TẠO COLLECTION bên sidebar
2. Điền tên và mô tả (không bắt buộc) collection đó.
3. Lưu request vào Collection.
Các settings chính của 1 Collection.
Share collections: tạo ra link để share với người khác collection (bị hạn chế bởi kiểu account).
Rename: Đổi tên của collection. Edit: Sửa tên và mô tả của collection.
Add Folder: tạo thêm collection mới bên trong Collection đó.
Duplicate: nhân đôi collection đang có. Export: Xuất collection ra dạng file .json
Monitor Collection: Dùng để test hiệu năng (bị hạn chế bởi kiểu account).
Mock Collection: giúp giả lập các API sử dụng chức năng Example mà postman hỗ trợ. (bị hạn chế bởi kiểu account).
Publish Docs: Tạo ra API Docs định dạng HTML.
Delete: Xóa Collection.
Ngoài cách trên, có thể xem chi tiết Collection bằng cách click vào mũi tên.

Làm sao để chạy Collection (Collection Runner)

Có hai cách để chạy một collection đó là sử dụng Collection Runner và Newman. Hãy bắt đầu thực thi collection bằng Collection Runner.
Bước 1) Kích trên nút Runner ở góc trên bên cạch nút Import.
Bước 2) Trang Collection Runner sẽ xuất hiện.
Bước 3) Chạy Postman Test Collection
Bước 4) Trang kết quả chạy sẽ được hiển thị sau hi kích nút Run. Phụ thuộc và delay, bạn sẽ nhìn thấy kết quả mà chúng thực hiện.
Khi test kết thúc, bạn có thể nhìn thấy trạng thái nếu nó Passed hoặc Failed và kết quả mỗi lần lặp (iteration).
Bạn nhìn thấy trạng thái Pass cho các request GET Khi chúng ta không có bất kỳ thử nghiệm nào cho POST, sẽ có một message hiển thị “This request did not have any tests”.
Bạn có thể thấy tầm quan trọng của việc có các test trong các requesst để bạn có thể xác minh trạng thái HTTP nếu thành công và dữ liệu được tạo hoặc truy xuất.

Hướng dẫn sử dụng biến (Variable)

Tham số hóa dữ liệu là một trong những tính năng hữu ích nhất của Postman.
Thay vì tạo cùng một yêu cầu với dữ liệu khác nhau, bạn có thể sử dụng các biến có tham số.
Những dữ liệu này có thể từ một tệp dữ liệu hoặc một biến môi trường.
Tham số hóa giúp tránh lặp lại các kiểm thử tương tự và lặp lại có thể được sử dụng để kiểm thử tự động hóa.
Các tham số được tạo thông qua việc sử dụng dấu ngoặc kép: {{sample}}.
Lưu ý: Luôn đảm bảo rằng các tham số của bạn có nguồn như biến môi trường hoặc tệp dữ liệu để tránh lỗi.

Sử dụng Set và Get thông qua Scripting

Khởi tạo và sử dụng biến môi trường

Chức năng chính của Environment là 1 chỗ lưu “biến” giống như “biến” trong code để có thể tái sử dụng ở nhiều nơi.
Ứng dụng:
– Nhanh chóng chuyển qua lại giữa các môi trường Dev và Product mà không cần tạo lại các request mới vì phải thay đổi lại URL.
– Giúp lưu lại giá trị của response API trước để điền vào API sau.
– Không phải sửa giá trị của các tham số quá nhiều lần.
Ở Postman sẽ chia làm 2 loại Environments: Local và Global
Local: Phạm vi ảnh hưởng chỉ có khi chọn đúng Enviroments.
Global: Phạm vi ảnh hưởng đến toàn bộ các project có trong Postman, nhưng nếu có 2 biến cùng tên ở Local và Global thì sẽ ưu tiên lấy Local.
Vị trí của Environment trong khung làm việc của postman.
Tạo 1 Enviroment
Bước 1: Mở Manage Environments
Bước 2: Add thêm Enviroment mới
Bước 3: Điền tên của Enviroment, tên và giá trị của biến.

Vài điều cần lưu ý:

  • Để sử dụng biến: viết theo cú pháp {{tên biến}}. Ví dụ: {{base_url}}
  • Nếu tên biến có màu đỏ có nghĩa là không có biến này trong Environment, chuyện này thường xảy ra khi chuyển đổi qua lại giữa các môi trường của các dự án khác nhau, hoặc đã inactive cái biến đó.

Hướng dẫn tạo TEST và sử dụng Code Snippets

Chạy POSTMAN từ Command Line

Truyền tham số giữa các bước trong POSTMAN để chạy Automation Test

Nếu thấy khoá học này hay và hữu ích, hãy chia sẻ khoá học này đến với bạn bè và người thân của bạn nhé. Để có thể trở thành Tester chuyên nghiệp và nếu như bạn mong muốn sự nghiệp của mình sẽ thăng tiến nhanh hơn và bền vững, chúng tôi khuyên bạn hãy tham gia ngay khoá TESTER In Life – Không chỉ là kiểm thử, đây là khoá học rất cần thiết cho tất cả các bạn Tester ở mọi level nhằm giúp bạn làm việc thông minh hơn, hiệu quả hơn qua những công thức bí mật được chia sẻ trong khoá học.