<P> Unit tests created in a test - driven development environment are typically created by the developer who is writing the code being tested . Therefore, the tests may share blind spots with the code: if, for example, a developer does not realize that certain input parameters must be checked, most likely neither the test nor the code will verify those parameters . Another example: if the developer misinterprets the requirements for the module he is developing, the code and the unit tests he writes will both be wrong in the same way . Therefore, the tests will pass, giving a false sense of correctness . </P> <P> A high number of passing unit tests may bring a false sense of security, resulting in fewer additional software testing activities, such as integration testing and compliance testing . </P> <P> Tests become part of the maintenance overhead of a project . Badly written tests, for example ones that include hard - coded error strings or are themselves prone to failure, are expensive to maintain . This is especially the case with fragile tests . There is a risk that tests that regularly generate false failures will be ignored, so that when a real failure occurs, it may not be detected . It is possible to write tests for low and easy maintenance, for example by the reuse of error strings, and this should be a goal during the code refactoring phase described above . </P> <P> Writing and maintaining an excessive number of tests costs time . Also, more - flexible modules (with limited tests) might accept new requirements without the need for changing the tests . For those reasons, testing for only extreme conditions, or a small sample of data, can be easier to adjust than a set of highly detailed tests . </P>

What are the completion criteria for a tdd cycle in python