In this post, I’ll walk you through exactly what quality assurance is.
What is Quality Assurance?
Quality assurance (QA) is a system of testing which guarantees that the customer receives a high-quality product without critical errors.
QA’s goal, like the development team, is to release the highest quality product possible.
QA exists in many industries such as food, manufacturing, and pharmaceutical. However, the tech industry is the most popular sector for QA right now.
The industry has seen fantastic growth over the past decade and thought-leaders in the field continue to innovate best practices and methodologies for both development and quality assurance.
Every company, even tech giants like Amazon and Google, perform QA.
4 Benefits of QA
There are 4 main benefits of QA.
1. Increases Customer Confidence
The mere knowledge that a company has a QA team increases customer confidence and establishes the company’s credibility as a place that puts their customers first.
2. Saves Time
A well trained QA team saves the development crew precious hours by catching bugs early in development and suggesting potential changes.
3. Higher Quality Product
Without QA, products would take longer to develop and release with more bugs.
4. New Perspective
QA teams often have some input on software development. Their outside perspective can bring a unique point of view to the project.
What Does Quality Assurance Do?
QA ensures that the final product meets the requirements set out by the client and reduces the number of errors in the software.
QA testers are the first ones to encounter anything that might make the user experience worse. After testing the software, a QA tester will document any problems they had and send the report to the developers who revise the software.
This cycle of development and testing continues until the QA analyst (or team of QA analysts) are satisfied with the final product and give it their stamp of approval. Once the QA analyst signs off on a product, it’s considered ready for release.
Quality Assurance Methodologies
As quality assurance has become more popular in software development, several strategies developed to optimize the process.
Capability Maturity Model Integration (CMMI)
CCMI was developed by the software engineering division at Carnegie Mellon University and is based on the principle that “the quality of a system or product is highly influenced by the process used to develop and maintain it.”
The CMMI model ranks the maturity of areas within an organization and identifies other areas that can be improved upon. The maturity level of an area is decided by how optimized the development process is currently. A maturity level of one indicates that the process is not well optimized – often unpredictable and uncontrolled, while a maturity level of five indicates that the process is predictable, well-controlled, stable, and needs only minor revisions for full optimization.
A number of years ago, if you asked QA analysts and software developers how they approached their work, the vast majority would’ve said they followed the waterfall methodology.
Waterfall, for all intents and purposes, might as well be dubbed the ‘traditional’ approach to software development. Teams were divided into clearly defined groups, all program changes were heavily documented and the sole purpose was to create software that matched the requirements outlined before development.
The agile strategy is entirely different from waterfall. Agile promotes fluidity in development. Teams work parallel to each other and minimal documentation is required.
Agile improved team collaboration and saw a noticeable improvement in software quality and customer satisfaction.
The main tenets of agile development can be found in the agile manifesto. They are:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
In agile development, QA is expected to be part of day to day development.
One popular tool used by QA testers is Selenium, a free browser testing software that can be used across many browsers and platforms.
The program was created by Jason Huggins, who at the time was frequently working on web applications that often required testing.
While running these tests he noticed that manual testing was inefficient. Frequently he’d spend his days running the exact same tests over and over. It was so repetitive that even a robot could do it.
So he created a script that would automatically run the tests.
Eventually, this grew into Selenium.
Some of Selenium’s key features include:
Full support of multiple programming languages including Java, python, C#, Ruby, and Php.
Support of both iPhone and Android testing
Can simulate key presses and other keyboard actions.
At some point, most QA and IT companies will use Selenium when they need to automate their web testing.
One of Selenium’s most attractive features is its ease of use. When it was introduced, it immediately leaped over many other tried and true testing techniques and became the go-to tool for web automation testing. Recruiters often look for people well versed in the tool.
Which tools you’ll use will depend on what you’re testing. For example, if you’re doing database testing you’re likely to use MySQL or Oracle. While something like Watir will be used to test web applications.
Quality Assurance Jobs
Quality assurance jobs are incredibly varied. Generally, someone in QA will work as a junior QA tester and then choose their career path based on their strongest skills.
QA is a blend of soft and hard skills. The hard skills will be their ability to write test cases, find patterns and common pitfalls in software, documenting any found errors and test effectively. Soft skills would be how well they work with others, their ability to encourage co-workers, and their ability to communicate in a clear and precise way
Software quality assurance is simply quality assurance applied to software. It concerns itself with finding bugs and errors in the software.
It has become a very important part of the software development process and saves developers hundreds of hours by catching bugs early in the development process.
What is the Difference Between Quality Assurance and Quality Control?
Quality assurance and quality control are two separate disciplines that often find themselves lumped together as qa/qc.
Quality assurance is concerned about making system software as free of errors as possible during the development process, while quality control takes place after the software is finished development.
What is a Quality Assurance Specialist?
QA specialists spend most of their time writing test cases and evaluating the test process. This is opposed to a QA tester, who spends most of their time executing test cases.
A quality assurance specialist has spent several years working in quality assurance, typically as a junior QA tester, and worked their way up to the position of QA analyst.
How Do You Ensure Quality Assurance?
The best way to ensure top-notch quality assurance is to hire a QA team that has strong knowledge of programming language and are effective communicators.
The dialogue between QA and development is one of the most important aspects of developing a reliable piece of software. Without clear information about where the bugs are and how to fix them, the development team is liable to repeat their mistakes.
What Do You Think?
There are many different disciplines and focuses within quality assurance. After learning more about it, what aspects appeal most to you? Let me know in the comments!