In this article, we are going to learn what is dynamic testing, types of dynamic testing, how to perform it, and the following
What is Dynamic Testing with Example?
Dynamic Testing is a software testing method, which is used to check defects in software application by executing the code where as static testing is used to check defects without executing the code. Read more about Static testing here.
The primary goal of dynamic testing is to evaluate software functionality under dynamic conditions, such as those that cannot be predicted ahead of time.
To perform testing effectively, we follow verification and validation (V&V) in Software Testing.
Verification is also known as Static testing.
Validation is also known as Dynamic Testing.
In Dynamic testing, the software is tested for the given values, and the results are examined.
In Dynamic testing, testers execute the test cases by giving input values and validate the expected output with the actual output.
It can be done both manual or automated way.
Dynamic Testing Example
Let’s see how to perform dynamic testing with an example.
We perform dynamic testing by providing inputs (dynamic values) and validate the result or output value of behavior.
Assume, we are testing a login functionality of a Gmail application. To do this first we need to create Gmail accounts (username and password) for testing purpose. Gmail has certain conditions for setting up username and password.
Username should be 6 charactes long
Password should be 8 characters long, must have a capital letter, one numeric value, and one special character.
Say, we have the following parameters (username and passwords) to test login functionality of Gmail account
|Parameter||Username||Password||Valid/Invalid Test Data|
When we pass the above test data while testing Gmail login functionality, Gmail takes us to the inbox while we pass the parameter 1 and throws an error message while we pass the parameters 2 & 3. This result indicates that the code is dyanmically responding based on the user input.
Here we know that the parameters 2 & 3 values are incorrect but we still pass those to know how the system is performing with incorrect input data.
This type of testing is done with the intent of finding errors.
Don’t miss: Static Testing vs Dynamic Testing
Types of Dynamic Testing
Dynamic testing is divided into two categories, which are as follows:
- White Box Testing
- Black Box Testing
The picture below shows us the many sorts of dynamic testing, levels of testing, and so on.
Let me go through each type of testing and why it’s used.
White Box Testing
White box testing is also known as clear box testing or glass box testing.
White box testing is a software testing method used to test how the application is performing based on the code.
White box testing is usually performed by the developers or white box testers who has knowledge on the internal structure/code/design.
Black Box Testing
Black box testing is also known as Behavioral/Specification-Based/Input-Output Testing
Black Box Testing is a software testing method used to evaluate the functionality of the software without looking at the internal code structure.
This can be applied to every level of software testing such as Unit, Integration, System, and Acceptance Testing.
Black Box Testing is usually performed by testers who don’t require any programming expertise.
Don’t miss: Black Box Testing vs White Box Testing
Dynamic Testing Techniques
Dynamic Testing techniques are classified into two categories. They are
- Functional Testing
- Non-functional Testing
Functional testing is done to verify that each function of the application behaves as specified in the requirement. Here testes test all the funcitionalities by providing appropriate input to validate the actual output with the expected output.
In simple words, what the system actually does is functional testing.
Learn more on Functional testing here
Non-functional testing is done to improve the user experience on how fast the application responds to a request. it refers to various aspects of the software such as performance, load, stress, scalability, compatibility, security, etc.,
It verifies the attributes such as performance, memory leaks, or robustness of the system.
In simple words, how well the system performs is non-functionality testing.
Learn more on Non-functional testing here.
Levels of Dynamic Testing
Dynamic testing is done at both functional and non-functional levels.
Some of the levels in functional testing are as follows.
- Unit Testing
- Integration Testing
- System Testing
- Accpetance Testing
Unit Testing: Unit testing is also known as module testing or component testing. It is used to verify that each component of the source code, such as a unit or module, is functioning properly. Usually developers do unit testing in their own environment.
Integration Testing: The goal of integration testing is to check for any issues between two software components. There are numerous ways to do integration testing, including the Big Bang Approach, Top-Down Approach, Bottom-Up Approach, and Hybrid Integration approach.
System Testing: End-to-end testing of a fully integrated application to evaluate the system’s compliance with its specified requirements is called System Testing. It is also known as End to End testing. Checking the completed system to ensure that the application performs as intended or not.
Accpetance Testing: Acceptance testing is the process of determining whether an application behaves as expected after it’s released. It is carried out by end-users and testers to confirm that the application functions correctly.
Some of the levels in non-functional testing are as follows.
- Performance Testing
- Usability Testing
- Compatibility Testing
- Recovery Testing
- Security Testing
Performance Testing: This is the process of determining or validating the speed, scalability, and/or stability features of a system or application under test. The goal of performance testing is to produce response times, throughput, and resource-utilization levels that satisfy project or product performance specifications. Read more about Performance Testing here.
Usability Testing: To assess whether the application is easy to use or not. This testing seeks to determine if the end-user can easily understand and use the software. It should be self-explanatory, and no training should be required to run it. Read more about Usability Testing here.
Compatibility Testing: It’s the process of deploying and measuring whether an application functions as intended in a variety of environmental factors.
Recovery Testing: Recovery testing determines how quickly the system can recover from a system crash or hardware failure.
Read more: 100+ Types of Software Testing
Dynamic Testing Process
In STLC, the actual Dynamic Testing Process begins with Test Case Design. Let’s go through each activity.
Step 1: Test Case Design
Here we design test cases based on the requirements. We can originate the test conditions, collect the test cases, uncover the coverage Items, and identify those features that need to be tested.
Step 2: Environment Setup
We must ensure that the Testing Enviroment is always comparable to the Production environment. In this phase, among other things, we must set up and maintain the test machines.
Step 3: Test Execution
During this phase, test cases are put into action.
Step 4: Analysis & Evaluation
We analyse and evaluate the findings generated from the testing. We’ll compare those outcomes with the expected results.
Step 5: Bug Reporting
The difference in the execution and actual outcomes must be resolved, otherwise it is treated as a failure. If the Expected and Actual Results are not comparable, the Test case should be marked as fail, and a bug should be logged.
Advantages and Disadvantages of Dynamic Testing
We have both advantages and disadvantages when it comes to dynamic testing.
Advantages of Dynamic Testing
Following are the advantages of dynamic testing:
- Dynamic Testing becomes essential in validating the performance of the software application.
- It ensures the reliability and consistency of the software application.
- In dynamic testing process we can use automation tools.
- Uncovered flaws that are deemed to be too hard or complex for static Testing and cannot be addressed through static Analysis may be revealed by dynamic Testing.
- We execute the software end to end in Dynamic Testing, ensuring error-free code and improving the product’s quality and project’s success.
- We can identify security issues, which improves the quality and security of our application.
Disadvantages of Dynamic Testing
Following are the disadvantages of dynamic testing:
- It is a time-consuming process since it executes the application/software or code, which needs a huge amount of resources.
- It is bit costlier since it starts after the coding phase is finished. It doesn’t start early in the software development lifecycle. It catches bugs in later stages. Because of this, any bugs fixed in later stages may result in an increase in cost.