Software Verification, Validation and Testing (UNIT-1)
Software Verification, Validation and Testing (UNIT-1)
1) Terminology
1. Verification
2. Validation
3. Test Case
4. Test Plan
6. Test Suite
7. Smoke Testing
8. Regression Testing
9. Unit Testing
25. Bug/Defect
Error:
● An error refers to a human mistake made during software
development, such as in coding, design, or documentation.
● Example: A developer accidentally writes incorrect logic in the
code.
Fault (Defect/Bug):
● A fault occurs when an error in the code or design leads to an
incorrect implementation or an issue in the software.
● Example: The wrong logic (error) results in a bug that causes
a function to miscalculate results.
Failure:
4) Correctness:
Reliability:
Debugging:
● Definition: The process of finding and fixing the cause of a
detected defect (fault) in the software.
● Purpose: To correct errors in the code that were identified
during testing.
● Approach: Involves locating the root cause of the issue,
modifying the code, and verifying the fix.
● Example: Tracing through the code to identify why the login
function fails and then fixing the underlying bug.
1. Static Testing:
● Definition: A form of testing where the software is examined
without executing the code. It involves reviewing and
analysing code, design documents, and specifications.
● Purpose: To find errors early in the development process,
such as coding flaws, inconsistencies, or compliance issues.
● Techniques: Code reviews, walkthroughs, inspections, and
static analysis tools.
● Example: Reviewing a function's code logic to detect potential
issues or deviations from the design.
2. Dynamic Testing:
● Definition: A form of testing that involves executing the code
to validate the software’s behavior and functionality under
various conditions.
● Purpose: To identify defects that occur during the software’s
runtime and ensure the software works as expected.
● Techniques: Unit tests, integration tests, system tests, and
user acceptance tests.
● Example: Running test cases to check if the login feature
works correctly by providing valid and invalid inputs.
Exhaustive Testing: Theoretical Foundations
Exhaustive testing is a testing approach where all possible inputs,
paths, and scenarios of a software application are tested to ensure
correctness and reliability. While it sounds ideal, the practical
application of exhaustive testing is limited by several factors. Below
are the theoretical foundations that highlight its impracticality: