One way to create test case scenarios that replicate errors related to data flows through a part of the program which does not interact with the user is to create a basic copy of the data files of the initial startup of the program. Then, the results of all subsequent program runs are compared, provided that the program is run with the same copy of the data files. Finally, probes are inserted into the program’s source code, which logs a unique probe number after each I / O statement of the program is executed. By comparing the number of probes recorded in the log each time the program is started, you can determine whether the data flow through the probes remains unchanged for each test that is performed when using the same basic copy of the initial startup data files. Then this test case can be used to check whether or not the data flow in the new version is the same.
A more common way of testing data flows is the approach that is used to test transaction-oriented applications, for example, such as order entry systems, order processing systems, process systems, billing, delivery and return systems. The data obtained from each test transaction can be monitored in each of these processes and confirmed by intermediate results of the test performed between the processes.
One can hardly do without quality assured services over the entire software development life cycle as otherwise there is a high probability to release buggy products.
In the case of testing changes to existing systems, processes of planning and executing data flow testing are not particularly difficult to carry out, since system shots can be done before and after each process is first used by the existing system. Subsequently, after making changes to the new version and entering the same data into it, new results can be compared (sometimes automatically) with previous test results of the existing system.
Another example of a blocking error that also affects the data flow is the statement:
IF (I> J) THEN B (I) = A (J) ELSE B (I) = 0 ENDIF.
If the operation symbol “more than” (>) is specified errantly and the “less or equal” operation symbol (<=) must be present instead, the wrong part of the array B will be zeroed. All the calculations done after execution of this IF statement will have to do with nullified Values of B, while they must be executed with non-zero values copied from the array A. This means that all test results that depend on B will be incorrect. Therefore, the tester will not be able to determine if the errors are contained in the remaining part of the program (the one following the displayed IF statement).