Software verification
|
Software verification is a broad and complex discipline of software engineering whose goal is to assure that a software fully satisfies all the expected requirements.
There are two fundamental approaches to verification:
- Dynamic verification, also known as Test or Experimentation
- Static verification, also known as Analysis
Dynamic verification (Test, Experimentation)
Dynamic verification is performed during the execution of a software, and dynamically checks its behaviour; it is commonly known as Test phase. Depending on the scope of tests, we can categorize them in three families:
- Test in the small: a test that check a single funtion or class (Unit test)
- Test in the large: a test that check a group of classes, such as
- Module test (a single module)
- Integration test (more than one module)
- System test (the entire system)
- Acceptance test: a formal test defined to check acceptance criteria for a software
- Functional test
- Non functional test (performance, stress test)
Static verification (Analysis)
Static verification is a process to check some requirements of a software doing a physical inspection of it. For example:
- Code conventions verification
- Bad practices detection
- Metrics calculation
- Formal verification
References
- Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli: Fundamentals of Software Engineering, Prentice Hall, ISBN 013099183X