If developers are better suited and savvier to write the code needed for automated testing, then what need is there for a tester on the team at all?
Aurimas Simkus, says that it is important for developers to test their code with unit and integration tests, but it is not enough. According him, a balanced approach is best – both QA engineers and software engineers should do the testing, and the time when everyone should take on this role depends on product refinement and stage.
"In testing, there must also be a quality assurance done aside by someone other than developers. It is like code reviews that different developers should do. This QA part should test the features from the perspective of customer journey regardless of implementation technology. It is important to distinguish the testing done by developers and testers. Developers usually test their own code. Testers should not care about the technology the system was implemented with and test it from the side as a user or customer“, - says Aurimas.
"QA is an important part of our product development. We have 3 people on our QA team. Indre is leading the overall QA with the help of our new teammate Roma while Kestutis is responsible for implementation of testing automation framework“, – says Aurimas and shares the pattern his team follows in his work.
Testing needs depends on product refinement and stage:
- Research and development stage. The system may not be stable enough when delivering complicated products. The system might need to be retested often due to constant research and changes, making it time-consuming and expensive. As we also had a significant R&D stage in the beginning, we didn't require a dedicated QA engineer in our team.
- Settled business requirements and design. This is the stage where manual testing and unit and integration testing are needed as the requirements and development become more stable. This was when we requested the first QA engineer for the team. In this stage, the assurance of business requirements' consistency takes a big part of the Tester's daily work. It is not a coincidence that testers collaborate a lot with product owners and business analysts and sometimes even hold a tester-analyst role in general.
- Automation. After the features are tested manually and regression plans are covered, it is a good time to automate the most common workflows to avoid repetitive Testing. If the system is large, it is also necessary to have a separate automation tester. When the system is well-covered with the unit, integration, and automated regression tests, it is safer to consider automated deployments in the production environment. This is the goal of our team as well.
What are your thoughts on who should be testing your code? How does your organization do it?