automating testing they are run in the same way each time in additiononce an automated test is set up it will typically be quicker to re-run that automated test than to manually repeat series of tests howevernot all of the features of system can be easily tested via an automated test tool and in some cases the physical environment may make it hard to automate tests typicallymost unit testing is automated and most acceptance testing is manual you will also need to decide which forms of testing must take place most software projects should have unit testingintegration testingsystem testing and acceptance testing as necessary requirement not all projects will implement performance or stability testingbut you should be careful about omitting any stage of testing and be sure it is not applicable test driven development test driven development (or tddis development technique whereby developers write test cases before they write any implementation code the tests thus drive or dictate the code that is developed the implementation only provides as much functionality as is required to pass the test and thus the tests act as specification of what the code does (and some argue that the tests are thus part of that specification and provide documentation of what the system is capable oftdd has the benefit that as tests must be written firstthere are always set of tests available to perform unitintegrationregression testing etc this is good as developers can find that writing tests and maintaining tests is boring and of less interest than the actual code itself and thus put less emphasis into the testing regime than might be desirable tdd encouragesand indeed requiresthat developers maintain an exhaustive set of repeatable tests and that those tests are developed to the same quality and standards as the main body of code there are three rules of tdd as defined by robert martinthese are you are not allowed to write any production code unless it is to make failing unit test pass you are not allowed to write any more of unit test than is sufficient to failand compilation failures are failures you are not allowed to write any more production code than is sufficient to pass the one failing unit test this leads to the tdd cycle described in the next section