Cá nhân tôi có xu hướng tin rằng một người có thể nhận được nhiều lợi ích của TDD (mà không thực sự tuân thủ TDD), bằng cách:
- Viết cả mã người gọi và mã callee cùng một lúc (chắc chắn cách nhau không quá 24 giờ).
- Và sử dụng điều đó để ảnh hưởng đến thiết kế của giao diện (đối tượng, lời gọi phương thức và tham số).
- Đối với một thành phần yêu cầu một thuật toán / mã phức tạp, trước tiên hãy xem xét triển khai một thuật toán đơn giản nhưng chính xác hơn, ngay cả khi nó kém hiệu quả hơn (hoặc ngu ngốc hoặc chỉ hoạt động trong tình huống hẹp hơn).
- Một phương pháp thử nghiệm rất đơn giản sẽ chạy cả hai thuật toán và so sánh kết quả của chúng.
- Khi một lỗi được phát hiện (bằng mọi cách) trong một phần của mã, phần mã đó xứng đáng được kiểm tra mạnh mẽ hơn nhiều. Điều này có nghĩa là thực hiện các bài kiểm tra phức tạp hơn TDD sẽ yêu cầu. (dựa trên lý do rằng lỗi xảy ra theo cụm )
TDD dường như yêu cầu bạn phải hiểu khá rõ về chức năng bạn dự định thực hiện hoặc yêu cầu nào bạn dự định đáp ứng bằng cách triển khai mã. Trong một số tình huống, đơn giản là có quá ít hiểu biết về vấn đề. Điều này sẽ kêu gọi một giải pháp Spike . Trong phạm vi của giải pháp Spike này, TDD có thể được áp dụng vì sự cố đã được thu hẹp xuống mức có thể quản lý được. Khi một vài Spike đã được hoàn thành, mỗi khía cạnh bao gồm một số khía cạnh của vấn đề ban đầu, người ta có thể bắt đầu làm việc với giải pháp đầy đủ và áp dụng TDD vào thời điểm đó có thể khả thi vì sự hiểu biết được cải thiện.
Đã chỉnh sửa:
Sau khi đọc trang cẩn thận hơn,
Mặc dù có thể kiểm tra hầu hết các chức năng hạt nhân trong trình điều khiển kiểm tra "đã kiểm tra", nhưng những thứ thực sự "ngon ngọt" như xử lý ngắt, gửi quá trình hoặc quản lý bộ nhớ có thể không kiểm tra được đơn vị. --- từ http://wiki.osdev.org/Unit_Testing
Họ rõ ràng nói rằng hầu hết các bộ phận đều có thể kiểm tra được và một số bộ phận yêu cầu một loại thử nghiệm khác: Thử nghiệm ứng suất .