Learn about the differences between two fundamental testing methodologies: Static Testing and Dynamic Testing:
The importance of Verification and Validation in testing cannot be overstated. It’s common knowledge that these two elements are vital for a successful testing procedure.
Recommended IPTV Service Providers
- IPTVGREAT – Rating 4.8/5 ( 600+ Reviews )
- IPTVRESALE – Rating 5/5 ( 200+ Reviews )
- IPTVGANG – Rating 4.7/5 ( 1200+ Reviews )
- IPTVUNLOCK – Rating 5/5 ( 65 Reviews )
- IPTVFOLLOW -Rating 5/5 ( 48 Reviews )
- IPTVTOPS – Rating 5/5 ( 43 Reviews )
In this piece, we will concentrate on Static testing, otherwise referred to as Verification. We will examine it in-depth, as Dynamic testing is often given more attention and has many articles devoted to it.
But, understanding static testing alone is insufficient. We need to grasp its counterpart too, dynamic testing, also known as Validation. In this article, we aim to throw light on the critical contrasts between these two methodologies.
Comparing Static Testing and Dynamic Testing
Dynamic testing involves interactive work with the system rather than merely handling a representation or model of the said system. It encompasses providing input, procuring output, and comparing this output with the expected behavior. The primary aim is error detection through direct interaction with the system.
During this process, we will debunk two prevalent myths about testing:
- Testing is a task performed solely at the conclusion of the development process.
- Only testers perform testing, with other team members having no engagement in the process.
Let’s start with a quick overview of the V-model:
- The left-hand side of the V-model consists of activities that are not performed by the QA team.
- The right-hand side comprises activities undertaken by the development team, testers, and users.
We move on to Requirements Gathering. The Business Analyst and other top-tier management personnel execute this task. The resulting document from this stage is the Business Requirement Document (BRD).
The next stage, System Design, converts business requirements into the Functional Requirements Document (FRD).
During this conversion process, the development team, as the primary actor, scrupulously reviews the BRD document. While the main aim is to decode the business requirements, review of the BRD document occurs simultaneously.
For instance: Let’s assume that the BRD for a banking website emphasizes security. One section elaborates the password rules for users when establishing an account. One rule mentions: Users are not allowed to recycle passwords from other accounts.
This requirement is impractical because a website can only suggest password directives but cannot impose such a restriction. Therefore, it’s impossible to incorporate this requirement into the software.
Reflect on the following points based on the given example:
- How do we conclude that this requirement is unrealistic? Our judgement is based on an analysis of the BRD and common business sense, rather than testing it on the actual site.
- Are we testing this requirement? Yes, we are. But the test is grounded in theory and concept, not on the actual Application Under Test (AUT).
- This sort of testing involves a simple reading or a formal overview of the BRD, or even conducting a feasibility study based on the business requirements.
Dispelling the myths:
- The primary review of the BRD is done by the development team and other technical teams associated in product development, not by testers.
- This review happens at the onset of the project development, not towards the end.
Static Testing Approaches:
In essence, static testing signifies the verification element of software testing. It employs methods such as:
- Document reviews
- Walkthroughs
- Inspections
- Feasibility checks or any other forms of analysis to determine if the software satisfies the stipulated requirements
- Code critique
According to the CSTE CBOK, verification settles the question, “Did we build the correct system?”, while validation resolves the question, “Did we construct the system correctly?”
The tasks associated with static testing occur on the left-hand side of the V-model.
SDLC Stage | Output | Verification | Involving Parties |
---|---|---|---|
Business requirement gathering | BRD (Business Requirement Document) | Scope document (if any) | |
System requirement design | FRD (Functional Requirement Document) | Reviews/verifies the BRD | Dev, Technical teams |
Technical requirements design | TDD (Technical Design Document) | Reviews/verifies the FRD | Dev, Technical teams |
Design (code) | Code | Reviews/verifies the TDD. Code review by the dev team for completeness, format, etc. | Dev, Technical teams |
Note: The above piece of information is applicable to projects that adhere to any development formulation, as the steps are mostly alike.
Validation is represented on the right-hand side of the V-model.
Dynamic Testing Methods:
- Unit Testing
- Integration Testing
- System Testing
The unit, integration, system, and UAT stages involve formulating tests to be executed on the AUT at various stages of its development. Though the tests serve to validate different types of requirements, all pertain to the domain of testing.
Hence, any form of testing that encompasses executing a test on the AUT and utilizing its output to conclude the result (positive or negative) is considered validation.
Is it right to infer that there is no verification on the right-hand side (RHS) of the V-model? The answer is no.
All tests established on the RHS are scrutinized numerous times during the test formulation and finalization phase. To learn more about the detailed procedure of test documentation review, refer here.
On the RHS:
- Developers review Unit and integration tests.
- During documentation, peers review System tests, and after completion, the dev team, and Business Analyst review them.
- Both the QA team and the users review UAT tests before the commencement of UAT.
Contrasting Static Testing and Dynamic Testing
Now, let’s break down the differences between these two crucial testing methodologies:
Static Testing | Dynamic Testing |
---|---|
It is also known as Verification testing. | It is also termed as validation testing. |
It doesn’t involve executing the source code. | It involves executing the source code. |
The goal of static testing is to avert defects. | Dynamic testing strives for defect detection. |
It involves documents, checklists, and designated processes. | It involves source codes and test cases for execution. |
No necessity for code compilation. | Compiling and executing the code is a must. |
Cost of fixing detected defects is relatively lower. | Cost of resolving detected defects is relatively higher. |
It is performed in the beginning stages of the development life cycle. | It is performed at latter stages of the development life cycle. |
Requires several meetings. | Requires fewer meetings. |
Testing is conducted prior to code deployment. | Testing is conducted post code deployment. |
Conducts a dry run of the code via static analysis. | Fully analyzes the code by running it along various paths. |
Static testing deals with structural and statement coverage testing. | Dynamic testing tackles the executable file of the code. |
Items involved in testing include: | Items involved in testing include: |
? Requirement document | ? Unit tests |
? Design documents | ? Integration tests |
? Program specifications | ? System tests |
? GUI wireframes | ? Security tests |
? Performance tests | |
? User acceptance tests | |
Incorporates reviews, walkthroughs, inspections, and static code analysis. | Incorporates functional testing, non-functional testing, and data/control flow analysis. |
Tools utilized for Static testing include: * Soot * Eclipse * Checkstyle * Clang * Sonarqube * Source meter |
Tools utilized for Dynamic testing include: * ValGrind * Procmon * DroidBox * Diakon * BoundsChecker |
The Final Word
To sum up, static testing is a vital testing methodology that comprises actions like Business requirement review, Functional requirement review, design audits, code walkthroughs, and test documentation review. It is a continuous procedure, not restricted exclusively to testers.
Conversely, validation, a part of dynamic testing, is more interactive. It encompasses rigorous procedures like identifying test case/condition, considering coverage, execution, and reporting of defects.
About the Author: Swati S., a member of the STH team, authored this article.
Feel comfortable to share your remarks, queries, and experiences related to static and dynamic testing.
PREV<<