Software designing, development and implementation is a complex cycle that involves a series of process requiring dedicated workforce for each and every part of the cycle. While the business analysts gather the requirements from clients and the market, the designers design the flowcharts and tech documents, the Software developers develop software and the testers test the software to ensure that flawless software reaches in to the hands of clients.
Very frequently the term "Software Engineer" is confused with a software developer, the one who develops the software. The quality analysts popularly known as QAs or test engineers always occupy a back seat but it would not be worthless to say that they are the unsung heroes of the entire software development process.
Take a simple example, we are solving a mathematical problem and mess up somehow and we do not get the desired result. What do we do? We give a quick glance to the entire solution and check where we went wrong and very often we end up erasing everything and starting all over again. Now, apply this scenario in software development. We developed software which does not perform as per the expectations. What do we do? Can we delete everything and start all over again? The answer is a big no. We sometimes manually and sometimes with the help of an automatic tool, traverse back and apply all possible test cases to find out where exactly the code went wrong.
A Quality Analyst is patience personified. Writing some lines of codes is a different game but testing that every line of code works as expected is a task that requires lots of skill, dedication and labor. Making test plans that covers all the test cases for a particular application is the prime role of a quality analyst.
The life of a typical QA is all about reading design documents, preparing quality test plans, testing the applications, reporting bugs and then validating bugs to make sure that everything works as expected. From Performance testing to make sure that the application works fastest consuming least resources, to regression testing to make sure that every piece of the application works fine to portability testing to make sure that the application works fine on every operating system and environment, the QA does it all.
So it is needless to mention that a QA is responsible for a successful software or application. And the bottom line is that QAs are paid for criticizing software.