Software Testing Flashcards
Why do we test software?
to ensure we’re building the right product and building it right
What are the two general categories of testing?
Validation Testing
Defect Testing
Why is Testing important?
Testing identifies deficiencies in requirements, design & implementation
What is the purposes of Validation Testing?
Demonstrate that software meets requirements
What does Validation Testing test?
- The main success scenario of each use-case
- The main use-case extensions
What is the purpose of defect testing?
Finding defects by finding inputs where the software behaviour is incorrect
What does Defect Testing test?
- Use-case extensions that define error handling
- How the system operates under stress
- The boundaries of functional & non-functional requirements
What did Edsger Dijkstra say about Testing?
Testing can only show the presence of errors, not their absence
True or False: Validation Testing is performed as an end-of-cycle activity
False, Validation Testing is performed throughout the entire development process
What are some of the questions that Validation Testing attempts to answer?
- Are we building the right product?
- Does the product do what the customer expects it to?
- Does the customer validate that the software solves the problem it’s intended to solve?
What are the three purposes of Verification Testing?
- Find defects by finding inputs where the software behaviour is incorrect
- Find defects by modifying & stressing the environment in which the software operates
- Have the software for completeness (does it deliver on all its functional & non-functional requirements?)
How do we verify & validate software?
- Inspection & Reviews
- Testing
What are the properties of Software Inspection?
- In-depth (errors don’t cover/mask other errors)
- Does not need running or complete code
- Economical (no additional Unit Tests)
- Everything can be inspected, not just code
- Can consider qualities (non-functional requirements) that are hard to test otherwise
How effective if Software Inspection?
60-90% of errors can be found via inspection
What are the three types of Testing?
- Development Testing
- Release Testing
- User Testing
What is Development Testing?
Conducted by developers as part of the development process
What is Release Testing?
conducted by independent testing teams that verifies & validates that the integrate software is correct
What is User Testing?
Conducted by users or pseudo-users to validate that software is suitable
What is the main purpose of debugging code?
to validate your assumptions
True or False: Debugging is not integral to software development and is a separate testing activity
False, Debugging is integral to software development and is not a separate testing activity
What are the limitations of Software Inspection?
- Typically a manual process which prevents regression verification
- Hard to inspect complex runtime conditions
- Considered an expensive process
Why is regression verification a limitation of Software Inspection?
Static code analysis can be performed automatically using tools to discover anomalies, compliance with standards, testability, code contracts
Why are runtime conditions a limitation for software inspection?
- Unexpected interactions between components
- Timing problems
- Performance issues
What is Unit Testing?
Development testing that verifies the functionality of objects & their methods
What is Component Testing?
Development testing tht verifies several units (e.g. objects) that are integrated to create a component