There are many posts out there about the value of automated testing and why it is a must through the life cycle of a software product.
Most people and teams totally agree with this statement, so what goes wrong?
It is just a prototype
It seems to be a valid statement, but if we consider how many times a prototype made it into production then it is not so valid. In fact, most prototype codebase ends up to production because this is the goal of a prototype.
Adding tests in a prototype phase makes absolute sense.
Too difficult to test
Yes, there cases where testing is really difficult due to limitations. For example, the android and the iPhone emulators do not give you the ability to set accelerometer events. Even if mocking would not make an absolute test case, it really can assist you on making a specification on how things work.
The other scenario is testing being hard to implement due to the codebase.
Consider this as an indicator that things are not simple enough. If it is just your codebase then your are lucky. It is up to you to make it more testable and more simple.
Too much to do, too little time
This is our weakest spot and the one that we are most prone too succumb.
Suppose you develop a smartphone application. The case of manual testing each mistake will cost you 3-5 minutes. Starting the emulator (or even worse deploy to a physical device), load the application and press some buttons to create events. In the case of an error, repeat and lose other 3-5 minutes.
In case you develop a server application things might get even worse. Connect to the sever, upload the application, check that that the upload was successful and then manually test that it works ok. In case of an error repeat, and lose some time again.
Also, keep in mind that in case of projects with more than one developers involved, mistakes are more common to happen.
We tend to believe that the best case will happen where everything will work as expected.
It might work most of the time but in case of a problem you lose big. We end up being hooked on an “It’s ok, all it needs is another version upload” mode.
Next time this happens just count how much time you end up losing by testing manually until everything is ok.
Then estimate how much time tests will cost you and how much time you win in such cases.
Everything changes so rapidly
Yes, a project on its initial phase will have a completely different codebase in two months than its initial one.
But since big changes are made more errors are likely to occur. A minimal amount of tests ensures that basic features would continue to work. All in all testing is not as hard as it used to be.
Nowadays, almost every service or utility that we use comes with some test utils. As the software industry becomes more challenging, codebases without tests would become extinct.
Pick whatever methodology you want but just do it. Your life will become much easier.