User:BW Yuan/sandbox

= Dynamic testing = Dynamic testing (or dynamic analysis) is a term used in software engineering to describe the testing of the dynamic behavior of code. That is, dynamic analysis refers to the examination of the physical response from the system to variables that are not constant and change with time. In dynamic testing the software must actually be compiled and run. It involves working with the software, giving input values and checking if the output is as expected by executing specific test cases which can be done manually or with the use of an automated process. This is in contrast to static testing. Unit tests, integration tests, system tests and acceptance tests utilize dynamic testing. Usability tests involving a mock version made in paper or cardboard can be classified as static tests when taking into account that no program has been executed; or, as dynamic ones when considering the interaction between users and such mock version is effectively the most basic form of a prototype.

Main Procedure
According to the process and function of dynamic testing in software development, dynamic testing can be divided into the following steps：

Unit Testing
Unit testing is a test that focuses on the correctness of the basic components of a software. Unit testing falls into the category of white-box testing. In the entire quality inspection system, unit testing needs to be completed by the product group, and then the software is handed over to the testing department.

Integration Testing
Integration testing is used to detect if the interfaces between the various units are properly connected during the integration process of the entire software. In practice, we divide the integration test into Assembly testing and Validation testing several times.

Assembly testing is an extension of unit testing. In addition to testing the basic components of the software, it is necessary to increase the test of the interface between the interconnected modules. For example, in the three-dimensional calculation software, the component layout and the component engineering quantity calculation are different components of the software, but the data of the component engineering quantity calculation is directly derived from the component arrangement, and the two units are separately tested, which may be normal, but the component arrangement Whether the data can be passed to the engineering quantity calculation normally must pass the test of the assembly test. The integration test is a white box test.

Validation testing is a test of the assembly test results. The main purpose is to eliminate the errors found in the unit test and the assembly test as much as possible. In addition, validation testing can help programmers ensure that software products ultimately meet customer needs. In short, this test method can simulate and verify that the customer's needs are properly met in the appropriate test environment.

System Testing
Testing a software system that has completed integration is called a system test, and the purpose of the test is to verify that the correctness and performance of the software system meet the requirements specified in its specifications. Testers should follow the established test plan. When testing the robustness and ease of use of the software, its input, output, and other dynamic operational behavior should be compared to the software specifications. If the software specification is incomplete, the system test is more dependent on the tester's work experience and judgment, such a test is not sufficient. The system test is Black-box testing.

Acceptance Testing
This is the final test before the software is put into use. It is the buyer's trial process of the software. In the actual work of the company, it is usually implemented by asking the customer to try or release the Beta version of the software. The acceptance test is Black-box testing.

Regression Testing
The purpose of regression testing is to verify and modify the acceptance test results in the software maintenance phase. In practical applications, the handling of customer complaints is an embodiment of regression testing.

Advantage

 * Dynamic testing could identify the weak areas in the runtime environment.
 * Dynamic testing supports application analysis even if the tester does not have an actual code.
 * Dynamic testing could identify some vulnerabilities that are difficult to find by static testing.
 * Dynamic testing also could verify the correctness of static testing results.
 * Dynamic testing could be applied to any application.

Disadvantage

 * 1) Automated tools may give the wrong security, such as check everything.
 * 2) Automated tools can generate false positives and false negatives.
 * 3) Finding trained dynamic test professionals is not easy.
 * 4) Dynamic testing is hard to track down the vulnerabilities in the code, and it takes longer to fix the problem. Therefore, fixing bugs becomes expensive.

The future tendency of testing technology
The development of computer hardware and software technology has changed the traditional testing theory, testing techniques, and measurement methods. Computer speed improvements, graphical user interfaces, distributed multitasking, networking capabilities, and more are quickly being applied and ported to instrumentation and test systems. The development of computers has enabled measurement and instrumentation to enhance functions and improve efficiency. Many convenient and practical automatic test systems have been formed. The combination of computer technology has become the main trend of test and instrument development.

= Reference =