Professional Documents
Culture Documents
Đồ án tốt nghiệp - Đắc Thị Trà My - 69DCHT20083-đã chuyển đổi
Đồ án tốt nghiệp - Đắc Thị Trà My - 69DCHT20083-đã chuyển đổi
Hà Nội - 2022
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ GIAO THÔNG VẬN TẢI
Hà Nội - 2022
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
(Của giảng viên hướng dẫn)
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
Điểm: ...................................................... (bằng chữ: .................................................. )
Đồng ý / Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp?
...........................................
Hà Nội, ngày tháng năm 2022
GIẢNG VIÊN HƯỚNG DẪN
(ký, họ tên)
NHẬN XÉT CỦA GIẢNG VIÊN PHẢN BIỆN
(Của giảng viên phản biện)
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
Điểm: ...................................................... (bằng chữ: .................................................. )
Đồng ý / Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp?
...........................................
Hà Nội, ngày tháng năm 2022
GIẢNG VIÊN PHẢN BIỆN
(ký, họ tên)
Đồ án tốt nghiệp Trường Đại học Công Nghệ GTVT
TÓM TẮT
Mục đích của Đồ án nhằm giải quyết các vấn đề về trạng thái lỗi, và kết quả trả về
cho mỗi chức năng của phần mềm có thể phát sinh trong một tổ chức, một doanh nghiệp.
Theo dõi và tìm ra các vấn đề phát sinh trong quá trình của một dự án là công việc rất quan
trọng, tuy nhiên hiện nay các dự án phát triển đang được thực hiện theo mô hình
Agile/Scrum thì việc sử dụng công cụ Postman ngày càng nhiều. Postman là một phần
mềm mã nguồn mở để test RestAPI mà không cần đến dòng code nào, nhờ đó mà các vấn
đề trong phát triển dự án trở nên dễ dàng hơn với mọi tổ chức.
Công nghệ thông tin ngày càng phát triển mạnh, việc tự động hóa các công việc ngày càng
được chú ý hơn giúp tiết kiệm thời gian, công sức, tăng năng suất làm việc và giảm các rủi
ro trong quá trình phát triển cũng như triển khai phần mềm. Vì vậy, nên em đã quyết định
chọn đề tài “Nghiên cứu kiểm thử phần mềm và triển khai kiểm thử API bằng công
cụ Postman” với mong muốn nghiên cứu, nâng cao trình độ trong quá trình học tập và làm
việc, từ đó áp dụng vào công việc thực tế.
Mục tiêu của đồ án này là xây dựng thành công kịch bản kiểm thử chi tiết và kiểm
thử tự động toàn bộ các ca kiểm thử đã thiết kế, ứng dụng kiểm thử các chức năng chính
của các chức năng chính trong API bán sách. Đồng thời đưa ra các hướng giải quyết phù
hợp.
Bố cục đồ án gồm có bốn chương:
Chương 1. Tổng quan
Chương 2. Cơ sở lý thuyết
Chương 3. Công cụ kiểm thử Postman
Chương 4. Triển khai kiểm thử API bằng công cụ Postman
Em xin chân thành chịu trách nhiệm về lời cam đoan của mình.
MỤC LỤC
TÓM TẮT........................................................................................................................ i
LỜI CAM ĐOAN ........................................................................................................... ii
MỤC LỤC ..................................................................................................................... iii
LỜI NÓI ĐẦU .................................................................................................................v
BẢNG THUẬT NGỮ VIẾT TẮT ................................................................................ vi
DANH MỤC HÌNH ẢNH ............................................................................................ vii
DANH MỤC BẢNG BIỂU ......................................................................................... viii
CHƯƠNG 1. TỔNG QUAN ...........................................................................................1
1.1. Lý do chọn đề tài................................................................................................1
1.2. Mục tiêu của đề tài .............................................................................................1
1.3. Giới hạn và phạm vi của đề tài ..........................................................................1
1.4. Kết quả dự kiến ..................................................................................................1
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT ................................................................................3
2.1. Tổng quan về kiểm thử phần mềm ....................................................................3
2.1.1. Định nghĩa và vai trò của kiểm thử phần mềm ...........................................3
2.1.2. Các kĩ thuật kiểm thử phần mềm ................................................................4
2.1.3. Các loại kiểm thử phần mềm ......................................................................9
2.1.4. Các mô hình phát triển phần mềm và ưu nhược điểm ..............................11
2.1.5. Quy trình kiểm thử phần mềm ..................................................................18
2.2. Tổng quan về API ............................................................................................20
2.2.1. Khái niệm ..................................................................................................20
2.2.2. Lý do cần phải test API .............................................................................20
2.2.3. Những điều cần lưu ý khi thực hiện API Testing .....................................20
2.2.4. Các testcase cho kiểm thử API..................................................................21
2.2.5. Sự khác nhau giữa API testing và Unit testing .........................................22
CHƯƠNG 3. CÔNG CỤ KIỂM THỬ POSTMAN ......................................................23
3.1. Giới thiệu POSTMAN .....................................................................................23
3.1.1. Khái niệm ..................................................................................................23
3.1.2. Ưu nhược điểm của POSTMAN ...............................................................23
3.1.3. Những tính năng đặc biệt ..........................................................................23
3.2. Các chức năng chính của POSTMAN .............................................................24
3.3. Dowload và cài đặt công cụ POSTMAN .........................................................25
3.4. Các thành phần chính của POSTMAN ............................................................25
Ngày nay, với sự phát triển mạnh mẽ của khoa học công nghệ, đặc biệt là sự phát
triển nhanh chóng của lĩnh vực công nghệ thông tin, công nghệ thông tin ngày càng đi vào
đời sống và được con người khai thác một cách rất hiệu quả biến nó thành công cụ lao
động hữu ích và đóng vai trò rất quan trọng trong đời sống xã hội. Kiểm thử phần mềm là
một phần quan trọng của lĩnh vực công nghệ thông tin, nó giúp tìm ra các lỗi và thiếu sót
của phần mềm mà người lập trình không thể kiểm soát hết từ đó giúp cho chất lượng phần
mềm được tốt hơn rất nhiều, thực hiện các công việc đúng như kì vọng ban đầu và hơn thế
nữa. Em thực hiện đề tài “ Nghiên cứu kiểm thử phần mềm và triển khai kiểm thử API
bằng công cụ Postman” nhằm nâng cao thêm kiến thức và tầm hiểu biết của mình về lĩnh
vực này. Lĩnh vực công nghệ thông tin nói chung và bộ môn kiểm thử phần mềm nói riêng.
Em xin gửi lời cảm ơn sâu sắc đến giảng viên, Thạc sĩ Vũ Thị Thu Hà, người đã
trực tiếp hướng dẫn và giúp đỡ em rất nhiều trong thời gian em thực hiện đồ án, giúp em
hoàn thiện đồ án một cách tốt nhất.
Em xin cảm ơn các thầy cô giáo trong khoa Công nghệ thông tin nói riêng và các
thầy cô giáo của Trường Đại học Công nghệ Giao Thông Vận Tải nói chung đã chỉ dạy,
hướng dẫn và giúp đỡ em trong suốt bốn năm học tập tại trường. Vì thời gian, điều kiện
còn có hạn, em đã cố gắng rất nhiều để hoàn thành đồ án tốt nghiệp, nhưng chắc chắn vẫn
còn nhiều hạn chế và không thể tránh khỏi những thiếu sót, mong thầy cô và các bạn có
những ý kiến đóng góp để em có thể hoàn thiện và phát triển đề tài hơn.
Cuối cùng, em xin kính chúc các thầy cô giảng viên trong Trường Đại học Công
nghệ Giao Thông Vận Tải nói chung, các thầy cô khoa Công nghệ thông tin nói riêng có
nhiều sức khỏe và nhiều thành công trong sự nghiệp cao quý.
- Kiểm chứng những kiến thức đã được học trên giảng đường Đại học, đồng thời
trang bị những kiến thức mới, là hành trang chuẩn bị bước vào cuộc sống.
- Giới thiệu được các đặc điểm, thành phần chức năng của công cụ kiểm thử tự
động POSTMAN;
- Áp dụng các kiến thức đã tìm hiểu vào thực hiện kiểm thử tự động các chức năng
chính của một API bán sách online.
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
2.1. Tổng quan về kiểm thử phần mềm
2.1.1. Định nghĩa và vai trò của kiểm thử phần mềm
2.1.1.1. Định nghĩa
Kiểm thử phần mềm là một quá trình kiểm tra để phát hiện ra lỗi của những phần mềm,
ứng dụng nhằm cung cấp cho khách hàng, lập trình viên… thông tin về chất lượng của
phần mềm được kiểm thử. Mục đích cuối cùng của công việc này là để đảm bảo sản phẩm
(phần mềm, ứng dụng) được tạo ra theo đúng mong muốn khách hàng và hoạt động hiệu
quả. Với các công ty phát triển phần mềm thì Tester (chuyên viên kiểm thử phần mềm) có
vai trò cốt yếu để đảm bảo uy tín của công ty, tránh những trường hợp sản phẩm lỗi bị
khách hàng trả về nơi sản xuất.
Xác định những lỗi và khiếm khuyết có thể xảy ra trong quá trình phát triển phần
mềm. Mức độ thành công của một phần mềm được đánh giá bởi chất lượng và độ
tin tưởng của khách hàng. Để cung cấp một ứng dụng có chất lượng cao thì kiểm thử
phần mềm là một trong những yếu tố tiên quyết. Điều này nâng cao trải nghiệm của
người dùng. Hơn nữa, một sản phẩm được kiểm thử tốt sẽ phát sinh chi phí bảo trì
ít hơn do đó kết quả được cung cấp chính xác, phù hợp và đáng tin cậy hơn.
Để thiết kế bất kỳ sản phẩm hoặc phần mềm nào cũng sẽ tốn rất nhiều chi phí
trong quá trình phát triển, vì vậy điều quan trọng đối với một ứng dụng hoặc sản
phẩm khi muốn đem lại kết quả khả quan là tránh mọi chi phí phát sinh ngoài dự
toán. Để củng cố vị trí của bạn trên thị trường, hiệu suất sản phẩm phải thực sự tốt
và hiệu quả. Kết quả này chỉ có thể đạt được khi thực hiện các biện pháp kiểm thử
hữu hiệu và hợp lý. Kiểm thử có thể phân ra thành hai phương pháp chính gồm: kiểm
thử phần mềm và kiểm thử Ad-hoc (kiểm thử dựa trên kinh nghiệm).
Kiểm thử phần mềm thường được sử dụng để kiểm tra phần mềm trong quá trình
phát triển ứng dụng của lập trình viên. Quá trình này bao gồm đánh giá các loại
thông tin liên quan đến sản phẩm phần mềm. Hiệu quả của các hoạt động hàng ngày
của một doanh nghiệp được cải thiện sau khi quy trình kiểm thử phần mềm được
thực hiện. Các công ty ngày nay đang hoạt động trong môi trường có tính cạnh tranh
cao. Mọi ứng dụng đều có mục tiêu đạt hiệu năng cao nhất so với đối thủ. Do đó
chất lượng của sản phẩm trở nên rất quan trọng. Thông qua kiểm thử phần mềm, các
lỗi cụ thể trong sản phẩm có thể được xác định chính xác để có thể thực hiện các
giải pháp phù hợp để cải thiện chất lượng. Quá trình này cũng giúp phát hiện ra bất
kỳ lỗi có thể phát sinh để cải thiện năng lực và độ chính xác tổng thể của hệ thống.
Kiểm thử hộp đen: là một phương pháp kiểm thử phần mềm được thực hiện
mà không biết được cấu tạo bên trong của phần mềm, là cách mà các tester kiểm
tra xem hệ thống như một chiếc hộp đen, không có cách nào nhìn thấy bên trong
của cái hộp.
+ Nó còn được gọi là kiểm thử hướng dữ liệu hay là kiểm thử hướng in/out;
+ Người kiểm thử nên xây dựng các nhóm giá trị đầu vào mà sẽ thực thi đầy
đủ tất cả các yêu cầu chức năng của chương trình;
+ Cách tiếp cận của các tester đối với hệ thống là không dùng bất kỳ một
kiến thức về cấu trúc lập trình bên trong hệ thống, xem hệ thống là một
cấu trúc hoàn chỉnh, không thể can thiệp vào bên trong.
+ Hệ thống thật sự với toàn bộ yêu cầu của nó được kiểm thử chính xác;
+ Thiết kế kịch bản kiểm thử khá nhanh, ngay khi mà các yêu cầu chức
năng được xác định.
- Nhược điểm của kiểm thử hộp đen:
+ Dữ liệu đầu vào yêu cầu một khối lượng mẫu khá lớn;
+ Nhiều dự án không có thông số rõ ràng thì việc thiết kế test case rất khó
và do đó khó viết kịch bản kiểm thử do cần xác định tất cả các yếu tố đầu
vào, và thiếu cả thời gian cho việc tập hợp này;
+ Khả năng để bản thân kỹ sư lạc lối trong khi kiểm thử là khá cao;
+ Chỉ có một số nhỏ các đầu vào có thể được kiểm tra và nhiều đường dẫn
chương trình sẽ được để lại chưa được kiểm tra;
+ Kiểm thử black box được xem như "là bước đi trong mê cung tối đen mà
không mang đèn pin” bởi vì tester không biết phần mềm đang test đã được
xây dựng như thế nào. Có nhiều trường hợp khi một tester viết rất nhiều
trường hợp test để kiểm tra một số thứ có thể chỉ được test bằng một trường
hợp test và/hoặc một vài phần cuối cùng không được test hết.
2.1.2.2. Kĩ thuật kiểm thử hộp trắng– White Box Testing (WBT)
- Khái niệm:
Kiểm thử Hộp Trắng (còn gọi là Clear Box Testing, Open Box Testing, Glass
Box Testing, Transparent Box Testing, Code-Based Testing hoặc Structural
Testing) là một phương pháp kiểm thử phần mềm trong đó tester biết về cấu trúc
nội bộ / thiết kế. Người kiểm tra chọn đầu vào để thực hiện các đường dẫn thông
qua mã và xác định đầu ra thích hợp. Kiến thức lập trình và kiến thức thực hiện
là rất cần thiết trong kiểm thử hộp trắng.
- Mức độ áp dụng:
+ Unit Testing(Kiểm thử đơn vị): Để kiểm tra đường dẫn trong một đơn
vị;
+ Integration Testing(Test tích hợp): Để kiểm tra đường dẫn giữa các đơn
vị;
+ System Testing(Test hệ thống): Để kiểm tra các đường dẫn giữa các hệ
thống con.
- Ưu điểm của kiểm thử hộp trắng:
+ Test có thể bắt đầu ở giai đoạn sớm hơn, không cần phải chờ đợi cho GUI
để có thể test;
+ Test kỹ càng hơn, có thể bao phủ hầu hết các đường dẫn;
+ Thích hợp trong việc tìm kiếm lỗi và các vấn đề trong mã lệnh;
+ Cho phép tìm kiếm các lỗi ẩn bên trong;
+ Các lập trình viên có thể tự kiểm tra;
+ Giúp tối ưu việc mã hoá;
+ Do yêu cầu kiến thức cấu trúc bên trong của phần mềm, nên việc kiểm
soát lỗi tối đa nhất.
- Nhược điểm của kiểm thử hộp trắng:
+ Vì các bài kiểm tra rất phức tạp, đòi hỏi phải có các nguồn lực có tay nghề
cao, với kiến thức sâu rộng về lập trình và thực hiện;
+ Maintenance test script có thể là một gánh nặng nếu thể hiện thay đổi quá
thường xuyên;
+ Vì phương pháp thử nghiệm này liên quan chặt chẽ với ứng dụng đang
được test, nên các công cụ để phục vụ cho mọi loại triển khai / nền tảng
có thể không sẵn có.
2.1.2.3. Kĩ thuật kiểm thử hộp xám– Gray Box Testing (GBT)
- Khái niệm:
Kiểm thử hộp xám là một phương pháp kiểm thử phần mềm được kết hợp giữa
phương pháp kiểm thử hộp đen và phương pháp kiểm thử hộp trắng.
Trong kiểm thử hộp xám, cấu trúc bên trong sản phẩm chỉ được biết một phần,
tester có thể truy cập vào cấu trúc dữ liệu bên trong và thuật toán của chương trình với
mục đích là để thiết kế test case, nhưng khi test thì test như là người dùng cuối hoặc là
ở mức hộp đen.
+ Sẽ dựa trên các đặc tả chức năng, mô tả của người dùng và sơ đồ kiến
trúc hệ thống, từ đó xác nhận các yêu cầu ngay từ ban đầu;
+ Việc kiểm tra sẽ tường minh vì sẽ có nhiều sự quan tâm giữa người
kiểm thử phần mềm và người thiết kế hoặc kỹ sư.
- Nhược điểm kiểm thử hộp xám:
+ Kiểm tra hộp xám cũng có thể mất nhiều thời gian để kiểm tra từng
đường dẫn và đôi khi điều này là không thực tế;
+ Rất khó để liên kết lỗi khi thực hiện kiểm tra hộp xám cho một ứng
dụng có hệ thống phân tán;
+ Thông thường sẽ dẫn đến phạm vi kiểm tra thấp hơn so với thực hiện
kiểm tra hộp trắng và đen riêng biệt;
+ Có thể không phù hợp để thử nghiệm một số loại chức năng.
2.1.3. Các loại kiểm thử phần mềm
2.1.3.1. Kiểm thử chức năng
Kiểm thử chức năng chú trọng đến chức năng của chương trình, bảo đảm các
chức năng của hệ thống thỏa mãn đúng yêu cầu. Các loại kiểm thử chức năng
bao gồm:
- Kiểm thử đơn vị (Unit Testing): Kiểm thử đơn vị được định nghĩa là một
loại kiểm thử phần mềm trong đó các đơn vị hay thành phần riêng lẻ của
phần mềm được kiểm thử. Kiểm thử đơn vị được thực hiện trong quá trình
phát triển (coding) ứng dụng. Mục tiêu của Kiểm thử đơn vị là cô lập một
phần code và xác minh tính chính xác của đơn vị đó;
- Kiểm thử giao diện (Interface Testing): là một kỹ thuật kiểm thử trong đó
giao diện người dùng của ứng dụng được kiểm tra xem ứng dụng có hoạt
động như mong đợi đối với hành vi giao diện người dùng hay không;
- Kiểm thử tích hợp (Integration Testing): là một loại kiểm thử trong đó
các module của phần mềm được tích hợp logic và được kiểm thử theo
nhóm;
- Kiểm thử hệ thống (System Testing): một phương pháp theo dõi và đánh
giá hành vi của sản phẩm hoặc hệ thống phần mềm hoàn chỉnh và đã được
tích hợp đầy đủ, dựa vào đặc tả và các yêu cầu chức năng đã được xác
định trước;
- Kiểm thử hồi quy (Regression Testing): là một hình thức kiểm thử phần
mềm để xem các chức năng cũ và mới của nó có còn hoạt động đúng sau
khi thay đổi hệ thống hay không;
- Kiểm thử chấp nhận (Acceptance Testing): là một loại kiểm thử thực hiện
bởi khách hàng để xác nhận hệ thống đã làm việc đúng như mong đợi và
thỏa mãn yêu cầu của người dùng;
- Một số công cụ kiểm thử chức năng: Selenium , soapUI , Watir, v.v..
2.1.3.2. Kiểm thử phi chức năng
Kiểm thử phi chức năng chú trọng nhiều hơn vào những khía cạnh khác của
phần mềm, như là hiệu suất, bảo mật,…của phần mềm.
Ví dụ: Bao nhiêu người có thể đăng nhập vào phần mềm cùng 1 lúc.
Các loại kiểm thử phi chức năng bao gồm:
- Documentation testing (Kiểm tra tài liệu): để kiểm tra tính chính xác của
tài liệu hướng dẫn sử dụng và 1 số tài liệu khác;
- Performance Testing (Kiểm thử hiệu năng): là một loại phần mềm kiểm
thử sử dụng để đảm bảo các ứng dụng phần mềm hoạt động hiệu quả
trong khoảng công việc dự kiến của ứng dụng;
- Installation testing (Kiểm thử cài đặt): thường sẽ xoay quanh việc cài đặt,
tháo gỡ các ứng dụng trên các môi trường khác nhau tránh trường hợp
sản phẩm đã cài đặt nhưng không thể hoạt động hoặc không thể cài đặt;
- Usability Testing (Kiểm thử khả năng sử dụng): là kỹ thuật được triển
khai trong thiết kế tương tác lấy người dùng làm trung tâm để đánh giá
sản phẩm hoặc dịch vụ bằng cách thử nghiệm nó với một số người dùng;
- Maintainability Testing (Kiểm thử khả năng bảo trì): Kiểm thử những
thay đổi tới hoạt động hệ thống hoặc tác động của thay đổi môi trường
tới hoạt động hệ thống;
- Reliability Testing (Kiểm thử độ tin cậy): là việc thực hiện một ứng dụng
để các lỗi được phát hiện và loại bỏ trước khi hệ thống được triển khai.
Mục đích của kiểm tra độ tin cậy là xác định độ tin cậy của sản phẩm và
để xác định xem phần mềm có đáp ứng các yêu cầu về độ tin cậy của
khách hàng hay không;
- Portability Testing (Kiểm thử khả năng thích ứng): là việc thực hiện test
để xác định một hệ thống có thể đáp ứng và ổn định với yêu cầu độ tải
cao. Nó được sử dụng chủ yếu để xác định bất kỳ vướng mắc hoặc vấn
đề hiệu suất hơn là việc tìm kiếm lỗi trong một phần mềm;
- Security testing được định nghĩa là 1 dạng kiểm thử phần mềm (Software
Testing) nhằm đảm bảo hệ thống phần mềm và các ứng dụng được bảo
vệ an toàn khỏi các lỗ hổng, mối đe dọa hay bất cứ nguy hiểm nào có thể
dẫn tới tổn thất lớn;
- Một số công cụ kiểm thử chức năng: Jmeter , LoadStorm, v.v…
2.1.4. Các mô hình phát triển phần mềm và ưu nhược điểm
2.1.4.1. Mô hình thác nước – Waterfall model
Đây được coi như là mô hình phát triển phần mềm đầu tiên được sử dụng. Mô hình
này áp dụng tuần tự các giai đoạn của phát triển phần mềm. Đầu ra của giai đoạn trước
là đầu vào của giai đoạn sau. Giai đoạn sau chỉ được thực hiện khi giai đoạn trước đã
kết thúc. Đặc biệt không được quay lại giai đoạn trước để xử lý các yêu cầu khi muốn
thay đổi.
+ Requirement gathering: Thu thập và phân tích yêu cầu được ghi lại vào tài liệu
đặc tả yêu cầu trong giai đoạn này;
+ System Analysis: Phân tích thiết kế hệ thống phần mềm, xác định kiến trúc hệ
thống tổng thể của phần mềm;
+ Coding: Hệ thống được phát triển theo từng unit và được tích hợp trong giai
đoạn tiếp theo. Mỗi Unit được phát triển và kiểm thử bởi dev được gọi là Unit
Test;
+ Testing: Cài đặt và kiểm thử phần mềm. Công việc chính của giai đoạn này là
kiểm tra và sửa tất cả những lỗi tìm được sao cho phần mềm hoạt động chính
xác và đúng theo tài liệu đặc tả yêu cầu;
+ Implementation: Triển khai hệ thống trong môi trường khách hàng và đưa ra
thị trường;
+ Operations and Maintenance: Bảo trì hệ thống khi có bất kỳ thay đổi nào từ
phía khách hàng, người sử dụng;
- Ứng dụng: Mô hình thường được áp dụng cho các dự án phần mềm như sau:
+ Các dự án có ít thay đổi về yêu cầu và không có những yêu cầu không rõ ràng.
- Ưu điểm:
+ Sản phẩm phát triển theo các giai đoạn được xác định rõ ràng;
+ Xác nhận ở từng giai đoạn, đảm bảo phát hiện sớm các lỗi.
- Nhược điểm:
+ Mô hình không thích hợp với những dự án dài, đang diễn ra, hay những dự án
phức tạp, có nhiều thay đổi về yêu cầu trong vòng đời phát triển;
Với V model thì công việc test được tham gia ngay từ đầu, từ lúc lấy yêu cầu là có
thể “test” bằng cách review tài liệu yêu cầu, rồi cho tới review đặc tả chi tiết, các bản
thiết kế, review code rồi cuối cùng là test ở mức thấp nhất – từng module, chức năng,
màn hình, đến test tích hợp rồi kiểm thử hệ thống. So với mô hình khác thì ở mô hình
này, công việc test đi sát hơn và ngay từ đầu khi bắt đầu phát triển.
- Ứng dụng:
+ Xác định sản phẩm ổn định;
+ Công nghệ không thay đổi và được hiểu rõ bởi nhóm dự án;
+ Không có yêu cầu không rõ ràng hoặc không xác định;
+ Dự án ngắn.
- Ưu điểm:
+ Đây là một mô hình có tính kỷ luật cao và các giai đoạn được hoàn thành cùng
một lúc;
+ Hoạt động tốt cho các dự án nhỏ, khi các yêu cầu được hiểu rất rõ;
+ Đơn giản và dễ hiểu và dễ sử dụng;
+ Dễ quản lý, mỗi giai đoạn có phân phối cụ thể và quy trình đánh giá.
- Nhược điểm:
+ Khó quản lý kiểm soát rủi ro, rủi ro cao;
+ Không phải là một mô hình tốt cho các dự án phức tạp và hướng đối tượng;
+ Mô hình kém cho các dự án dài và đang diễn ra;
+ Không thích hợp cho các dự án có nguy cơ thay đổi yêu cầu trung bình đến cao;
+ Khi ứng dụng đang ở giai đoạn thử nghiệm, rất khó để quay lại và thay đổi chức
năng.
2.1.4.3. Mô hình xoắn ốc – Spiral model
+ Mô hình xoắn ốc được ưa chuộng cho các dự án lớn, đắt tiền và phức tạp;
+ Mô hình này sử dụng những giai đoạn tương tự như mô hình thác nước, về thứ
tự, plan, đánh giá rủi ro, v.v..
+ Phân tích mô hình.
- Các pha trong quy trình phát triển xoắn ốc bao gồm:
+ Objective identification- Thiết lập mục tiêu: xác định mục tiêu, đối tượng cho
từng pha của dự án;
+ Alternate evaluation- Đánh giá và giảm thiểu rủi ro: đánh giá rủi ro và thực hiện
các hành động để giảm thiểu rủi ro;
+ Product development- Phát triển sản phẩm: Lựa chọn mô hình phù hợp để phát
triển hệ thống;
+ Next phase planning- Lập kế hoạch: đánh giá dự án và lập kế hoạch cho pha
tiếp theo;
- Ứng dụng:
+ Mô hình này thường được sử dụng cho các ứng dụng lớn và các hệ thống được
xây dựng theo các giai đoạn nhỏ hoặc theo các phân đoạn.
- Ưu điểm:
+ Tốt cho các hệ phần mềm quy mô lớn;
+ Dễ kiểm soát các mạo hiểm ở từng mức tiến hóa;
+ Đánh giá thực tế hơn như là một quy trình làm việc, bởi vì những vấn đề quan
trọng đã được phát hiện sớm hơn.
- Nhược điểm:
+ Manager cần có kỹ năng tốt để quản lý dự án, đánh giá rủi ro kịp thời;
+ Chi phí cao và mất nhiều thời gian để hoàn thành dự án;
+ Phức tạp và không thích hợp với các dự án nhỏ và ít rủi ro;
+ Yêu cầu thay đổi thường xuyên dẫn đến lặp vô hạn;
+ Chưa được dùng rộng rãi.
2.1.4.4. Mô hình Agile – Agile model
- Mô tả:
+ Dựa trên mô hình iterative and incremental;
+ Các yêu cầu và giải pháp phát triển dựa trên sự kết hợp của các function;
+ Trong Agile, các tác vụ được chia thành các khung thời gian nhỏ để cung cấp
các tính năng cụ thể cho bản phát hành cuối.
- Ứng dụng:
+ Có thể được sử dụng với bất kỳ loại hình dự án nào, nhưng cần sự tham gia và
tính tương tác của khách hàng;
+ Sử dụng khi khách hàng yêu cầu chức năng sẵn sàng trong khoảng thời gian
ngắn.
- Ưu điểm:
+ Tăng cường tình thần làm việc nhóm và trao đổi công việc hiệu quả;
+ Các chức năng được xây dựng nhanh chóng và rõ ràng, dế quản lý;
+ Dễ dàng bổ sung, thay đổi yêu cầu;
+ Quy tắc tối thiểu, tài liệu dễ hiểu, dễ sử dụng.
- Nhược điểm:
+ Mô hình Agile được sử dụng rộng rãi trên thế giới nhưng cũng không đồng
nghĩa với phù hợp với tất cả các dự án phần mềm;
+ Không thích hợp để xử lý các phụ thuộc phức tạp;
+ Có nhiều rủi ro về tính bền vững, khả năng bảo trì và khả năng mở rộng;
+ Cần một team có kinh nghiệm;
+ Phụ thuộc rất nhiều vào sự tương tác rõ ràng của khách hàng;
+ Chuyển giao công nghệ cho các thành viên mới trong nhóm có thể khá khó khăn
do thiếu tài liệu.
2.1.4.5. Mô hình Scrum
Scrum là một quy trình phát triển phần mềm theo mô hình Agile nhờ đó mang lại
tính thích nghi cao.
- Mô tả:
+ Chia các yêu cầu ra làm theo từng giai đoạn. Mỗi 1 giai đoạn(sprint) chỉ làm 1 số
lượng yêu cầu nhất định;
+ Mỗi một sprint thường kéo dài từ 1 tuần đến 4 tuần ( ko dài hơn 1 tháng);
+ Đầu sprint sẽ lên kế hoạch làm những yêu cầu nào. Sau đó, sẽ thực hiện code và
test;
+ Cuối sprint là 1 sản phẩm hoàn thiện cả code lẫn test có thể demo và chạy được;
+ Hoàn thành sprint 1, tiếp tục làm sprint 2, sprint… cho đến khi hoàn thành hết
các yêu cầu;
+ Trong mỗi 1 sprint thì sẽ có họp hàng ngày – daily meeting từ 15 – 20 phút. Mỗi
thành viên sẽ báo cáo: Hôm qua tôi đã làm gì? Hôm nay tôi sẽ làm gì? Có gặp
khó khăn gì không?
- Ưu điểm:
+ Một người có thể thực hiện nhiều việc ví dụ như dev có thể test;
+ Phát hiện lỗi sớm;
+ Có khả năng áp dụng được cho những dự án mà yêu cầu khách hàng không rõ
ràng ngay từ đầu.
- Nhược điểm:
+ Trình độ của nhóm cần có một kỹ năng nhất định;
+ Phải có sự hiểu biết về mô hình aglie;
+ Khó khăn trong việc xác định ngân sách và thời gian;
+ Luôn nghe ý kiến phản hồi từ khách hàng và thay đổi theo nên thời gian sẽ kéo
dài.
2.1.5. Quy trình kiểm thử phần mềm
Kiểm thử phần mềm bao gồm nhiều giai đoạn với sự phối hợp của nhiều bên liên
quan chứ không chỉ là một hoạt động đơn lẻ. Chính vì thế, cần có quy trình kiểm thử
phần mềm để làm rõ các công đoạn, các bước kiểm thử phần mềm, người chịu trách
nhiệm và khi nào việc kiểm thử phần mềm được tiến hành trong toàn bộ quy trình phát
triển phần mềm. Nói cách khác, quy trình kiểm thử phần mềm chính là chuỗi các hoạt
động được tiến hành để thực hiện việc kiểm thử. Các giai đoạn trong quy trình kiểm thử
phần mềm được biểu diễn tổng quát bằng sơ đồ sau:
Giai đoạn này, các kiểm thử viên thực hiện hoàn thành báo cáo, các tài liệu kiểm
thử (báo cáo hàng ngày, hàng tuần, ca kiểm thử – số lượng ca kiểm thử thành công,
thất bại, lỗi, đánh giá mức độ nghiêm trọng của các lỗi). Các kiểm thử viên cũng cần
thảo luận với nhau và rút kinh nghiệm, những điểm tốt nên phát huy và điểm xấu cần
loại bỏ để nâng cao chất lượng cho những dự án sau đó.
2.2. Tổng quan về API
2.2.1. Khái niệm
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.
2.2.4. Các testcase 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 vi 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.
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 Tester không thể truy cập vào source
code code
Chỉ các chức năng đơn giản được kiểm Tất cả các chức năng được kiểm thử
thử
Thường được chạy trước khi build Thường được chạy sau khi build
+ Postman sử dụng Collection nên người dùng có thể tạo bộ sưu tập cho những
lệnh gọi API của họ. Mỗi một bộ sưu tập đều có thể tạo ra thư mục con với
nhiều request. Đây là điểm mạnh giúp quá trình tổ chức các bộ thử nghiệm
được dễ dàng hơn;
+ Postman có khả năng test trạng thái phản hồi của HTTP;
+ Hỗ trợ gỡ lỗi: Bộ phận bảng điều khiển của Postman có thể giúp người dùng
kiểm tra dữ liệu đã xuất. Từ đó, quá trình gỡ lỗi sẽ trở nên dễ dàng và linh hoạt
hơn;
+ Hỗ trợ tạo thử nghiệm: Những điểm kiểm tra thử nghiệm và xác định trạng thái
phản hồi HTTP thành công. Và vai trò xác nhận có thể được thêm vào mỗi lệnh
gọi API nhằm đảm bảo phạm vi kiểm tra;
+ Tích hợp liên tục: Postman có khả năng hỗ trợ tích hợp liên tục cho các hoạt
động phát triển và có thể được duy trì.
- Nhược điểm:
+ Những bản tính phí mới hỗ trợ các tính năng advance: Team work, support trực
tiếp, v.v.
3.1.3. Những tính năng đặc biệt
- Gửi các HTTP Request kèm theo các method như Post, Patch, Delete, Get;
- Truy xuất và hiển thị kết quả trả về dưới các dạng text, JSON, hình ảnh, XML;
- Hỗ trợ authorization.
- Body: Người dùng tùy chỉnh các chi tiết trong request tại đây;
- Pre-request Script: Chức năng này bao gồm nhiều tập lệnh được tiến hành trước
khi request để chắc chắn rằng các kiểm tra được hoạt động trong đúng môi trường;
- Tests: Đây là các script được thực thi khi request. Điều quan trọng là phải có các
thử nghiệm như thiết lập các điểm checkpoint để kiểm tra trạng thái là ok, dữ liêu
nhận được có như mong đợi không và các thử nghiệm khác.
3.3. Dowload và cài đặt công cụ POSTMAN
- Truy cập trang https://www.getpostman.com/downloads/ và chọn nền tảng muốn tải về
như cho Mac, Windows hoặc Linux. Click Download.
Collections: Lưu trữ thông tin của các API theo folder hoặc theo thời gian.
• Environments: Chứa các thông tin môi trường. 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;
• Response: Chứa các thông tin trả về sau khi Send Request.
Hình 3.7. Vị trí của Environment trong khung làm việc của Postman
Test response là tính năng đặc biệt quan trọng với những người test API. Không thể
suốt ngày run từng cái request rồi check từng kết quả trả về một cách thủ công được. Phần
này cung cấp 2 tính năng cực hay giúp tester đẩy nhanh được tốc độ test API:
- Check tự động kết quả trả về của từng field với 1, 2 dòng code, rất dễ, không cần
biết code cũng làm được;
- Lưu giá trị của Response thành biến trong Environment để tiếp tục truyền vào param
của API tiếp theo.
4.1. Giới thiệu về website bán sách Nhã Nam và các chức năng chính cần kiểm thử
của API bán sách
4.1.1. Giới thiệu website bán sách Nhã Nam
Mục đích xây dựng phần mềm bán sách online là để giúp người mua có trải nghiệm
mua hàng tốt hơn khi không phải đến cửa hàng mà vẫn có thể mua sách. Ngoài ra còn
có thể xem được các đánh giá của người mua hàng khác đối với sách để từ đó người
mua hàng yên tâm hơn về giá cả cũng như chất lượng sách.
Hình 4.1. Trang chủ website bán sách của Nhã Nam
Dưới đây là các chức năng chính cần được kiểm thử để xác định được rằng phần
mềm có hoạt động tốt với người dùng. API bán sách này được mô phỏng lại từ trang
Web bán sách của nhà sách Nhã Nam với các chức năng chính bao gồm: Xem danh sách
Sách, Đặt hàng, Sửa thông tin đơn hàng, Xóa đơn hàng, Tìm kiếm đơn hàng, Tìm kiếm
sách theo bộ lọc.
- Sau khi truy cập được vào hệ thống sẽ đi đến phần Danh mục Sách để xem
thông tin Sách;
Bảng 4.1 Mô tả yêu cầu chức năng xem danh sách tất cả Sách
Author Boolean - Hiển thị vào tên tác giả của sách
Bảng 4.2 Mô tả yêu cầu chức năng xem danh sách tất cả đơn hàng
Bảng 4.3 Mô tả yêu cầu chức năng thêm mới đơn hàng
Bảng 4.4. Mô tả yêu cầu chức năng thêm mới đơn hàng
CustomerName String Bắt buộc Cho phép người dùng cập nhật
tên khách hàng.
Type String Bắt buộc Cho phép người dùng cập nhật
tên sách
- Hệ thống thông báo không thành công tức là thông tin nhập vào không đúng
định dạng hoặc thông tin tìm kiếm không tồn tại trong database.
4.2. Thiết kế testcase cho các chức năng chính
Các mẫu kiểm thử chức năng trên được ghi lại thành các HTTP Request bao gồm các
chức năng: đặt hàng, sửa thông tin đơn hàng, xóa đơn hàng, tìm kiếm đơn hàng, tìm kiếm
sách theo bộ lọc. Các testcase cần kiểm thử như sau:
4.2.1. Chức năng xem danh sách tất cả sách và đơn hàng
Bảng 4.5. Testcase cho chức năng xem danh sách tất cả sách và đơn hàng
api.glitch.me/booo
ks
3 All Order 1.Đăng nhập 1. Nhập accesToken 1.Kết quả 1.Kết quả
tại Header/Auth:
books_20 postman trả về danh trả về:
d84a2231c24b01bd
0 1c38029b989f35e7f sách các Message
2.Chọn phương thức 70499986162ea82c9
POST 2eb2adfb07182f đơn hàng " 200
2.Status OK"
3.Điền request URL:
https://simple- “200 OK”
books-
api.glitch.me/orders
4 All Order 1.Đăng nhập 1. Nhập accesToken 1.Kết quả 1.Kết quả
tại Header/Auth:
book_404 postman trả về trả về
d84a2231c24b01bd
(Nhập sai 1c38029b989f35e7f status: Message
2.Chọn phương thức 70499986162ea82c9
URL) "404 Not " 404 Not
POST 2eb2adfb07182f
Found" Found "
3. Điền request
URL: https://simple-
books-
api.glitch.me/ordeer
s
boooks- "customerName":
"{{$randomFullName
api.glitch.me/orders }}"
}
Bảng 4.7 Testcase cho chức năng chỉnh sửa thông tin đơn hàng
Bảng 4.9 Testcase cho chức năng tìm kiếm thông tin đơn hàng
pm.response.to.h
ave.status(200);
});
pm.test("Status code
is 200", function (
) {
pm.response.to.have.
status(200);
});
Bảng 4.10 Testcase cho chức năng tìm kiếm thông tin sách
api.glitch.me/books/
/:id
4.3. Tạo collection tự động và biến môi trường cho giá trị kiểm thử dựa vào các
testcase đã thiết kế
- Collection name: Tạo một collection với name là "Đồ án tốt nghiệp"
- Add folder: Click chuột phải trên "Đồ án tốt nghiệp" để thêm các Folder như sau:
Hình 4.3. Chi tiết kịch bản kiểm thử chức năng với công cụ kiểm thử Postman
- Tạo biến môi trường
• Từ Collection Đồ án tốt nghiệp chọn Variables và tạo 2 biến như sau:
• Đặt tên variable là urlBooks và accesToken. Trong đó urlBooks là biến
HTTP cho mỗi HTTP, accesToken là Token dùng để dịnh danh người dùng
sử dụng khi gọi các phương thức.
+ Lấy HTTP: https://simple-books-api.glitch.me rồi điền vào cột INITIAL
VALUE;
+ Lấy accesToken đã được đăng ký:
eea886e0edb5ecc438fffb493b5056dfeb66b2b2b2f6a518266701ba8a34d
040 rồi điền vào cột INITIAL VALUE.
- Viết testscript kiểm tra các giá trị cho các request
+ Testcript kiểm tra status code
Hình 4.7. Testcript kiểm tra giá trị trả về trong response
- Run và Results page sẽ hiển thị sau khi click run Test API. Lệ thuộc vào thời gian
chờ, sẽ thấy các testcase chạy. Mỗi testcase hoàn thành , sẽ thấy test status là Passed
hay Failed.
4.5. Báo cáo kết quả kiểm thử tự động
Hình 4.9. Báo cáo kết quả kiển thử tự động run collection
- Kết quả trả về 39 testcase passed và 5 testcase failed.
4.6. Đánh giá kết quả kiểm thử
Từ kết quả kiểm thử API nhận được sau nhiều lần chạy với nhiều testcase, nhận
được kết quả chi tiết cho API của trang web bán sách như sau: do hệ thống là máy chủ
miễn phí, nên API của hệ thống cũng bị ảnh hưởng khá nhiều.
Các trạng thái trả về của hệ thống khá đầy đủ theo các chức năng chính, tuy nhiên
thời gian trả về của các testcase sẽ phụ thuộc vào người dùng đặt thời gian chờ chạy
cho các testcase.
KẾT LUẬN
Kết luận:
Qua quá trình nghiên cứu, sử dụng công cụ Postman để kiểm thử API web bán sách, em
đã đạt được một số kết quả như sau:
- Nắm rõ khái niệm, các kỹ thuật, phương pháp, quy trình và các loại kiểm thử phần
mềm và API;
- Sử dụng thành thạo các chức năng cơ bản của công cụ Postman và các tiện ích hỗ
trợ kiểm thử API;
- Xây dựng báo cáo kiểm thử API, hiểu rõ các kết quả, phân tích dữ liệu nhận được
sau khi kiểm thử;
- Bên cạnh những kết quả đạt được, đề tài còn có những hạn chế như sau:
• Chưa sử dụng công cụ kiểm thử Postman một cách triệt để;
• Trong quá trình chạy phần mềm, chất lượng mạng còn kém và không ổn định
nên kết quả test chỉ mang tính tương đối.
Đề tài chủ yếu tập trung nghiên cứu ứng dụng kiểm thử API sử dụng công cụ Postman
để mô phỏng và tạo môi trường kiểm thử.
Hướng nghiên cứu, phát triển của đề tài là sử dụng nhiều công cụ khác nhau cùng thực
hiện trên các môi trường phần cứng và phần mềm khác nhau để có thể cho ra một kết quả
chính xác nhất đồng thời tìm ra ưu khuyết điểm của các công cụ khác so với Postman để
có một cái nhìn khách quan và rõ ràng hơn về các công cụ kiểm thử, để có nhận xét chính
xác, đúng đắn hơn về công cụ Postman.
[2] Th.s Thạc Bình Cường, Bài giảng điện tử môn học Kiểm thử và đảm bảo chất
lượng phần mềm, bộ môn CNPM, Viện CNTT&TT, Đại học Bách Khoa Hà Nội,
[3] https://blog.postman.com/author/joyce/