Software Verification, Validation & Testing
Verification and Validation
What is Verification?
Verification means checking the software while it is being made. It answers a simple question: Are we building the software in the correct way? In verification, we check documents, plans, designs, and code without running the program. This step helps to find mistakes early, before they become big problems. Verification saves time and money because fixing errors early is easier. Teachers often say verification is about doing the work right.
Real-life example
When you write an exam answer, you
check spelling and format before submitting. You have not checked marks yet,
but you check if you followed the rules. That is verification.
Key points
Happens before running the software
Checks documents and code
Finds mistakes early
Important definition (Exam)
👉 Verification checks
whether software is built correctly according to rules and plans.
What is Validation?
Validation means checking the software after it is ready. It answers another simple question: Are we building the correct software? In validation, we run the software and see if it works as users expect. Validation focuses on user needs and real use. Even if software is built correctly, it is useless if it does not solve the user’s problem.
Real-life example
After buying a mobile phone, you use
it to see if calling, internet, and camera work properly. That checking is
validation.
Key points
Happens after development
Software is executed (run)
Focuses on user needs
Important definition (Exam)
👉 Validation checks whether
the final software meets user requirements.
Verification vs Validation (Comparison Table)
| Point | Verification | Validation |
|---|---|---|
| Main focus | Correct process | Correct product |
| When done | During development | After development |
| Execution | No program run | Program is run |
| Simple meaning | Are we building it right? | Are we building the right thing? |
Exam Tip 📝
Always remember:
Verification = process, Validation = product.
Evolutionary Nature of Verification and Validation
Verification and validation do not happen only once. They continue throughout software development. As software grows step by step, checking also happens step by step. Early checking looks at plans and designs. Later checking looks at code and final software. This continuous process helps teams catch errors at every stage. It improves quality and reduces stress at the end.
Real-life example
In college projects, teachers check
proposal first, then mid-review, and finally the project demo. Checking
happens again and again, not only at the end.
Key points
Runs through all stages
Errors found early
Quality improves over time
Why this matters
Less rework
Better final software
Easier project management
Impracticality of Testing All Data and Paths
Testing all data and all paths means checking every possible input and every possible way the software can run. In real life, this is impossible. Modern software has millions of inputs and paths. Testing everything would take years and huge money. So testers choose important cases instead of all cases. This is why smart testing is needed.
Real-life example
You cannot check every possible route
from home to college. You only check common and risky routes.
Key points
Too many possibilities
Time and cost are high
Selective testing is used
Exam Tip 📝
Never write “testing all cases is possible”.
Always say it is impractical.
Proof of Correctness
Proof of correctness means showing logically that software works as expected. It uses logic and rules instead of running the program. This method is strong but difficult. It needs deep thinking and maths-like steps. Because of complexity, people rarely use it alone. They combine it with testing for better results.
Real-life example
In maths, you prove a formula using
steps instead of trying all numbers.
Key points
Uses logic, not execution
Very accurate
Hard and time-consuming
Remember This 📌
Proof shows correctness in theory,
testing shows correctness in practice.
Software Testing
Software testing means running the software to find mistakes. The goal is not to show software works, but to find where it fails. Testing improves quality and user trust. Every company tests software before release. Without testing, software can cause loss and frustration.
Real-life example
Before uploading a college assignment,
you open the file to see if it works properly.
Key points
Software is executed
Errors are found
Quality improves
Why testing helps in jobs
Companies need reliable software
Testers are always in demand
Functional, Structural and Error-Oriented Testing
Functional Testing
Functional testing checks what the software does. It compares output with expected results. Tester does not care how code works inside. This testing focuses on features and user actions.
Example
Checking if a shopping app shows correct bill
after adding items.
Key points
Focus on output
Based on user actions
No code knowledge needed
Structural Testing
Structural testing checks how the code works inside. Tester looks at logic and flow. It ensures important parts of code are tested. This testing needs coding knowledge.
Example
Teacher checks each part of your program logic
during viva.
Key points
Focus on internal code
Needs programming knowledge
Covers code paths
Error-Oriented Testing
Error-oriented testing tries to break the software. Tester gives wrong input to see behaviour. This helps find hidden problems.
Example
Entering letters in a phone number field.
Key points
Focus on mistakes
Improves robustness
Very practical
Comparison Table
| Type | Focus | Example |
|---|---|---|
| Functional | Output | App features |
| Structural | Code flow | Program logic |
| Error-oriented | Wrong input | Invalid data |
Static and Dynamic Testing Tools
Static Testing Tools
Static tools check software without running it. They scan code and documents to find mistakes. These tools help early checking and save time.
Example
Spell checker in Word finds errors without
reading aloud.
Key points
No execution
Early error detection
Fast feedback
Dynamic Testing Tools
Dynamic tools check software by running it. They observe behaviour during execution. These tools help find runtime problems.
Example
Using an app to see if it crashes.
Key points
Program is run
Finds real-time errors
User-focused
Static vs Dynamic Tools Table
| Point | Static | Dynamic |
|---|---|---|
| Execution | No | Yes |
| Stage | Early | Later |
| Focus | Code quality | Behaviour |
Characteristics of Modern Testing Tools
Modern testing tools are smart, fast, and helpful. They support automatic testing, meaning tests run without manual work. They give clear reports and save time. Many tools work with different platforms and languages. Companies prefer such tools to reduce effort and improve accuracy.
Real-life example
Auto-reply in email works without
manual effort.
Key points
Automation support
Easy reports
Time saving
Reliable
Exam Tip 📝
Write at least three characteristics in
exams.
Possible Exam Questions
Short Answer
Define verification and validation.
Why is testing all paths impractical?
What is functional testing?
Long Answer
Explain verification and validation with examples.
Describe types of software testing.
Compare static and dynamic testing tools.
Detailed Summary (For Revision)
Verification and validation are essential to ensure software quality. Verification checks work during development, while validation checks final output. Both work continuously through the project. Testing all cases is impossible, so smart testing is used. Proof of correctness gives logical confidence but is hard to apply fully. Software testing finds errors by running programs. Different testing types focus on output, code, or errors. Static tools work without execution, while dynamic tools need execution. Modern tools automate work and save time. Understanding these topics helps students perform better in exams and real jobs.
Key Takeaways 📌
Verification = process checking
Validation = user satisfaction
Testing improves quality
Tools make testing easier
Exams often ask comparisons
Final Remember This
👉 Good software = verified + validated + tested