Việc thực hiện kiểm thử đúng cách không chỉ giúp phát hiện và sửa chữa lỗi một cách kịp thời mà còn giúp đảm bảo tính ổn định và hiệu quả của hệ thống trong quá trình sử dụng.. Phân loại
Trang 1TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO HỌC PHẦN KIỂM THỬ VÀ ĐẢM BẢO CHẤT LƯỢNG PHẦN MỀM
Kiểm thử phần mềm quản lý shop giày Nhóm sinh viên thực hiện:
1 Cao Đăng Dương
2 Nguyễn Thành Đạt
3 Nguyễn Tấn Đạt
4 Nguyễn Đăng Đạt
5 Phạm Viết Duyên
Lớp: DH11C6 Giảng viên hướng dẫn: Đặng Thị Khánh Linh
HÀ NỘI, NĂM 2024
Trang 2LỜI MỞ ĐẦU
Trong thời đại công nghệ ngày nay, việc sử dụng phần mềm quản lý đã trở thành một phần không thể thiếu trong hoạt động kinh doanh, bao gồm cả quản lý shop giày Đối với các doanh nghiệp kinh doanh giày dép, việc sở hữu một hệ thống phần mềm quản lý hiệu quả không chỉ giúp tăng cường sự tổ chức trong quản lý hàng hóa mà còn giúp nâng cao trải nghiệm của khách hàng
Trong bối cảnh này, kiểm thử phần mềm trở thành một quá trình không thể thiếu trong việc đảm bảo chất lượng của phần mềm quản lý shop giày Việc thực hiện kiểm thử đúng cách không chỉ giúp phát hiện và sửa chữa lỗi một cách kịp thời mà còn giúp đảm bảo tính ổn định và hiệu quả của hệ thống trong quá trình sử dụng
Đề tài này nhằm mục đích nghiên cứu và áp dụng các phương pháp, kỹ thuật kiểm thử phần mềm để đảm bảo chất lượng và tính ổn định của phần mềm quản lý shop giày Nhóm em sẽ tập trung vào việc phân tích nhu cầu và yêu cầu của khách hàng, thiết kế các ca kiểm thử phù hợp, thực hiện kiểm thử và phân tích kết quả để đưa ra các giải pháp cải thiện
Nhóm em muốn bày tỏ lòng biết ơn sâu sắc đến cô Đặng Thị Khánh Linh
đã hỗ trợ và đóng góp ý kiến trong quá trình nghiên cứu này Sự đóng góp của
cô là nguồn động viên lớn lao để chúng tôi tiếp tục nỗ lực và hoàn thiện đề tài này
Xin chân thành cảm ơn!
Trang 3CHƯƠNG I: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
1 Phầm mềm
1.1 Khái niệm phần mềm
Phần mềm máy tính, hay còn gọi đơn giản là phần mềm hay nhu liệu, là tập hợp dữ liệu hoặc các câu lệnh hướng dẫn máy tính cho máy tính biết cách làm việc Điều này trái ngược với phần cứng vật lý, từ đó hệ thống được xây dựng và thực sự thực hiện công việc Trong khoa học máy tính và kỹ thuật phần mềm, phần mềm máy tính là tất cả thông tin được xử lý bởi hệ thống máy tính, chương trình và dữ liệu Phần mềm máy tính bao gồm các chương trình máy tính, thư viện và dữ liệu không thể thực thi liên quan, chẳng hạn như tài liệu trực tuyến hoặc phương tiện kỹ thuật số Phần cứng và phần mềm máy tính yêu cầu lẫn nhau và không thể tự sử dụng một cách thực tế
Ở cấp độ lập trình thấp nhất, mã thực thi bao gồm các hướng dẫn ngôn ngữ máy được hỗ trợ bởi một bộ xử lý riêng lẻ, có thể là bộ xử lý trung tâm (CPU) hoặc đơn vị xử lý đồ họa (GPU) Một ngôn ngữ máy bao gồm các nhóm giá trị nhịphân biểu thị các lệnh hướng dẫn cách thực hiện của bộ xử lý thay đổi trạng thái của máy tính từ trạng thái trước đó Ví dụ: một lệnh có thể thay đổi giá trị được lưu trữ ở một vị trí lưu trữ cụ thể trong máy tính, một hiệu ứng mà người dùng không thể quan sát trực tiếp Một lệnh cũng có thể gọi một trong nhiều thao tác nhập hoặc xuất dữ liệu, ví dụ hiển thị một số văn bản trên màn hình máy tính; gây ra những thay đổi trạng thái được hiển thị cho người dùng
Bộ xử lý thực hiện các lệnh theo thứ tự chúng được cung cấp, trừ khi nó được hướng dẫn "nhảy" sang
một lệnh khác hoặc bị hệ điều hành làm gián đoạn Tính đến năm 2015, hầu hết máy tính cá nhân, thiết bị điện thoại thông minh và máy chủ đều có bộ xử lý với nhiều đơn vị thực thi hoặc nhiều bộ xử lý thực hiện tính toán cùng nhau và điện toán đã trở thành một hoạt động đồng thời hơn nhiều so với trước đây
Trang 4Phần lớn phần mềm được viết bằng các ngôn ngữ lập trình cấp cao Chúng dễ dàng và hiệu quả hơn cho các lập trình viên vì chúng gần với ngôn ngữ tự nhiên hơn ngôn ngữ máy Các ngôn ngữ cấp cao được dịch sang ngôn ngữ máy bằng trình biên dịch hoặc trình thông dịch hoặc kết hợp cả hai Phần mềm cũng có thểđược viết bằng một hợp ngữ mức thấp, trong đó có các lệnh mạnh để hướng dẫn ngôn ngữ máy của máy tính và được dịch sang ngôn ngữ máy bằng cách dùng phần mềm lắp ráp
1.2 Phân loại phần mềm
• Theo mục đích sử dụng:
- Phần mềm ứng dụng: là phần mềm sử dụng hệ thống máy tính để thực hiện các chức năng đặc biệt hoặc cung cấp các chức năng giải trí ngoài hoạt động cơ bản của chính máy tính Có nhiều loại phần mềm ứng dụng khác nhau, bởi vì phạm vi các tác vụ có thể được thực hiện với một máy tính hiện đại là rất lớn, xem danh sách phần mềm
- Phần mềm hệ thống: là phần mềm để quản lý hành vi phần cứng máy tính, để cung cấp các chức năng cơ bản được người dùng yêu cầu hoặc phần mềm khác để chạy đúng, nếu có Phần mềm hệ thống cũng được thiết kế để cung cấp một nền tảng để chạy phần mềm ứng dụng,[9] và nó bao gồm:
+ Hệ điều hành (operating system): là một phần mềm cơ bản quản lý và điều khiển tài nguyên của một máy tính hoặc một thiết bị điện tử Nó cung cấp một giao diện giữa phần cứng và các ứng dụng phần mềm, cho phép người dùng
và các ứng dụng tương tác với phần cứng một cách hiệu quả
+ Phần mềm quản lý tài nguyên (Resource Management Software): là các ứng dụng hoặc công cụ được thiết kế để giúp quản lý và tối ưu hóa việc sử dụng các tài nguyên của máy tính hoặc mạng máy tính Các tài nguyên này có thể bao gồm bộ nhớ, ổ đĩa, CPU, mạng, và các thiết bị ngoại vi
+ Công cụ quản lý mạng: Bao gồm các ứng dụng giám sát mạng, phần mềm quản lý băng thông, và các công cụ quản lý cấu hình mạng
Trang 5+ Công cụ điều chỉnh hiệu suất hệ thống: Các ứng dụng giúp tối ưu hóa hiệu suất của hệ thống, bao gồm các công cụ quản lý tiến trình, tinh chỉnh cài đặt và tối ưu hóa ổ cứng
Phần mềm hệ thống là một phần quan trọng trong việc duy trì và vận hành các hệ thống máy tính hiệu quả và an toàn
• Theo phạm vi chức năng:
- Phần mềm tổng hợp: Cung cấp nhiều tính năng và chức năng khác nhau trong một ứng dụng Ví dụ: Microsoft Office
- Phần mềm chuyên ngành: Tập trung vào một lĩnh vực hoặc ngành nghề
cụ thể Ví dụ: phần mềm kế toán, phần mềm y tế
• Theo cách triển khai:
- Phần mềm cài đặt trên máy tính: Cài đặt và chạy trực tiếp trên máy tính của người dùng Ví dụ: Ứng dụng điều khiển video game
- Phần mềm dựa trên web: Chạy trên các máy chủ từ xa và truy cập thông qua trình duyệt web Ví dụ: Gmail, Google Docs
• Theo mô hình phân phối:
- Phần mềm miễn phí (Freeware): Miễn phí cho người dùng sử dụng mà không cần phải trả phí
- Phần mềm có phí (Commercial software): Yêu cầu người dùng phải mua bản quyền để sử dụng
- Phần mềm mã nguồn mở (Open-source software): Mã nguồn mở cho phép người dùng xem, sửa đổi và phân phối lại mà không cần phải trả phí
• Theo hình thức sở hữu:
- Phần mềm cá nhân: Sở hữu và sử dụng bởi một người dùng cá nhân
- Phần mềm doanh nghiệp: Sử dụng trong môi trường doanh nghiệp hoặc
tổ chức
Trang 62 Quy trình phát triển phần mềm.
Theo định nghĩa từ Indeed, quy trình phát triển phần mềm (SDLC -Software Development Life Cycle) là toàn bộ quá trình xây dựng lên sản phẩm đáp ứng các thông số kỹ thuật và yêu cầu của người dùng SDLC cung cấp một tiêu chuẩn quốc tế mà các công ty sản xuất phần mềm có thể sử dụng để xây dựng và cải tiến sản phẩm công nghệ Một quy trình tốt sẽ luôn tạo ra những sản phẩm đạt tiêu chuẩn
Quy trình được chia thành sáu giai đoạn và mỗi giai đoạn đều có sự tham gia của đội ngũ phát triển phần mềm Quy trình giúp tương tác hóa các hoạt động và yếu tố với nhau một cách nhịp nhàng, đem lại hiệu quả trong quá trình sản xuất phần mềm Sáu giai đoạn phát triển phần mềm gồm:
- Needs identification (Xác định nhu cầu)
- Requirements Analytics (Phân tích yêu cầu)
- Design (Thiết kế)
- Development (Lập trình), Testing (Kiểm thử)
- Deployment & Maintenance (Triển khai & bảo trì)
• Giai đoạn 1: Needs identification (Xác định nhu cầu)
Needs identification là giai đoạn nghiên cứu thị trường và brainstorming (phương pháp động não) của quy trình Trước khi xây dựng phần mềm, công ty cần thực hiện nghiên cứu sâu rộng thị trường để xác định khả năng tồn tại của sản phẩm Developers phải xác định được các chức năng và dịch vụ mà phần mềm nên cung cấp được cho người tiêu dùng để họ cảm thấy sản phẩm cần thiết
và hữu ích
Ngoài ra, developers cũng nên thảo luận cùng với các bộ phận khác trong công ty về : Điểm mạnh, điểm yếu và cơ hội của sản phẩm Quá trình phát triển phần mềm chỉ bắt đầu nếu sản phẩm thỏa mãn được mọi thông số nhất thiết để thành công
Trang 7• Giai đoạn 2: Requirements Analytics (Phân tích yêu cầu)
Requirements Analytics là giai đoạn thực hiện khảo sát chi tiết yêu cầu, mong muốn của khách hàng Sau đó, thông tin sẽ được tổng hợp vào tài liệu đặc
tả yêu cầu ( Prototype) Tài liệu đặc tả phải đầy đủ các yêu cầu về chức năng, phi chức năng và giao diện Ngoài ra, tài liệu còn cung cấp một bản phác thảo chi tiết về thành phần, phạm vi, nhiệm vụ của developers và các thông số thử nghiệm để tạo ra sản phẩm chất lượng
Phân tích yêu cầu cũng là giai đoạn mà các developers lựa chọn cách tiếp cận phát triển phần mềm như: Mô hình chữ V (V Model) hay mô hình thác nước (Waterfall)
• Giai đoạn 3: Design (Thiết kế)
Sau khi đã xác định & phân tích kỹ lưỡng về yêu cầu, chúng ta sẽ chuyển sang giai đoạn nắm vai trò quan trọng thiết yếu của Quy trình phát triển phần mềm - Design (thiết kế) Tại đây, các kiến trúc sư và nhà phát triển phần mềm sẽ đưa ra các thông số kỹ thuật tiên tiến mà họ cần để tạo ra sản phẩm theo yêu cầu Vấn đề cần được thảo luận thêm giữa các bên bao gồm: Mức độ rủi ro, thành phần nhóm, công nghệ áp dụng, thời gian, ngânsách, giới hạn của dự án, phương pháp và thiết kế kiến trúc
Tài liệu DSD (Đặc điểm kỹ thuật thiết kế) sẽ là kết quả cuối cùng của giai đoạn DSD chỉ định thiết kế kiến trúc, thành phần, giao tiếp, đại diện front-end
và luồng người dùng của sản phẩm
• Giai đoạn 4: Development (Lập trình)
Tại giai đoạn 4, developers sẽ lập trình và triển khai thông số thiết kế Lập trình viên sẽ coding dựa trên các thông số kỹ thuật và yêu cầu của sản phẩm đã được thống nhất trong các giai đoạn trước
Sau khi coding hoàn tất, developers sẽ deploy sản phẩm trong môi trường phát triển (development environment) Lập trình viên sẽ thử nghiệm phiên bản
đã tạo ra và điều chỉnh lại cho phù hợp với yêu cầu
Trang 8• Giai đoạn 5: Testing (Kiểm thử)
Sau khi developers đã hoàn thành giai đoạn lập trình, tester sẽ tiếp nhận sản phẩm và tiến hành testing Tester sẽ tạo test case (Kịch bản kiểm thử) dựa trên tài liệu giải pháp tạo ở giai đoạn 2 và tiến hành kiểm tra Tester sẽ cập nhật kết quả test vào tool quản lý và thông báo bug (lỗi) đến developers Tester và developers sẽ cùng nhau phối hợp xử lý các bug và cập nhật trên hệ thống quản
lý lỗi Trong thực tế, tùy theo mô hình phát triển phần mềm mà hoạt động Develop và Kiểm Thử có thể diễn ra song song hoặc tiến hành lần lượt
Ví dụ như ở mô hình Waterfall, lập trình được thực hiện xong mới đến giai đoạn kiểm thử
• Giai đoạn 6: Deployment & Maintenance (Triển khai & bảo trì)
Tại giai đoạn này khi lỗi đã được xử lý xong, nhà phát triển phần mềm sẽ cung cấp sản phẩm hoàn chỉnh đến tay khách hàng Testing vẫn được diễn ra ở giai đoạn triển khai để đảm bảo sản phẩm luôn có mức độ hoàn hảo cao
Sau khi phát hành, công ty sẽ tạo ra một nhóm bảo trì để quản lý các vấn
đề mà khách hàng gặp phải khi sử dụng sản phẩm Bảo trì giúp khắc phục nhanh các vấn đề nhỏ xảy ra trong quá trình sử dụng sản phẩm
3 Một số mô hình phát triển phần mềm
Có 2 kiểu mô hình phát triển phần mềm được áp dụng phổ biến:
- Mô hình thác nước (Waterfall model)
- Mô hình chữ V (V model)
3.1 Mô hình thác nước (Waterfall model)
Trang 9Một mô hình Waterfall đơn giản gồm có 6 giai đoạn:
- Giai đoạn 1: Phân tích yêu cầu
Đây là pha đầu tiên trong các dự án waterfall với mục đích xác định và phân tích tất cả các nhu cầu kinh doanh, các yêu cầu từ người dùng đối với sản phẩm, các ràng buộc và rủi ro đi kèm
- Giai đoạn 2: Thiết kế hệ thống
Từ những yêu cầu được xác định trong bước 1, nhóm dự án tạo ra thiết kế cho sản phẩm để đáp ứng tất cả các yêu cầu đó, bao gồm cả thiết kế phần cứng, thiết kế phần mềm, ngôn ngữ lập trình, lưu trữ dữ liệu Đây đồng thời cũng là phần giúp bạn xác định dự án sẽ hữu ích thế nào đối với người dùng Nếu bước này gặp vấn đề thì rất có thể phải quay lại bước 1 để thực hiện lại
- Giai đoạn 3: Xây dựng
Khi hệ thống đã được thiết kế đầy đủ và cụ thể, các module chức năng của sản phẩm sẽ được thực hiện trong giai đoạn này để đáp ứng các tiêu chuẩn đã thực hiện ở bước trước Đây là giai đoạn mà các nhiệm vụ công việc được thảo luận ở bước 2 được tiến hành và cũng là giai đoạn mà đội ngũ lập trình sẽ là nguồn lực chủ yếu được sử dụng
- Giai đoạn 4: Kiểm thử hệ thống
Ở giai đoạn này, thường sẽ là công việc của đội ngũ QA và tester nhằm tìm kiếm và báo cáo các lỗi trong hệ thống cần được xử lý Việc này bao gồm tất
cả các hoạt động kiểm thử tính năng và phi tính năng Đây là giai đoạn cực kỳ
Trang 10quan trọng mà nhóm không được phép mắc sai lầm nhằm đảm bảo hệ thống được kiểm tra đầy đủ, các mục tiêu thiết kế và chức năng người dùng yêu cầu được đáp ứng và các nhu cầu kinh doanh được giải quyết
- Giai đoạn 5: Triển khai hệ thống
Đây là giai đoạn mà sản phẩm được triển khai vào môi trường mà người dùng có thể bắt đầu sử dụng được Hay nói cách khác là giai đoạn mà sản phẩm thực sự đi vào hoạt động Trong giai đoạn này, nhóm dự án cần đảm bảo các yếu
tố như: môi trường đang hoạt động, không có lỗi trên server, các tiêu chí test đã được đáp ứng hoặc kiểm tra lại môi trường sau khi ứng dụng được triển khai để đảm bảo sản phẩm không gặp vấn đề
- Giai đoạn 6: Bảo trì hệ thống
Đây là giai đoạn cuối cùng của quá trình, trong đó nhóm dự án tập trung giải quyết các vấn đề của khách hàng Trong các dự án phần mềm, đây thường là giai đoạn các bản được phát hành để cập nhật và sửa lỗi
3.2 Mô hình chữ V (V model)
Trong mô hình V, các hoạt động phát triển và đảm bảo chất lượng được thực hiện đồng thời Không có pha rời rạc được gọi là kiểm thử, thay vào đó kiểm thử được bắt đầu ngay từ giai đoạn lấy yêu cầu Các hoạt động xác minh và xác nhận đi liền với nhau
Trang 11Trong một quá trình phát triển theo mô hình V điển hình, bên trái là các hoạt động phát triển và bên tay phải là các hoạt động kiểm thử Trong giai đoạn phát triển cả việc xác minh và xác nhận được thực hiện cùng với các hoạt động phát triển thực tế
+ Phía bên tay trái: là hoạt động phát triển Thông thường, chúng ta khó
có thể thực hiện thử nghiệm trong giai đoạn phát triển, nhưng đây là ưu điểm của mô hình này, nó chứng tỏ rằng thử nghiệm cũng có thể được thực hiện ở tất
cả các giai đoạn của các hoạt động phát triển
1 Phân tích yêu cầu:
Trong giai đoạn này các yêu cầu được thu thập, phân tích và nghiên cứu
Ở giai đoạn này việc hệ thống chạy như thế nào không quan trọng, quan trọng là
hệ thống có những chức năng gì Brain storming/walkthrough, interviews cần được thực hiện để có mục tiêu rõ ràng
2 Yêu cầu hệ thống / High level design:
Trong giai đoạn này, high level design của phần mềm được xây dựng Nhóm sẽ nghiên cứu và điều tra về các yêu cầu có thể được thực hiện như thế nào Tính khả thi về mặt kỹ thuật của yêu cầu cũng được tìm hiểu Nhóm cũng tìm hiểu về các mô-đun sẽ được tạo / phụ thuộc, nhu cầu phần cứng / phần mềm
3 Thiết kế kiến trúc:
Trong giai đoạn này, dựa trên thiết kế mức cao, kiến trúc phần mềm được tạo ra Các mô-đun, mối quan hệ và sự phụ thuộc của họ, sơ đồ kiến trúc, bảng
cơ sở dữ liệu, chi tiết về công nghệ đều được hoàn tất trong giai đoạn này
4 Thiết kế mô đun / Thiết kế cấp thấp:
Trong giai đoạn này mỗi mô-đun hoặc các thành phần phần mềm đều được thiết kế riêng Các method, class, giao diện, các kiểu dữ liệu vv đều được hoàn tất trong giai đoạn này
5 Code: