Here is a breakdown on what happens in a software development project and what value a tester adds at each phase. This is based on how our own teams are structured and from prior experience.
1) Design of the feature/application
There are 2 aspects -
a) User Experience
Tester can add a lot of valuable input here. They can share knowledge from prior experience, from knowing how other similar systems function or just being aware of what the customer needs.
b) Application Architecture
Tester may not be able add too much value here. This is better left to the development team
2) Prioritization
Testers can highlight what should be the logical thing to be delivered next. This may be based on interaction with customer support/success team or other stakeholders. They can also help in setting release timelines based on testing time needed. Developers may point to technical details on what needs to go as a base before more things are built on top.
3) Development
a) Development
This is a Developer's job. However, the developer may clarify requirements from the tester. Devs may also have testers play with the feature before pushing to codebase.
b) Unit Testing
Developer's job. Unit testing helps speed up development and is a tool to structurally build software. Testers shouldn't be involved here. API Testing: Developer's job. In some cases, testers may help. However, a tester's role here would be considered as a developer's helper rather than a tester.
4) Build Process and Build Monitoring & Maintenance
Setting up the process is normally a joint effort from dev and test team. Monitoring is done by dev or tester depending on what the pipeline or job is doing.
- Simple build task - developer.
- Nightly runs - tester
5) Testing
This is the job of the Tester - Most of the tester's time should be spent here.
This involves Test Design, Manual Testing, Integration Testing, Functional Testing via User Interface, End User simulation testing, Functional UI Automation, Report Analysis, Bug Reporting, Triaging etc.
6) Release/Deployment
This would be done by a combination of developers, testers or other specialists. Testers perform post release sanity testing.
7) Customer Support
When pulled in, Testers and Developers both help in applying known configurations. Testers can help in reproduction of customer issues locally, so that patches can be verified locally and tests added to regression.