Exam Prep Condensed Flashcards
What is Software Engineering?
- Programming integrated over time.
- Tools and processes used to build and maintain code.
What is Software Testing?
Verify a program has expected behavior on a finite set of test cases selected from an almost infinite execution domain.
When does Software Testing take place?
- Should be pervasive through software life cycle.
- Planning should start early in the software requirements process.
What is fault?
The cause of a malfunction.
What is failure?
An undesired effect observed from a system.
What term can be applied to both fault and failure when the distinction is not important?
Defect.
The 4 Levels of Testing
- Unit Testing
- Integration Testing
- System Testing
- Acceptance Testing
What is a unit test?
Testing individual components.
What is Integration Test?
Testing integrated components.
What is system test?
Testing the entire system.
What is acceptance test?
Testing the final system.
What is regression testing?
Selective retesting to verify modification has not caused failures and that requirements are still met.
What is the the Trade-Off of Regression Testing?
-> Assurance from testing
VS
-> Resources used by testing
What are testing techniques?
Aids to help to ensure the success of Testing Objectives
What are Testing Objectives?
Measurements gathered from tests that provide an evaluation of the program tested.
Example of a Testing Technique
Branch Coverage: How much of the codebase is tested. Meeting a branch coverage metric (i.e. 95%) is a way of improving the chances of finding failures by attempting to systematically exercise every program branch at every decision point.
What is Software Maintenance?
All activities required to provide cost-effective support to software.
What are Pre Delivery Activities?
Planning for post delivery, maintenance, and logistics of deployment.
What are Post Delivery Activities?
- Modifying software
- Training for operation of a help desk
What has caused the increased focus on Software Maintenance?
Organizations trying to squeeze the most out of their software by keeping it operating as long as possible.
Five Key Characteristics of Maintaining Software.
- Maintaining control over daily functions.
- Maintaining control over modification.
- Perfecting functionality.
- Identifying security threats and fixing security vulnerabilities.
- Preventing degradation of software performance.
Technical Issues of Software Testing
- Cost of repeated testing.
- Re-validating reported problems.
- Importance of Regression Testing for maintenance.
- Finding time to test.
- Coordinating tests.
- Critical software is hard to bring offline for testing
- Tests can’t be executed in the production system.
What is maintainability?
Capability of modification.
Why is Maintainability difficult to achieve?
Sub-Characteristics Overlooked during development. This causes a lack of Documentation and Test Environments
How to enhance Maintainability?
By having systematic and mature processes, techniques, and tools.
Best approach to estimate Maintenance?
Experience combined with historical data.