title: Dynamic testing
text: # 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
  
  The process and function of dynamic testing in software development, dynamic testing can be divided into unit testing, integration testing, system testing, acceptance testing and finally regression 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 is used to detect if the interfaces between the various units are properly connected during the integration process of the entire software.
  
  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 behaviour 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.
  
  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.
  
  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.
  
  ## Evaluation
  
  Advantages
  
  * 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.
  
  Disadvantages
  
  * Automated tools may give the wrong security, such as check everything.
  * Automated tools can generate false positives and false negatives.
  * Finding trained dynamic test professionals is not easy.
  * 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.
  