What is software testing? It is impossible to continue to discuss questions about whether the tester is needed before the definition is clarified.
Many developers and testers say that testing is an important step to ensure software quality, but whether they have carefully considered how testing affects software quality as a process.
The traditional development organization enters the testing stage after the encoding is completed. The tester obtains the product of the programmer, runs the program based on the test case, discovers the fault of the program, and reports it to the programmer. Then the programmer traces and solves the defects. In this process, the tester is responsible for fault discovery, and the programmer is responsible for defect resolution. Use a control model to explain the process as follows:
Software = System
Tester = feedback provider (feedback)
Programmer = Controller
The tester's positioning in the development process is determined by the nature of the test activity-testing is a process of getting feedback and observing the results of running the program. How to process the observed data is determined by humans. The tester submits the fault data to the programmer. The programmer analyzes the data and finds the fault defects. Testers with strong capabilities can also analyze defects from data and instruct programmers or solve problems by themselves. However, such a tester is a minority, and it is very expensive to train such a tester. His role in the development process may not be greater than that of a testing programmer. Generally, programmers are more familiar with software implementation details, and the data obtained from testing has more significance to programmers, or is easier to directly play a role.
Based on this, we have reason to believe that a programmer who has mastered the testing technology can become a good observer and controller to better grasp the development process. A team composed of such programmers does not need testers. This means that the team scale is reduced, which means the team's operation cost is reduced and the efficiency is improved.
In the following article, I will continue with this topic, thinking about how to train such programmers and how to build such a team.