How user acceptance testing has grown from the importance of the user
Agile Testing began after computer interface had graduated from toggle consoles, green screens, paper cards and static input fields. Computer interface was no longer a matter of skill on the part of the user, special training was no longer required. Once computers ended up in the hands of non-specialists, it was inescapable that software would be called on to do more and more and testing would have to evolve.
Testing greatly increased in complexity, once computers became the universal tools they are today. It use to be that there were really only two types of errors, those internal to the machine or those made in the presentation of data, either by the machine to the user or by the user to the machine. While these are still the main types of errors tested for, the way they can manifest has greatly multiplied. And the need for improved interface continues to increase. Testing can no longer be regimented and confined to a few simple rules.
The birth of truly interactive applications has forced regimented testing to follow Cobol and RPG into the dustbin of history. This doesn’t mean there aren’t strict protocols. It just means that software testing has become as interactive as the applications being tested.
User Acceptance Testing became inevitable once the Agile Testing principles of evolutionary development, continuous improvement, adaptive planning and flexibility were accepted as part of the testing environment. UAT simply includes the end user and some previously excluded stakeholders in the testing process.
User Acceptance Testing also follows the Agile idea that presenting working software is more useful than simply handing someone documentation. While User Acceptance Testing generally happens toward the end of the development cycle, customer collaboration is important throughout as software has become so complicated that requirements can never be fully fleshed out at the beginning. There is always the need to supply working modules and prototypes as they are developed.
What was once a step by step process undertaken by small dedicated teams is becoming increasingly a matter of connecting APIs and libraries. UAT has counterbalanced the modern tendency of software development to become more iterative and impersonal by emphasizing the importance of the human beings who use the software. As software development becomes easier, the temptation to get it done and get it out quickly must be modified by making sure that applications actually serve the people they were intended to serve. User Acceptance testing is the best way to ensure that future applications keep their priorities straight.