Có thể nói nguyên lí REST và cấu trúc dữ liệu RESTful được biết đến rộng rãi trong giới lập trình web nói chung và lập trình ứng dụng nói riêng.
Có thể nói nguyên lí REST và cấu trúc dữ liệu RESTful được biết đến rộng rãi trong giới lập trình web nói chung và lập trình ứng dụng nói riêng.
Vì bản chất của test API là đã đụng chạm đến source code nên các tool được sử dụng cho source có thể được sử dụng trong test API như: Postman, soapui, rungscope, curl, ctesk…
RESTful API không sử dụng session và cookie, nó sử dụng một access_token với mỗi request. Dữ liệu trả về thường có cấu trúc như sau:
Khi chúng ta request một API nào đó thường thì sẽ có vài status code để nhận biết sau:
Luôn sử dụng version để khi bạn cần nâng cấp API mà vẫn hỗ trợ các API cũ.
Lấy việc xây dựng api trên Laravel để làm ví dụ, trước khi đi vào ta tổng quan về Http Request.
HTTP request có tất cả 9 loại method , 2 loại được sử dụng phổ biến nhất là GET và POST
Viết Api thì sẽ khai báo router vào file routes/api.php thay vì sử dụng file routes/web.php. Các setting mặc cho file api.php trong laravel:
Có thể tùy chỉnh giá trị mặc định này trong method mapApiRoutes trong file app/Providers/RouteServiceProvider.php
Tạo các route để thực hiện các thao tác như CRUD (Create, Read, Update, Delete):
Mặc định route đã được gán middleware bindings, nếu muốn sử dụng model binding trong controller thì chúng ta sửa lại tham số trong route như sau:
Ngoài ra trong laravel cũng hỗ trợ chúng ta 1 cách khai báo ngắn gọn hơn:
Tương ứng với các Route RESTful đã khai báo ở trên, đặc biệt nếu dùng method apiResource thì laravel cũng hỗ trợ các method xử lí tương ứng trong controller.
Để tạo ra Resource Controllers chúng ta chạy lệnh sau
php artisan make:controller Api/ProductController -api
Ngoài ra nếu muốn sử dụng model binding khi tạo Resource Controllers thì dùng lệnh bên dưới
php artisan make:controller Api/ProductController --api --model=Models/Product
File ProductController tạo ra sẽ như sau, chúng ta để ý tham số của các method show, update, destroy sẽ thay đổi 1 chút.
Demo 1 đoạn code đơn giản trong controller kết hợp với model binding và route apiResource khi xây dựng API:
Mặc định khi sử dụng route apiResource thì dữ liệu trả về sẽ tự động được chuyển sang kiểu JSON và sẽ có status tương ứng nên chỉ cần return dữ liệu ra là được.
Còn nếu muốn tùy biến status trả về thì có thể tham khảo cách phía dưới có sử dụng class IlluminateHttpResponse để lấy status thay vì fix giá trị vào ví dụ như HTTP_OK tương ứng sẽ là 200
Khi xây dựng API, bạn có thể cần transform dữ liệu từ controller trước khi trả về cho người dùng ứng dụng của bạn, laravel cũng đã hỗ trợ điều này với Eloquent Resources
Để tạo ra 1 class chuyển đổi chúng ta chạy lệnh sau
php artisan make:resource Product
File app/Http/Resources/Product.php sẽ có nội dung như sau
Mình sẽ tùy chỉnh dữ liệu trả về là chỉ có title và price
Ở controller thì mình sẽ sửa lại như sau
Ngoài giới hạn dữ liệu trả về như title hay price, laravel cũng hỗ trợ rất nhiều thứ như thêm relationships, data …, mọi người có thể đọc thêm docs trên Laravel.
Hiện tại có 3 cơ chế Authorize chính:
Tùy thuộc vào service của bạn, mà hãy chọn loại Authorize có mức độ phù hợp, cố gắng giữ nó càng đơn giản càng tốt.
Viết API thì cũng cần chú ý về CORS là gì?
Ai cũng biết việc viết API docs là cần thiết, tuy nhiên để có một API docs hoàn chỉnh cũng tiêu tốn khá nhiều thời gian. Nhất là trong lúc dự án gấp rút thì mọi người thường chỉ để API docs ở mức siêu cơ bản. Tham khảo thêm cách viết API Document.
API document là một phần tương tự như Unit Test vậy – lấy ngắn để nuôi dài.
Nếu không được chăm sóc kỹ, thì đến lúc maintain hoặc thay đổi spec thì hậu quả sẽ rất thảm khốc, dưới đây là một số lưu ý lúc viết docs:
Tham khảo thêm các việc làm API lương cao hấp dẫn tại đây
API Testing đã trở thành một phần không thể thiếu trong quá trình phát triển và kiểm thử phần mềm. Với sự gia tăng của các dịch vụ và kiến trúc dựa trên đám mây, API đã trở thành xương sống của các ứng dụng hiện đại, điều quan trọng đối với các doanh nghiệp tổ chức là đảm bảo Test API hoạt động chính xác.
API được biết đến là Application Program Interface hay còn là một loại kiểm thử phần mềm mà nội dung test là các giao diện lập trình ứng dụng. Bên cạnh đó nội dung kiểm thử còn bao gồm chức năng, hiệu suất và độ bảo mật của phần mềm dựa trên các bài test tích hợp. Chủ yếu khu vực kiểm thử nằm ở phần trung gian giữa Client và Server
Trong Test API, các phép thử sẽ thực hiện giao thức để Client và Server giao tiếp với nhau. Giao thức chủ yếu để chúng có thể giao tiếp là HTTP. API chủ yếu được xây dựng dựa trên 2 thành phần là: Yêu cầu (request) và phản hồi (respond)
Thông thường có 4 loại Request chính đó là:
Các yêu cầu đầu vào phải được API thông qua, sau đó chỉ thỉ được gửi đến server để thực thi. Hiện nay thông thường các bài Test API thường chỉ tập trung vào business logic mà ít tập trung vào giao diện phần mềm
Như đã nói ở trên để thực hiện bài test API, cần tích hợp nhiều bài test dưới đây là các loại test và cách thực hiện bên trong API:
Ở bài kiểm thử này, API tập trung vào điều kiện Method check: Các data đầu vào đúng sẽ được chấp nhận (Accept) và từ chối (Reject) với data sai. Đây là các trường hợp diễn ra bên trong Syntax test:
Tóm lại: Cũng giống như các trường hợp Validate dữ liệu mà các tester vẫn thực hiện hàng ngày
Để đảm bảo Method bên trong API thực hiện đúng chức năng của mình thì bắt buộc gần như phải sử dụng Functional test. Trong đó Kiểm thử viên sẽ phải thực hiện đầy đủ cả 8 kỹ thuật bên trong Testing Functional để có thể chắc chắn từng chức năng nhỏ nhất hoạt động theo đúng ý muốn.
Có thể bạn quan tâm: Functional testing là gì? Functional và Non Functional testing khác nhau ở đâu?
Một số ví dụ về tác dụng của kiểm thử chức năng ở bên trong các bài test api:
Kịch bản kiểm thử là các bước hay kỹ thuật để xác định tính năng của ứng dụng. Thông thường test scenarios bên trong test API là tập hợp nhiều Test Case và Test Suite.
Vì hiện nay đa phần các bài test API đều tập trung vào business logic mà ít tập trung vào giao diện nên bên trong Scenariors sẽ gần như không có User Interface Test.
Các test case bên trong cho kiểm thử API dựa trên:
Quy trình test API cần được thực hiện theo quy trình và đầy đủ các bước sau:
API Testing là một quá trình tương đối phức tạp, các bài kiểm thử này là thử thách lớn cho cả những kiểm thử viên lâu năm cũng như người mới bắt đầu. Chính vì thế để giúp các nhân viên kiểm thử nâng cao, Khóa học API Testing sử dụng công cụ POSTMAN của daotaotester đem đến những kiến thức thực chiến cũng như những buổi thực hành chuyên sâu cho học viên. Khóa học rất phù hợp với những bạn đang tập làm quen với POSTMAN, những bạn có kiến thức cơ bản hay tối thiểu về Java, các học viên đã hoàn thiệt khóa học tester cơ bản đang thực hiện quá trình kiểm thử thủ công và kể cả những bạn chưa có kiến thức lập trình cũng rất phù hợp với khóa học.
Nội dung khóa học bao gồm 6 buổi cả lý thuyết lẫn thực hành, thời lượng mỗi buổi kéo dài 120 phút. Dưới sự dẫn dắt của các giảng viên uy tín, nhiều năm kinh nghiệm chinh chiến trong ngành Kiểm thử nói chung và Test API nói riêng. Chắc chắn khi tham gia khóa học, bạn sẽ được trang bị đầy đủ kiến thức và cách làm việc với Postman, kiến thức về API Testing REST bằng cách sử dụng Rest Assured với các ví dụ thực tế…
Trên đây là những kiến thức về Test API mà Daotaotester đã chọn lọc và cung cấp tới bạn đọc. Chúng tôi mong rằng các bạn có thể có thể hiểu được khái niệm và quy trình kiểm thử API để áp dụng thực tiễn vào công việc của mình.