- Mastering Software Testing with JUnit 5
- Boni García
- 429字
- 2021-07-02 15:34:23
Verification and Validation
Verification and Validation -also known as Software Quality Control- is concerned with evaluating that the software being developed meets its specifications and delivers the functionality expected by the consumers. These checking processes start as soon as requirements become available, and continue through all stages of the development process. Verification is different to validation, although they are often confused.
The distinguished professor of computer science Barry Boehm expressed the difference between them back in 1979:
- Verification: are we building the product right? The aim of verification is to check that the software meets its stated functional and non-functional requirements (that is, the specification).
- Validation: are we building the right product? The aim of validation is to ensure that the software meets consumer's expectations. It is a more general process than verification, due to the fact that specifications do not always reflect the real wishes or needs of consumers.
V&V activities include a wide array of QA activities. Although software testing plays an extremely important role in V&V, other activities are also necessary. Within the V&V process, two big groups of techniques of system checking and analysis may be used:
- Software testing: This is the most commonly performed activity within QA. Given a piece of code, software testing (or simply testing) consists of observing a sample of executions (test cases), and giving a verdict on them. Hence, testing is an execution-based QA activity, so a prerequisite is the existence of the implemented software units, components, or system to be tested. For this reason, it is sometimes called dynamic analysis.
- Static analysis: This is a form of V&V that does not require execution of the software. Static analysis works on a source representation of the software: either a model of the specification of design or the source or the program. Perhaps, the most commonly used are inspections and reviews, where a specification, design, or program is checked by a group of people. Additional static analysis techniques may be used, such as automated software analysis (the source code of a program is checked for patterns that are known to be potentially erroneous).
It should be noted that there is a strong divergence of opinion about what types of testing constitute validation or verification. Some authors believe that all testing is verification and that validation is conducted when requirements are reviewed and approved. Other authors view unit and integration testing as verification and higher-order testing (for example, system or user testing) as validation. To solve this divergence, V&V can be treated as a single topic rather than as two separate topics.
- Cocos2d Cross-Platform Game Development Cookbook(Second Edition)
- Python程序設計教程(第2版)
- Objective-C Memory Management Essentials
- 企業(yè)級Java EE架構設計精深實踐
- Learning SQLite for iOS
- Learning Firefox OS Application Development
- 重學Java設計模式
- Mastering Android Development with Kotlin
- Hands-On JavaScript for Python Developers
- Qlik Sense? Cookbook
- Exploring SE for Android
- Learning Kotlin by building Android Applications
- Python面試通關寶典
- 深入理解Kafka:核心設計與實踐原理
- FusionCharts Beginner’s Guide:The Official Guide for FusionCharts Suite