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. z 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. TỔNG QUAN VỀ PHÁT TRIỂN PHẦN MỀM VÀ CHẤT LƢỢNG PHẦN MỀM 1. HỆ THỐNG PHẦN MỀM VÀ LỖI PHẦN MỀM 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. 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ó. 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. z 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.
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.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.
SỰ PHÁT TRIỂN PHẦN MỀM VÀ VẤN ĐỀ CHẤT LƢỢNG 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 z 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. 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. ĐẢM BẢO CHẤT LƢỢNG PHẦN MỀM 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: z 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.
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.