Câu hỏi của Joel giống như thế này. Giả sử bạn muốn đặt một chút ở đâu đó khiến hình ảnh có độ phân giải thấp được hiển thị thay vì hình ảnh có độ phân giải cao. Làm thế nào bạn sẽ sử dụng TDD để có được điều đó để làm việc? Bạn có viết một bài kiểm tra đã cạo màn hình để cho biết rằng hình ảnh có độ phân giải thấp không?
Tất nhiên là không. Bạn đã biết rằng thư viện JPEG hoạt động. Bạn đã biết rằng nếu bạn gọi nó với các đối số đúng, nó sẽ hiển thị ở độ phân giải thấp. Những gì bạn cần kiểm tra là bit bạn đặt được dịch sang các cuộc gọi thích hợp vào thư viện JPEG. Vì vậy, bạn giả lập thư viện JPEG với một mô-đun rất đơn giản được kiểm soát bởi thử nghiệm của bạn. Sau đó, bạn đặt bit và yêu cầu hiển thị. Thư viện JPEG Mocked sẽ nhớ nó được gọi như thế nào, và sau đó kiểm tra có thể kiểm tra để chắc chắn rằng nó được gọi chính xác.
OK, vậy làm cách nào bạn kiểm tra nội bộ của thư viện JPEG? Tôi không biết nhiều về dựng hình JPEG, nhưng tôi đoán nó là về nén, giải nén và bitmap. Nén và giải nén chỉ là thuật toán. Thuật toán có kết quả đầu ra có thể dự đoán được từ các đầu vào đã cho.Vì vậy, bạn thiết lập một loạt các đầu vào rất đơn giản và đảm bảo bạn nhận được các kết quả đầu ra có thể dự đoán được. Bạn thiết lập các đầu vào để các phần bên trong của các thuật toán JPEG được bao phủ. Logic tương tự giữ cho các bitmap. Bạn không phải hiển thị chúng trên màn hình. Các bitmap đơn giản có thể được đưa vào bộ nhớ đệm mà các kiểm tra có thể kiểm tra. Đơn giản, tôi có nghĩa là SIMPLE. 3X3, 5X5, 8X8. Đơn giản. Một lần nữa, bạn cấu trúc dữ liệu đầu vào của mình để bao gồm phần lớn mã.
Không ai trong số này là khoa học tên lửa. Không có gì nếu nó là hoàn hảo. Nhưng một bộ 50 bài kiểm tra chứng minh rằng 90% logic của bạn là chính xác có thể tạo ra sự khác biệt lớn khi bạn muốn thay đổi.
Bạn có bao giờ loại bỏ hoàn toàn việc kiểm tra thủ công không? Tất nhiên là không. Nhưng bạn có thể giảm thiểu đáng kể nó. Bạn có thể giảm thử nghiệm thủ công đối với một vài bài kiểm tra rất chiến lược thay vì hàng ngàn kế hoạch kiểm tra đau đớn tẻ nhạt.
Nguồn
2009-03-04 01:20:22
Và xin vui lòng, có thể chúng ta từ nay * luôn * coi nó như 'The Notorious Stackoverflow # 38' hoặc TNS # 38 ;-) –