Câu 64. Kiểm thử đơn vị là gì? Quan hệ của nó với hoạt động mã hóa như thế nào?
Kiểm thử đơn vị là tiến trình kiểm thử tập trung kiểm chứng vào đơn vị nhỏ nhất của thiết kế phần mềm đó là modul. Kiểm thử đơn vị bao giờ cũng hướng theo hộp trắng và bước này có thể được tiến hành song song cho nhiều modul.
Nó kiểm thử các phần sau: - Kiểm thử giao diện
- Khám nghiện cấu trúc dữ liệu cục bộ. - Kiểm thử với các điều kiện biên. - Các đường độc lập.
- Các đường xử lý sai.
Quan hệ của nó với hoạt động mã hóa:
- Kiểm thử đơn vị thường được coi là phần phụ thêm của bước mã hóa.
- Sau khi bước mã nguồn đã được phát triển, được rà soát và kiểm tra tính đúng đắn cú pháp thì việc thiết kế ca kiểm thử đơn vị bắt đầu
Câu 65. Hoạt động kiểm thử đơn vị gồm những nội dung gì? Nó liên quan đến những nhân tố nào? Nêu một vài câu hỏi kiểm thử cho các nhân tố đó?
- Kiểm thử đơn vị có các nội dung: + Kiểm thử giao diện
+ Khám nghiệm cấu trúc dữ liệu cục bộ + Kiểm thử với các điều kiện biên + Các đường độc lập
+ Các đường xử lý sai
- Câu hỏi kiểm thử cho các nhân tố: + Tham số:
• Số lượng các tham số có bằng đối số hay không?
• Các tính chất của tham số và của đối số có đồng nhất không? • Các đơn vị của tham số và của đối số có đồng nhất không?
• Số các đối số được truyền để gọi modul có bằng số các tham số hay không?
• Các thuộc tính của các đối được truyền để gọi modul có trùng với các thuộc tính của các tham số hay không?
• Hệ thống đơn vị của các đối được truyền để gọi modul có trùng với hệ thống đơn vị của các tham số hay không?
• Số thuộc tính và các cái khác của các đối của các hàm được định sẵn có đúng đắn hay không?
• Mọi tham khảo liên quan tới các tham số hiện không kết hợp với đầu vào chứ? • Các đối chỉ đọc đã được đổi chưa?
• Các định nghĩa biến toàn cục có như một trong suốt modul không? • Các ràng buộc đã chuyển qua như là tham số chưa?
+ Vào ra: Khi một modul có thực hiện I/O ngoại lai thì phải tiến hành thêm: • Tính chất của các file có đúng đắn hay không?
• Các câu lệnh OPEN/CLOSE có đúng đắn không? • Đặc tả hình thức có đúng với các câu lệnh I/O? • Cỡ của buffer có đúng với cỡ của bản ghi không? • Các file có mở trước khi sử dụng không?
• Các điều kiện end-of-file có được xử lý? • Các sai lầm I/O có được xử lý?
• Có sai văn bản nào trong thông tin ra?
+ Dữ liệu cục bộ: Cấu trúc dữ liệu cục bộ cho modul còn là nguồn gây lỗi chung. Vì thế nên thiết kế các kiểm thử để bóc trần các lỗi loại sau:
• Đánh máy không đúng hoặc không nhất quán. • Giá trị ngầm định hoặc giá trị khởi thuỷ sai.
• Tên các biến không đúng (sai chữ hoặc mất chữ) • Kiểu dữ liệu không nhất quán.
• Ngoại biệt về địa chỉ, underflow, overflow.
- Thủ tục tính toán: Các sai thường thấy về tính toán là: • Hiểu lầm hoặc ưu tiên các phép tính số học không đúng. • Các phép toán trộn mode.
• Khởi sự không đúng đắn. • Sự không chính xác
- Dòng điều khiển: Sau việc so sánh thì các dòng điều khiển bị thay. Các ca kiểm thử cần bộc lộ các sai như:
• So sánh các kiểu dữ liệu khác nhau.
• Ưu tiên hoặc toán tử logic không đúng đắn.
• Dự đoán một đẳng thức, trong khi sai số làm cho đẳng thức không chắc có thực. • Các giá trị hoặc so sánh không đúng đắn.
• Không kết thúc vòng lặp hoặc kết thúc không chính xác. • Khó thoát được khi tình cờ gặp sự lặp phân kỳ
• Các biến lặp bị cải biên không chính xác. - Sai tiềm ẩn:
• Mô tả sai là khó hiểu
• Sai được ghi là không tương ứng với sai đã gặp
• Điều kiện sai gây ra bị hệ thống can thiệp trước khi xử lý sai • Xử lý điều kiện ngoại lệ là không đúng đắn
• Mô tả sai là không cung cấp đủ thông tin để trợ giúp định vị nguyên nhân của sai
Câu 66. Kỹ thuật kiểm thử đơn vị sử dụng là gì? vì sao phải sử dụng kỹ thuật đó? Có những khó khăn thuận lợi gì?
Kiểm thử đơn vị sử dụng các kỹ thuật:
- Kiểm thử đường cơ sở, kiểm thử vòng lặp: Vì các trường hợp kiểm thử nên được thiết kế để phát hiện ra lỗi do tính toán sai, so sánh sai hay luồn điều khiển không đúng. Đây là kỹ thuật hiệu quả để phát hiện một phạm vi rộng các lỗi
- Kiểm thử biên (nhiệm vụ cuối cùng, có lẽ là quan trọng nhất): Vì phần mềm thường thất bại tại các biên của chúng. Tức là lỗi thường xuất hiện khi phần tử thứ n của mảng n chiều được xử lý; khi lần lặp thứ i của chu trình với i bước được gọi, khi các giá trị tối thiểu hay tối đa cho pháp được gặp phải. Khó khăn: Các trường hợp kiểm thử chạy qua cấu trúc dữ liệu, luồng điều khiển và giá trị dữ liệu ngay dưới, ở tại và ngay trên cực đại và cực tiểu rất thường phát hiện ra lỗi.