Testing Flashcards
What is the famous saying regarding testing for errors
Testing can only show the presence of errors, not their absence
What are the 2 things you are trying to do when testing software
- Making sure all requirements are met
- Squash bugs
What is the famous wording for the difference between validation and verification
Validation: Are we building the right product?
Verification: Are we building the product right?
What is V&V concerned with
Checking that the software is meeting specs/reqs and that the functionality works as expected
What is verification (as opposed to validation)
Checking that the software meets functional and non-functional requirements
What is validation (as opposed to verification)
Checking that the software meets the user’s and stakeholder’s expectations, which are not necessarily part of any requirements
What is the goal of V&V
Establish confidence that the software system is “fit for purpose”
What does it mean when a system is “fit for purpose”
The system must be good enough for its intended use
What are the 3 things that determine how much confidence a system needs to have (when is it “good enough”)
- Software Purpose (Criticalness)
- User Expectations (Previous Experience + Company Maturity)
- Marketing Environment (Other Competition)
What should also be done for V&V besides testing, and what are the 3 advantages of doing it
Inspections/Reviews:
1. Errors are discovered that testing would have otherwise been hiding due to the lack of knowing if it came from a known error or a new one
2. You can discover errors before the system can even be ready to test, reducing development costs
3. You can discover a lack of quality in the code that testing cannot identify, such as compliance, portability, and maintainability
What are the 3 things inspections NOT good for that testing could detect
- Unexpected interactions between different parts of the system
- Timing problems (race conditions)
- System performance
What is important to understand when it comes to making test cases
Test cases are impossible to automatically generate. You must be INVOLVED in understanding what the system is supposed to do in order to create test cases and the expected test results.
What are the 3 major stages of testing for a software’s lifespan
- Development Testing (during development)
- Release Testing (finalizing)
- User Testing (post-prod in non-dev environments)
What is particularly impossible to automatically test
GUIs and unanticpated side effects
What are the 3 stages of Development Testing
- Unit Testing (objects/methods)
- Component Testing (composite interfaces)
- System Testing (whole, component interactions)
What are the 3 parts of an automated test
- Setup (initialize, inputs + outputs)
- Call (the object)
- Assertion (compare result)