Does TDD really work for complex projects?
- by Amir Rezaei
I’m asking this question regarding problems I have experienced during TDD projects.
I have noticed the following challenges when creating unit tests.
Generating and maintaining mock data
It’s hard and unrealistic to maintain large mock data. It’s is even harder when database structure undergoes changes.
Testing GUI
Even with MVVM and ability to test GUI, it takes a lot of code to reproduce the GUI scenario.
Testing the business
I have experience that TDD works well if you limit it to simple business logic. However complex business logic is hard to test since the number of combinations of tests (test space) is very large.
Contradiction in requirements
In reality it’s hard to capture all requirements under analysis and design. Many times one note requirements lead to contradiction because the project is complex. The contradiction is found late under implementation phase. TDD requires that requirements are 100% correct. In such cases one could expect that conflicting requirements would be captured during creating of tests. But the problem is that this isn’t the case in complex scenarios.
I have read this question: Why does TDD work?
Does TDD really work for complex enterprise projects, or is it practically limit to project type?