For anyone thinking about having a career as a tester, this post takes a look at the scope of software tester duties, which can be varied and interesting.
Software testers are vital members of a software development team who defend the principles of software quality and protect against an organization’s exposure to financial risk. Software tester duties can be fun, challenging, and rewarding, and whether a software tester works in automated or manual testing or a combination, most roles share a set of general duties. This article explores these central software tester duties.
A Tester’s Core Responsibility: Mitigating Risk
The core responsibility of a software tester is to mitigate risk through their testing activities. It is widely accepted that the further along in a software development lifecycle a bug is found, the more expensive it is to fix. Software testers lessen the financial risk by testing early and testing often. Thus, many organizations have begun implementing testing earlier in the lifecycle, with QA engineers being involved in every step along the way, from planning, test design, and execution, to performance and scale testing.
To some degree, every tester is responsible for verifying new builds of the application under test before it reaches the customer’s hands. In this respect, testers are responsible for at least the following:
- Executing an established test plan against each build going into production (either manually or with automation)
- Validating that bug patches resolve the issue and that appropriate regression tests are in place
- Interpreting test results, communicating the results to the management and development teams and filing bug tickets as needed
- Assisting developers with triaging, and troubleshooting bugs found in a release
Planning Tests for a New Feature
A good software tester can also be valuable in the feature or application design phase, pointing out usability flaws, edge cases the team has not considered, or even advising the team on designing easily testable software. A software tester must be able to understand and help refine the product’s requirements before they translate these product requirements into a test plan that proves or validates the requirements. Based on their seniority, a software tester might perform the following responsibilities during the feature design phase:
- Estimate the total testing work required for a feature to help the product management team identify a reasonable release target date
- Identify and design test harnesses (tools or special features that will facilitate testing the application)
- Establish a high-level test plan for the feature
- Coordinate with other teams to ensure all components are being adequately covered
- Enumerate key risks with the feature, including performance testing scenarios and potential failure points in the design
Designing Test Cases
After a test plan has been designed, individual software testers are responsible for translating the high-level plan into individual test cases that can be executed before each release. Software testers might employ a black-box approach, a white-box approach, or a grey-box approach when planning their test cases. The tester needs to understand the application under test and be able to select which approach is appropriate. Software testers are responsible for the following aspects of test case design and execution:
- Identify and test for “edge cases” that could result in unexpected application behavior
- Understand a user’s needs and test to make sure the software meets them
- Verify the test plan covers all the chartered requirements
- Develop test cases for each component and implement them in the appropriate continuous integration pipelines
- Identify which test cases are appropriate to test at the unit test, integration test, API test, or UI test level.
If the tester’s duties include automation, they will also have the following additional responsibilities:
- Document and automate the selected test cases
- Maintain the automation test codebase
- Verify tests are performing as expected and maintain pipeline health
- Continually innovate in their testing practices
- Identify and audit useful tools for automation testing
The Tester’s Role within a Team
Testers collaborate their QA lead, development team, and other testers to bring a test plan to fruition. They either maintain automated tests themselves or work closely with a test automation engineer to do so. Testers can also educate their development team on the quality mindset and become a champion of testing best practices. In addition to the tactical responsibilities listed above, testers have a responsibility to do the following when collaborating with their team:
- Coordinate “bug hunts” or other group exploratory testing
- Maintain product knowledge of the components they test and the product as a whole
- Provide a “product view” of the entire application, thinking outside the responsibilities of their team, to ensure new features work well with the whole application (this is important in larger apps)
- Continually drive testing best practices forward through innovation and experimentation
This article has explored the key duties a software tester carries out in their role. Testers play a key part in managing risk with new releases, aiding in new feature design and test planning, designing and executing individual test cases, and championing the quality mindset within their team.