Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Luận văn nghiên cứu các phương pháp đảm bảo chất lượng phần mềm...

Tài liệu Luận văn nghiên cứu các phương pháp đảm bảo chất lượng phần mềm

.PDF
85
157
78

Mô tả:

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ CAO THỊ HẰNG NGHIÊN CỨU CÁC PHƢƠNG PHÁP ĐẢM BẢO CHẤT LƢỢNG PHẦN MỀM LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN HÀ NỘI – 2014 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ CAO THỊ HẰNG NGHIÊN CỨU CÁC PHƢƠNG PHÁP ĐẢM BẢO CHẤT LƢỢNG PHẦN MỀM Ngành: Công nghệ thông tin Chuyên ngành: Hệ thống thông tin Mã số: 60480104 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS. TRẦN QUANG ANH HÀ NỘI – 2014 LỜI CAM ĐOAN Tôi xin cam đoan kết quả đạt đƣợc trong luận văn là sản phẩm nghiên cứu, tìm hiểu của riêng cá nhân tôi. Trong toàn bộ nội dung của luận văn, những điều đƣợc trình bày hoặc là của cá nhân hoặc là đƣợc tổng hợp từ nhiều nguồn tài liệu. Tất cả các tài liệu tham khảo đều có xuất xứ rõ ràng và đƣợc trích dẫn hợp pháp. Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định cho lời cam đoan của mình. Hà Nội, ngày 29 tháng 11 năm 2014 Ngƣời cam đoan Cao Thị Hằng LỜI CẢM ƠN Để hoàn thành luận văn tốt nghiệp là cả một quá trình đầy khó khăn và thử thách trong học tập và nghiên cứu tại trƣờng Đại học Công Nghệ. Và để có đƣợc những thành quả nhƣ ngày hôm nay, ngoài những nỗ lực của bản thân, không thể không nhắc tới là sự động viên, giúp đỡ của các Thầy, Cô giáo, bạn bè, đồng nghiệp và ngƣời thân trong gia đình. Tôi xin chân thành cảm ơn PGS.TS. Trần Quang Anh là cán bộ giảng viên của trƣờng Đại học Hà Nội đã tận tình giúp đỡ tôi về cả chuyên môn, nghiên cứu và định hƣớng phát triển trong suốt quá trình làm luận văn. Tôi đã học hỏi đƣợc rất nhiều khi tham gia nghiên cứu đề tài này. Tôi cũng xin gửi lời cám ơn tới các Thầy, Cô giáo của Khoa Công Nghệ Thông Tin, vì đã truyền dạy những kiến thức bổ ích, hiện đại, giúp tôi trƣởng thành hơn trong lĩnh vực Công Nghệ Thông Tin. Với bạn bè cùng khoá, xin cám ơn vì đã cho tôi cơ hội trao đổi, chia sẻ kiến thức và kinh nghiệm thực tế qua các môn học. Mọi ngƣời đã giúp tôi hiểu thêm những vấn đề mà tôi không có điều kiện tìm hiểu, chỉ cho tôi những thứ tôi chƣa làm đƣợc. Tôi có thể tiếp thu đƣợc thêm nhiều vấn đề mới và biết đƣợc giá trị của việc không ngừng cố gắng học tập, nghiên cứu. Cuối cùng, với gia đình, tôi xin gửi lời biết ơn sâu sắc vì gia đình đã luôn ở bên và ủng hộ tôi trên con đƣờng học tập và nghiên cứu khó khăn, vất vả. Tôi mong rằng với sự cố gắng học tập nâng cao kiến thức, sau này sẽ có thể lĩnh hội nhiều công nghệ, tạo ra nhiều sản phẩm phần mềm có giá trị sử dụng cao, giúp ích đƣợc trong nhiều lĩnh vực của cuộc sống Hà Nội, ngày 29 tháng 11 năm 2014 Học viên Cao Thị Hằng MỤC LỤC LỜI MỞ ĐẦU................................................................................................................5 Chƣơng 1. TỔNG QUAN VỀ PHÁT TRIỂN PHẦN MỀM VÀ CHẤT LƢỢNG PHẦN MỀM ..................................................................................................................4 1.1. HỆ THỐNG PHẦN MỀM VÀ LỖI PHẦN MỀM ........................................4 1.1.1. Hệ thống phần mềm là gì? .........................................................................4 1.1.2. Lỗi phần mềm là gì? ...................................................................................4 1.1.3. Nguyên nhân xuất hiện lỗi của phần mềm ...............................................4 1.1.4. Chi phí phải trả cho một phần mềm có lỗi ...............................................5 1.2. SỰ PHÁT TRIỂN PHẦN MỀM VÀ VẤN ĐỀ CHẤT LƢỢNG ................5 1.2.1. Sự phát triển phần mềm..............................................................................5 1.2.2. Chất lƣợng phần mềm ................................................................................6 1.3. ĐẢM BẢO CHẤT LƢỢNG PHẦN MỀM ....................................................6 1.3.1. Kiểm thử phần mềm ...................................................................................6 1.3.2. Nguyên tắc kiểm thử phần mềm................................................................7 1.3.3. Quy trình kiểm thử cơ bản .........................................................................8 1.3.3.1. Lập kế hoạch và điều khiển kiểm thử.................................................8 1.3.3.2. Phân tích và thiết kế kiểm thử ............................................................9 1.3.3.3. Thi hành và thực hiện kiểm thử ..........................................................9 1.3.3.4. Đánh giá và báo cáo ...........................................................................10 1.3.3.5. Kết thúc kiểm thử (Test Closure Activities) ...................................10 Chƣơng 2. CÁC PHƢƠNG PHÁP ĐẢM BẢO CHẤT LƢỢNG PHẦN MỀM .11 2.1. MÔ HÌNH PHÁT TRIỂN PHẦN MỀM .......................................................11 2.1.1. Mô hình thác nƣớc ....................................................................................11 2.1.2. Mô hình chữ V...........................................................................................12 2.1.3. Mô hình lặp ................................................................................................13 2.1.3.1. Mô hình mẫu (Prototyping model)...................................................14 2.1.3.2. Mô hình RAD (Rapid Application Development) .........................15 2.1.3.3. Mô hình RUP (Rational Unified Process) .......................................16 2.1.3.4. Mô hình phát triển linh hoạt (Agile development model) .............18 2.2. CHIẾN LƢỢC KIỂM THỬ PHẦN MỀM ...................................................20 2.2.1. Kiểm thử đơn vị/ thành phần (Unit/Component Testing) ....................20 2.2.2. Kiểm thử tích hợp (Intergration Testing) ...............................................21 2.2.3. Kiểm thử hệ thống (Sytem Testing)........................................................22 2.2.4. Kiểm thử chấp nhận (Acceptance Testing) ............................................22 2.2.5. Kiểm thử bảo trì (Maintenance Testing) ................................................24 2.3. CÁC LOẠI KIỂM THỬ PHẦN MỀM .........................................................24 2.3.1. Kiểm thử chức năng ..................................................................................24 2.3.2. Kiểm thử phi chức năng ...........................................................................25 2.3.3. Kiểm thử kiến trúc ....................................................................................25 2.3.4. Kiểm thử hồi quy ......................................................................................26 2.4. CÔNG CỤ HỖ TRỢ KIỂM THỬ PHẦN MỀM .........................................27 2.4.1. Các loại công cụ kiểm thử phần mềm ....................................................27 2.4.2. Ảnh hƣởng của việc sử dụng công cụ.....................................................28 2.4.3. Giới thiệu một số công cụ kiểm thử cơ bản ...........................................28 2.4.3.1. Công cụ quản lý dự án Jira: ..............................................................28 2.4.3.2. Công cụ thực hiện kiểm thử hiệu năng Apache Jmeter .................29 2.4.3.3. Công cụ thực hiện kiểm thử chức năng Selenium..........................32 2.5. SINH DỮ LIỆU KIỂM THỬ SỬ DỤNG GIẢI THUẬT DI TRUYỀN...34 2.5.1. Giới thiệu....................................................................................................34 2.5.2. Giải thuật di truyền ...................................................................................35 2.5.3. Sinh dữ liệu kiểm thử áp dụng giải thuật di truyền ...............................37 Chƣơng 3. MÔ HÌNH TRIỂN KHAI THỰC TẾ ....................................................40 3.1. GIỚI THIỆU BÀI TOÁN ...............................................................................40 3.2. MÔ HÌNH SCRUM VÀ CÔNG CỤ QUẢN LÝ DỰ ÁN JIRA ................41 3.3. MỘT SỐ CÔNG CỤ HỖ TRỢ KIỂM THỬ TỰ ĐỘNG ...........................51 3.3.1. Selenium .....................................................................................................51 3.3.1.1. Giới thiệu.............................................................................................51 3.3.1.2. Tạo kịch bản kiểm thử .......................................................................52 3.3.1.3. Thực hiện kiểm thử ............................................................................55 3.3.1.4. Kết luận ...............................................................................................57 3.3.2. Apache Jmeter ...........................................................................................57 3.3.2.1. Giới thiệu.............................................................................................57 3.3.2.2. Xây dựng kịch bản kiểm thử.............................................................58 3.3.2.3. Thực hiện kiểm thử và xem kết quả.................................................59 3.3.2.4. Kết luận ...............................................................................................62 3.3.3. Sinh dữ liệu kiểm thử tự động dựa trên giải thuật di truyền ................62 3.3.3.1. Giới thiệu.............................................................................................62 3.3.3.2. Sinh dữ liệu kiểm thử theo GA .........................................................63 3.3.3.3. Kết luận ...............................................................................................72 KẾT LUẬN ..................................................................................................................73 TÀI LIỆU THAM KHẢO ..........................................................................................75 DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT Ký hiệu GA Diễn giải Genetic Algorithm Tiếng Việt Giải thuật di truyền DANH MỤC CÁC BẢNG BIỂU Bảng 3.1. Ca kiểm thử đăng ký ngƣời dùng thành công bằng selenium .....................................................................................................................54 Bảng 3.2. Ca kiểm thử ngƣời dùng đăng nhập thành công bằng selenium .....................................................................................................55 Bảng 3.3. Ca kiểm thử ngƣời dùng đằng xuất thành công bằng selenium .....................................................................................................55 DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình 1.1.Chi phí tìm và sửa lỗi phần mềm..................................................5 Hình 2.1. Mô hình thác nƣớc ......................................................................11 Hình 2.2. Mô hình chữ V .............................................................................13 Hình 2.3. Mô hình lặp ..................................................................................14 Hình 2.4. Mô hình RAD ..............................................................................16 Hình 2.5. Mô hình RUP ...............................................................................17 Hình 2.6. Mô hình Scrum ............................................................................18 Hình 2.7. Giao diện ban đầu của Apache Jmeter......................................30 Hình 2.8. Các thành phần của một Jmeter .................................................31 Hình 2.9. Sơ đồ tổng quát của giải thuật di truyền ...................................36 Hình 3.1. Trang web cần kiểm thử .............................................................40 Hình 3.2. Màn hình quản lý ngƣời dùng....................................................42 Hình 3.3. Hiển thị tất cả các dự án .............................................................42 Hình 3.4. Lựa chọn loại dự án ....................................................................43 Hình 3.5. Ví dụ một Product backlog đơn giản ........................................43 Hình 3.6. Màn hình quản lý các “Component” của dự án .......................44 Hình 3.7. Màn hình quản lý các “Version” của dự án .............................44 Hình 3.8. Ví dụ về một Sprint backlog cơ bản .........................................45 Hình 3.9. Tạo một “Task” trên Jira ............................................................46 Hình 3.10. Tạo một “Sub-Task” trên Jira ..................................................46 Hình 3.11. Hiển thị thông tin của một “Task” ..........................................47 Hình 3.12. Hiển thị tất cả các “Task” và “Sub-Task” ..............................47 Hình 3.13. Lƣợc đồ WBS Gantt hiển thị lịch làm việc của dự án .........48 Hình 3.14. Màn hình “Scrum board” hiển thị công việc của các thành viên .................................................................................................................49 Hình 3.15. Chọn loại “Gadget” (lƣợc đồ, bảng, đồ thị, ….) ...................50 Hình 3.16. Hiển thị các báo cáo trên màn hình Dashboard (1) ...............50 Hình 3.17. Hiển thị các báo cáo trên màn hình Dashboard (2) ...............51 Hình 3.18. Form “Đăng ký ngƣời dùng” ...................................................53 Hình 3.19. Form “Đăng nhập hệ thống” ....................................................54 Hình 3.20. Thực hiện kiểm thử thành công ...............................................56 Hình 3.21. Thực hiện ca kiểm thử thất bại ................................................57 Hình 3.22. Cấu hình một Thread Group ....................................................58 Hình 3.23. Cấu hình HTTP Request ..........................................................59 Hình 3.24. Hiển thị kết quả trên màn hình Summary Report ................60 Hình 3.25. Hiển thị kết quả trên màn hình View Results Tree ..............60 Hình 3.26. Hiển thị kết quả trên màn hình View Results in Table........61 Hình 3.27. Hiển thị kết quả trên màn hình Graph Results.......................62 1 LỜI MỞ ĐẦU 1. Đặt vấn đề, định hƣớng nghiên cứu Hiện nay, ngành công nghiệp phần mềm đang đƣợc xem là một trong những trụ cột chính của tăng trƣởng kinh tế ở nhiều nƣớc. Nhu cầu phần mềm tăng lên đáng kể và nó đã trở thành một phần không thể thiếu trong cuộc sống hàng ngày của mọi ngƣời. Tuy nhiên, để có đƣợc một sản phẩm phần mềm chất lƣợng cao, thỏa mãn đƣợc nhu cầu của ngƣời dùng, vẫn là một thách thức của các nhà phát triển phần mềm. Vấn đề đảm bảo chất lƣợng phần mềm, chúng ta cần biết nó không chỉ đơn thuần là một việc đƣợc thực hiện bởi một nhóm kiểm thử độc lập tại thời điểm kết thúc của chu trình phát triển phần mềm (giai đoạn kiểm thử phần mềm – testing), mà cần phải có một đội ngũ có trình độ cao, làm nhiệm vụ giám sát quy trình tạo ra sản phẩm và kiểm thử sản phẩm, từ lúc bắt đầu có yêu cầu và xuyên suốt trong quá trình phát triển sản phẩm. Nhƣ vậy, để có đƣợc một phần mềm chất lƣợng cao, phải có một quá trình nỗ lực của nhóm đảm bảo chất lƣợng phần mềm trong suốt vòng đời phát triển sản phẩm và song hành là việc kết hợp những phƣơng pháp, kỹ thuật đảm bảo chất lƣợng phần mềm và các công nghệ hỗ trợ một cách phù hợp. Với tầm quan trọng của phần mềm, và vai trò của việc đảm bảo chất lƣợng phần mềm, luận văn sẽ đi sâu khai thác những phƣơng pháp, kỹ thuật, công nghệ đƣợc áp dụng cho việc đảm bảo chất lƣợng phần mềm trong toàn bộ quá trình phát triển phần mềm. 2. Mục tiêu của luận văn Trên cơ sở về tính cấp thiết và tính thực tiễn của việc đảm bảo chất lƣợng phần mềm trong lĩnh vực phát triển phần mềm. Tôi đã nghiên cứu, tìm hiểu và lựa chọn đề tài “Nghiên cứu các phương pháp đảm bảo chất lượng phần mềm” với mục đích nghiên cứu, tìm hiểu các phƣơng pháp đảm bảo chất lƣợng phần mềm cần đƣợc áp dụng trong suốt quá trình phát triển phần mềm, từ khi bắt đầu đến khi kết thúc quá trình phát triển phần mềm. Để đạt đƣợc điều đó, tôi tổng hợp những kiến thức liên quan đến vấn đề chất lƣợng phần mềm, kiểm thử phần mềm, mô hình phát triển phần mềm, những phƣơng pháp để đảm bảo chất lƣợng phần mềm. Sau đó, triển khai một mô hình thực tế, áp dụng một số những phƣơng pháp mà tôi đã nghiên cứu 3. Phƣơng pháp và phạm vi nghiên cứu của luận văn Đây là đề tài mang nhiều tính áp dụng cho lĩnh vực đảm bảo chất lƣợng phần mềm. Để đảm bảo chất lƣợng và trong khả năng cho phép, đề tài giới hạn và tập trung vào những phần cốt lõi, cơ bản và tổng quát nhất của khâu kiểm thử phần mềm bao gồm:  Nghiên cứu lý thuyết về vấn đề đảm bảo chất lƣợng phần mềm và đƣợc đề cập trong luận văn là: hệ thống phần mềm, sự phát triển của phần mềm, chất lƣợng 2 của phần mềm và những vấn đề của kiểm thử phần mềm trong việc đảm bảo chất lƣợng phần mềm.  Nghiên cứu về các mô hình phát triển phần mềm và vấn đề đảm bảo chất lƣợng phần mềm trong các mô hình. Đề tài lựa chọn một mô hình phát triển cụ thể là mô hình Scrum để triển khai thực tế.  Tìm hiểu các chiến lƣợc kiểm thử phần mềm, và việc áp dụng các chiến lƣợc này một cách phù hợp cho từng giai đoạn cụ thể trong quá trình phát triển phần mềm  Nghiên cứu các loại kiểm thử phần mềm để áp dụng một cách phù hợp vào các dự án cụ thể, giai đoạn cụ thể trong quá trình phát triển phần mềm  Nghiên cứu về các công cụ hỗ trợ cho việc đảm bảo chất lƣợng phần mềm. Đề tài lựa chọn một số công cụ để triển khai thực tế + Công cụ quản lý dự án và quản lý kiểm thử Jira + Công cụ kiểm thử tự động Apache Jmeter để hỗ trợ loại kiểm thử phi chức năng (kiểm thử hiệu năng) và Selenium để hỗ trợ loại kiểm thử chức năng.  Nghiên cứu giải thuật di truyền để áp dụng vào việc sinh dữ liệu kiểm thử tự động. 4. Nội dung của luận văn Luận văn thực hiện xuyên suốt trong quá trình từ khi hình thành ý tƣởng nghiên cứu cho đến khi hoàn thành. Nội dung chính sẽ bao gồm các phần sau: + Mở đầu: Đặt ra vấn đề, mục tiêu và phƣơng pháp nghiên cứu cho đề tài “Nghiên cứu các phƣơng pháp đảm bảo chất lƣợng phần mềm” + Chƣơng 1: Giới thiệu tổng quan về phát triển phần mềm và chất lƣợng phần mềm – Các khái niệm cơ bản về hệ thống phần mềm, lỗi phần mềm, mô hình phát triển phần mềm, chất lƣợng phần mềm và kiểm thử phần mềm. Giới thiệu một số nguyên tắc cơ bản trong kiểm thử và quy trình kiểm thử cơ bản. + Chƣơng 2: Cơ sở lý thuyết nghiên cứu – Trình bày chi tiết các phƣơng pháp đảm bảo chất lƣợng phần mềm đi từ việc lựa chọn một mô hình phát triển phần mềm, đến lựa chọn các chiến lƣợc kiểm thử phần mềm, sau đó là lựa chọn các loại kiểm thử, giới thiệu việc sử dụng công cụ để hỗ trợ kiểm thử phần mềm, giới thiệu giải thuật di truyền và áp dụng giải thuật di truyền vào việc sinh dữ liệu kiểm thử tự động. + Chƣơng 3: Mô hình triển khai thực tế – Sử dụng mô hình phát triển phần mềm Scrum và công cụ quản lý dự án Jira cho một dự án cụ thể. - Áp dụng hai công cụ kiểm thử tự động cho dự án này + Công cụ Apache Jmeter hỗ trợ kiểm thử hiệu năng + Công cụ Selenium hỗ trợ kiểm thử chức năng - Áp dụng giải thuật di truyền hỗ trợ việc sinh dữ liệu kiểm thử cho một màn hình cụ thể của hệ thống đƣợc xây dựng trong dự án này. 3 + Kết luận và định hƣớng: Tổng kết lại những kiến thức đã tích luỹ, kinh nghiệm đƣợc áp dụng trong suốt quá trình thực hiện luận văn, đƣa ra đƣợc các hƣớng phát triển trong tƣơng lai. 4 Chƣơng 1. TỔNG QUAN VỀ PHÁT TRIỂN PHẦN MỀM VÀ CHẤT LƢỢNG PHẦN MỀM 1.1. HỆ THỐNG PHẦN MỀM VÀ LỖI PHẦN MỀM 1.1.1. Hệ thống phần mềm là gì? Phần mềm là một tập hợp những câu lệnh đƣợc viết bằng một hoặc nhiều ngôn ngữ lập trình theo một trật tự xác định nhằm tự động thực hiện một số chức năng hoặc giải quyết một bài toán nào đó. Ngày nay, hệ thống phần mềm là một phần không thể thiếu của cuộc sống, từ những ứng dụng cho các doanh nghiệp nhƣ ngân hàng, siêu thị, ... đến những sản phẩm của khách hàng nhƣ ô tô, điện thoại, điều hòa, … Một hệ thống phần mềm thông thƣờng bao gồm 3 phần chính: phần cứng, phần mềm hệ thống và phần mềm ứng dụng. Hầu hết mọi ngƣời đều biết đến những hệ thống làm việc không nhƣ mong đợi. Phần mềm làm việc không đúng có thể dẫn đến nhiều vấn đề nhƣ mất tiền, mất thời gian, ảnh hƣởng đến danh tiếng của doanh nghiệp... 1.1.2. Lỗi phần mềm là gì? Theo tài liệu chuẩn quốc tế [6], lỗi phần mềm đƣợc định nghĩa nhƣ sau:  Một sai sót (error, mistake): Một tác động của con ngƣời sản sinh ra một kết quả không đúng.  Một lỗi (fault, defect, bug): Sự thiếu sót trong một thành phần hoặc hệ thống mà có thể khiến thành phần hoặc hệ thống đó không thể thực hiện đƣợc chức năng của nó nhƣ yêu cầu. Ví dụ, một câu lệnh hoặc định nghĩa dữ liệu không chính xác. Một lỗi nếu gặp phải trong quá trình thực thi, có thể gây hỏng thành phần hoặc hệ thống đó.  Một hỏng hóc (failure): Là kết quả của một lỗi xuất hiện làm cho thành phần hoặc hệ thống làm việc không ăn khớp với các kết quả đƣợc mong đợi của nó. 1.1.3. Nguyên nhân xuất hiện lỗi của phần mềm Chúng ta biết phần mềm là do con ngƣời làm ra, và chúng ta không thể đảm bảo rằng những gì con ngƣời làm ra là hoàn toàn không có lỗi. Nhƣ vậy, con ngƣời có thể làm ra lỗi, nó có thể là những sai sót trong những đoạn mã, hoặc trong tài liệu của phần mềm nhƣ tài liệu yêu cầu, tài liệu thiết kế, ...[6] Nếu một lỗi trong mã của phần mềm đƣợc thực hiện, hệ thống có thể sẽ làm những gì mà nó không nên làm, nó chính là nguyên nhân của một lỗi. Những sai sót trong phần mềm, hệ thống hoặc tài liệu cũng có thể gây ra lỗi. Lỗi xảy ra bởi vì con ngƣời mắc những sai lầm, nguyên nhân có thể do áp lực về thời gian, mã của phần mềm phức tạp, cơ sở hạ tầng phức tạp, sự thay đổi về công nghệ, và/hoặc do tƣơng tác nhiều hệ thống. 5 Ngoài ra lỗi có thể do điều kiện môi trƣờng không tốt. Ví dụ, bức xạ, điện từ trƣờng, các lĩnh vực điện tử và ô nhiễm cũng có thể là nguyên nhân của lỗi phần mềm hoặc thay đổi điều kiện phần cứng cũng ảnh hƣởng đến việc thực hiện của phần mềm. 1.1.4. Chi phí phải trả cho một phần mềm có lỗi Chi phí phải trả cho một phần mềm có lỗi tăng lên đáng kể trong vòng đời phát triển phần mềm thể hiện trong hình 1.1 [6]. Hình 1.1.Chi phí tìm và sửa lỗi phần mềm  Một lỗi đƣợc làm và phát hiện trong giai đoạn đặc tả sẽ rẻ hơn để tìm và sửa lỗi.  Một lỗi đƣợc làm trong giai đoạn đặc tả nhƣng cho đến khi kiểm thử chấp nhận hoặc hệ thống đƣợc thực thi nó mới đƣợc phát hiện, nó sẽ đắt hơn rất nhiều để sửa nó. Bởi vì sẽ phải làm lại đặc tả và có thể sửa cả thiết kế, và việc kiểm thử cũng sẽ đƣợc thực hiện lại để đạt đƣợc mức độ tin cậy nhƣ yêu cầu. Đôi khi nghiêm trọng hơn, sản phẩm sẽ không đƣợc chấp nhận nếu đặc điểm kỹ thuật đã sai, ngƣời sử dụng không hài lòng về hệ thống đƣợc bàn giao. 1.2. SỰ PHÁT TRIỂN PHẦN MỀM VÀ VẤN ĐỀ CHẤT LƢỢNG 1.2.1. Sự phát triển phần mềm Phần mềm đƣợc phát triển qua nhiều giai đoạn, tính từ khi nó đƣợc đề xuất cho đến khi nó bị bỏ đi và có thể coi đó là một vòng đời phát triển phần mềm. Những giai đoạn trong vòng đời phát triển phần mềm có thể là phân tích yêu cầu, thiết kế, mã hóa, kiểm thử, vận hành, bảo trì, … Phạm vi và thứ tự của nó tùy 6 thuộc vào từng mô hình phát triển phần mềm và dự án cụ thể. Thông thƣờng các mô hình thƣờng chứa 4 giai đoạn cơ bản sau: - Đặc tả phần mềm: Các chức năng của phần mềm và điều kiện để nó hoạt động phải đƣợc định nghĩa. - Sự phát triển phần mềm: Để phần mềm đạt đƣợc nhƣ đã đặc tả thì phải trải qua giai đoạn này. - Đánh giá phần mềm: Phần mềm phải đƣợc kiểm tra, đánh giá để đảm bảo rằng nó đáp ứng đƣợc những gì mà khách hàng muốn. - Sự tiến hóa của phần mềm: Phần mềm phải đƣợc tiến hóa để thỏa mãn sự thay đổi các yêu cầu của khách hàng. Có 3 mô hình phát triển phần mềm thƣờng đƣợc sử dụng là: Mô hình thác nƣớc, mô hình chữ - V và mô hình lặp. Chi tiết về 3 mô hình này sẽ đƣợc mô tả ở chƣơng 2. 1.2.2. Chất lƣợng phần mềm Chất lƣợng phần mềm là mức độ mà một thành phần, hệ thống hay một quy trình đáp ứng các yêu cầu và mong đợi của ngƣời sử dụng/khách hàng. Để có đƣợc một phần mềm chất lƣợng tốt, cần phải có một mô hình phát triển phù hợp, các giai đoạn trong mô hình cần đƣợc chuẩn bị và thực hiện tốt, cần phải có một đội ngũ đảm bảo chất lƣợng phần mềm với nhiệm vụ thƣờng xuyên kiểm tra tiến độ công việc và chất lƣợng công việc. Chất lƣợng có một số đặc điểm nhƣ sau: 1) Chất lƣợng là dựa vào những quy trình sản xuất tốt và đáp ứng đƣợc các yêu cầu đã đƣợc chỉ ra. 2) Chất lƣợng đƣợc đo bằng việc nhìn vào các đặc tính của sản phẩm nhƣ độ tin cậy, tính hữu dụng, tính hiệu quả, khả năng bảo trì, khả năng di chuyển, … 3) Chất lƣợng là sự phù hợp cho sử dụng 4) Chất lƣợng bao gồm mong đợi về thời gian, giá tiền, sự nỗ lực của con ngƣời đã đƣợc bỏ ra một cách hiệu quả 5) Chất lƣợng phụ thuộc vào cảm nhận cá nhân của mỗi ngƣời. 1.3. ĐẢM BẢO CHẤT LƢỢNG PHẦN MỀM 1.3.1. Kiểm thử phần mềm Kiểm thử phần mềm là một quá trình xuyên suốt vòng đời phát triển của phần mềm. Kiểm thử không chỉ đơn giản là thực thi một chƣơng trình để tìm ra lỗi, mà nó có thể bao gồm cả các hoạt động tĩnh nhƣ kiểm tra các tài liệu yêu cầu, phân tích yêu cầu, mã nguồn, kế hoạch, … và việc chuẩn bị tài liệu cho việc thực hiện kiểm thử nhƣ lựa chọn điều kiện kiểm thử và thiết kế các ca kiểm thử. Sau khi thực hiện kiểm thử sẽ tiến hành phân tích , đánh giá kết quả kiểm thử và báo cáo kết quả kiểm thử. Mục tiêu của kiểm thử phần mềm bao gồm: 7 + Tìm các lỗi, khuyết điểm chƣa đƣợc phát hiện và tìm một cách sớm nhất có thể + Tạo đƣợc niềm tin cho khách hàng, doanh nghiệp và các bên liên quan về chất lƣợng của sản phẩm + Cung cấp thông tin về sản phẩm cho các bên liên quan để đƣa ra những quyết định đúng đắn, kịp thời, đảm bảo chất lƣợng cho sản phẩm. + Ngăn chặn đƣợc lỗi, khuyết điểm có thể xảy ra. Hạn chế đƣợc những rủi ro cho sản phẩm 1.3.2. Nguyên tắc kiểm thử phần mềm Một số nguyên tắc kiểm thử đã đƣợc đề nghị từ 40 năm về trƣớc và đã đƣa ra một số phƣơng châm chung phổ biến cho kiểm thử phần mềm, bao gồm các nguyên tắc sau [6]: - Nguyên tắc 1: Kiểm thử đƣa ra lỗi Kiểm thử có thể cho thấy rằng phần mềm đang có lỗi, nhƣng không thể chứng minh rằng phần mềm không có lỗi. Kiểm thử làm giảm xác suất lỗi chƣa tìm thấy vẫn còn trong phần mềm, thậm chí là không còn lỗi nào, nhƣng nó không phải là bằng chứng để chứng minh phần mềm không có lỗi. - Nguyên tắc 2: Kiểm thử mọi thứ là không thể Kiểm thử mọi thứ (tất cả các tổ hợp của điều kiện đầu vào) là không thể thực hiện đƣợc, trừ phi nó chỉ bao gồm một số trƣờng hợp bình thƣờng (ít trƣờng hợp tổ hợp thì có thể kiểm thử toàn bộ đƣợc). Thay vì kiểm thử toàn bộ, việc phân tích rủi ro và dựa trên mức độ ƣu tiên chúng ta có thể tập trung việc kiểm thử vào một số điểm cần thiết. - Nguyên tắc 3: Kiểm thử sớm Để tìm đƣợc lỗi sớm, các hoạt động kiểm thử nên đƣợc bắt đầu càng sớm càng tốt trong quy trình phát triển (vòng đời phát triển) phần mềm hoặc hệ thống, và nên tập trung vào các hoạt động đã định trƣớc. - Nguyên tắc 4: Sự tập trung lỗi Nỗ lực kiểm thử nên tập trung một cách cân đối vào mật độ lỗi dự kiến và lỗi phát hiện ra sau đó trong các mô-đun. Một số ít các mô-đun thƣờng chứa nhiều lỗi không phát hiện ra trong lúc kiểm thử trƣớc khi phát hành, hoặc chịu trách nhiệm cho hầu hết các lỗi hoạt động của phần mềm. Để hiểu rõ hơn nguyên tắc này, ta cần xem xét 3 điều sau:  Nguyên tắc tổ gián: “Chỗ nào có một vài con gián , thì đâu đó xung quanh nó sẽ có cả tổ gián”. Điều này có nghĩa rằng ở chỗ nào có một vài lỗi thì xung quanh, gần gần chỗ đó sẽ có nhiều lỗi.  Nguyên tắc 80/20: Thông thƣờng 20% chức năng quan trọng trong một chƣơng trình có thể gây ra đến 80% tổng số lỗi phát hiện đƣợc trong chƣơng trình đó. 8  Kiểm thử mọi thứ là không thể (nguyên tắc 2): Do đó cần phải phân tích, tính toán mức độ ƣu tiên để quyết định tập trung vào kiểm thử chỗ nào. Cần kiểm thử kỹ các chức năng quan trong, khi tìm thấy lỗi thì tiếp tục kiểm thử những gì liên quan và những chức năng gần nó để tìm ra nhiều lỗi hơn. - Nguyên tắc 5: Nghịch lý thuốc trừ sâu Trong nông nghiệp, nếu chúng ta cứ phun một số loại thuốc với nồng độ giống nhau, trong một khoảng thời gian dài thì có một số con sâu sẽ quen dần và cuối cùng việc phun thuốc giống nhƣ tắm chúng vậy. Lúc đó, chúng ta không thể diệt sạch chúng đƣợc. Do vậy, để diệt sạch sâu một cách hiệu quả, ngƣời ta thƣờng thay đổi loại thuốc trừ sâu, mỗi loại chỉ dùng trong khoảng thời gian ngắn. Áp dụng nguyên tắc này trong kiểm thử, nếu việc kiểm thử tƣơng tự nhau đƣợc lặp đi lặp lại nhiều lần, thì cuối cùng sẽ có một số ca kiểm thử (test case) sẽ không còn tìm thấy bất kỳ lỗi nào mới. Vì vậy, các ca kiểm thử cần phải đƣợc xem xét và sửa đổi thƣờng xuyên, cần phải viết các ca kiểm thử mới và khác nhau để thực hiện nhiều phần khác nhau của phần mềm hoặc hệ thống để tìm ra lỗi tiềm ẩn nhiều hơn nữa. - Nguyên tắc 6: Kiểm thử theo các ngữ cảnh độc lập Nguyên tắc này là việc kiểm thử phụ thuộc vào ngữ cảnh, kiểm thử là khác nhau trong những ngữ cảnh khác nhau. Ví dụ: Kiểm thử một chƣơng trình tính toán có nhiều chức năng, nếu kiểm thử chƣơng trình này cho mẫu giáo thì chỉ cần kiểm thử chức năng cộng trừ, nhƣng nếu kiểm thử chƣơng trình này cho cấp hai thì là cộng trừ nhân chia ... - Nguyên tắc 7: Sự sai lầm về việc không có lỗi Việc tìm và sửa chữa lỗi sẽ không giúp đƣợc gì nếu hệ thống đƣợc xây dựng xong nhƣng không thể dùng đƣợc và không đáp ứng đƣợc nhu cầu và sự mong đợi của ngƣời dùng. Mặc dù phần mềm đã qua kiểm thử, không còn lỗi nào , nhƣng lại cho ra một sản phẩm không đáp ứng đƣợc cầu của ngƣời dùng thì dự án phần mềm đó coi nhƣ thất bại. 1.3.3. Quy trình kiểm thử cơ bản Quy trình kiểm thử cơ bản đƣợc chia thành 5 giai đoạn nhƣ sau [6]: 1.3.3.1. Lập kế hoạch và điều khiển kiểm thử + Lập kế hoạch kiểm thử: Bƣớc đầu tiên là lập kế hoạch cho tất cả các hoạt động kiểm thử sẽ đƣợc thực hiện và các phƣơng pháp đƣợc sử dụng. Những vấn đề quan trọng nhất đối với kế hoạch kiểm thử:  Xác định phạm vị kiểm thử, rủi ro, mục tiêu và chiến lƣợc kiểm thử  Xác định hƣớng tiếp cận kiểm thử  Xác định các tài nguyên kiểm thử 9  Thi hành các chính sách và chiến lƣợc kiểm thử  Lên lịch cho việc phân tích và thiết kế kiểm thử  Lên lịch cho việc thi hành, thực hiện và đánh giá kiểm thử  Xác định tiêu chuẩn đầu ra của kiểm thử + Điều khiển kiểm thử: Là hành động so sánh tiến trình thực tế với kế hoạch kiểm thử đã đƣợc đƣa ra để đảm bảo rằng mọi hoạt động vẫn nằm trong kế hoạch. Những vấn đề quan trọng nhất trong điều khiển kiểm thử:  Đo và phân tích các kết quả của quá trình kiểm tra lại và kiểm thử  Theo dõi và ghi chép tiến độ, độ bao phủ và các tiêu chuẩn đầu ra của kiểm thử  Cung cấp thông tin về kiểm thử  Bắt đầu các hoạt động hiệu chỉnh  Đƣa ra các quyết định 1.3.3.2. Phân tích và thiết kế kiểm thử Phân tích và thiết kế kiểm thử là hành động chuyển các mục tiêu kiểm thử thành các điều kiện kiểm thử và các ca kiểm thử (test case). Những vấn đề quan trọng của phân tích và thiết kế kiểm thử:  Phân tích kiểm thử  Xem xét các nền tảng kiểm thử nhƣ yêu cầu, đặc tả thiết kế, kiến trúc mạng/hệ thống, các rủi ro về chất lƣợng  Chỉ ra và đánh mức độ ƣu tiên cho các điều kiện, dữ liệu kiểm thử dựa trên phân tích các vấn đề kiểm thử, các đặc tả, hành vi và kiến trúc của nó  Thiết kế kiểm thử  Lựa chọn những kết hợp cụ thể của dữ liệu kiểm thử, các hoạt động và kết quả mong đợi để phủ toàn bộ nền tảng kiểm thử (test basis)  Đánh giá khả năng kiểm thử của yêu cầu và hệ thống  Thiết kế môi trƣờng kiểm thử  Chỉ ra bất kỳ cơ sở hạ tầng hoặc công cụ cần dùng.  Tạo những theo dõi 2 chiều giữa nền tảng kiểm thử và các ca kiểm thử 1.3.3.3. Thi hành và thực hiện kiểm thử Thi hành và thực hiện kiểm thử là hành động chỉ ra các thủ tục hoặc các kịch bản kiểm thử bởi sự kết hợp giữa ca kiểm thử theo thứ tự và một số thống tin cần thiết khác cho việc thực hiện kiểm thử, cài đặt môi trƣờng và các kiểm thử đƣợc thực hiện. Những vấn đề quan trọng trong thi hành và thực hiện kiểm thử:  Thi hành kiểm thử  Hoàn thành, thi hành và đƣa ra mức độ ƣu tiên cho các ca kiểm thử, tạo dữ liệu kiểm thử, viết và đƣa ra mức độ ƣu tiên cho các thủ tục kiểm thử  Chuẩn bị dụng cụ kiểm thử và viết các script cho kiểm thử tự động 10  Tổ chức các bộ kiểm thử và chuỗi của các ca kiểm thử để việc thực hiện kiểm thử có hiệu quả  Đảm bảo rằng môi trƣờng kiểm thử đã đƣợc cài đặt đúng  Xem xét và cập nhật tài liệu theo dõi 2 chiều giữa nền tảng kiểm thử và ca kiểm thử  Thực hiện kiểm thử  Thực hiện bằng tay hoặc tự động bộ kiểm thử và các ca kiểm thử  Ghi lại chi tiết kết quả kiểm thử nhƣ thời gian, phiên bản phần mềm, công cụ, các phần mềm kiểm thử  So sánh kết quả thực tế và kết quả mong đợi  Báo cáo và phân tích những rắc rối xảy ra  Thực hiện kiểm thử xác nhận và/hoặc kiểm thử hồi quy 1.3.3.4. Đánh giá và báo cáo Là hoạt động đánh giá việc thực hiện kiểm thử dựa trên các mục tiêu đã đƣợc chỉ rõ. Những vấn đề quan trọng trong đánh giá và báo cáo:  Kiểm tra kết quả chi tiết của những ca kiểm thử chống lại tiêu chuẩn đầu ra mà đã đƣợc chỉ ra trong kế hoạch kiểm thử  Quyết định thêm các ca kiểm thử nếu cần hoặc nếu tiêu chuẩn đầu ra bị thay đổi  Viết một báo cáo tóm tắt các hoạt động và kết quả kiểm thử cho khách hàng 1.3.3.5. Kết thúc kiểm thử (Test Closure Activities) Là hành động tập hợp lại các dữ liệu sau khi hành động kiểm thử hoàn thành để củng cố thêm kinh nghiệm, phần mềm kiểm thử (testware), sự kiện và các con số. Hành động kết thúc kiểm thử xảy ra tại những cột mốc quan trọng của dự án nhƣ hệ thống phần mềm đƣợc bàn giao, hoàn thành hoặc hủy dự án kiểm thử, cột mốc quan trọng đã đạt đƣợc, hoặc một bàn giao bảo trì đã đƣợc hoàn thành. Những vấn đề quan trọng trong giai đoạn kết thúc kiểm thử:  Kiểm tra kế hoạch chuyển giao đã đƣợc bàn giao  Đóng tất cả những báo cáo về sự cố hoặc bản ghi những thay đổi phát sinh còn sót lại và đang ở trạng thái mở  Tài liệu chấp nhận của hệ thống  Hoàn thiện và lƣu trữ các tài liệu kiểm thử, môi trƣờng và cơ sở hạ tầng của kiểm thử cho sử dụng sau này.  Trình bày các phần mềm kiểm thử để phục vụ cho tổ chức bảo trì  Phân tích để đƣa ra các bài học kinh nghiệm, xác định những thay đổi cần thiết cho lần bàn giao tiếp theo và những dự án tiếp theo  Sử dụng những thông tin thu thập để cải thiện kỹ năng kiểm thử
- Xem thêm -

Tài liệu liên quan