Trong quy trình phát triển phần mềm không thể không kể đến quá trình đảm bảo chất lượng phần mềm. Để thuận tiện cho các bạn đang làm bên lĩnh vực công nghệ thông tin đặc biệt là các bạn làm bên phần mềm. Mình xin giới thiệu đến bạn đọc tài liệu Tổng quan về đảm bảo chất lượng phần mềm chúc các bạn học tốt hơn trong lĩnh vực mình đang chọn
1 Chất lượng phần mềm đảm bảo chất lượng phần mềm 1.1 Định nghĩa chất lượng phần mềm Có nhiều định nghĩa chất lượng phần mềm đưa tổ chức, cá nhân khác Trong phạm vi viết trình bày số định nghĩa tiêu biểu *Định nghĩa theo IEEE(1991): o Định nghĩa 1: Chất lượng phần mềm mức độ mà hệ thống, thành phần hệ thống hay tiến trình đáp ứng yêu cầu đặc tả o Định nghĩa 2: Chất lượng phần mềm mức độ mà hệ thống, thành phần hệ thống hay tiến trình đáp ứng yêu cầu mong đợi khách hàng hay người sử dụng *Phân tích hai quan điểm IEEE: o Theo quan điểm thứ IEEE: bị phụ thuộc nhiều vào tài liệu đặc tả yêu cầu, dẫn đến việc xấc định yêu cầu bị sai, thiếu phần mềm làm với đặc tả chưa phần mềm có chất lượng o Theo quan điểm thứ hai IEEE: khách hàng đơi khơng có kiến thức cơng nghệ, họ đưa mong muốn vơ lý thay đổi u cầu với phần mềm nhiều lần, chí thay đổi giai đoạn cuối Điều gây nhiều khó khăn cho việc phát triển phần mềm *Định nghĩa theo Pressman: Chất lượng phần mềm phù hợp yêu cầu cụ thể hiệu chức năng, tiêu chuẩn phát triển phần mềm ghi lại rõ ràng tài liệu với đặc tính ngầm định tất phần mềm phát triển chuyên nghiệp Định nghĩa Pressman đề xuất ba yêu cầu với chất lượng phần mềm phải đáp ứng phát triển phần mềm: o Các yêu cầu chức rõ ràng nhân tố định chất lượng đầu phần mềm o Các tiêu chuẩn chất lượng phần mềm nói đến hợp đồng o Các đặc tính ngầm định cần đáp ứng q trình phát triển cho dù khơng nói đến rõ ràng hợp đồng 1.2 Định nghĩa đảm bảo chất lượng phần mềm Định nghĩa theo Daniel Galin: Đảm bảo chất lượng phần mềm (Software Quality Assure) tập hợp hành động cần thiết lên kế hoạch cách hệ thống để cung cấp đầy đủ niềm tin trình phát triển phần mềm phù hợp để thành lập yêu cầu chức kỹ thuật yêu cầu quản lý theo lịch trình hoạt động giới hạn ngân sách Lỗi phần mềm 2.1 Định nghĩa lỗi phần mềm phân loại lỗi phần mềm o Định nghĩa lỗi phần mềm: Có nhiều định nghĩa lỗi phần mềm hiểu phát biểu cách đơn giản "Lỗi phần mềm khơng khớp chương trình đặc tả nó" o Dựa vào định nghĩa, ta phân loại lỗi phần mềm thành dạng: Lỗi sai: Sản phẩm phần mềm xây dựng khác với đặc tả Lỗi thiếu: Các yêu cầu sản phẩm phần mềm có đặc tả lại khơng có sản phẩm thực tế Lỗi thừa: Sản phẩm thực tế có tính khơng có tài liệu đặc tả 2.2 Các nguyên nhân gây lỗi phần mềm Lỗi phần mềm đến từ nhiều nguyên nhân khác nhau, có nguyên nhân chủ quan nguyên nhân khách quan Dưới chín nguyên nhân chủ yếu gây lỗi phần mềm: *Định nghĩa yêu cầu bị lỗi: Những lỗi việc xác định yêu cầu thường nằm phía khách hàng Một số lỗi thường gặp là: định nghĩa sai yêu cầu, lỗi khơng hồn chỉnh, thiếu u cầu quan trọng trọng yêu cầu không thật cần thiết *Các lỗi giao tiếp khách hàng nhà phát triển: Hiểu lầm giao tiếp khách hàng nhà phát triển nguyên nhân gây lỗi Những lỗi thường xuất giai đoạn đầu dự án Một số lỗi hay gặp phải: hiểu sai dẫn tài liệu yêu cầu, hiểu sai thay đổi khách hàng trình bày lời nói tài liệu, hiểu sai phản hồi thiếu quan tâm đến đề cập khách hàng o Giải pháp khắc phục: Cần có ủy ban liên kết khách hàng nhà cung cấp để tránh lỗi giao tiếp Ủy ban quản trị dự án đứng đầu khách hàng phải giới thiệu người hiểu mặt nghiệp vụ vào ủy ban *Sai lệch có chủ ý với yêu cầu phần mềm: Trong số trường hợp nhà phát triển cố tình làm sai lệnh yêu cầu tài liệu đặc tả Nguyên nhân việc đến từ áp lực thời gian, ngân sách, hay cố tình sử dụng lại mơ-đun từ dự án trước mà chưa phân tích đầy đủ thay đổi để thích nghi với yêu cầu o Giải pháp khắc phục: Dựa thống kê để định xem giải pháp nào, xếp ưu tiên xem bỏ yêu cầu hay sử dụng lại mô-đun *Các lỗi thiết kế logic: Lỗi phần mềm xảy trình chuyên gia thiết kế hệ thống, kiến trúc sư hệ thống, kỹ sư phần mềm, nhà phân tích xây dựng phần mềm theo yêu cầu Các lỗi điển hình bao gồm: o Định nghĩa yêu cầu phần mềm thuật tốn sai o Quy trình định nghĩa có chứa trình tự lỗi o Sai sót định nghĩa biên > hay ≥ o Thiếu sót trạng thái hệ thống phần mềm u cầu *Các lỗi lập trình: Có nhiều lý dẫn đến việc lập trình viên gây lỗi lập trình Những lý bao gồm: hiểu sai tài liệu thiết kế, ngôn ngữ; sai sót ngơn ngữ lập trình; sai sót việc áp dụng công cụ phát triển; sai sót lựa chọn liệu *Khơng tn thủ theo tài liệu hướng dẫn tiêu chuẩn lập trình: Các lỗi phần mềm đến từ việc không tuân thủ tài liệu tiêu chuẩn lập trình tổ chức phát triển phần mềm *Thiếu sót q trình kiểm thử: Lỗi phần mềm đến từ q trình kiểm thử mà người kiểm thử để lọt lỗi Những lỗi đến từ nguyên nhân sau đây: o Kế hoạch kiểm thử chưa hồn chỉnh, để sót u cầu cần kiểm thử o Lỗi tài liệu báo cáo kiểm thử o Việc sửa chữa lỗi phát khơng hồn chỉnh áp lực thời gian hay thiếu cẩn thận Giải pháp: Lên kế hoạch kiểm thử cụ thể giai đoạn đầu dự án *Các lỗi thủ tục: Các thủ tục hướng dẫn cho người sử dụng bước tiến trình Chúng có tầm quan trọng đặc biệt hệ thống phần mềm phức tạp mà tiến trình thực nhiều bước, bước có nhiều kiểu liệu cho phép kiểm tra kết trung gian Các lỗi đến từ việc viết thủ tục *Các lỗi tài liệu: Các lỗi tài liệu vấn đề đội phát triển bảo trì có sai sót tài liệu liên quan Những lỗi nguyên nhân gây lỗi giai đoạn phát triển giai đoạn bảo trì 2.3 Chi phí cho việc sửa lỗi phần mềm Việc kiểm thử sửa lỗi phần mềm thực giai đoạn vòng đời phần mềm Tuy nhiên công việc nên thực sớm tốt giai đoạn sau vòng đời phần mềm, chi phí cho việc tìm sửa lỗi tăng, đặc biệt đến giai đoạn triển khai phần mềm chi phí cho sửa lỗi trở nên lớn ảnh hưởng trực tiếp đến uy tín tổ chức phát triển phần mềm Theo tài liệu Boehm, chi phí cho việc tìm sửa lỗi phần mềm tăng theo hàm mũ biểu đồ sau: _Sơ đồ 1: Chi phí cho việc sửa lỗi phần mềm _ Quy trình xử lý lỗi phần mềm Trước giới thiệu qui trình xử lý lỗi phần mềm, sau trình bày trạng thái có lỗi Sơ đồ 2: Các trạng thái lỗi Trong đó: * New: Lỗi * Assigned: Lỗi gán cho nhân viên phát triển * Resolved: Lỗi xử lý * Confirmed: Lỗi cần chứng thực, thảo luận lại * Canceled: Lỗi xác định lỗi, lỗi bỏ qua * Next: Lỗi không thuộc phạm vi dự án, xử lý giai đoạn khác dự án * Accept: Các lỗi chấp nhận Ví dụ: Các lỗi Framework * Closed: Trạng thái đóng Lỗi sửa thành công Mỗi tổ chức phát triển phần mềm sử dụng công cụ quản lý lỗi riêng, kể đến Mantis công cụ sử dụng phổ biến Phần trình bày qui trình xử lý lỗi phần mềm sử dụng thực tế số tổ chức phát triển gia cơng phần mềm: Sơ đồ 3: Qui trình xử lý lỗi Theo đó, qui trình xử lý lỗi bao gồm bước chính: • Bước 0_Bắt đầu: Phát phần mềm có lỗi • Bước 1_Đưa lỗi lên hệ thống quản lý lỗi • Bước 2_Gán lỗi cho nhân viên phát triển • Bước 3_Xử lý lỗi • Bước 4_Kiểm thử lại • Bước 5_Đóng lỗi 3.1 Bước 1: Đưa lỗi lên phần mềm quản lý lỗi • Người thực hiện: tất thành viên đội dự án quản trị dự án, nhóm kiểm thử, nhóm giải pháp, nhóm lập trình • Trạng thái lỗi NEW *** Một số thông tin cần có lỗi: ** • Category: Thư mục lỗi dùng để phân loại lỗi, lỗi thuộc phần chức phải chọn phần thư mục lỗi tương ứng để thuận tiện cho việc tra cứu, thống kê lỗi chức • Severity (trọng số lỗi): Thơng số biểu độ nghiêm trọng lỗi, thông thường lỗi thuộc ba trọng số đây: • Minor: Các lỗi định dạng (font chữ, cỡ chữ, màu sắc đối tượng, chiều dài đối tượng), lỗi tả, lỗi validate liệu • Major: Các lỗi ràng buộc liệu, lỗi chức nghiệp vụ hệ thống (nhưng chưa gây treo hệ thống hay không làm cho hệ thống không xử lý tiếp) • Crash: Các lỗi chức nghiệp vụ hệ thống gây treo hệ thống, không xử lý tiếp • Reproducibility: Khả tái tạo lỗi Khi phát lỗi, nhân viên kiểm thử cần thực lại phần chức phát lỗi để xét khả tái tạo lỗi lựa chọn khả tái tạo lỗi • Priority: Mức độ ưu tiên việc sửa lỗi • Summary: Tóm tắt nội dung lỗi, coi tiêu đề lỗi • Description: Đây phần mơ tả lỗi, phải mơ tả rõ phần nội dung: • Các bước thực • Kết trả từ hệ thống o Kết mong muốn • Notes: Dùng để đưa lưu ý, trao đổi lỗi thành viên dự án 3.2 Bước 2: Gán lỗi cho nhân viên phát triển • Nhân viên kiểm thử thực gán lỗi cho nhân viên phát triển, người chịu trách nhiệm phần chức bị lỗi • Trạng thái lỗi ASSIGNED • Lưu ý: Trưởng nhóm kiểm thử, quản trị dự án xem xét lại lỗi có trạng thái NEW ASSIGNED hệ thống phần mềm quản lý lỗi: o Nếu thấy khơng phải lỗi đưa lỗi trạng thái CANCELLED nêu rõ nguyên nhân đưa lỗi CANCELLED • Nếu thấy nhân viên kiểm thử mơ tả khơng rõ ràng, thiếu thơng tin chuyển lỗi sang trạng thái CONFIRMED yêu cầu nhân viên kiểm thử bổ sung thêm thơng tin • Nếu thấy lỗi không thuộc phạm vi phát triển dự án giai đoạn chuyển lỗi trạng thái NEXT Quản trị dự án xem xét lại lỗi có trạng thái NEW ASSIGNED, thấy lỗi chấp nhận chuyển lỗi sang trạng thái ACCEPTED nêu rõ nguyên nhân đưa lỗi trạng thái ACCEPTED 3.3 Bước 3: Xử lý lỗi Nhân viên phát triển xem xét lỗi gán cho mình: • Nếu thấy lỗi mô tả lỗi rõ ràng, đầy đủ thông tin, nhân viên phát triển thực sửa lỗi chuyển lỗi trạng thái RESOLVED, đồng thời bắt buộc nêu rõ hướng giải chức bị ảnh hưởng phần NOTES • Các trường hợp khác: Nếu thấy lỗi hệ thống, nhân viên phát triển yêu cầu nhân viên kiểm thử bổ sung thêm thơng tin, thấy lỗi chấp nhận lỗi nhân viên phát triển chuyển lỗi sang trạng thái CONFIRMED nêu rõ lý chuyển lỗi sang trạng thái CONFIRMED phần NOTES 3.4 Bước 4: Kiểm thử lại Theo phân công trưởng nhóm kiểm thử, nhân viên kiểm thử thực kiểm thử lại chức có lỗi trạng thái RESOLVED: • Nếu lỗi sửa chuyển lỗi trạng thái CLOSED • Nếu lỗi chưa sửa sửa phần chuyển lỗi trạng thái ASSIGNED nêu rõ phần chức chưa chỉnh sửa để nhân viên phát triển tiến hành sửa tiếp • Nếu thấy chấp nhận lỗi chuyển lỗi trạng thái ACCEPTED Đồng thời cập nhật kịch kiểm thử để kết case fail (vì lỗi) • Lưu ý: Nếu phần chức bị ảnh hưởng gây lỗi đưa lỗi lên phần mềm quản lý lỗi ... định chất lượng đầu phần mềm o Các tiêu chuẩn chất lượng phần mềm nói đến hợp đồng o Các đặc tính ngầm định cần đáp ứng trình phát triển cho dù khơng nói đến rõ ràng hợp đồng 1.2 Định nghĩa đảm bảo. .. cho dù khơng nói đến rõ ràng hợp đồng 1.2 Định nghĩa đảm bảo chất lượng phần mềm Định nghĩa theo Daniel Galin: Đảm bảo chất lượng phần mềm (Software Quality Assure) tập hợp hành động cần thiết lên... phát triển phần mềm phù hợp để thành lập yêu cầu chức kỹ thuật yêu cầu quản lý theo lịch trình hoạt động giới hạn ngân sách Lỗi phần mềm 2.1 Định nghĩa lỗi phần mềm phân loại lỗi phần mềm o Định