Automated tests MUST be fast to reflect real time project state. The idea is that:
- after any commit to repository automated build is performed (as fast as it can be done).
- if build succeeded automated tests are started. MUST be fast.
This is the best way i know to find out if your changes break anything.
At first it seemed that making a build fast is hard, but we managed to keep it around 100 sec. for a solution of 105(!) projects (MSVS 2008 C#).
Tests appeared to be not that simple (we use NUnit FW). Unit testing is not a big problem. It is integration tests that kills us. And not the fact that they are slower (any ideas on how to make them faster are much appreciated) but the fact that the environment must be set up which is MUCH slower(atm ~1000 sec)!
Our integration tests use web/win services (19 so far) that needs to be redeployed in order to reflect latest changes. That includes restarting services and a lot of HDD R/W activity.
Can anyone share the experience on how environment and the work flow should/can be organized/optimized to fasten automated testing phase. What are the "low level" bottlenecks and workarounds.
P.S. books and broad articles are welcome, but real world working solutions are much more appreciated.