When a stunning software, system or application is released to the public, people only show their admiration to the creators and developers. Admittedly, without their creation and development, the public wouldn’t have the chance to see the masterpiece. However, you should know that quality assurance (QA) also plays a rather important role. Without QA, the public wouldn’t be able to experience the full potential of these masterpieces.
Why is QA important? Take software as an example. Human beings are fallible by nature and may make an error that produces a defect (fault, bug) in the program code. If the defect is executed, the software may fail to do what it should do, and the clients are not happy. Also, the time pressure, complex infrastructure, and system interactions may occur defects. QA is the key to identify, reduce and eliminate these defects in every stage of the software development life cycle. If the defects are dealt with as early as possible, the costs for development, test, and maintenance can be reduced dramatically.
Now, how to conduct QA? A common perception of QA is that it only consists of executing the software, but that is part of QA, not all. QA includes planning and control, analysis and design, implementation and execution, evaluating exit criteria and reporting, and closure activities. Take analysis and design for example. As a QA Analyst, I need to analyze the business requirements first, and then create detailed test cases. The business requirement may only say “a user must be able to create an account”, but I need to take one step further to determine all the situations. Maybe the e-mail address the user entered is malformed, or maybe the password doesn’t match to the 6-character standard. The coverage of the test cases is crucial. QA process may be time-consuming, but the potential time saved is much more than the time spent on QA. Clients would prefer to wait slightly longer for a high-quality product than receive a potentially flawed one sooner.
To be a good QA Analyst, the most important thing is to pay attention to details. You must be able to find things that others can’t by focusing on every detail of what you are testing. After identifying the defects or bugs, you need to report the issues to project managers and software developers through an issue or bug tracking system. Here at RefineCo, we use JIRA. Once an issue is created, we can see the time a bug was reported, the person who reported it, the developer who is working on fixing it, its severity, the erroneous program behavior, and the most important one, details on how to reproduce the bug. JIRA supports the life cycle of a bug through tracked status: To Do, Blocked, In Progress, Peer Review, Ready to Test, QA Approved, Done, and Closed. It provides a clear centralized overview of the bugs’ states and is convenient to use. The happiest thing is when all the bugs have been closed, which means we have high confidence in the software we created.
Remember, QA is the last chance to catch functional or other defects before the creation goes public or to clients. If you miss something, the public and clients will find it sooner or later. QA is not to be taken lightly and it plays a crucial role in software development.