Intro to Software Verification

Definition:  Verify that a software product conforms to the requirements.

Two approaches: empirical and formal.

Empirical ("Testing")
    Make a hypothesis (Expected results), run an experiment (execute the program with known inputs), observe the actual results and see if they confirm the hypothesis.

Formal ("Proof")
   Construct a logical proof of the correctness of the program.

Testing Objective
Executing a program with the intent of producing errors. (Different than developers objective).

Testing Principles
Test Qualities
Test Case (definition)
A set of preconditions and inputs to the software, procedures for how to carry out the test, and expected outputs.

Testing Phases (Testing Lifecycle)

Testing Styles
Functional
Non-Functional
Testing Techniques