As the pace of software-driven innovation expands, organizations often struggle to balance the need to deliver business value at speed and scale with the need to deliver consistent, reliable, and performant software products. Quality Assurance (QA) testing, as a function of a cross-functional Agile development team, can help strike that balance. By using a combination of skills, practices, and tools, the QA function (made up of one or more QA practitioners) supports the software development lifecycle (SDLC) from start to finish. The end result is a software product that meets the defined requirements while delivering on the end users’ expectations.
An organization’s ability to ensure quality has a significant business impact. Software defects, security flaws, and hacks can negatively impact a company’s brand reputation and lead to steep fines. For 81% of companies, downtime related to these same quality issues can cost more than $300,000 per hour (Tricentis). Understanding QA testing and the processes and tools dedicated QA engineers use can be the key to reducing risk and unlocking greater business value from your software products.
What does the QA function do in a cross-functional development team?
QA testing is tightly integrated with the development and delivery of a software product and depends on the development approach or model in use, as well as the scope of the project. On a cross-functional development team, the role of QA is much more than writing test cases and reporting bugs to the team. Rather than serving as a bookend once all coding is complete, as is often the case in a Waterfall environment, QA testing is an integral part of the Agile development process, taking place during all stages of the SDLC.
Most Agile QA practitioners share common processes, including those described in this section.
Ensuring quality starts with a careful analysis of the project’s functional and non-functional requirements. Functional requirements define features or functions that enable users to accomplish a required task. Non-functional requirements describe the general qualities of a product, such as ease of use, reliability, or performance. Based on their analysis, the QA function of a cross-functional development team identifies the key areas to test that will best ensure the product performs as expected.
Typical deliverables from this phase include: Requirements Testing Matrix, Automation Feasibility report, and list of all testable requirements.
As soon as development design starts, the QA function starts planning the automated and/or manual test procedures and cases needed to gauge and quantify how well the software performs. In this phase, the QA engineer(s) determines the effort and cost estimates for the entire project, roles and responsibilities, tool selection, training needs, and more.
Typical deliverables from this phase include: Test strategy, Testing plan, and Test Effort estimation.
Test design and environment setup
The QA testing process involves the use of tools to help engineers develop the test cases, test scripts, and test data needed to fulfill the test plan requirements. A test environment is also set up based on the project requirements.
Typical deliverables from this phase include: Test cases, Test scripts, Test environment, and data.
Test cases execution, test re-runs, and test closure
During the execution of test cases, the QA function tests the software as planned, including activities like error discovery and reporting, security testing, software performance testing, observations/recommendations, and fix verifications. During testing, the QA engineer(s) identifies the root cause of any problems so that other members of the development team can make the needed improvements.
Once changes have been made, the QA function then re-runs the tests to confirm that the fixes were successful. When all tests have been successfully completed, the QA engineer(s) issues a test closure report.
Typical deliverables from this phase include: Test case execution report, defect reports, updated/completed Requirements Testing Matrix, test closure report, and test metrics.
QA testing roles for cross-functional development teams
The QA function of a cross-functional development team will vary in size and roles depending on the needs of the business or project they serve. Below are the core roles in QA testing:
|QA Lead||Defines and manages the team’s QA testing strategy, resource planning, internal team communication, testing process estimation, and quality of work. Communicates with the Product Owner (PO) to gather requirements, shares them with the testing team, and ensures testing supports requirements.|
|QA Architect||Defines the Architecture for the Test Automation Solution for the application based on project requirements. Provides technical support to the QA function at all stages, from the creation of scripts and cases to retesting of error fixes.|
|QA Engineer||Implements the test automation strategy, including roadmaps, tools, framework, and approach needed to evaluate the software. Checks for defects and verifies whether a product complies with defined requirements.|
|QA Analyst||Plans, documents, coordinates, and executes automated and manual tests to detect bugs and errors. Checks whether a product complies with the requirements and reports technical issues found.|
Striking a balance between Manual and Automated Testing
All QA testing services fall into one of two broad categories: automated or manual. Each of these testing methods provides great benefits on its own, but when properly combined, can lead to more efficient teams and better results for the organization.
During automated testing, QA testers use tools to write code or scripts that automate test execution. Automation enables fast completion of tests, increased coverage, decreased risk of regression testing, and improved test accuracy and reliability—all crucial to delivering higher value and greater reliability faster.
Main characteristics of automated testing: Best suited for verification purposes
- Test cases executed by automation tools and processes
- Designed to make the software development process more efficient and effective
- Optimizes testing times and minimizes resource consumption and cost of development
- Helps support CI/CD
- Best suited for regression testing, performance testing, load testing, and repeatable functional test cases
All that being said, software is built to satisfy the needs of users. Human users, that is. Therefore, testing also requires a human touch.
During manual testing, a QA analyst runs test cases in person, interacting with the component or module, or UI of the software directly. Manual testers often have a lot of business knowledge that can be hugely beneficial to the QA testing process. Furthermore, technology alone can’t provide data regarding user satisfaction, ease of use, or aesthetics.
Main characteristics of manual testing: Best suited for validation purposes
- Test cases completed by subject matter experts
- Serves as a basis/entry point for all QA testing, including automation
- Often less expensive, as you don’t need to spend money on automation tools
- Allows for human observation, which can benefit user-friendliness
- Best suited for exploratory testing, UI/accessibility testing, and User Acceptance Testing
What are the different types of QA tests?
QA engineers employ many different types of tests depending on the requirements of the project, the layer being tested (unit, API, service, UI), and the stage of the SDLC. Some tests are functional and some are non-functional. Functional tests focus on ensuring that specific functions or features of the software perform as expected. Non-functional testing assesses how an application performs by looking at performance, accessibility, or usability.
|Unit tests||Test individual methods of the classes, components, or modules used by the application||Finding defects early|
|Integration tests||Test how well two or more modules of an application(s) work together||Finding defects in the interface, communication, or data flow among different modules in an application|
|End-to-end tests||Test a user flow in a complete application environment||Verifying user flows work as expected|
|System tests||Test a system against specified requirements||Finding defects of an application in an environment that simulates the real world|
|Acceptance tests (also called user acceptance tests or UATs)||Test an application (usually done by the customer or business) to ensure all the desired features and functions work as expected in a real-world environment, as part of the final phase of development||Verify that the system satisfies the business requirements and goals|
|Performance tests||A non-functional test used to assess the reliability, stability, and availability of the application||Understanding the impacts of planned changes on system performance|
|Smoke tests||Quickly test the basic functionality of an application||Verifying that more tests can be run after a new build or that the application is running properly in a newly deployed environment|
|Exploratory tests (also called ad hoc testing)||Unscripted testing in which testers learn and explore a system on the fly||Exploring edge cases or defects that might not be discovered during more structured testing|
|Compatibility test||Test how software runs in a different environment||Ensure the application can run in different configurations and environments|
|Security tests||Test how the software, application, or website is secure from internal and/or external threats||Verify that the software meets security requirements|
6 QA testing best practices from our real-world experience
At Gorilla Logic, our QA experts have worked closely with the development, delivery, and QA teams from many leading businesses on complex software builds. Based on our extensive experience in real-world environments, we’ve developed a set of core best practices that guides everything we do to ensure we always deliver the highest-quality products and value.
Cultivate a culture of quality, top-down and bottom-up
Quality is not an activity or even an end goal. Rather, it is a mindset that should inform every aspect of your business. Quality is everyone’s job. From executive leadership down and from the development and delivery team up, everyone must be united on the goal of delivering high-quality value to the customer or end-user.
Test early, test often
The later in the development process you find a defect in the software, the more time-consuming and costly it is to fix and retest. QA testing should start from the earliest phases of the SDLC, supporting development at every stage. With early testing, the QA function can discover problems that will often become much more difficult and time-consuming to fix later on, including issues such as:
- Design decisions with downstream challenges
- Architectural flaws
- Performance, scalability, and availability issues
- Security vulnerabilities and compliance issues
By testing early and frequently, perhaps using an approach like test-driven development, the QA function can ensure it has defined priorities for testing and quality, and that there is adequate time for testing. Early testing also helps the development team ensure the project stays on time and budget to deliver value faster.
Define and document clear QA testing processes
To operate efficiently and eliminate the communication gaps that occur frequently in fast-moving development environments, everyone on the development team must clearly understand the roles, responsibilities, and processes for QA testing. This requires that you have sufficient and accessible documentation about the QA function.
Your documented QA processes should cover how the QA function operates and which roles own which responsibilities. They should define how tests are built, executed, and documented, and how the test data is shared and stored. They should also cover how new QA engineers are onboarded and trained, and how roles might be transferred during a project for better coverage. This helps the development team adapt and scale as needed, with minimum disruption.
Automate QA testing processes when it makes sense
As we’ve seen earlier in this article, testing automation is an essential capability for any QA function. Automating tests enables cross-functional teams to complete and repeat more tests faster, and with a higher degree of accuracy and reliability. Automation also frees up human testers for higher-level testing and increases coverage. Another added benefit: automated tests can be run 24×7, which can help minimize the impact of testing on other resources.
Optimize how you manage your test environments and test data
While it may seem obvious, the role your test environment and test data play in testing success is often underrated. Your test environment—the software, hardware, and even the data the test environment operates on—can help you avoid time-consuming challenges and costs of misconfigured and manually managed environments. With the right tools, including cheaper storage, virtualization, and cloud-based solutions, you can control configuration, spin up or down environments as and when needed with minimal disruption or downtime, and much more.
Improve business impact with continuous integration, continuous testing, and continuous delivery
Investing in automation tools and processes for automated testing lays the foundation for any modern Agile and/or DevOps-focused continuous development and continuous integration (CI/CD) approach. Agile and DevOps both require faster, more efficient, and more effective testing to happen from the earliest stages of the SDLC. Test automation orchestration extends automation to encompass the full set of tasks that can help you test the software from start to finish, and repeat as often as needed.
Emerging QA testing trends and tools to watch
When it comes to software testing, a continuous learning mindset is mandatory. The best QA practitioners are deeply curious and constantly seek ways to optimize their work and improve outcomes. Here are a few emerging trends we’re keeping in mind.
Intelligent test automation and AI/ML
As with many other software development practices, QA engineers are discovering impactful ways to leverage new technologies like AI/ML. Solutions based on AI/ML can help further optimize QA testing processes, eliminating replicable and repetitive tasks. Using AI algorithms to build scripts, intelligent test automation (ITA) can assist QA engineers in developing smarter ways to test software and apps while minimizing errors, testing faster, and generating more useful and actionable insights from analytics. One trending tool in this category is Applitools Eyes, an AI-powered testing platform that tests an app as a manual tester does.
Other trending technologies and tools for software testing
Keeping current with emerging technologies and tools is critical for QA practitioners. Here are a few you should know about:
- Testing Library: A family of lightweight libraries that allow for test maintainability without being tied to implementation details
- Playwright: A Node.js library that enables reliable end-to-end testing for modern web apps
- Katalon Studio: An open-source test automation platform used to automate testing
Optimize QA testing to deliver greater business impact
With the right combination of expertise, technologies, and planning, the QA function of a cross-functional software development team can significantly impact business outcomes, keeping the flow of business value running smoothly while also making sure the software delights the customer. In a software-driven world, quality must be everyone’s job, and QA leads the way.
When your software build needs quality assurance testing led by 5-star quality talent with International Software Testing Qualifications Board (ISTQB) credentials, Gorilla Logic can help. Through unit tests, mobile, web, and API test automation, security, and performance testing, we give you confidence that your app will function flawlessly when it goes live and deliver the business value you need today and in the future. Learn more about Gorilla Logic’s QA testing services ›