Static Testing is a form of software testing where the actual program or application is not used. This testing method requires programmers to manually read their own code to find any errors. Static testing is a stage of White Box Testing and is also called Dry Run Testing.
In Static Testing, code is not executed. It can be done manually or by a set of tools. It does not need a computer as the testing of a program is done without executing the program. For example: reviewing, walk through, inspection, etc. This type of testing checks the code, requirement documents, and design documents and puts review comments on the work document.
The purpose of Static testing is to improve the quality of the software by finding out the errors, code flaws and potentially malicious code in the software application. It starts earlier in the development life cycle and hence it is also called Verification Testing. Static testing can be done on work documents like requirement specifications, design documents, source code, test plans, test scripts and test cases, web page content. It is a continuous activity and not done just by testers.
Dynamic Testing is a kind of software testing technique by using which the dynamic behavior of the code is analyzed. Dynamic testing is done when the code is in operation mode. And is performed in a run time environment. It is a method of assessing the feasibility of a software program by giving input and examining the output. Dynamic testing is the Validation part of the Verification and Validation process.
Dynamic testing 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 is a method of assessing the feasibility of a software program by giving input and examining the output and checking if the output is as expected. This is done by executing specific test cases that can be done test manually or with the use of an automated process. Unit tests, integration tests, system tests, and acceptance tests utilize dynamic testing.
The main aim of the Dynamic tests is to ensure that software works properly during and after the installation of the software ensuring a stable application without any major flaws.