Part III - Software Quality Flashcards
What is verification?
Ensuring that the system is being built according to the process, that every activity has been carried out correctly - that the thing has been built right
Carried out by testing
- System testing
- Unit testing
- Integration testing
- Regression testing
What is validation?
ensuring that the system has implemented all of the requirements - the right thing has been built
need to check requirements are correct
customer or acceptance testing required
What is system testing?
Making sure the architecture/whole design is correct
What is unit testing?
Implementation is correct - one part at a time
What is integration testing?
Checking the different bits of the software have been put together correctly
What is code correctness?
Code does what it is supposed to
Code behaves the way we expect it to
Checks the functionality requirements are met my the code
What is regression testing?
Making sure that maintenance does not break anything that used to work
How do check fitness for purpose?
Depends on what artifact we are considering, what part of the lifecycle the artifact comes from and what quality attribute we care about
e.g. artifact - code
lifecycle - implementation, operation
quality - correctness
What is an error?
When the system is in a state that is different from what it is supposed to be. Will lead to a failure if not dealt with
e.g. if a constructor that has not been properly set up is executed, the system will go into an error state
How can you produce fault-free code?
Avoid faults by using processes that reduce chance of faults being caused
Detect faults statically - looking over source code
Detect faults dynamically - execute code and see if any failures are occuring (can be done through testing)
What is a fault?
An abnormal aspect of the code that will put the system into an error state when executed
e.g. forget to initialise a field in one constructor so that it is null when it should not be
What is the difference between a fault and a bug?
Bug implies that it appeared spontaneously
Faults do not appear spontaneously - caused due to human action e.g. code smells
What is a failure?
Externally observed incorrect behaviour of code
e.g. a null field leads to a NullPointerException causing the program to crash
What is the RIP model?
Describes the requirements for a failure to be observed:
Reachability - there must be input that reaches the location of the fault
Infection - having executed the fault, the program must come into an error state
Propagation - the error (infected) state must propagate to cause some output of the program to be incorrect
What is the difference between testing and debugging?
Testing is trying to produce failures
Debugging is trying to find the fault that caused a failure - find the point in which the program enters the error state