With the development of information technique, the software grows larger and larger. How to guarantee and improve the software quality becomes the main concerned point in the field, As one of the key techniques of guaranteeing software quality, software testing can effectively detect the faults in the system. According to the statistics, the cost of software testing accounts for 40% in the whole cost of software development. With the enlarging of software, the proportion of software testing grows larger in the software development. For some safety critical system, the cost of testing almost corresponds to the triple or quintuple cost of all other developing phase. Thus, improving the effectiveness and efficiency of testing and reducing the software developing cost becomes one of the urgent tasks for software engineers.There are two ways of software testing: dynamic method and static method. The difference of these two methods is whether needs to execute program for testing work. The main shortcoming of the dynamic method is to depend on operating specific test cases to testing faults. Therefore it can't measure all faults, but can only test the faults covered with the case. And, the execution expenses of the dynamic testing tools are quite high, even unacceptable sometimes. The static method does not need executive program, but analyses the source code and find out the potential faults. This method has not the executive expenses, but should make a large amount of analytical work. Accuracy of static analysis depends on the representation of program's abstract semantics.This paper analyses systemically some kinds of characteristic faults caused of dynamic memory errors in C/C++, and has proposed a kind of fault-oriented static testing method. Since alias can not avoid in dynamic memory testing, paper studies alias approximate algorithm deeply. Then face to memory leak, paper proposes a testing method based on alias analysis. At last we provide the experimented test results of our tool. |