Among all types, functional testing rightfully occupies a leading position, since the program should work correctly first and foremost, otherwise there will be absolutely no sense in the convenience of use, security and sufficient speed. In addition to owning various testing techniques, each specialist must understand how to properly conduct the test in order to get the most effective result.
Functional testing: where to direct the main efforts?
- for unit and system testing;
- to check the "white" or "black" box;
- for manual testing and automation;
- to test new functionality or regression testing ;
- for “negative” or “positive” tests.
Between all of these areas of activity, it is important to find the right path, which will be “medium”, in order to balance efforts, using the advantages of each of the areas to the maximum.
Software verification is carried out in various ways, one of which is testing according to the principle of "black box" or with data management.
The program in this case is presented from the point of view of the "black box", and the check is carried out to clarify the circumstances in which the behavior of the program will not comply with the specification. All errors are determined through data management, which is carried out using exhaustive testing, that is, using all possible data types.
If for a program the execution of a command depends on events preceding it, then verification of all possible sequences will be required. It is quite obvious that for most cases it is simply impossible to perform exhaustive testing, therefore more often an acceptable or reasonable option is chosen, limited to running the program on a small subset of all the input data. This option fully guarantees the absence of deviations from the specifications.
Functional testing involves choosing the right test. It is customary to distinguish between such methods of forming sets for them:
- analysis of boundary values;
- equivalent partition;
- assumption of errors;
- analysis of the relationship between cause and effect.
You can consider each of them separately.
Boundary value analysis. By boundary values it is customary to understand those located at the boundaries of equivalence classes. In such places, it is most likely to detect an error. The use of such a method requires a certain creativity from a specialist, as well as specialization in this particular problem under consideration.
Equivalent split. All possible sets of input parameters are divided into several equivalence classes. Data is combined according to the principle of detecting similar errors. It is generally accepted that if a set of one class detects an error, then equivalent ones will also point to it. Functional testing by this method is carried out in two stages: on the first, equivalence classes are distinguished, and on the second, special tests are already being formed.
Analysis of the relationship of cause and effect. The system can select tests with high performance through such tests. In this case, a separate input condition is accepted as a cause, and an output condition is seen as a consequence. The method is based on the idea of assigning all kinds of causes to certain consequences, that is, on clarifying the very causal relationships. Testing a software product is carried out in several stages, as a result of which a list of causes and ensuing consequences is obtained.