CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ API 1. Khái niệm về API ❖ API là các phương thức, giao thức kết nối với các thư viện và ứng dụng khác. Nó là viết tắt của Application Programming Interface – giao diện lập trình ứng dụng. API cấp khả năng truy xuất đến một tập các hàm hay dùng.
Và từ đó có thể trao đổi dữ liệu giữa các ứng dụng. Ví dụ: Khi sử dụng một ứng dụng trên điện thoại di động, ứng dụng kết nối Internet và gửi dữ liệu tới máy chủ. Sau đó, máy chủ lấy ra dữ liệu đó, diễn giải nó, thực hiện các hành động cần thiết và gửi nó trở lại điện thoại. Ứng dụng sau đó sẽ diễn giải dữ liệu đó và trình bày thông tin bạn muốn theo cách có thể đọc được.
Hình 1: Tổng quan về API 1. Protocal trong restful API ❖ Giả sử: 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. Giao thức chính là những luật lệ được chấp thuận để 2 cái máy tính có thể nói chuyện với nhau.
❖ 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 chọn 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. 3 HTTP hoạt động như thế nào? ❖ Cuộc sống của HTTP xoay quanh cái vòng luẩn quẩn: Request và Response. Client gửi request, server gửi lại respone là liệu server có thể làm được cái client muốn hay không. Và API được xây dựng trên chính 2 thành phần: Request và Reponse.
Trước tiên, ta phải hiểu cấu trúc của mỗi thành phần. Một request đúng chuẩn cần 4 thứ: URL, Method, Header, Body. Hình 2 : Request a) Request ❖ URL là 1 cái địa chỉ duy nhất cho 1 thứ (dùng danh từ), có thể là web page, image hoặc video. API mở rộng cái ý tưởng gốc của URL cho những thứ khác, ví dụ: customers, products.
Và như thế client dễ dàng cho server biết cái nó muốn là cái gì, những cái này còn được gọi chung là “resources” – nguồn lực. ❖ Method là cái hành động client muốn tác động lên “resources”, và nó thường là động từ. Có 4 loại Method hay được dùng: - GET: Yêu cầu server đưa lại resource. - POST: Yêu cầu server cho tạo ra 1 resource mới.
Ví dụ: đăng ký 1 chuyến đi ở GrabBike. - PUT: Yêu cầu server cho sửa/thêm vào resource đã có trên hệ thống. Ví dụ: “Edit 1 post ở trên facebook.” - DELETE: Yêu cầu server cho xóa 1 resourse. ❖ Headers: nơi chứa các thông tin cần thiết của 1 request nhưng end-users không biết có sự tồn tại của nó.
Ví dụ: độ dài của request body, thời gian gửi request, loại thiết bị đang sử dụng, loại định dạng cái response mà client có đọc được… ❖ Body: nơi chứa thông tin mà client sẽ điền. Giả sử bạn đặt 1 cái bánh pizza, thì thông tin ở phần body sẽ là: Loại bánh pizza, kích cỡ, số lượng đặt. 4 b) Respone Sau khi nhận được request từ phía client, server sẽ xử lý cái request đó và gửi ngược lại cho client 1 cái response. Cấu trúc của 1 response tương đối giống phần request nhưng Status code sẽ thay thế cho URL và Method.
Tóm lại, nó có cầu trúc 3 phần: 1. Body Hình 3: Respone 1. Khái niệm về web API ❖ Web API là một phương thức dùng để cho phép các ứng dụng khác nhau có thể giao tiếp, trao đổi dữ liệu qua lại. Dữ liệu được Web API trả lại thường ở dạng JSON hoặc XML thông qua giao thức HTTP hoặc HTTPS.
Hình 4: Web API 1. Định dạng dữ liệu JSON ❖ Ngày nay, JSON được sử dụng nhiều trong Restful API. Nó được xây dựng từ Javascript, ngôn ngữ mà được dùng nhiều, tương thích với cả front-end và back- end của cả web app và web service. JSON là 1 định dạng đơn giản với 2 thành phần: keys và values.
5 • Key thể hiện thuộc tính của Object • Value thể hiện giá trị của từng Key Ví dụ : 1. Định dạng dữ liệu XML ❖ Trong JSON dùng { } và [ ] để dánh dấu dữ liệu. XML thì tương tự như HMTL, dùng thẻ để đánh dấu và được gọi là nodes. Tìm hiểu API Testing 1.
Khái niệm kiểm thử API Kiểm thử API (API testing) là một loại kiểm thử nhằm kiểm tra trực tiếp server mà không cần các giao diện lập trình ứng dụng. API Testing cũng là một phần của kiểm thử tích hợp có vai trò xác định xem phần mềm có đáp ứng mong đợi về chức năng, độ tin cậy, hiệu suất và bảo mật hay không. Mục đích của việc kiểm thử API testing ❖ Kiểm thử ứng dụng sớm mà không cần giao diện người dùng. ❖ Nếu bạn tìm thấy lỗi càng muộn thì bạn càng mất nhiều thời gian và công sức để sửa nó.
API Testing sẽ giúp người kiểm thử tham gia sớm vào vòng đời phát triển của sản phẩm. Với API Testing, bạn hoàn toàn có thể bắt đầu kiểm thử ứng dụng sớm mà không cần đến giao diện người dùng. Điều này sẽ giúp bạn sớm khắc phục được các vấn đề trong vòng đời phát triển, nếu không thì sẽ mất nhiều chi phí để khắc phục khi lỗi được xác định ở quá 6 trình kiểm thử GUI. Ưu điểm của API Testing là có thể kiểm tra rất nhiều logic mà không bị phụ thuộc vào GUI.
❖ Tạo ra một chiến lược kiểm thử tự động, giảm thiểu chi phí Hình 5: Kim tự tháp tự động hóa Đây là hình ảnh của “Kim tự tháp tự động hóa” (Automation pyramid). Nếu chúng ta nắm được, chúng ta có thể tạo ra một chiến lược tự động hoá hiệu quả. Đi từ tầng dưới của kim tự tháp, các chi phí liên quan đến việc tạo ra và duy trì các phương pháp, thời gian thực hiện, phạm vi kiểm thử sẽ dần tăng lên. Kim tự tháp chỉ ra rằng chúng ta cần làm nhiều kiểm thử tự động thông qua Unit Test và API Testing hơn là thực hiện kiểm thử dựa trên GUI.
Trên thực tế, việc liên tục tích hợp, thời gian để kiểm thử hồi quy GUI mất quá nhiều thời gian để nhận lại phản hồi. Các chi phí liên quan đến việc thực hiện và duy trì các phương pháp kiểm thử sẽ dần tăng lên. Một số mã trạng thái HTTP hay gặp trong kiểm thử API ❖ 1XX - Thông tin: Yêu cầu được chấp nhận hoặc quá trình tiếp tục. ❖ 2XX - Thành công: Xác nhận rằng hành động đã hoàn tất thành công hoặc đã được hiểu.
❖ 3XX - Chuyển hướng: Client phải thực hiện hành động bổ sung để hoàn thành yêu cầu. ❖ 4XX - Lỗi từ client chỉ ra rằng yêu cầu không thể hoàn thành hoặc chứa cú pháp sai. Mã lỗi 4xx sẽ hiện ra khi có lỗi từ phía người dùng, chủ yếu là do không đưa ra một yêu cầu hợp lệ ❖ 5XX - Lỗi từ phía máy chủ: Cho biết máy chủ không thể hoàn tất yêu cầu được cho là hợp lệ. Khi duyệt web và bắt gặp các lỗi 5xx, bạn chỉ có thể chờ đợi, vì lúc này lỗi xuất phát từ phía máy chủ của dịch vụ web, không có cách nào can thiệp để sửa lỗi ngoài việc ngồi chờ bên máy chủ xử lý xong.
7 Các status code thường gặp: ❖ 200 (OK): Phẩn hồi tiêu chuẩn cho các yêu cầu HTTP thành công. ❖ 201 (Created): Phản hồi tạo dữ liệu mới thành công. ❖ 400 (Bad request): Có lỗi cú pháp trong yêu cầu và yêu cầu bị từ chối. ❖ 401 (Unauthorized): Header yêu cầu không chứa mã xác thực cần thiết vàclient bị từ chối truy cập.
❖ 403 (Forbidden): Clinet không được phép xem một file nhất định. Hoặc máychủ quá tải. ❖ 404 (Not Found): Các file được yêu cầu không có trên máy chủ. Hoặc đườngdẫn URL sai.
❖ 408 (Request Time - out): Máy chủ mất quá nhiều thời gian để xử lý yêu cầu.Lỗi này thường gây ra bởi lưu lượng truy cập mạng cao. ❖ 502 (Bad gateway): Máy chủ cố truy cập đang gửi lại lỗi. 8 CHƯƠNG 2: ỨNG DỤNG CÔNG CỤ POSTMAN TRONG KIỂM THỬ API 2. Giới thiệu công cụ Postman Tại sao lại phải sử dụng Postman? Với hơn 8 triệu người phát triển sử dụng hiện nay, Postman đã trở thành một công cụ được lựa chọn vì những lý do sau: ▪ Khả năng truy cập – Để sử dụng Postman, người dùng chỉ cần đăng nhập vào tài khoản của chính họ để dễ dàng truy cập tệp mọi lúc, mọi nơi miễn là ứng dụng Postman được cài đặt trên máy tính.
▪ Sử dụng Collections (Bộ sưu tập) – Postman cho phép người dùng tạo bộ sưu tập cho các lệnh gọi API của họ. Mỗi bộ sưu tập có thể tạo các thư mục con và nhiều yêu cầu (request). Điều này giúp việc tổ chức các bộ thử nghiệm. ▪ Cộng tác – Bộ sưu tập và môi trường có thể được nhập hoặc xuất giúp chia sẻ tệp dễ dàng.
Liên kết trực tiếp cũng có thể được sử dụng để chia sẻ bộ sưu tập. ▪ Tạo môi trường – Có nhiều môi trường hỗ trợ ít lặp lại các bài kiểm tra vì người dùng có thể sử dụng cùng một bộ sưu tập nhưng cho một môi trường khác. Đây là nơi tham số hóa sẽ diễn ra mà chúng ta sẽ thảo luận trong các bài học tiếp theo. ▪ Tạo thử nghiệm – Các điểm kiểm tra thử nghiệm như xác minh trạng thái phản hồi HTTP thành công có thể được thêm vào mỗi lệnh gọi API giúp đảm bảo phạm vi kiểm tra.
▪ Kiểm tra tự động hóa – Thông qua việc sử dụng Bộ sưu tập chạy hoặc Newman, các thử nghiệm có thể được chạy trong nhiều lần lặp lại tiết kiệm thời gian cho các thử nghiệm lặp đi lặp lại. ▪ Gỡ lỗi – Bảng điều khiển Postman giúp kiểm tra dữ liệu nào đã được truy xuất giúp dễ dàng gỡ lỗi kiểm tra.