Dynamic analysis tools are ‘dynamic’ because they require the code to be in a running state. They are ‘analysis’ rather than ‘testing’ tools because they analyze what is happening ‘behind the scenes’ that is in the code while the software is running (whether being executed with test cases or being used in operation).
Let us take an example of a car to understand it in a better way. If you go to a showroom of a car to buy it, you might sit in the car to see if is comfortable and see what sound the doors make – this would be static analysis because the car is not being driven. If you take a test drive, then you would check that how the car performs when it is in the running mode e.g. the car turns right when you turn the steering wheel clockwise or when you press the break then how the car will respond and can also check the oil pressure or the brake fluid, this would be dynamic analysis, it can only be done while the engine is running.
Features or characteristics of dynamic analysis tools are as follows:
• To detect memory leaks;
• To identify pointer arithmetic errors such as null pointers;
• To identify time dependencies.
Eventually when your computer’s response time gets slower and slower, but it get improved after re-booting, this may be because of the ‘memory leak’, where the programs do not correctly release blocks of memory back to the operating system. Sooner or later the system will run out of memory completely and stop. Hence, rebooting restores all of the memory that was lost, so the performance of the system is now restored to its normal state.
These tools would typically be used by developers in component testing and component integration testing, e.g. when testing middleware, when testing security or when looking for robustness defects.
Another form of dynamic analysis for websites is to check whether each link does actually link to something else (this type of tool may be called a ‘web spider’). The tool does not know if you have linked to the correct page, but at least it can find dead links, which may be helpful.