Kiểm thử chức năng
Nội dung
Giới thiệu kiểm thử chức năng
Các kỹ thuật kiểm thử chức năng
Kiểm thử giá trị biên
Kiểm thử phân hoạch tương đương
Kỹ thuật đồ thị nhân quả - bảng quyết định
2
Kiểm thử chức năng
3
Kiểm thử chức năng
Kiểm thử chức năng: các test cases dẫn xuất
từ các đặc tả chương trình
Chức năng đề cập đến nguồn gốc của thông tin
được sử dụng để thiết kế trường hợp kiểm thử,
không phải để kiểm thử như thế nào
Còn được gọi là:
Kiểm thử dựa trên đặc tả (từ đặc tả)
kiểm tra hộp đen (không có mã nguồn)
Đặc tả chức năng mô tả hành vi chương trình
dự định
Hình thức hoặc không hình thức
4
Kiểm thử hệ thống và kiểm thử
ngẫu nhiên
Ngẫu nhiên (đồng đều):
Chọn các yếu tố đầu vào có thể thống nhất
Tránh thiên vị thiết kế
Một vấn đề thực tế: Các nhà thiết kế kiểm thử cũng có thể tạo
ra cùng những lỗi logic và giả thiết tồi giống nhà thiết kế
chương trình (đặc biệt là nếu họ là cùng một người)
Nhưng đối xử với tất cả các đầu vào là có giá trị như nhau
Có hệ thống (không đồng đều):
Cố gắng chọn đầu vào là có giá trị đặc biệt
Thông thường bằng việc lựa chọn đại diện của các lớp mà ứng
dụng gặp lỗi thường xuyên hoặc không phải tất cả trường hợp
Kiểm thử chức năng là kiểm thử có hệ thống thử nghiệm
5
Tại sao không ngẫu nhiên?
Sự phân bố lỗi không đều
Ví dụ: Lớp căn bậc hai Java áp dụng cho phương
trình bậc hai
Logic thực hiện không đầy đủ: Chương trình không
hợp lí trong các trường hợp trong đó b2 - 4ac = 0 và a
=0
Lấy mẫu ngẫu nhiên thường không chọn a = 0,0 và b
= 0,0
6
Systematic Partition Testing
The space of possible input values
(the haystack)
Failure (valuable test case)
No failure
Thất bại là thưa thớt
trong không gian
đầu vào có thể ...
Nếu chúng ta kiểm thử một cách có
hệ thống một số trường hợp trong
từng phần, chúng tôi sẽ có các bộ
phận dày đặc
... nhưng dày đặc
trong một số bộ phận
của không gian
Kiểm thử chức năng là một trong
những cách vẽ đường màu hồng để
cô lập khu vực có khả năng thất bại
7
Kiểm thử chức năng: khai thác
các đặc tả
Kiểm thử chức năng sử dụng các đặc tả (hình
thức hoặc không hình thức) để phân vùng
không gian đầu vào
Ví dụ, đặc tả của chương trình "gốc" gợi ý phân
chia giữa các trường hợp với không, một, và hai
nghiệm thực
Kiểm tra từng trường hợp, và ranh giới giữa các
trường hợp
Không đảm bảo, nhưng kinh nghiệm cho thấy
thất bại thường nằm ở ranh giới
8
Tại sao kiểm thử chức năng?
kịp thời
hiệu quả
tìm một vài lớp lỗi (ví dụ, thiếu logic) có thể vượt quá
cách tiếp cận khác
áp dụng rộng rãi
Thường hữu ích trong việc tinh chỉnh đặc tả và đánh
giá khả năng kiểm thử trước khi mã được viết
cho bất kỳ mô tả hành vi của chương trình phục vụ
như một đặc tả
ở bất kỳ mức độ nào từ module để kiểm thử hệ thống.
Kinh tế
thường ít tốn kém để thiết kế và thực thi hơn so với
các trường hợp kiểm thử cấu trúc (mã)
9
Thiết kế kiểm thử chức năng
sớm
Mã nguồn chương trình là không cần thiết
Chỉ có một mô tả về hành vi được dự kiến là cần thiết
Thậm chí các đặc tả không đầy đủ và chính thức có thể được sử
dụng
Mặc dù chính xác, đặc tả đầy đủ dẫn đến bộ thử tốt hơn
Thiết kế kiểm thử chức năng sớm có những lợi ích phụ
Thường cho thấy sự mơ hồ và mâu thuẫn trong đặc tả
Hữu ích cho việc đánh giá khả năng kiểm thử
Và cải thiện tiến độ Và ngân sách kiểm thử bằng cách cải
thiện đặc tả
Giải thích hữu ích của đặc tả
hoặc trong trường hợp cực đoan (như trong XP), trường hợp
kiểm thử chính là đặc tả
10