Mục đích cuối cùng của công việc này là đảm bảo sản phẩm hoạt động hiệu quả và đáp ứng đúng theo mong muốn, yêu cầu của khách hàng.Quá trình kiểm thử phần mềm không chỉ nhằm mục đích tìm
Trang 1HỌC VIỆN KỸ THUẬT MẬT MÃKHOA CÔNG NGHỆ THÔNG TIN
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
KIỂM THỬ PHẦN MỀM NHÚNG
KIỂM THỬ WEBSITE QUẢN LÝ NHÀ HÀNG GOIDI
Nhóm sinh viên thực hiện:
- Nguyễn Thị Nhung CT050336
- Nguyễn Huyền Ngọc CT050138
- Trần Trung Hiếu CT050319
Giảng viên hướng dẫn:
Th S Thái Thị Thanh Vân
Khoa Công nghệ thông tin – Học viện Kỹ thuật mật mã
Hà Nội, 2024
Trang 2NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Hà Nội, ngày … tháng … năm … Xác nhận của giảng viên hướng dẫn
(Ký và ghi rõ họ tên)
LỜI CẢM ƠN
Lời đầu tiên chúng em xin chân thành cảm ơn các thầy, cô trong khoa Công nghệ thông tin, Học viện Kỹ Thuật Mật Mã đã tạo điều kiện thuận lợi cho chúng em trong quá
Trang 3trình học tập tại trường cũng như trong thời gian thực hiện đề tài này Đặc biệt, chúng emmuốn gửi lời cảm ơn tới Th.S Thái Thị Thanh Vân – giảng viên trực tiếp hướng dẫn, chỉbảo giúp chúng em khắc phục những khó khăn, thiếu sót để có thể hoàn thành các phầntrong đề tài này từ lý thuyết cho tới thực hành sử dụng công cụ.
Mặc dù đã cố gắng với tất cả nỗ lực của bản thân để hoàn thiện đề tài, nhưng dothời gian có hạn, năng lực và kinh nghiệm còn hạn chế nên báo cáo không thể tránh khỏinhững thiếu sót Kính mong nhận được sự đóng góp ý kiến từ phía thầy cô, bạn bè đểchúng em có thể nâng cao kiến thức của bản thân, hoàn thiện đề tài được tốt hơn
Chúng em xin chân thành cảm ơn!
Trang 4MỤC LỤC NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN I LỜI CẢM ƠN II DANH MỤC HÌNH ẢNH VI DANH MỤC BẢNG BIỂU VI
LỜI NÓI ĐẦU 7
CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI VÀ CÔNG NGHỆ SỬ DỤNG 8
1.1 Các khái niệm cơ bản về kiểm thử phần mềm 8
1.1.1 Khái niệm kiểm thử phần mềm (Software Testing) 8
1.1.2 Lỗi phần mềm và nguyên nhân sinh ra lỗi 8
1.1.3 Vai trò của kiểm thử 9
1.1.4 Người thực hiện kiểm thử 10
1.1.5 Thời gian thực hiện kiểm thử 10
1.1.6 Vai trò trong kiểm thử phần mềm 11
1.2 Quy trình kiểm thử 12
1.2.1 Lập kế hoạch kiểm thử (Test plan) 12
1.2.2 Ca kiểm thử (Test Case) 15
1.2.3 Thực hiện kiểm thử 16
1.2.4 Viết báo cáo kiểm thử (Test report) 17
1.3 Các mức kiểm thử 17
1.3.1 Kiểm thử đơn vị (Unit Test) 17
1.3.2 Kiểm thử tích hợp (Intergration Test) 18
1.3.3 Kiểm thử hệ thống (System Test) 18
1.3.4 Kiểm thử chấp nhận (Acceptance Test) 20
1.4 Các phương pháp kiểm thử 20
1.4.1 Kiểm thử hộp đen (Black box testing) 20
1.4.2 Kiểm thử hộp trắng (White box testing) 22
1.5 Các kỹ thuật kiểm thử dùng cho kiểm thử hộp đen 23
1.5.1 Phân vùng tương đương 23
1.5.2 Phân tích giá trị biên (Boundary Value analysis) 24
1.5.3 Bảng quyết định (Decision Table) 25
Trang 51.5.4 Kỹ thuật đồ thị nguyên nhân – kết quả 26
1.6 Phân loại kiểm thử 27
1.6.1 Kiểm thử thủ công (Manual Test) 27
1.6.2 Kiểm thử tự động (Automation Test) 30
CHƯƠNG 2 KẾ HOẠCH KIỂM THỬ 33
2.1 Giới thiệu 33
2.1.1 Mục đích 33
2.1.2 Tổng quan 33
2.1.3 Phạm vi 34
2.2 Tài liệu tham khảo 34
2.3 Lịch trình công việc 35
2.4 Môi trường kiểm thử 36
2.5 Công cụ kiểm thử 36
2.5.1 Selenium là gì? 36
2.5.2 Selenium bao gồm những gì? 37
2.5.3 Một số tính năng nổi bật 37
2.6 Nhân sự 37
2.7 Phạm vi kiểm thử 38
2.7.1 Những chức năng kiểm thử 38
2.7.2 Những chức năng không cần kiểm thử 38
2.8 Chiến lược kiểm thử 38
2.9 Điều kiện chấp nhận 39
2.10 Theo dõi lỗi 40
2.10.1 Phân loại lỗi 40
2.10.2 Quy trình xử lý lỗi 40
2.11 Thiết kế test case 41
2.11.1 Chức năng đăng nhập 41
2.11.2 Chức năng tìm kiếm 42
2.11.3 Chức năng đặt hàng 43
CHƯƠNG 3 THỰC HIỆN KIỂM THỬ VÀ ĐÁNH GIÁ 46
3.1 Thực thi kiểm thử 46
3.2 Đánh giá kết quả kiểm thử 46
Trang 63.3 Kết luận 47
TÀI LIỆU THAM KHẢO 48
Trang 7DANH MỤC HÌNH Ả
Hình 1.1 Một số testing type thường gặp 13
Hình 1.2 Một mẫu Test case cơ bản 16
Hình 1.3 Kiểm thử hộp đen 21
Hình 1.4 Kiểm thử hộp trắng 22
Hình 1.5 Phân vùng tương đương 23
Hình 1.6 Phân tích giá trị biên 24
Hình 1.7 Các kí hiệu trong đồ thị nhân quả 27
Hình 1.8 Kiểm thử thủ công 27
Hình 1.9 Kiểm thử tự động 30
Hình 2.1 Công cụ Selenium 36
DANH MỤC BẢNG BIỂU Y Bảng 2.1 Kiểm thử chức năng 39
Bảng 2.2 Phân loại lỗi 40
Bảng 2.3 Quy trình xử lí lỗi 40
Bảng 2.4 Bảng Test Case chức năng đăng nhập 41
Bảng 2.5 Bảng Test Case chức năng tìm kiếm 42
Bảng 2.6 Bảng Test Case chức đặt hàng 45
Trang 8LỜI NÓI ĐẦU
Trong những năm gần đây, công nghệ thông tin ngày càng phát triển mạnh mẽ, được ứng dụng, sử dụng trong hầu hết các linh vực của cuộc sống, từ kinh tế, văn hóa , xã hội Công nghệ thông tin phát triển cũng đồng nghĩa với các sản phẩm phần mềm xuất hiện nhiều Việc xây dựng các web phù hợp với mục đích từng sản phẩm là điều cần thiết Tuynhiên giữa muôn vàn sản phẩm có mặt ngoài việc giao diện đẹp đẽ thì tinh năng phải đung đắn, tính tin cậy cao Mọi sản phẩm làm ra cần đạt chuẩn thực hiện đúng chức năng,chính xác yêu cầu người dùng và phải đi kèm với tinh bảo mật cấp thiết Lỗi của một webnói chung sẽ ảnh hưởng đến người dùng, công ti phát hành và nhiều hậu quả nghiêm trọng không thể kể đến Do đó, hoạt động kiểm thử, đảm bảo chất lượng sản phẩm là rất quan trọng trước khi phát hành một sản phẩm phần mềm
Một quá trinh kiểm thử có thể tách biệt nhưng cần kịp thời để các hoạt động
sửa chữa, bảo trì được thực hiện Vì vậy chúng em chọn đề tài kiểm thử web này mong
muốn hướng đến một sản phẩm tốt cho người dùng Trong quá trình thực hiện đề tài không thể tránh khỏi những sai sót, nhóm chúng em rất mong nhận được sự giúp
đỡ góp ý từ phía cô và các bạn để có thể thực hiện tốt đề tài và hoàn thiện sản phẩm của mình hơn nữa.
Chúng em xin chân thành cảm ơn !
Trang 9CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM VÀ KẾ HOẠCH
KIỂM THỬ
1.1 Các khái niệm cơ bản về kiểm thử phần mềm.
1.1.1 Khái niệm kiểm thử phần mềm (Software Testing)
Kiểm thử phần mềm (Software testing) là quá trình bao gồm nhiều
hoạt động kiểm tra để phát hiện ra lỗi của phần mềm nhằm cung cấp cho lập trình viên, khách hàng,… 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 hoạt động hiệu quả và đáp ứng đúng theo mong muốn, yêu cầu của khách hàng
Quá trình kiểm thử phần mềm không chỉ nhằm mục đích tìm ra các lỗi trong phần mềm hiện có mà còn nhằm tìm ra các biện pháp cải thiện phần mềm hiệu quả, độ chính xác và khả năng sử dụng Nó chủ yếu nhằm mục đích đo lường đặc điểm kỹ thuật, chức năng và hiệu suất của một chương trình hoặc ứng dụng phần mềm
Mục đích của kiểm thử phần mềm là :
Tìm kiếm lỗi
Đảm bảo được một mức độ chất lượng
Cun cấp thông tin để đưa ra quyết định
Ngăn ngừa lỗi
1.1.2 Lỗi phần mềm và nguyên nhân sinh ra lỗi.
Thế nào là Lỗi?
- Lỗi là các sản phầm đầu ra của một quy trình sản cuất không được đúngnhư kỳ cọng của khách hàng hoặc nguwoif thực hiện
- Trong quá trình sản xuất phần mềm thì có thể có những lỗi trong:
Tài liệu của dự án ( tài liệu thiết kế, báo cáo, hướng dẫn,…):
Mô tả không đúng
Mô tả không rõ ràng dẫn tới hiểu nhầmMâu thuẫn, trái ngược nhau
Lỗi chính tảCác lỗi trong phần mềm, website:
Sai khác với mô tả thiết kế của hệ thốngSai khác các logic không tuân theo mô tả trên màn hình
Trang 10Trái với các hoạt động hiển nhiên hoặc luật pháp
Có Những loại Lỗi nào ?-Lỗi tính năng: Đây là lỗi liên quan đến tính năng của hệ thống , khi hệthống không thực hiển được tính năng mà nó phải làm thì đó là lỗi tínhnăng
Ví dụ: Khi một người dùng khồn thể đăng nhập vào hệ thống Khi một button dùng để xóa sản phầm A nhưng nó lại xóa sản phẩmB
-Lỗi giao diện: Đây là lỗi liên quan tới giao diện của hệ thống, khi gia diệnkhông đúng thiết kế hoặc các control đè lên nhau, xô lệch, màu sắc sai,…Lỗi nội dung: Đây là loại lỗi gặp phải khi nội dung của website, phần mềmkhông đúng
Ví dụ: Sai chính tả, hình ảnh lỗi, nội dung chưa dịch , nội dung không phùhợp,…
Lỗi hiệu năng; Khi phần mềm hoặc hệ thống không thực hiện được tínhnăng trong thời gian mong muốn
Lỗi bảo mật: Khi các tính năng bảo mật của hệ thống bị lỗi làm lộ cácthông tin nhạy cảm của hệ thống phần mềm
1.1.3 Vai trò của kiểm thử.
▪ Giúp tiết kiệm tiền bảo trì
Bảo trì và nâng cấp là điều bắt buộc đối với sản phẩm phần mềmkhi có yêu cầu thay đổi, có các lỗi phát sinh không thể phát hiện trongquá trình phát triển
Quá trình kiểm thử nếu chúng ta làm tốt thì sẽ hạn chế được việcphát sinh các lỗi sau này Thậm chí phần mềm sẽ chạy ổn định cho đếnkhi phát sinh các thay đổi yêu cầu nghiệp vụ
Trong quá trình kiểm thử chúng ta cũng sẽ kiểm tra được mức độđáp ứng của từng module, phần mềm Khi phát triển phần mềm mớichúng ta hoàn toàn tận dụng được các module đã phát triển trước đó
Trang 11Từ đó sẽ giảm thiểu ngân sách cho việc bảo trì sản phẩm vì quá trìnhkiểm thử đã được đảm bảo trước đó rồi
Kiểm thử phần mềm giúp phát hiện và sửa lỗi, loại bỏ các rủi ro
và vấn đề sớm, tăng tính bảo mật Vì thế kiểm thử phần mềm có tầmquan trọng trong việc hoàn thiện sản phẩm phần mềm, tránh những lỗhổng bảo mật và tăng độ tin tưởng cho người sử dụng
◦ Chất lượng của sản phẩm
Kiểm thử phần mềm có trách nhiệm về chất lượng sản phẩm.Ngoài vấn đề bảo mật, kiểm thử phần mềm sẽ đảm bảo được độ tincậy, hiệu suất hoạt động cao và đảm bảo đủ các tính năng cần thiếtcủa sản phẩm Sau khi hoàn thiện, sản phẩm đưa đến tay khách hàng
là sản phẩm đủ yêu cầu về: hình thức, giao diện, cấu trúc và tính năng.Đảm bảo không có bất kì lỗi nào trên sản phẩm
▪ Sự hài lòng của khách hàng
Cho dù đội ngũ lập trình của bạn giỏi như thế nào đi nữa thì bạncũng không thể cam kết sản phẩm của bạn là hoàn hảo, không hề cóbugs và không cần phải test
Người dùng có nhiều sự lựa chọn, sản phẩm nào tiện sử dụng vàđáp ứng đủ tính năng thì họ sẽ hài lòng để dùng
Đội ngũ kiểm thử sẽ đóng vai trò quan trọng ở đây, họ test vàđảm bảo chất lượng sản phẩm tốt Họ nghiên cứu nhu cầu khách hàng
và đưa ra các trường hợp lỗi của sản phẩm để test và đánh giá Từ đó
sẽ giúp sản phẩm được hoàn thiện, đáp ứng sự hài lòng của kháchhàng một cách tối đa nhất
▪ Tăng cường quá trình phát triển
Kiểm thử là khâu bắt buộc và có vai trò quan trọng bậc nhất Sẽkhông thể tạo ra một sản phẩm phần mềm đảm bảo chất lượng nếuthiếu đi bước kiểm thử Kiểm thử giúp hỗ trợ trong quá trình phát triển
Trang 12Nếu không kiểm thử chúng ta sẽ không biết được khi nào và như thếnào là điểm dừng trong quá trình chúng ta phát triển phần mềm.
▪ Dễ dàng trong khi thêm các tính năng mới
Kiểm thử phần mềm dễ dàng thêm các tính năng mới bởi kiểm thử chức năng
là xác minh hệ thống hoạt động theo đúng yêu cầu nghiệp vụ
1.1.4 Người thực hiện kiểm thử
Người trực tiếp tham gia thực hiện tất cả các công việc, gánh vác cách “trách nhiệm” quan trọng trên không đâu xa chính là các Kiểm thử viên (Tester).
Vì vậy, Tester là người nắm rõ nhất các kiến thức, các kĩ thuật, công cụ liên quan trực tiếp đến quá trình kiểm thử phần mềm Từ đó, họ kiểm tra, đánh giá để đưa ra thông số kĩ thuật phù hợp nhất cho sản phẩm.
Tester chịu hoàn toàn trách nhiệm trong việc xác định điều kiện kiểm thử, thiết kế kiểm thử và thực thi kiểm thử Ngoài ra, Tester có thể tham gia vào quá trình thiết lập môi trường kiểm thử và đưa ra các đặc tả cho quy trình cũng như dữ liệu kiểm thử.
Các Tester có nhiệm vụ ghi lại những kết quả đánh giá và kiểm thử khi tìm thấy lỗi nên họ có vai trò giám sát và đảm bảo việc thu thập các số liệu liên quan đến hiệu suất công việc, đảm bảo các yêu cầu sản phẩm được kiểm tra và bàn giao chính xác tới khách hàng.
Trong một dự án sẽ có nhiều bộ phận và mội bộ phận sẽ có mỗi vai trò khác nhau, vai trò của từng thành viên là:
Tester: Thực hiện test case, report bug và báo cáo kết quả theo phân công Thực hiện tạo test case theo pân công
Thực hiện báo cáo tiến độ làm việc cho test leader
Thực hiện các công việc khác được giao
Test leader: Phân công công việc cho tester
Review output/báo cáo của tester
Giải đáp các câu hỏi của tester trong khả năng
Đào tạo training
Báo cáo tiến độ của team test cho PM
BA: Phân tích nghiệp vụ và viết tài liệu để Developer teams có thể phát triển được phần mềm và teams test có thể hiểu và kiểm thử được phần mềm
Giải đáp thắc mắc của team về nghiệp vụ của dự án
BA Leader: Thực hiện phân công công việc cho BA
Trang 13Review output của BA
Review báo cáo của BA
Developer: Thực hiện việc phát triển phần mềm theo yêu cầu đã có
Thực hiện unit test cho các phần mình phát triển
Báo cáo công việc co Technique leader
Tech leader : Chịu trách nhiệm giải quyết các vấn đề kỹ thuật trong team dự án
Quản lý tiến độ, phân công công việc trong developer team
Review sản phẩm của các developer
Project manager: Người chịu trách nhiệm quản trị dự án, lên kế hoạch, phân
bổ nguồn lực, đặt mức độ ưu tiên,… Để dự án thành công.
Đầu mối để tương tác với các thành phần ngoài dự án như giám đốc, trưởng
bộ phận
Customer: Khách hàng là người ra đề bài cho việc phát triển sản phẩm cũng như là người quyết định chất luwonjg, nghiệm thu sản phẩm phần mềm
Là người có quyền cao nhất về nghiệp vụ, tiến độ của dự án.
Product owner: LÀ người chịu trách nhiệm về sản phẩm phần mềm, người
sẽ định hướng việc phát triển phần mềm cũng như các tính năng cần có của nó.
Trang 141.2 Quy trình kiểm thử.
1.2.1 Quy trình kiểm thử trong dự án
Test planning : Là hoạt động thiết lập hay cập nhật lại kế hoạch kiểm thử Hoạt động: Xác định phạm vi, đối tượng các rủi ro có thể xẩy ra ttrong quá trình
Trang 15Xác định cách thức tiệp cận quá rình kiểm thử” test approach”
Xác định chiến lược kiểm thử “ test strategy”
Xác định các yêu cầu cần thiết cho uqas trình kiểm thủ
Lên kế hoạch cho các giai đoạn tiếp theo của quá tình test
Xác định điểm kết thúc của quá trình test
Test Monitoring and control
Đĩnh nghĩa: là hoạt động diễn ra liên tuch trong suốt quá trình kiểm thử So sánh giữa kết quả thực tế và kế hoạch đã đề ra Bao gồm các việc đưa ra các action phù hợp để đạt được mục tiêu theo kế hoạch
• Hoạt động
• Đo lường và phân tích kết quả của quá trình kiểm thử tĩnh và động
• Giám sát và tài liệu quá quá trình kiểm thử, độ phủ kiểm thử và điều kiện kết thúc quá trình kiểm thử
• Cung cấp thông tin về chất lượng trong quá trình kiểm thử
• Đưa ra các hành động điều chỉnh kế hoạch hoặc các hoạt động khác để đạt mục tiêu cho kế hoạch
Test analysis
Đĩnh nghĩa: Là quá trình mà các tài liệu đầu vào của quá trình kiểm thử được phân tích để xác định các tính năng có thể kiểm thử và các điều kiện kiểm thử tương ứng
• Xác định tính năng hoặc bộ tính năng được kiểm thử
• Xác định mức độ ưu tiên của từng tính năng
Trang 16Test Design
Định nghĩa: Là quá trình mà các điều kiện kiểm thử được phân bổ thành các High level test case hoặc các bộ high level test cases
Trang 17• Hoạt động
• Thiết kế và đưa ra mức độ ưu tiên của high level test case hoặc bộ high level test case
• Xác định test data cần thiết cho quá trình kiểm thử
• Xác định môi trường test, hạ tầng kiểm thử và các công cụ
• Xác định được mối liên quan giữa tài liệu đầu vào với các điều kiện kiểm thử, test case
Test implementation
Định nghĩa: Quá trình phát triển các test case, test script để có thể tiến hành quá trình kiểm thử Đồng thời sắp xếp thứ tự test case sẽ được kiểm thử.
• Hoạt động
• Tạo và sắp xếp thứ tự các test case và các kịch bản kiểm thử tự động
• Tạo các test suites cần thiết
• Sắp xếp test suites vào quá trình kiểm thử để nâng cao chất lượng kiểm thử
• Xây dựng môi trường kiểm thử đồng thời xác định được rằng môi trường này được xây dựng chính xác
• Chuẩn bị test data
• Xác minh và cập nhật lại bảng so sánh độ phủ giữa tài liệu đầu vào và các tài liệu mới được tạo
• So sánh kết quả thực tế và kết quả mong muốn
• Phân tích các hiện tượng bất thường để hiểu rõ nguyên nhân xẩy ra