Đảm bảo và kiểm soát chất lượng - Chương 1: Tổng quát về đảm bảo và kiểm soát chất lượng phần mềm

Chất lượng sản phẩm là mức độ đạt được các đặc trưng hay những thuộc tính nào đó của nó. Chẳng hạn:  Chất lượng thiết kế (cấu trúc)  Sự hoàn thiện (tính năng, kiểu dáng )  Sự lâu bền (thời gian dùng, tính khấu hao ) Định nghĩa khác: Chất lượng của sản phẩm được thể hiện bằng các đặc trưng phù hợp với đặc tả của nó

pdf43 trang | Chia sẻ: thuychi16 | Lượt xem: 949 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đảm bảo và kiểm soát chất lượng - Chương 1: Tổng quát về đảm bảo và kiểm soát chất lượng phần mềm, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ĐẢM BẢO VÀ KIỂM SOÁT CHẤT LƯỢNG HCM – Jan-16 Chương 1: Tổng quát về Đảm Bảo và Kiểm Soát chất lượng phần mềm 11/4/2016 Chất lượng là gì? Chất lượng sản phẩm là mức độ đạt được các đặc trưng hay những thuộc tính nào đó của nó. Chẳng hạn:  Chất lượng thiết kế (cấu trúc)  Sự hoàn thiện (tính năng, kiểu dáng)  Sự lâu bền (thời gian dùng, tính khấu hao) Định nghĩa khác: Chất lượng của sản phẩm được thể hiện bằng các đặc trưng phù hợp với đặc tả của nó 1/4/2016 Trang 2 Khái niệm về phần mềm Được xem xét ở hai góc độ:  Góc nhìn người dùng  Góc nhìn chuyên viên tin học 1/4/2016 Trang 3 Phần mềm là gì? Khái niệm về phần mềm Phần mềm dưới góc nhìn của người sử dụng:  Chương trình thực thi được trên máy tính hoặc các thiết bị chuyên dụng khác  Nhằm hỗ trợ cho các nhà chuyên môn trong từng lĩnh vực chuyên ngành thực hiện tốt hơn các thao tác nghiệp vụ của mình 1/4/2016 Trang 4 Khái niệm về phần mềm Phần mềm dưới góc nhìn của chuyên viên Tin học:  Đây là một hệ thống bao gồm 3 thành phần cơ bản: • Thành phần giao tiếp • Thành phần xử lý • Thành phần lưu trữ  Cần được xây dựng để thực hiện theo yêu cầu của người sử dụng 1/4/2016 Trang 5 Đặc trưng của phần mềm Là “vô hình” Yêu cầu không xác định 1 sản phẩm duy nhất Tiến trình không chuẩn hóa, nhiều biến thể Chịu nhiều yếu tố biến động như: công nghệ, môi trường, nghiệp vụ và nguồn lực (thiết bị và con người) 1/4/2016 Trang 6 Chất lượng phần mềm 1/4/2016 Trang 7 Phần mềm Con người Phần cứng Phần mềm khác Tính đúng đắn Tính đúng đắn: - Đầy đủ - Chính xác Dưới góc nhìn của Người sử dụng Chất lượng phần mềm 1/4/2016 Trang 8 Phần mềm Con người Phần cứng Phần mềm khác Tính tiện dụng Tính tiện dụng: - Dễ học - Dễ sử dụng - Giao diện trực quan - Tự nhiên Tính đúng đắn Dưới góc nhìn của Người sử dụng Chất lượng phần mềm 1/4/2016 Trang 9 Phần mềm Con người Phần cứng Phần mềm khác Tính hiệu quả Tính hiệu quả: - Tối ưu sử dụng CPU* - Tối ưu sử dụng bộ nhớ* - Tối ưu sử dụng thiết bị Tính đúng đắn Tính tiện dụng Dưới góc nhìn của Người sử dụng Chất lượng phần mềm 1/4/2016 Trang 10 Phần mềm Con người Phần cứng Phần mềm khác Tính tương thích Tính tương thích: - Import/Export dữ liệu - Tương tác Tính đúng đắn Tính tiện dụng Tính hiệu quả Dưới góc nhìn của Người sử dụng Chất lượng phần mềm 1/4/2016 Trang 11 Phần mềm Con người Phần cứng Phần mềm khác Tính tiến hóa Tính tiến hóa: một trong các tính chất quan trọng nhất được quan tâm xem xét trong ngành Công nghệ Phần mềm Tính đúng đắn Tính tiện dụng Tính hiệu quả Tính tương thích Dưới góc nhìn của Người sử dụng Chất lượng phần mềm 1/4/2016 Trang 12 Chất lượng phần mềm – Theo ISO 9126  Tính chức năng (Functionality)  Tính phù hợp (Suitability)  Tính chính xác (Accuracy)  Khả năng tương tác (Interoperability)  Tính bảo mật/an toàn (Security)  Tính tin cậy (Reability)  Tính hoàn thiện (Maturity)  Khả năng chịu lỗi (Fault tolerant)  Khả năng phục hồi (Recoverability)  Tính khả dụng (Usability)  Dễ hiểu (Understandability)  Dễ học (Learnability)  Có thể sử dụng được (Operability)  Tính hấp dẫn (Attractiveness) 1/4/2016 Trang 13  Tính hiệu quả (Efficiency)  Đáp ứng thời gian (Time behavior)  Sử dụng tài nguyên (Utilization)  Khả năng bảo trì (Maintainability)  Khả năng phân tích (Analysability)  Khả năng thay đổi được (Changeability)  Tính ổn định (Stability)  Khả năng kiểm thử được (Testability)  Tính khả chuyển (Portability)  Khả năng thích nghi (Adaptability)  Khả năng cài đặt (Installability)  Khả năng chung sống (Co-existence)  Khả năng thay thế được (Replaceability) Chất lượng phần mềm Tính chức năng (Functionality)  Nội dung:  Khả năng của phần mềm cung cấp các chức năng đáp ứng được nhu cầu sử dụng khi phần mềm làm việc trong điều kiện cụ thể  Bao gồm:  Tính phù hợp: là khả năng của một phần mềm có thể cung cấp một tập các chức năng thích hợp cho công việc cụ thể phục vụ mục đích của người sử dụng.  Tính chính xác: là khả năng của phần mềm có thể cung cấp các kết quả hay hiệu quả đúng đắn hoặc chấp nhận được với độ chính xác cần thiết.  Khả năng tương tác: khả năng tương tác với một hoặc một vài hệ thống cụ thể của phần mềm.  Tính bảo mật/an toàn: khả năng bảo vệ thông tin và dữ liệu của sản phẩm phần mềm, sao cho người, hệ thống không được phép thì không thể truy cập, đọc hay chỉnh sửa chúng. 1/4/2016 Trang 14 Chất lượng phần mềm Tính tin cậy (Reability) Nội dung:  Là khả năng của phần mềm có thể hoạt động ổn định trong những điều kiện cụ thể  Bao gồm:  Tính hoàn thiện: khả năng tránh các kết quả sai  Khả năng chịu lỗi: khả năng của phần mềm hoạt động ổn định tại một mức độ cả trong trường hợp có lỗi xảy ra ở phần mềm hoặc có những vi phạm trong giao diện.  Khả năng phục hồi: khả năng của phần mềm có thể tái thiết lại hoạt động tại một mức xác định và khôi phục lại những dữ liệu có liên quan trực tiếp đến lỗi. 1/4/2016 Trang 15 Chất lượng phần mềm Tính khả dụng (Usability) Nội dung:  Là khả năng của phần mềm có thể hiểu được, học được, sử dụng được và hấp dẫn người sử dụng trong từng trường hợp sử dụng cụ thể  Bao gồm:  Có thể hiểu được: người dùng có thể hiểu được xem phần mềm có hợp với họ không và và sử dụng chúng thế nào cho những công việc cụ thể.  Có thể học được: người sử dụng có thể học các ứng dụng của phần mềm.  Có thể sử dụng được: khả năng của phần mềm cho phép người dùng sử dụng và điều khiển nó.  Tính hấp dẫn: khả năng hấp dẫn người sử dụng của phần mềm 1/4/2016 Trang 16 Chất lượng phần mềm Tính hiệu quả (Efficiency) Nội dung:  Là khả năng của phần mềm có thể hoạt động một cách hợp lý, tương ứng với lượng tài nguyên nó sử dụng, trong điều kiện cụ thể  Bao gồm:  Đáp ứng thời gian: khả năng của phần mềm có thể đưa ra một trả lời, một thời gian xử lý và một tốc độ thông lượng hợp lý khi nó thực hiện công việc của mình, dưới một điều kiện làm việc xác định.  Sử dụng tài nguyên: khả năng của phần mềm có thể sử dụng một lượng, một loại tài nguyên hợp lý để thực hiện công việc trong những điều kiện cụ thể 1/4/2016 Trang 17 Chất lượng phần mềm Khả năng bảo trì (Maintainability)  Nội dung:  Là khả năng của phần mềm có thể chỉnh sửa. Việc chỉnh sửa bao gồm: sửa lại cho đúng, cải tiến và làm phần mềm thích nghi được với những thay đổi của môi trường, của yêu cầu và của chức năng xác định  Bao gồm:  Có thể phân tích được: phần mềm có thể được chẩn đoán để tìm những thiếu sót hay những nguyên nhân gây lỗi hoặc để xác định những phần cần sửa.  Có thể thay đổi được: phần mềm có thể chấp nhận một số thay đổi cụ thể trong quá trình triển khai.  Tính ổn định: khả năng tránh những tác động không mong muốn khi chỉnh sửa phần mềm.  Có thể kiểm tra được: khả năng cho phép đánh giá được phần mềm chỉnh sửa. 1/4/2016 Trang 18 Chất lượng phần mềm Tính khả chuyển (Portability)  Nội dung:  Là khả năng của phần mềm cho phép nó có thể được chuyển từ môi trường này sang môi trường khác  Bao gồm:  Khả năng thích nghi: khả năng của phần mềm có thể thích nghi với nhiều môi trường khác nhau mà không cần phải thay đổi.  Có thể cài đặt được: phần mềm có thể cài đặt được trên những môi trường cụ thể.  Khả năng cùng tồn tại: phần mềm có thể cùng tồn tại với những phần mềm độc lập khác trong một môi trường chung, cùng chia sẻ những tài nguyên chung.  Khả năng thay thế: phần mềm có thể dùng thay thế cho một phần mềm khác, với cùng mục đích và trong cùng môi trường. 1/4/2016 Trang 19 CHUYỆN VUI: VÒNG ĐỜI CHẤT LƯỢNG 1. Lập trình viên đưa ra đoạn mã mà anh ta tin rằng không hề có lỗi. 2. Kiểm tra chất lượng sản phẩm, phát hiện 20 lỗi. 3. Lập trình viên sửa 10 lỗi và gửi e-mail tới phòng Thử nghiệm sản phẩm về 10 "vấn đề" còn lại mà anh ta nhất định cho rằng không phải là lỗi. 4. Phòng thử nghiệm sản phẩm e-mail lại rằng 5 trong số 10 đoạn sửa lỗi không hoạt động và đính kèm danh sách 15 lỗi mới. 1/4/2016 Trang 20 CHUYỆN VUI: VÒNG ĐỜI CHẤT LƯỢNG 5. Phòng tiếp thị gởi thông báo rằng họ đã hoàn tất khâu quảng bá cho sản phẩm. Giám đốc gọi điện xuống hỏi về tiến độ công việc và củng cố tinh thần "chiến sỹ". Phòng phát hành cử nhân viên đến nhận đĩa nguồn phần mềm. Phòng tiếp thị thông báo trên truyền hình và báo chí về việc hoãn lại ngày phát hành sản phẩm vài tuần... 6. Ơn trời! Cuối cùng sản phẩm cũng được phát hành. 7. Trong vòng một tuần, người sử dụng phát hiện ra 137 lỗi mới. 1/4/2016 Trang 21 CHUYỆN VUI: VÒNG ĐỜI CHẤT LƯỢNG 8. Lập trình viên phụ trách phát triển sản phẩm đã xin nghỉ phép. 9. Một nhóm "cứu nạn" gồm nhiều lập trình viên kỳ cựu được thành lập khẩn cấp. Sau một tuần làm việc cật lực, họ đã "thanh toán" hết 137 lỗi, nhưng lại được thông báo về 456 lỗi mới. 10. Mọi người tổng kết được 783 lỗi trong chương trình. 11. Giám đốc ngồi tại bàn giấy xem xét các báo cáo và quyết định thuê một lập trình viên mới toanh để xây dựng lại phần mềm từ đống đổ nát ban đầu. 12. NEW. Lập trình viên mới đưa ra đoạn mã mà anh ta tin rằng không hề có lỗi. 1/4/2016 Trang 22 Khủng hoảng phần mềm  Giai đoạn từ giữa 1960 đến giữa 1970: Số lượng các phần mềm tăng vọt (do sự phát triển của phần cứng: tăng khả năng, giá thành hạ)  Có quá nhiều khuyết điểm trong các phần mềm được dùng trong xã hội:  Kế hoạch • Không đánh giá đúng giá thành • Không đúng tiến độ • Chi phí phát triển/chi phí bảo trì  Về mặt pháp lý • Hợp đồng không rõ ràng, không chặt chẽ  Nhân lực • Vấn đề đào tạo  Thiếu tiêu chuẩn đánh giá sản phẩm  Thiếu qui trình quản lý 1/4/2016 Trang 23 Khủng hoảng phần mềm  Nguyên nhân  Các khuyết điểm của phần mềm có nguồn gốc chính từ phương pháp, cách thức và quy trình tiến hành xây dựng phần mềm: • Cảm tính: mỗi người theo một phương pháp riêng • Thô sơ, đơn giản: chỉ tập trung vào việc lập trình mà ít quan tâm đến các công việc cần làm khác (khảo sát hiện trạng, phân tích yêu cầu, thiết kế) • Thủ công: còn thiếu các công cụ hỗ trợ quy trình phát triển 1/4/2016 Trang 24 Khủng hoảng phần mềm Điều tra của General Acounting Office (1982) trên nhiều dự án với tổng vốn đầu tư $68.000.000  Không giao sản phẩm: 29%  Sử dụng không được: 47%  Bỏ cuộc: 19%  Sử dụng được sau khi đã chỉnh sửa: 3%  Tốt: 2% 1/4/2016 Trang 25 Khủng hoảng phần mềm 1/4/2016 Trang 26 Cấu trúc tổ chức trong dự án phần mềm hiện đại Quản lý dự án (Project Manager) Trưởng nhóm kỹ thuật (Technical Lead) Kỹ thuật (Technical#1) Trưởng nhóm phân tich (Business Analyst Lead) Phân tích viên (Business Analyst#1) Trưởng nhóm kiểm soát chất lượng (QC Lead) Kiểm soát chất lượng (QC#1) Trưởng nhóm (Team lead#1) Lập trình viên Developer#1 Team lead#2 Đảm bảo chất lượng (Quality Assurance) 1/4/2016 Trang 27 Rắc rối tên gọi và chức năng  4 tên gọi được sử dụng nhiều nhất  QA (quality Assurance) - Đảm bảo chất lượng  SQA (Software quality Assurance) – Đảm bảo chất lượng phần mềm  QC (quality control) - Kiểm soát chất lượng  Tester hay testing engineer - kỹ sư kiểm định  Cách tốt nhất để hiểu và phân biệt kỹ sư đảm bảo và kỹ sư kiểm soát dựa hoạt động của họ trong dự án 1/4/2016 Trang 28 QA&QC trong quy trình phát triển phần mềm 1/4/2016 Trang 29 QA QC Những nhiệm vụ chính của QC Khảo sát, chạy thử để bảo đảm phần mềm (PM) thỏa mãn các yêu cầu về chức năng và khả năng vận hành Báo cáo các lỗi để các bộ phận liên quan chỉnh sửa. Công việc của QC liên quan đến sản phẩm (product) Ví dụ:phần mềm trả ra các báo cáo kế toán chính xác, có thể đáp ứng cho 1.000 người sử dụng cùng 1 lúc... 1/4/2016 Trang 30 Qui trình kiểm thử phần mềm 1/4/2016 Trang 31 Lập kế hoạch test Thiết kế test So sánh kết quả test với test case Chuẩn bị dữ liệu test Chạy ứng dụng với bộ dữ liệu test Test Report Test Results Test Data Test CaseTest plan Những công việc cụ thể của QC  Lên kế hoạch kiểm thử  Chuẩn bị môi trường test  Windows XP, 2000, 2003  Linux  IE, FireFox, Netscape, Mozilla  Test Database, Test data   Viết test case  Thực hiện test các test case trong từng môi trường khác nhau  Mô tả Bug và chi tiết các bước để tạo ra bug  Theo dõi quá trình Fix Bug  Báo cáo kết quả test 1/4/2016 Trang 32 Những công cụ cần thiết cho QC Công cụ quản lý lỗi: Bugzilla, Mantis Công cụ phân tích code: Visual Studio, StyleCop Công cụ tạo testcase: excel, word Công cụ hỗ trợ kiểm thử tốc độ, thời gian đáp ứng Cộng cụ kiểm thử tự động: Quick Test Pro, Selenium 1/4/2016 Trang 33 Những nhiệm vụ chính của QA Giám sát để bảo đảm các tiêu chuẩn và quy trình sản xuất phần mềm được định nghĩa và tuân thủ nghiêm túc Công việc của QA liên quan đến quy trình (process). Ví dụ: Kiểm tra để bảo đảm các Yêu cầu khách hàng được xem xét cẩn thận và mọi người hiểu giống nhau, các tài liệu đi kèm được kiểm tra trước khi gửi cho khách hàng, đúng quy trình của công ty 1/4/2016 Trang 34 Những nhiệm vụ chính của QA (tt) 1/4/2016 Trang 35 QA vs QC 1/4/2016 Trang 36 Những kỹ năng của QC  Techniques skill  Nắm vững các kỹ thuật của kiểm soát chất lượng PM: lập kế hoạch, thiết kế và thực hiện những kịch bản kiểm thử  Nắm vững 1 số công cụ hỗ trợ cho việc kiểm thử như: các công cụ test tự động (Quick Test Pro, Autoit, Selenium), công cụ quản lý lỗi (bugzilla, Jira)  Một ít kiến thức về lập trình 1/4/2016 Trang 37 Soft skill  Kỹ năng đọc tài liệu  Kỹ năng giao tiếp  Khả năng tư duy  Tính cẩn thận  Khả năng Anh văn Bạn có thích hợp làm QC không? Khả năng giao tiếp (nói và viết) của bạn như thế nào? Bạn có nhạy cảm với lỗi hay ko? Khi nhìn nhận sự việc, bạn có hay giả sử không? Khả năng lắng nghe, thuyết phục người khác, đánh giá của bạn như thế nào? Bạn là người nguyên tắc, nói có sách mách có chứng hay thích suy diễn? Bạn follow up 1 sự kiện có tốt không? 1/4/2016 Trang 38 QC trở thành một nghề thời thượng Không có kiểm thử phần mềm – Không có phần mềm Bạn giữ được uy tín và tiết kiệm chi phí cho công ty mình (Điểm mấu chốt) Đem đến sự yên tâm (Sự tự tin) Kiểm thử phần mềm tạo cho bạn cơ hội liên tục tiếp cận những điều tốt nhất và mới nhất Kiểm thử phần mềm đòi hỏi cao về tư duy, phân tích và sáng tạo Nhiều người có thể làm, nhưng rất ít người có thể làm tốt 1/4/2016 Trang 39 Những kỹ năng của QA Kỹ năng cứng (Techniques skill)  Nắm vững các kỹ thuật của đảm bảo chất lượng PM: quy trình, các mẫu lập kế hoạch, kiểm tra tài liệu, ghi nhận, báo cáo  Hiểu rõ về các tiêu chuẩn chất lượng phần mềm phổ biến: CMMI, ISO-9001 1/4/2016 Trang 40 Kỹ năng mềm (Soft skill)  Kỹ năng giao tiếp  Khả năng tư duy và đánh giá được những vấn đề đang và sẽ xảy ra  Tính cẩn thận  Khả năng Anh văn Những chứng nhận quốc tế của QA & QC 1/4/2016 Trang 41 ĐẢM BẢO VÀ KIỂM SOÁT CHẤT LƯỢNG 421/4/2016 Chương tiếp theo Tại sao phải kiểm thử (testing) phần mềm? Kiểm thử là gì? Những nguyên lý tổng quát trong kiểm thử Quy trình Kiểm thử cơ bản Các kiểu kiểm thử 1/4/2016 Trang 43
Tài liệu liên quan