C1 Flashcards
validation
The process of evaluating software at the end of software development to ensure compliance with intended usage: are we building the right system?
verification
The process of determining whether the products of a given phase of the software development process fulfill the requirements established during the previous phase: are we building the system right?
why is software verification difficult?
- many different requirements
- evolving structure
- uneven distribution of faults
software fault
A static defect in the software, the root of the
failures. Faults are design mistakes.
software error
the execution of an incorrect internal state
(runtime) resulting from a fault
software failure
External observable incorrect behavior with
respect to the requirements or other description of the expected behavior
testing central issue
Given a fault, not all inputs will trigger the fault into a failure.
Problem: finding inputs that cause a software failure
3 conditions for a failure to be observed
- reachability: location in the program that contains the fault must be reachable
- infection: when executed the states of the program must be incorrect
- propagation: the infected state must propagate to cause some output of the program to be incorrect
testing
the process of systematic evaluation of software by observing its execution possibly identifying some of the failures
part of verification and validation process in which testers and developers work together to reduce the software risk
Testing can only show the presence of failures, but not the correctness of a program
test coverage criteria
measures of adequacy to increase the
confidence that we have tested enough
black-box testing
Deriving tests from external descriptions
of the software (requirements, specification, design)
white-box testing
Deriving test case from the source code
internals (conditional, statements, internal state)
unit testing
A unit is a small testable software component
- Procedure, method
- Class
Assess software with respect to implementation or detailed design
units are tested in isolation
integration testing
Testing of more than one (tested) unit together to determine if they function correctly.
- assess software with respect to subsystem design
- focus on interfaces and communication between units
system testing
testing the system as a whole
- assess software with respect to architectural design
- verify that specifications are met
acceptance testing
Validate that the system can be used for the intended purpose:
- done by real business users
- enables the customer to determine whether to accept the system or not
- assess software with respect to requirements
also called beta testing
regression testing
testing during maintenance
- assess software with respect to new and old requirements