ComputersSoftware

Testing programs - the process of detecting errors in a software product

When developing software, a significant part of the production process relies on program testing. What this is and how this activity is carried out will be discussed in this article.

What is called testing?

This is understood as the process during which the software is run in order to locate the locations of incorrect code functioning. To achieve the best result, difficult sets of input data are deliberately constructed. The main goal of the auditor is to create optimal opportunities for the failure of the software product. Although sometimes the testing of the developed program can be simplified to the normal performance check and performance of functions. This saves time, but is often accompanied by unreliable software, user dissatisfaction, and so on.

Efficiency

How well and quickly mistakes are has a significant impact on the cost and duration of software development of the required quality. So, despite the fact that testers receive wages several times less than programmers, the cost of their services usually reaches 30-40% of the cost of the whole project. This is due to the number of personnel, because looking for a mistake is an unusual and rather difficult process. But even if the software passed a solid number of tests, then there is no 100% guarantee that there will be no mistakes. It's just not known when they will manifest. To encourage testers to choose the types of verification that are more likely to find an error, different means of motivation are used: both moral and material.

Approach to work

The optimal situation is when various mechanisms are implemented to ensure that there are no errors in the software from the very beginning. For this, it is necessary to take care of the proper architecture design, precise technical assignment, and it is also important not to make adjustments when the project is already started. In this case, the tester is faced with the task of finding and determining a small number of errors that remain in the final result. This will save both time and money.

What is a test?

This is an important aspect of the inspector's activity, which is necessary for successful detection of program code shortfalls. They are necessary in order to monitor the correctness of the application. What is included in the test? It consists of their initial data and values, which should be obtained as resultant (or intermediate). In order to successfully identify problems and inconsistencies, tests should be compiled after the algorithm was developed, but programming did not begin. And it is desirable to use several approaches when calculating the necessary data. In this case, the probability of detecting errors increases because it is possible to examine the code from a different point of view. Complex tests should provide verification of the external effects of the finished software product, as well as its work algorithms. Particular interest is provided by limiting and degenerate cases. So, in the practice of activities with errors, it can often be revealed that the cycle runs one time less or more than was planned. It is also important to test the computer, through which you can verify the conformity of the desired result to different machines. This is necessary in order to make sure that the software can work on all computers. In addition, testing the computer on which the development will be performed is important in the development of multi-platform development.

The art of finding bugs

Programs are often aimed at working with a huge array of data. Is it really necessary to create it completely? No. Practice of "miniaturization" of the program became widespread. In this case, there is a reasonable reduction in the amount of data compared to what should be used. Let's look at this example: there is a program in which a matrix of 50x50 is created. In other words - you need to manually enter 2500 thousand values. This, of course, is possible, but it will take a very long time. But to test the performance, the software product receives a matrix, the dimension of which is 5x5. To do this, you will need to enter already 25 values. If in this case there is a normal, error-free work, then it means that everything is in order. Although here there are pitfalls, which consist in the fact that under miniaturization, a situation occurs, as a result of which the changes become implicit and temporarily disappear. It is also very rare, but it also happens that new mistakes are made.

Pursued Goals

Testing the software is not an easy task, because the process can not be formalized in full. Large programs almost never have the necessary exact standard. Therefore, as a guide, a number of indirect data are used, which, however, can not fully reflect the characteristics and functions of software developments that are being debugged. And they should be selected in such a way that the correct result is calculated even before the software product is tested. If this is not done in advance, then there is a temptation to consider everything approximately, and if the machine result falls into the expected range, then an erroneous decision will be made that everything is correct.

Check in different conditions

Typically, the testing of programs occurs in the volumes that are required for a minimum validation of functionality within a limited range. Activities are carried out with changes in parameters, as well as the conditions of their work. The testing process can be divided into three stages:

  • Check in normal conditions. In this case, the basic functionality of the developed software is tested. The result should be as expected.
  • Check in emergency conditions. In these cases, it is meant to obtain boundary data, which can negatively affect the efficiency of the created software. As an example, you can work with extremely large or small numbers, or in general, a complete lack of information.
  • Exception check. It involves the use of data that lies beyond processing. In such situations, it is very bad when the software perceives them as suitable for calculation and produces a plausible result. It is necessary to take care that in such cases there is a rejection of any data that can not be correctly processed. It is also necessary to provide information about this user

Software Testing: Types

It is very difficult to create software without errors. This takes a considerable amount of time. To get a good product, two types of testing are often used: "Alpha" and "Beta". What are they? When they say about alpha testing, it means testing, which is carried out by the staff of developers in "laboratory" conditions. This is the last step in the test before the program is transferred to end users. Therefore, the developers are trying to turn on the maximum. For ease of operation, data can be logged to create a chronology of problems and their elimination. Beta testing is understood as the delivery of software to a limited number of users so that they can exploit the program and identify the missed errors. A feature in this case is that often the software is not used for its intended purpose. Due to this, faults will be detected where nothing has been seen before. This is quite normal and there is no need to worry about this.

Completion of testing

If the previous steps have been successfully completed, then it remains to conduct the acceptance test. In this case, it becomes a mere formality. During this check, there is confirmation that no additional problems have been found and the software can be released to the market. The more importance the final result will have, the more closely the audit should be conducted. It is necessary to ensure that all stages are passed successfully. This is what the testing process looks like in general. And now let's go into the technical details and talk about such useful tools as test programs. What are they and in what cases are they used?

Automated testing

Previously, it was believed that dynamic analysis of developed software - is too heavy approach, which is ineffective to use to detect defects. But because of the increase in the complexity and volume of programs, the opposite view emerged. Automatic testing is used where the most important priorities are efficiency and safety. And they should be with any input data. As an example of the programs for which such testing is advisable, the following can be cited: network protocols, web server, sandboxing. We will next consider several samples that can be used for such activities. If you are interested in free testing programs, then it's quite difficult to find quality ones among them. But there are hacked "pirate" versions of well-proven projects, so you can turn to their services.

Avalanche

This tool helps to detect defects by testing programs in the dynamic analysis mode. It collects data and analyzes the execution path of the developed object. The tester is given a set of input data that causes an error or bypasses the set of available constraints. Due to the presence of a good verification algorithm, a large number of possible situations are developed. The program receives a variety of input data sets that allow you to simulate a significant number of situations and create conditions where the most likely is the occurrence of a failure. An important advantage of the program is the use of a heuristic metric. If there is a problem, then the application error is highly likely. But this program has limitations like checking only one labeled input socket or file. When performing an operation such as program testing, there will be detailed information about the presence of problems with zero pointers, endless loops, incorrect addresses or malfunctions due to the use of libraries. Of course, this is not a complete list of detected errors, but only their common examples. Correct the shortcomings, alas, will have to developers - automatic tools for these purposes are not suitable.

KLEE

This is a good program for testing memory. It can intercept approximately 50 system calls and a large number of virtual processes, thus being performed in parallel and separately. But in general, the program does not search for individual suspicious locations, but processes the maximum possible amount of code and analyzes the used data transmission paths. Because of this, the testing time of the program depends on the size of the object. At check the bet is made on symbolic processes. They are one of the possible ways to perform tasks in a program that is being tested. Due to the parallel operation, it is possible to analyze a large number of variants of operation of the application under study. For each path after the end of its testing, the sets of input data from which the test began begin. It should be noted that testing programs using KLEE helps to identify a large number of deviations, which should not be. It can find problems even in applications that are developed for decades.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 en.delachieve.com. Theme powered by WordPress.