This repo is reproduced based on https://github.com/mjhea0/flaskr-tdd
https://github.com/lyfuuoo/ECE444_F2023_Group14/tree/tianrui_luo_branch
Pros
TDD is advantageous in Streamlining the design process, as it allows developers to only care about the part of coding needed for achieving specfied features, but nothing else. This helps to speed up the coding process and reduce workload, and more importantly, save time in debugging process as well.
TDD can also help reduce the appearance of bugs and other issues due to its higher test coverage, which the nature of TDD is including a test case for every desired feature. In addition, by making every feature to have a test case, it will also increase understanding of team members towards to code, as the test case prevails what these code aim to achieve.
TDD can also promote a modulized and decentralized system design as features are built and tested differently, which lead to a code structure easier to be understood.
Cons
TDD could be a very process for developers who don't clearly know about the aimed features & system, as the developer will have to build the test case before coding. In addition, TDD requires developed to build test case as comprehensive as possible to include every corner cases of the code, consequently making test cases sophisticated and time-consuming. This problem becomes more severe in case of a system comprising a significant amount of codes.
TDD is only suitable for the case of writing codes from the very beginning. In another word, if there exists inherited codes from elsewhere in the project, TDD will not be as much effective anymore.