But that doesn't mean they're less useful. When the software is stable, the tests are well-defined, and the organization approaches test automation as programming. If the user interface for a GUI application changes with every build, then the automated tests will also need to change with every build. The overhead of maintaining the scripts will quickly overshadow new test development. Similarly, if the software crashes constantly, writing automated tests for it will be time-consuming.
Many organizations view test automation as means of saving time on manual testing.
Automating poorly defined manual tests won't reduce the manual effort and will probably result in more time overall spent on testing. The manual tests must therefore be well-defined if they are to serve as the basis for the automated tests. The people writing automated scripts who treat test automation as programming ought to follow good programming practices such as establishing coding conventions, using source control, conducting code reviews of the test scripts, and testing the automated tests before relying on their results. Deciding which tests to automate first is like deciding which new feature to implement first in a software project. It depends on who is available to automate the tests, what the goals of the project are, and which tests will have the biggest impact if automated.