01 Testing-Intro
01 Testing-Intro
Thống kê năm 2020, báo cáo xuất bản ngày 1/1/2021 bởi Consortium for
Information & Software Quality (CISQ)
Tại sao cần kiểm thử phần mềm?
• Phần mềm ngày càng được ứng dụng vào nhiều lĩnh vực.
• Con người ngày càng phụ thuộc chặt chẽ vào các sản
phẩm phần mềm.
• Ngành công nghiệp phần mềm đang đối mặt với hai thách
thức:
- Sản xuất phần mềm với giá thành thấp
- Phần mềm cần dễ dùng, an toàn và tin cậy
Tại sao cần kiểm thử phần mềm?
• Lỗi nên được tìm ra trước khi phát hành sản phẩm/ bàn
giao sản phẩm cho khách hàng
• Kiểm thử là một cách để đo độ tin cậy của phần mềm
Quan sát chương trình ở slide trước và trả lời các câu hỏi
sau:
1. Xác định lỗi (fault) và sửa
2. Chỉ ra 1 test case mà không thực thi fault
3. Chỉ ra 1 test case thực thi không fault nhưng không gây
ra error
4. Chỉ ra 1 test case thực thi fault, gây ra error, nhưng
không gây ra failure
RIP Model
Đây là 1 đoạn code trong trình chơi nhạc Zune của Microsoft.
Đoạn code này có lỗi không? Nếu có, lỗi ở đâu? Tại sao?
Verification and validation
• Mục tiêu: Đảm bảo phần mềm đáp ứng được nhu
cầu/yêu cầu của khách hàng/người dùng
Verification Validation
Kiểm tra xem phần mềm có Kiểm tra xem phần mềm có
hoạt động đúng không? đáp ứng đúng mong đợi của
(Are we building a product khách hàng không?
right?) (Are we building a right
product?)
Verification and validation
• Verification: Quá trình kiểm tra xem các sản phẩm của
một giai đoạn (phases) trong quy trình phát triển phần
mềm có đáp ứng các yêu cầu đã được thiết lập trong giai
đoạn trước đó hay không.
• Validation: Quá trình đánh giá phần mềm khi kết thúc quy
trình phát triển phần mềm, để đảm bảo phần mềm đáp
ứng đúng mong muốn của khách hàng.
Vấn đề của kiểm thử
• Các hành vi được kiểm thử chỉ là một tập con của tất cả
các hành vi có thể của chương trình
• Các hành vi của chương trình là không liên tục
(discontinuous)
à Thường không thể ngoại suy kết quả của các test
cases chưa được thực thi
• Bản chất của kiểm thử là không đầy đủ (Testing is
incomplete)
Kiểm thử phần mềm
Kiểm thử chương trình
• Chất lượng phần mềm được cải tiến thông qua chu trình:
Kiểm thử – tìm lỗi – sửa lỗi
Xác định Điều kiện kiểm thử (“Cái gì”): Một phần tử hoặc sự
kiện cần kiểm tra
Thiết kế Làm thế nào để có thể kiểm tra được: thực hiện
So sánh So sánh kết quả của hệ thống và kết quả mong đợi
S P
Sai lầm về nhiệm
Sai lầm về bỏ vụ: Hành vi được
quên: Hành vi lập trình mà không
được đặc tả nhưng được đặc tả
không được lập
trình
Đặc tả
(Mong đợi) Chương trình
(Thực tế)
• Kiểm thử là một công việc tốn kém (cần nhiều lao động)
nhất của quá trình phát triển phần mềm
- Test cases thường được tạo ra một cách thủ công
- Kết quả kiểm thử được phân tích thủ công
Note: Không kiểm thử thì chi phí phát triển phần mềm
còn đắt đỏ, tốn kém hơn nữa
Nhiều công cụ hỗ trợ các loại kiểm thử