Professional Documents
Culture Documents
Cong Nghe Phan Mem - Chuong9
Cong Nghe Phan Mem - Chuong9
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 1
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 2
1
Định nghĩa về chất lượng phần mềm
(ISO) định nghĩa chất lượng như tổng hòa các tính chất của sản
phẩm liên quan đến khả năng của nó để thỏa mãn các yêu cầu
đặt ra (ISO8042:1994) hay mức độ mà tập các tính chất hoàn
thành các yêu cầu (ISO9000:2000).
Tương thích với yêu cầu có nghĩa là qui trình và sản phẩm của dự
án thỏa mãn các đặc tả đề ra.
phù hợp cho sử dụng có nghĩa là sản phẩm có thể được dùng y
như nó được kỳ vọng.
Các khía cạnh chất lượng :
sản phẩm : được phân phối tới khách hàng
qui trình : tạo ra sản phẩm phần mềm
tài nguyên : (cả sản phẩm lẫn qui trình đều cần tài nguyên)
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 3
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 4
2
Chất lượng qui trình & chất lượng sản phẩm
“Hộp đen chứng thực rằng không có
lỗi cấu trúc, nhưng chúng ta có vấn
đề chất lượng nghiêm trọng trong
khâu lắp ráp cuối cùng.”
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 5
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 6
3
Các thuộc tính chất lượng
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 7
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 8
4
9.2 Kiểm thử phần mềm
Kiểm thử được mong đợi để chỉ ra rằng phần mềm thực hiện
những gì được mong đợi và khám phá các lỗi phần mềm trước khi
nó được phân phối để sử dụng.
Có thể phô bày sự hiện diện của lỗi, chứ không phải sự vắng mặt
các lỗi.
Kiểm thử là 1 phần của qui trình V & V tổng quát hơn, qui trình
này còn bao gồm các kỹ thuật thẩm định tĩnh.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 9
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 10
5
Đảm bảo chất lượng
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 11
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 12
6
Tâm lý kiểm thử
kiểm thử phụ thuộc nhiều vào mục tiêu là gì.
Myers nói :
nếu mục tiêu của bạn là chỉ ra sự vắng mặt các lỗi, bạn sẽ
không khám phá nhiều thứ.
nếu bạn đang có gắng chỉ ra chương trình chạy đúng, tiềm
thức của bạn sẽ tạo các test case an toàn.
nếu mục tiêu của bạn là chỉ ra sự tồn tại của lỗi, bạn sẽ khám
phá số lượng lớn các lỗi.
kiểm thử là qui trình thi hành phần mềm với mong muốn tìm các
lỗi của nó (G. Myers).
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 13
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 14
7
Phân biệt kiểm tra tĩnh với kiểm thử động
Kiểm tra tĩnh
liên quan đến việc phân tích sự miêu tả phần mềm tĩnh để
khám phát các lỗi.
có thể được bổ sung bởi việc phân tích mã nguồn và tài liệu
dựa trên tiện ích.
kiểm thử phần mềm :
liên quan đến việc thi hành và quan sát hành vi phần mềm
phần mềm được thi hành với dữ liệu kiểm thử rồi quan sát
hành vi hoạt động của nó.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 15
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 16
8
Phân biệt kiểm tra tĩnh với kiểm thử động
NASA's Java PathFinder (JPF for short) is an instrumented JVM that
provides a state model checker. It runs your program by trying all
potential execution paths through it, checking properties as it goes to
detect problems like deadlocks or unhandled exceptions.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 17
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 18
9
Mô hình của qui trình kiểm thử phần mềm
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 19
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 20
10
9.3 Kiểm thử trong khi phát triển
được thực hiện bởi đội ngũ phát triển phần mềm.
kiểm thử đơn vị :
kiểm thử từng đơn vị nhỏ nhất sau khi coding (hàm, class)
tập trung kiểm thử chức năng của đơn vị.
kiểm thử thành phần :
nhiều đơn vị nhỏ được tích hợp để tạo thành thành phần phức
hợp.
tập trung việc kiểm thử giao diện của thành phần.
kiểm thử tổng thể phần mềm :
sau khi các thành phần được tích hợp, ta kiểm thử phần mềm
như 1 thể thống nhất.
tập trung vào kiểm thử việc giao tiếp giữa các thành phần.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 21
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 22
11
Kiểm thử đơn vị : hộp trắng/hộp đen
from
requirements Compare actual output
with require output
from
requirements
Confirm expected
& key design
behaviour
elements
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 23
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 24
12
Kiểm thử đơn vị : hộp trắng/hộp đen
switch (i) {
case 1:
do_something(1); break;
case 2:
do_something(2); break;
case 3:
do_something(1); break;
case 4:
do_something(4); break;
default:
break;
}
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 25
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 26
13
Kiểm thử giao tiếp
Phát hiện các sai sót bởi vì :
các lỗi giao tiếp.
hay giả định sai về giao tiếp.
Các kiểu giao tiếp :
giao tiếp tham số
giao tiếp bộ nhớ dung chung.
giao tiếp thủ tục
giao tiếp truyền thông báo.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 27
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 28
14
Kiểm thử tự động
bất kỳ khi nào có thể, kiểm thử đơn vị nên được tự động hóa.
dùng 1 framework tự động hóa việc kiểm thử (như JUnit).
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 29
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 30
15
Kiểm thử hệ thống (tổng thể phần mềm)
Volume
Subject product to large amounts of input.
Usability
Measure user reaction (e.g., score 1-10).
Performance
Measure speed under various circumstances.
Configuration
Configure to various hardware / software
Compatibility
with other designated applications
Reliability / Availability
Measure up-time over extended period.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 31
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 32
16
Kiểm thử use-case
Các use-case được phát triển để nhận dạng các tương tác giữa
phần mềm với môi trường xung quanh, do đó chúng có thể được
dùng làm cơ sở để kiểm thử hệ thống phần mềm.
mỗi use-case thường liên quan đến nhiều thành phần chức năng
của phần mềm, do đó kiểm thử use-case sẽ kích hoạt các tương
tác giữa các thành phần này và có thể phơi bày lỗi hay sai sót.
lược đồ trình tự kết hợp với use-case sẽ miêu tả các thành phần
và các tương tác cần được test.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 33
lợi ích của việc phát triển code hướng kiểm thử :
• phủ Code
• kiểm thử hồi qui (Regression)
• gở rối đơn giản hóa.
• lập tài liệu phần mềm
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 34
17
Kiểm thử hồi quy
kiểm thử hồi quy là kiểm tra xem các thay đổi có làm hư các đoạn
code cũ đã chạy tốt không.
sẽ tốt hơn nếu kiểm thử hồi quy được kiểm thử tự động.
tất cả test-case được kiểm thử lại mỗi lần có sự thay đổi trong phần
mềm.
các test-case phải kiểm thử thành công trước khi sự thay đổi được
chấp thuận.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 35
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 36
18
Kiểm thử dựa trên các yêu cầu phần mềm
liên quan đến việc xem xét từng yêu cầu riêng biệt và phát triển
các test-case cho riêng mỗi yêu cầu.
Thí dụ : các yêu cầu của phần mềm Mentcare :
• If a patient is known to be allergic to any particular medication,
then prescription of that medication shall result in a warning
message being issued to the system user.
• Set up a patient record with no known allergies. Prescribe
medication for allergies that are known to exist. Check that a
warning message is not issued by the system.
• Set up a patient record with a known allergy. Prescribe the
medication to that the patient is allergic to, and check that the
warning is issued by the system.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 37
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 38
19
Kiểm thử hiệu suất
một phần của kiểm thử trước phân phối có thể liên quan đến việc
kiểm thử các phẩm chất rõ nét của phần mềm như hiệu suất, tính
tin cậy.
Các test-case phải phản ánh profile của việc dùng phần mềm.
thường là 1 chuỗi các kiểm thử
• tải được gia tăng đều đặn cho đến khi hiệu suất phần mềm trở
nên không thể chấp nhận.
Kiểm thử độ căng thẳng
• là 1 dạng kiểm thử hiệu suất mà ở đó phần mềm được chạy quá
tải có chủ đích để kiểm thử hành vi thất bại của nó.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 39
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 40
20
Các bước trong qui trình kiểm thử độ chấp thuận
bởi người dùng
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 41
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 42
21
9.6 Kết chương
Kiểm thử chỉ có thể chỉ ra sự tồn tại của lỗi, nó không thể chứng
minh rằng phần mềm hết lỗi.
Kiểm thử trong khi phát triển phần mềm : do đội phát triển.
Kiểm thử trong khi phát triển phần mềm bao gồm kiểm thử đơn
vị, kiểm thử thành phần và kiểm thử toàn phần mềm.
Khi kiểm thử phần mềm : cố gắng ngắt phần mềm bằng cách
dùng các hướng dẫn và kinh nghiệm.
bất kỳ khi nào có thể, ta nên viết các test tự động hóa.
phát triển Test-first : viết các tests trước khi viết code.
kiểm thử theo kịch bản liên quan đến việc sáng chế 1 kịch bản sử
dụng điển hình và dùng kịch bản này để tạo ra các test-case.
kiểm thử độ chấp thuận : qui trình kiểm thử bởi người dùng =>
xem phần mềm đủ tốt để triển khai và dùng trong môi trường
hoạt động thật không.
Khoa Khoa học & Kỹ thuật Máy tính Môn : Công nghệ phần mềm
Trường ĐH Bách Khoa Tp.HCM Chương 9 : Chất lượng phần mềm & đảm bảo chất lượng
© 2010 Slide 43
22