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.

Software Verification, Validation & Testing

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

  1. Define verification and validation.

  2. Why is testing all paths impractical?

  3. What is functional testing?

Long Answer

  1. Explain verification and validation with examples.

  2. Describe types of software testing.

  3. 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