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.. Những điểm nổi bật của Web API: - Tự động hóa sản phẩm - Khả năng tích hợ
Trang 1PHIẾU GIAO NHIỆM VỤ BÀI TẬP LỚN
1 Thông tin chung:
Tên đề tài: Sử dụng Postman trong kiểm thử web API
Họ và tên sinh viên: Đỗ Khắc Giang – 1721050404
Mai Việt Anh – 1621070195Thân Nguyễn Hoàng Nam – 1721050189Phạm Công Minh – 1721050482
PHÂN CÔNG NHIỆM VỤ
Trang 2- Sử dụng Postman để kiểm thử web API
MỤC LỤC
Chương I: Tìm hiểu về API và API TESTING 3
1.1 API là gì? 3
1.2 API thường ứng dụng vào đâu? 3
1.3 Web API là gì? 3
1.4 Định dạng dữ liệu JSON và XML………
1.5 Web API hoạt động như thế nào? 4
1.6 Ưu nhược điểm của Web API 4
1.7 Kiểm thử API là gì? 5
1.8 Tại sao phải kiểm thử API? 5
1.9 Mục đích của việc API Testing 5
Chương II: Tìm hiểu về Postman 7
2.1 Postman là gì? 7
2.2 Tại sao sử dụng Postman? 7
2.3 Download và cài đặt Postman 8
2.4 Sử dụng Postman như thế nào? 8
2.5 Sử dụng Postman để kiểm thử web API 9
2.6 REQUEST POST 11
KẾT LUẬN 15
TÀI LIỆU THAM KHẢO 15
Trang 3Chương I: Tìm hiểu về API và API TESTING
1.1 API là gì?
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ụngkhác Nó là viết tắt của Application Programming Interface – giao diện lậptrình ứng dụng API cung cấp khả năng cung cấp khả năng truy xuất đến mộttập các hàm hay dùng Và từ đó có thể trao đổi dữ liệu giữa các ứng dụng
1.2 Vì sao phải test API?
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 testhoàn toàn không phụ thuộc gì vào client
đế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
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
1.3 Các phương thưc cơ bản
Nhìn chung có 4 phương thức mà các tester cần phải chú ý và nắm rõ:
1.4 Phương pháp kiểm tra API
Các điểm sau giúp người dùng thực hiện phương pháp Kiểm tra API:
trình
biên và đoán lỗi và viết các trường hợp kiểm thử cho API
Trang 4 Các tham số đầu vào cho API cần được lên kế hoạch và xác định một cách thích hợp.
1.5 API thường ứng dụng vào đâu?
Web API: là hệ thống API được sử dụng trong các hệ thống website Hầuhết các website đều ứng dụng đến Web API cho phép bạn kết nối, lấy dữ liệuhoặc cập nhật cơ sở dữ liệu Ví dụ: Bạn thiết kế chức nằng login thông Google,Facebook, Twitter, Github… Điều này có nghĩa là bạn đang gọi đến API của.Hoặc như các ứng dụng di động đều lấy dữ liệu thông qua API
API trên hệ điều hành: Windows hay Linux có rất nhiều API, họ cung cấpcác tài liệu API là đặc tả các hàm, phương thức cũng như các giao thức kết nối
Nó giúp lập trình viên có thể tạo ra các phần mềm ứng dụng có thể tương táctrực tiếp với hệ điều hành
API của thư viện phần mềm hay framework: API mô tả và quy định cáchành động mong muốn mà các thư viện cung cấp Một API có thể có nhiềucách triển khai khác nhau và nó cũng giúp cho một chương trình viết bằng ngônngữ này có thể sử dụng thư viện được viết bằng ngôn ngữ khác Ví dụ bạn cóthể dùng Php để yêu cầu một thư viện tạo file PDF được viết bằng C++
1.6 Web API là gì?
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
Những điểm nổi bật của Web API:
- Tự động hóa sản phẩm
- Khả năng tích hợp linh động
- Cập nhật thông tin thời gian thực
- Có tiêu chuẩn chung dễ sử dụng
Web API hỗ trợ restful đầy đủ các phương thức: Get/Post/put/delete dữ liệu
Nó giúp bạn xây dựng các HTTP service một cách rất đơn giản và nhanhchóng Nó cũng có khả năng hỗ trợ đầy đủ các thành phần HTTP: URI,request/response headers, caching, versioning, content format
1.7 Định dạng dữ liệu JSON và XML
Trang 51 JSON là gì?
JSON là cụm từ viết tắt của JavaScript Object Notation (Ký pháp đối tượng của JavaScript) Đây là một dạng cấu trúc dữ liệu dạng văn bản thường được dùng để lưu trữ và trao đổi thông tin trực tiếp giữa các hệ thống Ban đầu, JSON được giới thiệu trong JavaScript như là một cú pháp để định nghĩa một đối tượng Sau này, các chuỗi JSON dần trở nên phổ biến, được nhiều ngôn ngữ lập trình hiện đại hỗ trợ
và dần thay thế cho XML
2 JSON dùng để làm gì?
Như trên, JSON được dùng để lưu trữ và chia sẻ dữ liệu
3 Cấu trúc của JSON
JSON là một chuỗi văn bản nằm giữa cặp dấu { và } Phần tử cơ bản nhất trong chuỗi JSON là một cặp thông tin dạng "key":"value" (hay "khóa": "giá trị") Chúng
ta có thể ghép nhiều cặp thông tin với nhau và phân tách chúng bởi dấu phẩy:
{"hoten" : "Nguyen Van Ti", "email" : "nvti@gmail.com","namsinh":"1999"}Chú ý: Nếu trong chuỗi giá trị có dấu nháy kép thì phải sử dụng ký hiệu \ trước dấu nháy kép
Ví dụ: {"hoten" : "Nguyen Van Ti", "email" :
"nvti@\"gmeo\".com","namsinh":"1999"}
Key trong JSON
Trong JavaScript, key có thể là một chuỗi, một số , nhưng để đảm bảo tính đồng nhất giữa các ngôn ngữ lập trình, key nên được đặt ở dạng chuỗi (bao quanh bởi cặpdấu nháy kép) và tuân thủ theo quy tắc đặt tên biến của các ngôn ngữ lập trình
Value trong JSON
Value (giá trị) trong JSON có thể nhận một trong các dạng sau:
Một chuỗi (string) được đặt giữa cặp dấu nháy kép
Ví dụ: {"hoten":"Nguyễn Văn Tèo"}
Ví dụ: {"namsinh":1990}
Một chuỗi JSON con (gọi là một đối tượng JSON hay JSON object)
Ví dụ: {"nhanvien":{ "ten":"Nguyễn Văn Tèo", "namsinh":1999,
"quequan":"Hà Nội" }}
Trang 6 Một mảng các phần tử con được đặt giữa cặp dấu [ và ]
Hầu hết các ngôn ngữ lập trình hiện đại đều hỗ trợ sẵn các hàm để tạo hay phân tích
dữ liệu từ chuỗi JSON Chúng ta sẽ tìm hiểu các hàm này ở các ngôn ngữ lập trình
6 Cấu trúc của một tài liệu XML
Một tài liệu XML là một file thuần văn bản, được lưu với phần mở rộng là xmlMột file tài liệu thường gồm 2 phần:
Dòng đầu tiên định nghĩa kiểu file (xml), phiên bản sử dụng (version) và cách thức mã hóa ký tự (encoding)
Đối với các tài liệu sử dụng tiếng Việt, chúng ta có thể sử dụng dòng đầu tiênnhư sau: <?xml version="1.0" encoding="UTF-8"?>
Các dòng tiếp theo là các thẻ hoặc cặp thẻ đánh dấu dữ liệu được trình bày theo cú pháp:
<tên_thẻ thuộc_tính_1 = "giá trị 1" thuộc_tính_2" = "giá trị 2" >Nội dung </tên_thẻ>
Nếu như đó là thẻ đơn (không đi theo cặp) thì phải được viết theo cú pháp:
<tên_thẻ thuộc_tính_1 = "giá trị 1" thuộc_tính_2" = "giá trị 2" />
(có thêm dấu gạch chéo / trước dấu lớn hơn)
Nội dung của môt thẻ có thể chứa các thẻ/cặp thẻ con
Ví dụ:
Trang 7<sachnhom="văn học">
<tieude ngonngu="Tiếng Việt">Văn 6</tieude>
<tacgia>Chưa biết</tacgia>
</sach>
<sachnhom="văn học">
<tieude ngonngu="Tiếng Việt">Văn 7</tieude>
<tacgia>Chưa biết</tacgia>
</sach>
</khosach>
4 Một số khái niệm trong XML
XML Prolog: Chính là dòng định nghĩa kiểu file (xml), phiên bản sử dụng (version) và cách thức mã hóa ký tự (encoding)
định một cặp thẻ cùng các cặp thuộc tính, giá trị và nội dung nằm giữa cặp thẻ đó
Thẻ mở và thẻ đóng chính là các thẻ chặn đầu và chặn đuôi một phần tử
XML Thẻ mở có dạng <tên_thẻ thuộc_tính_1 = "giá trị 1" thuộc_tính_2"
= "giá trị 2" >, còn thẻ đóng có dạng </tên_thẻ> Ở ví dụ trên, <khosach>
là thẻ mở, còn </khosach> là thẻ đóng tương ứng
Thẻ root, hay thẻ gốc, là cặp thẻ ngoài cùng bao quanh toàn bộ nội dung XML Trong ví dụ trên, <khosach> </khosach> là thẻ root
7 Một số luật trong XML
Mỗi tài liệu XML phải có 1 thẻ root, là thẻ cha duy nhất của các thẻ còn lại
Dòng XML Prolog là dòng tùy chọn, nhưng nếu có thì dòng này phải được đặt ở vị trí đầu tiên
Tất cả các thẻ XML đều phải có thẻ đóng tương ứng, trừ XML Prolog
XML phân biệt chữ hoa và chữ thường, <sach> </sach> và
<Sach> </Sach> là 2 cặp thẻ khác nhau
Các thẻ XML phải được sắp xếp ngang hàng với nhau, hoặc được lồng hoàn toàn vào nhau
Ví dụ sau đây sai: <p><i>Nội dung</p></i> do thẻ <p> </p> và thẻ
<i> </i> không lồng nhau, phải được viết lại thành <p><i>Nội
dung</i></p>
Giá trị của các thuộc tính luôn luôn phải được đặt giữa cặp dấu nháy kép
Một số ký hiệu không được phép dùng trực tiếp vì có thể gây nhầm lẫn Thayvào đó, phải viết chúng dưới dạng mã:
Trang 8Dạng mã Ký hiệu Giải thích
< < Ký hiệu nhỏ hơn
> > Ký hiệu lớn hơn
" " Dấu nháy kép
Trang 9Cũng giống HTML DOM, chúng ta có thể sử dụng các ngôn ngữ lập trình để giao tiếp với tài liệu XML (VD: tìm đến một phần tử, lấy/thiết lập các giá trị thuộc tính, nội dung ) Chúng ta sẽ tìm hiểu cách sử dụng XML DOM trên các ngôn ngữ khác nhau trong các khóa học riêng về ngôn ngữ đó.
1.8 Web API hoạt động như thế nào?
Đầu tiên là xây dựng URL API để bên thứ ba có thể gửi request dữ liệu đếnmáy chủ cung cấp nội dung, dịch vụ thông qua giao thức HTTP hoặc HTTPS.Tại web server cung cấp nội dung, các ứng dụng nguồn sẽ thực hiện kiểmtra xác thực nếu có và tìm đến tài nguyên thích hợp để tạo nội dung trả về kết quả.Server trả về kết quả theo định dạng JSON hoặc XML thông qua giao thứcHTTP/HTTPS
Tại nơi yêu cầu ban đầu là ứng dụng web hoặc ứng dụng di động , dữ liệuJSON/XML sẽ được parse để lấy data Sau khi có được data thì thực hiện tiếp cáchoạt động như lưu dữ liệu xuống Cơ sở dữ liệu, hiển thị dữ liệu…
1.9 Ưu nhược điểm của Web API
Trang 10 Nhanh chóng xây dựng HTTP service: URI, request/response headers,caching, versioning, content formats và có thể host trong ứng dụng hoặc trênIIS.
Mã nguồn mở, hỗ trợ chức năng RESTful đầy đủ, sử dụng bởi bất kì clientnào hỗ trợ XML, Json
Hỗ trợ đầy đủ các thành phần MVC như: routing, controller, action result,filter, model binder, IoC container, dependency injection, unit test
Giao tiếp hai chiều được xác nhận trong các giao dịch, đảm bảo độ tin cậycao
Tốn thời gian và chi phí cho việc phát triển, nâng cấp và vận hành
Có thể gặp vấn đề về bảo mật khi hệ thống bị tấn công nếu không giới hạnđiều kiện kỹ
1.10 Kiểm thử API là gì?
Kiểm thử API là loại kiểm thử phần mềm xác nhận API Nó rất khác vớikiểm thử GUI và tập chung chủ yếu vào logic nghiệp vụ của kiến trúc phầnmềm Thay vì sử dụng đầu vào (bàn phím) và đầu ra, trong kiểm thử API bạn
sử dụng phần mềm để gửi yêu cầu đến API, nhận đầu ra và ghi lại phản hồi của
hệ thống Kiểm thử này không tập chung vào kiểm thử giao diện
Kiểm thử API yêu cầu một ứng dụng để tương tác với API Để kiểm thửAPI bạn sẽ cần:
Sử dụng Tool kiểm thử để kiểm tra API
Viết các câu lệnh để kiểm tra API
1.11 Cách kiểm thử API
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:
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
Trang 11 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
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
mã hoặc công cụ mà có thể chạy API thường xuyên
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
1.12 Cách thực hành tốt cho kiểm thử API
cửa sổ
vào có thể có của API
1.13 Tại sao phải kiểm thử API?
Trong quá trình triển khai dự án, phần Server và Client làm độc lập vớinhau nên có nhiều chỗ bên Client chưa làm xong, ta không thể chờ Client làmxong để test được dữ liệu Do đó ta cần kiểm tra API bằng công cụ khác, lúc nàyviệc test hoàn toàn không phụ thuộc gì vào client
Khi Client làm xong rồi, nếu ta kiểm tra trên client mà thấy lỗi liên quanđến logic và dữ liệu thì cũng cần phải kiểm tra thêm cả API để biết chính xác làServer sai hay Client sai nhằm giúp cho việc sửa lỗi nhanh hơn
Trang 12Khi làm hệ thống web services, dự án chỉ viết API cho bên khác dùng, nên
sẽ không có client để test giống như các dự án khác Do đó, phải test API hoàntoàn
1.14 Các loại lỗi mà kiểm thử API tìm ra
từ API
1.15 Các tool cho kiểm thử API
Kiểm thử API và Unit đều là kiểm tra về source code nên các công cụ tương tự có thể sử dụng cho cả hai
Trang 131.16 Mục đích của việc API Testing
Kiểm thử ứng dụng sớm và không cần giao diện người dùng
Trong quá trình triển khai dự án, phần server và client làm độc lập với nhaunê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
Với API testing, bạn có thể bắt đầu kiểm thử ứng dụng sớm ngay cả khi không
có giao diện người dùng Điều này giúp xác định và khắc phục sớm các vấn đềtrong vòng đời phát triển, nếu không thì sẽ tốn kém để khắc phục khi được xác địnhtrong quá trình kiểm thử GUI
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 hayclient sai –> fix lỗi sẽ nhanh hơn
Để có được một chiến lược kiểm thử tự động tuyệt vời và giảm chi phí.Hãy nhìn lại vào kim tự tháp “Test automation pyramid” để đưa ra một chiếnlược kiểm thử tối ưu nhất
Khái niệm kim tự tháp được Mike Cohn phát triển và đã được mô tả trongcuốn sách “Thành công với Agile” Tầng thứ nhất của kim tự tháp là Unit test Thựchiện unit test là cách nhanh nhất và mang lại kết quả cao nhất Tầng thứ 2 là kiểmthử API dựa trên service layer Cuối cùng, ở đỉnh của kim tự tháp là kiểm thử UI
Đi từ tầng dưới kim tự tháp lên trên, chi phí liên quan đến việc tạo ra và duytrì các phương pháp kiểm thử, thời gian thực hiện kiểm thử, phạm vi kiểm thử sẽtăng lên Các kim tự tháp tự động (Automation pyramid) nói rằng bạn nên làmnhiều hơn nữa kiểm thử tự động thông qua Unit test và API hơn là kiểm thử dựatrên GUI Sự thành công của Agile rất phụ thuộc vào phản hồi (feedback) sớm.Trong các thực tiễn, việc tích hợp liên tục, thời gian kiểm thử hồi quy GUI và nhậnlại phản hồi quá dài Kiểm tra giao diện người dùng rất tốn kém để phát triển và duytrì Một sự thay đổi nhỏ trong giao diện người dùng cũng có thể dẫn đến việc thựchiện kiểm thử lại rất nhiều
Trong một số trường hợp, người kiểm thử bắt buộc phải thực hiện tự động hoá
ở tầng UI Tuy nhiên, kiểm thử có thể chậm và tốn nhiều chih phí Đây là một trong
Trang 14những lý do khiến nhiều công ty thất bại trong nỗ lực thực hiện chiến lược tự độnghoá hiệu quả.
Phát triển phần mềm theo phương pháp Agile và giảm việc thực hiện kiểm thử hồi quy bằng tay.
Theo một cuộc khảo sát gần đây của VersionOne, 95% người được hỏi chobiết tổ chức của họ sử dụng phương pháp Agile Agile không chỉ sử dụng ở nhữngcông ty startup và những nhóm phát triển sản phẩm nhỏ Lý do chính để áp dụngAgile thay vì phương pháp truyền thống là đẩy nhanh việc phân phối sản phẩm vàchấp nhận những thay đổi Agile cũng đã tăng tần số mà các ứng dụng được pháthành, do đó đã tạo ra nhu cầu ngày càng tăng về những phương pháp mới để nhanhchóng kiểm tra chúng Kiểm tra tự động hóa đã trở thành một yếu tố quan trọng đểduy trì tính nhanh chóng Vì vậy, cần thiết cho các đội Agile tăng mức độ kiểm thửAPI và giảm sự phụ thuộc của họ vào việc kiểm tra GUI
Tự động hóa API có thể giảm đáng kể áp lực của kiểm thử hồi quy của nhóm
QA Bằng cách tích hợp kiểm thử tự động API, nhóm QA có thể cung cấp phản hồinhanh về chất lượng ứng dụng ngay khi được triển khai (deploy) Điều này cungcấp một đánh giá nhanh chóng về hệ thống trước khi kiểm thử GUI Kiểm thử tựđộng API yêu cầu code ít hơn và cung cấp kết quả kiểm tra nhanh hơn và phạm vikiểm tra tốt hơn API được ổn định sớm và không thay đổi thường xuyên như giaodiện người dùng
API testing là một hình thức thử nghiệm phần mềm độc đáo và đặc biệt có giátrị đối với các doanh nghiệp nắm bắt quá trình hội nhập liên tục Việc xây dựngtrường hợp kiểm thử API trong quá trình phát triển bất kỳ phần mềm hoặc dịch vụnào có những lợi ích sâu rộng trong các đội, tất cả đều là cách khách hàng trảinghiệm sản phẩm Làm phần mềm mà khách hàng mục tiêu của bạn sẽ yêu thích làđiều thiết yếu cho sự thành công của doanh nghiệp và bằng cách kiểm thử API mộtcách nghiêm túc và thường xuyên, là một cách đáng tin cậy để đạt được nó