[SOFTWARE TESTING] - API Testing
- API: Application Programming Interface -> Cầu nối giữa client và server
+ API Testing thuộc business logic layer (presentation -> business logic -> data management)
+ API testing là kiểm thử trên server, không liên quan tới client
+ Tool sủ dụng: Postman, rest client,...
- Cơ chế hoạt động của API
+ Client gửi request tới server, server xử lí thông tin và gửi response lại cho client
+ Sử dụng giao thức HTTP để truyền tải dữ liệu
- Cách test API:
1. Gửi yêu cầu lên server với các tham số yêu cầu (run request): các phương thức sử dụng
+ GET: yêu cầu server đưa lại resource -> Read
+ POST: yêu cầu server tạo 1 resource mới -> Create
+ PUT/PATCH: yêu cầu server cho sửa resource -> Update
+ DELETE: yêu cầu server xóa resource -> Delete
2. Kiểm tra kết quả trả về (check response) -> so sánh kết quả thực tế với tài liệu API (kết quả mong đợi) để đưa ra kết luận
- Các phương pháp test API
+ Functional testing: kiểm tra xem API hoạt động chính xác đúng theo chức năng của nó không
+ Usability testing: API hoạt động dễ dàng không
+ Reliability testing: việc gọi và trả về kết quả có ổn định và nhất quán giữa các lần gọi hay không
+ Load testing: API hoạt động đúng khi concurrent user (người dùng truy cập đồng thời) không
+ Security testing: các vấn đề liên quan tới authentication, authorization, access control,...
- Phân biệt PUT và PATCH?
+ PUT: tạo ra một bản ghi có đầy đủ các thuộc tính của đối tượng và sau đó ghi đè lên đối tượng cần cập nhật; Nếu chúng ta gửi lên server thiếu thuộc tính thì giá trị của thuộc tính đó trong CSDL sẽ mang giá trị NULL
+ PATCH: chỉ thay đổi thuộc tính yêu cầu cập nhật
- Phân biệt GET vs POST?
+ GET
- URL chứa params -> dễ bị tấn công vì params hiện ra ngoài đường dẫn luôn
- Ràng buộc: chỉ chấp nhận các kí tự trong bảng mã ASCII
- Có thể cache
- Độ dài lên đế 2000 kí tự
+ POST
- Body chứa params -> an toàn hơn GET
- Không có sự ràng buộc nào về dữ liệu, thâm chí sử dụng mã nhị phân vấn được
- Không thể cache
- Độ dài biểu mẫu: lên tới 8MB
- HTTP request (các thông tin gửi lên server) -> gồm 3 phần:
+ Request line gồm 3 phần:
- method: get, post là 2 phương thức được sử dụng phổ biến
- path (url): định danh resource
- http version: phổ biến là http/1.0 hay http/1.1
+ Headers: chứa các thông tin bổ sung như Cookie, thông tin về ủy quyền, user-agent, accept-encodind -> các thông tin này phân biệt chữ hoa với chữ thường
+ Message Body -> thường chỉ có POST/PUT/PATCH mới có phần này
- Status code trong HTTP response
+ 1xx: thông tin -> yêu cầu được nhận và tiến trình đang tiếp tục xử lí
+ 2xx: thành công -> yêu cầu được chấp thuận thành công
+ 3xx: Sự điều hướng lại -> hoạt động tiếp theo phải được thực hiện mới hoàn thành yêu cầu
+ 4xx: Client error -> request chứa cú pháp không chính xác hoặc API chưa được implement
+ 5xx: Server error -> server thực hiện request không thành công
- Cookie
+ Có thời hạn expire
+ Dung lượng 4KB
+ Truy cập được cả ở client và server -> khi client gửi request tới server, cookie của trang sẽ được thêm vào request gửi lên server
+ Sử dụng để lưu token, authentication information,...
- Local storage vs Session storage?
+ Giống:
- Lưu trữ theo từng cặp (key - value)
- Value lưu ở local browser nên phía server không thể truy cập được
- Value chỉ là string, các dạng khác cần parse về string trước khi lưu vào storage
+ Khác:
- Session storage: dữ liệu mất ngay khi close tab hoặc close browser
- Local storage: close tab hoặc close browser thì data vẫn còn chỉ khi nào clear cache thì dữ liệu mới mất -> ứng dụng có thể chia sẻ dữ liệu giữa các tab
Nhận xét
Đăng nhận xét