Tôi đã tìm thấy TDD hoạt động kém khi nói đến các hệ thống mới nổi. Tôi là nhà phát triển trò chơi video và gần đây đã sử dụng TDD để tạo một hệ thống sử dụng nhiều hành vi đơn giản để tạo chuyển động trông giống như thật cho một thực thể.
Chẳng hạn, có những hành vi chịu trách nhiệm đưa bạn ra khỏi những khu vực nguy hiểm thuộc các loại khác nhau và những hành vi chịu trách nhiệm đưa bạn đến những khu vực thú vị thuộc các loại khác nhau. Hợp nhất đầu ra của mỗi hành vi tạo ra một chuyển động cuối cùng.
Sự can đảm của hệ thống được triển khai dễ dàng và TDD rất hữu ích ở đây để chỉ định mỗi hệ thống con phải chịu trách nhiệm gì.
Tuy nhiên, tôi gặp vấn đề khi chỉ định cách các hành vi tương tác và quan trọng hơn là cách chúng tương tác theo thời gian. Thường thì không có câu trả lời đúng và mặc dù các thử nghiệm ban đầu của tôi đã vượt qua, QA có thể tiếp tục tìm các trường hợp cạnh mà hệ thống không hoạt động. Để tìm ra giải pháp chính xác, tôi đã phải lặp đi lặp lại nhiều hành vi khác nhau và nếu tôi cập nhật các bài kiểm tra mỗi lần để phản ánh các hành vi mới trước khi tôi kiểm tra chúng hoạt động trong trò chơi, tôi có thể đã hết lần này đến lần khác. Vì vậy, tôi đã xóa các bài kiểm tra.
Tôi đáng lẽ phải có những bài kiểm tra mạnh hơn để ghi lại các trường hợp cạnh mà QA đã phát hiện ra, nhưng khi bạn có một hệ thống như thế này nằm trên nhiều hệ thống vật lý và trò chơi, và bạn đang xử lý các hành vi theo thời gian, nó sẽ trở thành một chút ác mộng để xác định chính xác những gì đang xảy ra.
Tôi gần như chắc chắn đã phạm sai lầm trong cách tiếp cận của mình, và như tôi đã nói vì sự can đảm của hệ thống TDD đã hoạt động rất tốt, và thậm chí còn hỗ trợ một vài nhà tái cấu trúc tối ưu hóa.