The importance of well-engineered automated software tests
To create the best software possible, everybody, from stakeholder to developer, needs to be on the same page.
By creating a solid test plan and proper functional tests, that both stakeholders and developers agree to, differences in interpretation of the functionality can be smoothed out in an early stage. When those differences are discovered only later in the process, it becomes harder and harder to resolve them, because more and more code has been build on top of it.
Writing tests right from the start of a project, bottlenecks and weak spots can be identified by the tester and shared with the developers and project manager before they are too deeply nested to resolve. This feedback helps the developers to not only improve this piece of code but also their future code. The feedback is also key information for the project manager to manage the stakeholders’ expectations and get their input on unclear functionality.
For each part of the code, the tester examines the functionality and the added value. Adding code without adding value is not only useless, but it also poses a quality risk since it can contain bugs or affect other, well functioning, parts of the code. With a proper design, set up in the earliest stages of the project, the added value can easily be verified. By keeping the lines of communication with the designers short, for all changes in the design, we can immediately determine the impact on the code.
Automating tests and running them with each release, the quality of the code can be assured, even without having to go through the manual labour of functional testing. This also assures that older parts of code are still working as agreed on by stakeholders, developers, and testers.