Algorithm Testing
If a tester is assigned to test a module, which performs the transformation of data based on a certain algorithm, the most rigorous approach involves the development of input and expected resultant data that will test features, test cases, and conditions for the occurrence of algorithm errors. For example, if a testing expert is faced with the task of verifying the Fast Fourier Transform algorithm, several properties of this transformation must be tested. Since the fast Fourier transform is a linear transform, the tester creates a test case to test the equality T (a * f, + b * f) = a * T (f,) + b * T (f). Since the fast Fourier transform is reversible, the tester can perform a direct conversion of the individual frequencies to the spectral function, and then subject this spectral function to the inverse transformation and verify that the result coincides with the original individual frequencies, i.e. in the fact that T ~ [Tf)] = f. As things stand, the tester can arrive at the conclusion that the code implements a reversible linear transformation, but the question of whether the algorithm is really a Fourier transform remains open.
Do you dislike the behavior to be shown by your software program? Are you at your wit’s end because you are unable to come up with a solution to this issue? There is no reason to worry if you deal with a performance testing company which ensures that any software will correctly work in a user environment.
The testing specialist will probably have to create data for a fixed frequency, for which the spectral function has only one nonzero component at the selected frequency, and ascertain that its amplitude has the correct value. After this test case, the next “clean” frequency cases can be run, and so on, until all frequencies and amplitudes are tested.
However, this rigorous approach belongs to the category of dynamic testing. A much wider scope of tests on this algorithm can be provided during its development with the simultaneous use of static testing. When developing requirements, the above algorithm is formulated, for instance, as follows: “The user must have a utility that will perform a fast Fourier transform for complex data, the length of which is a power of two, up to 210 inclusive.” This wording is clear to the personnel of the physical or engineering laboratory, but the software developer may not have sufficient mathematical training.