A Guide to QA Testing

February 16, 2021

In traditional development models, quality assurance testing happens quite late in the cycle. Software would be produced, sent over from the developers to the QA team, and after review, QA would then offer feedback and send the software back to development to fix any problems. However, in a truly Agile development environment, everyone works together to make iterative improvements to the product on an ongoing basis. But, in this Agile environment, what does QA mean, and what role do QA testers play?

The Quality Assurance Cycle

Quality Assurance methodology utilizes a four-step management method for the control and continuous improvement of processes called PDCA cycle or Deming cycle. The phases of this cycle are:

  1. Plan: plan ahead for change - analyze and predict the results
  2. Do: execute the plan, taking small steps in controlled circumstances
  3. Study: check the results to see if they met the predetermined objectives
  4. Act: take action to standardize or improve the process

What is Quality Assurance (QA) In Software Testing?

TechTarget shares that “Quality Assurance (QA) is any systematic process of determining whether a product or service meets specified requirements. QA establishes and maintains set requirements for developing reliable products. A quality assurance system is meant to increase customer confidence and a company's credibility, while also improving work processes and efficiency, and it enables a company to better compete with others.”

QA vs. QC

Many confuse quality assurance with quality control (QC). “QA provides the overall guidelines used anywhere, and QC is a production-focused process – for things such as inspections. QA is any systematic process for ensuring a product meets specified requirements, whereas QC addresses other issues, such as individual inspections or defects. In terms of software development, QA practices seek to prevent malfunctioning code or products, while QC implements testing and troubleshooting, and fixes code.”

While most teams want to create and deliver the most meticulously designed, relevant product possible to their customers, there is often pressure to deliver code to keep pace with market demands and ship out new features as quickly as possible. Add in the additional challenges of surprise bugs, unexpected downtime, software with clunky UX; that is slow or just does not work as expected. QA testing for software focuses on delivering the best possible outcome to the customer by addressing defects. In a QA context, a software defect is not just a bug that stops the software from working. A defect is any issue that negatively impacts the end-user experience, from unclear navigation to slow load times. By including software quality assurance testing throughout the development process, your startup can reduce the risk of defects and create the best user experience.

What Does a QA Tester Do?

Workable shared a basic outline of the roles and responsibilities of a QA Tester. They noted that a QA Tester assesses software quality through manual and automated testing. They are responsible for finding and reporting bugs, glitches, and usability issues. A QA tester needs to have a keen eye for detail and must be able to communicate effectively within a team setting.

Key responsibilities usually include the following:

  • Review and analyze system specifications
  • Execute test scripts and reviewing results
  • Report and document technical issues
  • Execute both manual and automated test cases and analyze results
  • Evaluate product code based on specifications
  • Create logs to document testing phases and issues found
  • Report all bugs and errors to the development team
  • Help troubleshoot issues
  • Conduct post-release/post-implementation testing

The skills and experience for a good QA tester include:

  • Experience in/understanding of project management and QA methodology
  • Familiarity with Agile development
  • Ability to document and troubleshoot errors
  • Working knowledge of test management software
  • Excellent communication skills
  • Attention to detail/strong organizational skills
  • Technically curious, analytical mind, and great problem-solving aptitude
  • Strong organizational skills
  • BSc/BA in Computer Science, Engineering, or a related field

To QA Or Not To QA

TechBeacon shares that the current trend among software development teams is to move away from QA-based testing in favor of developer-based testing. If developers are doing all their own testing, does that make QA obsolete?

Agile’s increased popularity means that development teams must work to streamline processes, cut iteration cycles, and produce quality software in the shortest amount of time. It is for that reason that some suggest that developers should be testing their code to cut the time spent sending code to QA. Some teams make developers responsible for determining if a fix breaks existing code, the build, or the software’s overall functionality. This can be an issue for many developers who feel that testing is boring, too repetitive, and complicated, and most importantly, it decreases coding productivity.

We can see that there is still a case for QA testing in software development, but how does it fit into today’s Agile environment? This is where unit testing, or testing individual units of source code to determine whether they are fit for use - comes in. Developers know their code best, and ensuring that each unit functions as it should before releasing it to quality assurance is critical. A Lyons Consulting Group article explains the reasons behind building this collaborative model between development and QA.

  • Process efficiency: Small code errors can often be easily fixed by a developer on their own rather than spending time back and forth with QA.
  • Memory limitations: When a developer moves onto a new part of a project, they may lose the clear picture of why they did what they did and why. Addressing any defects sooner rather than later ensures that developers do not lose sight of their original thought processes.
  • Technical insight: The developer has an in-depth understanding of the software’s technical functioning. Getting up to speed may take more time for QA. This translates into the developer likely being able to find more issues in a given amount of testing time.
  • Self-improvement: By testing their work immediately after performing it, developers may get a better sense of why they make certain common mistakes and learn to avoid repeating them.
  • Meditation: Sometimes a little breathing space between writing and releasing code can be a source of valuable reflections. Observing bugs can prompt one to ask, “How could this code have been designed to prevent such bugs?”

Even if developers are conducting their own unit testing, their collaboration with QA is still vital. While developers are particularly good at testing their code to make sure it works, they are not usually very good at breaking it. They know what they wrote and how it works. However, a testing team knows what should have been written. QA’s job is to make sure that the software meets the requirements. Additionally, while a developer may know that piece of code works fine on its own, QA knows how it will integrate into the software and if it might break other functionality that a developer was not aware of.

QA still plays a critical role in the development of relevant software. However, what is key to an Agile framework is that QA and developers no longer work in silos as they did when using traditional development methodologies. Agile requires cross-functional communication for the team to be the most effective and efficient. Quality Assurance is alive and well. It is just that QA testers have become more integrated into the development process. Developers must still conduct unit testing and QA must focus on how each unit of code works to create a meticulously designed final product. QA’s focus is on the software as a whole and creating a product that delights their customers.