Continuing on our previous article on Verification & Validation – we know that they are independent procedures that are used together for checking that a product, service, or system meets requirements and specifications and that it fulfills its intended purpose. Verification involves all the static testing techniques whereas Validation is more of Dynamic Software testing. But what is Dynamic testing? Dynamic as in lively and active. And when do you think a software is active? Yeah! When users are actually using it. Taking a cue from it,
Dynamic Software testing is a Software testing technique wherein the product, service, or system is actually used (the code is executed) in order to analyze the behavior (or output) for a set of conditions (or inputs).
Dynamic Software 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 (using automation tools like Selenium or HPE UFT).
Let’s take a simple example – you have to test a textbox where the specification says the label should be “Usrname” and it should accept only alphanumeric characters.
- Static Testing: We review the specification and identify the spelling mistake, it’s “Username” and not “Usrname”. — No code is run!
- Dynamic Testing: We enter the value as “SoftwareTestingStudio” and the system accepts it – Pass. Next we enter the value as “Software@TestingStudio” and the system still accepts it – Fail. — The code is actually executed.
This form of software validation often involves running the code and systematically feeding a range of variables, or test cases, into the program. By observing the software’s output and checking whether it is consistent with expectations, it is possible to determine whether the code contains errors. The Dynamic Software testing is broadly classified into two categories,
- Functional Testing: performed to verify that all the features developed are according to the functional specifications
- Non-Functional Testing: focus on the nonfunctional attributes of the system such as memory leaks, performance or robustness of the system. Generally performed using tools like LoadRunner, JMeter, etc.
Testers performing dynamic software testing should have the required knowledge, extensive experience, competency and skills. With the right type of skills and knowledge, testers can identify the potential defects before the system is released for use by end-users.
Yeah! By now it should be clear that dynamic software testing is a validation technique wherein the software is analyzed as an end user by actually executing it and comparing the actual behavior with the expected one. It can find errors that are not possible using static testing. Executing the software leads to higher chances of finding bugs in the application, to ensure a quality product.
Dynamic testing is very important to evaluate software, before its release to market, so that you can verify that all its features are working as expected. However Dynamic Software testing and Static testing are complementary methods, with different motto, and should be used together, as they tend to find different types of defects effectively and efficiently. Both dynamic testing and static testing techniques are widely used in developing different types of quality software.