Trừ khi bạn sẽ viết mã mà không kiểm tra nó, bạn sẽ luôn phải chịu chi phí kiểm tra.
Sự khác biệt giữa việc có các bài kiểm tra đơn vị và không có chúng là sự khác biệt giữa chi phí viết bài kiểm tra và chi phí để chạy nó so với chi phí kiểm tra bằng tay.
Nếu chi phí viết bài kiểm tra đơn vị là 2 phút và chi phí để chạy bài kiểm tra đơn vị thực tế bằng 0, nhưng chi phí kiểm tra mã thủ công là 1 phút, thì bạn sẽ hòa vốn ngay cả khi bạn đã chạy thử nghiệm hai lần.
Trong nhiều năm, tôi đã hiểu sai rằng tôi không có đủ thời gian để viết bài kiểm tra đơn vị cho mã của mình. Khi tôi viết bài kiểm tra, chúng là những thứ nặng nề, nặng nề, điều đó chỉ khuyến khích tôi nghĩ rằng tôi chỉ nên viết bài kiểm tra đơn vị khi tôi biết chúng là cần thiết.
Gần đây tôi đã được khuyến khích sử dụng Phát triển hướng thử nghiệm và tôi thấy đó là một tiết lộ hoàn chỉnh. Bây giờ tôi tin chắc rằng tôi không có thời gian để không viết bài kiểm tra đơn vị .
Theo kinh nghiệm của tôi, bằng cách phát triển với thử nghiệm trong tâm trí, bạn kết thúc với các giao diện sạch hơn, các lớp và mô-đun tập trung hơn và nói chung là RẮN hơn , mã có thể kiểm tra.
Mỗi lần tôi làm việc với mã kế thừa không có kiểm tra đơn vị và tôi phải kiểm tra thủ công một cái gì đó, tôi cứ nghĩ "việc này sẽ nhanh hơn rất nhiều nếu mã này đã có kiểm tra đơn vị". Mỗi lần tôi phải thử và thêm chức năng kiểm tra đơn vị vào mã có độ khớp cao, tôi cứ nghĩ "việc này sẽ dễ dàng hơn nhiều nếu nó được viết theo cách tách rời".
Phiên bản TL; DR :
Viết một bài kiểm tra khi chi phí viết bài kiểm tra, cộng với chi phí để chạy nó nhiều lần bạn cần có khả năng thấp hơn chi phí kiểm tra thủ công nhiều lần bạn cần.
Mặc dù vậy, hãy nhớ rằng nếu bạn sử dụng TDD, chi phí viết bài kiểm tra có thể sẽ giảm khi bạn làm tốt hơn và trừ khi mã hoàn toàn không quan trọng, bạn có thể sẽ chạy các bài kiểm tra của mình thường xuyên hơn bạn mong đợi.