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ó
43 trang |
Chia sẻ: thuychi16 | Lượt xem: 1050 | Lượt tải: 1
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