Testing - Practical Purposes
No piece of software will ever reach perfection. Through iteration and project development, new patterns will emerge that abstract complexity away and improve systems. As this process unfolds, there will be requirements to refactor old code in order to align with the new standard. In order to ensure that this future process is undertaken in a backward-compatible manner, testing needs to be meticulously developed throughout the typical product life cycle.
I used to have a narrow opinion of testing in that the main purpose was to simply ensure that the user will always encounter working code. While that is still the primary purpose, it can be argued that testing also gives developers the freedom to refactor old code while ensuring the UI/UX is maintained correctly. It is a much more proactive approach to software development than a reactive approach when fixing bugs.
In the work that I have conducted, there has always been the requirement to test but it was never thoroughly analyzed or explained as a process. It was just something that simply had to be done. There were pushbacks from non-techinal / inexperienced team members who did not see the varying facets of benefit that are incurred by a thorough testing environment.