Testing is an expensive and time-consuming stage of developing software systems. Therefore, a wide range of tools has been created to support the testing process, which significantly reduces costs for it. You can see the reviews of software testing tools.
Figure 6 shows the possible testing tools and the relationship between them.
1. The organizer of tests. Manages the execution of tests. It tracks the test data, expected results and tested functions of the program.
2. The test data generator. Generates test data for the program under test. It can select test data from the database or use special templates to generate random data of the required kind.
3. The Oracle. Generates expected test results. As oracles, previous versions of the program or the object under investigation can act. When testing, the oracle and the test program run in parallel and the results of their execution are compared.
4. File comparator. Compare the test results with the results of the previous testing and compile a report on the differences found. Comparators are especially important when comparing different versions of the program. Differences in the results indicate possible problems existing in the new version of the system.
5. The report generator. Forms reports on the results of the tests.
6. Dynamic analyzer. Adds a code to the program that counts how many times each statement is executed. After running the test, creates an executable profile that shows how many times each program is executed in the program.
7. The simulator. There are several types of simulators. Target simulators model the machine on which the program will run. The user interface simulator is a script-driven program that simulates interactions with the user interface. The I / O simulator generates sequences of repetitive transactions.
The requirements for testing large systems depend on the type of application being developed. Therefore, the testing tools invariably have to be adapted to the testing of a particular system.
To create a complete set of test tools, as a rule, it takes a lot of effort and time. The entire set of tools shown in Fig. 6, is used only when testing large systems. For such systems, the total cost of testing can reach 50% of the total cost of system development. That is why it is profitable to invest in the development of high-quality and productive CASE-testing tools.