2. 2. Testing Throughout the Software Development Lifecycle Flashcards
Explain the impact of the chosen software development lifecycle on testing
- Scope and timing of the test activity
- Level of details of test documentation
- Choice of test techniques and test approach
- Extent of test automation
- Role and responsibility of a tester
Recall good testing practices that apply to all software development lifecycles?
- All development activities are subject to quality control.
- Avoiding redundancy.
- Test analysis activity and preparing the test cases.
- Reviewing work product early to support shift-left strategy.
Recall the examples of test-first approaches to development?
- Test Driven Development
Technical approach - Acceptance Test Driven Development
Business approach - Behaviour Driven Development
Requirement approach
Summarise how DevOps might have an impact on testing?
- Fast feedback on the code quality.
- CI promotes a left shift approach in testing by encouraging devs to submit high quality code.
- Promotes automated processes like CI/CD
- Increases the view on non functional quality characteristics. (performance issues)
- Automation reduces the need for repetitive manual testing.
- Risk in regression is minimised due to scale and range of automated regression tests.
What are the risks and challenges that DevOps can face?
- Delivery pipelines must be defined and established.
- CI/CD tools must be introduced and maintained.
- Test automation requires resources and be difficult to maintain and establish.
Explain the shift-left approach?
- Reviewing the specification from the perspective of testing. Incompleteness and inconsistencies.
- Writing test cases before the code is written. Have the code run in a test harness during code implementation.
- Using CI/CD comes with fast feedback and automated components tests.
- Completing static analysis of source code prior to dynamic testing.
- Performing non functional testing.
Explain how retrospectives can be used as a mechanism for process improvement?
- Increased test effectiveness
- Increased quality of testware
- Team bonding and learning
- Improved quality of the test basis
- Better cooperation between development and testing
Distinguish the different test levels?
- Component testing (unit testing)
Testing component in isolation. - Component integration testing (unit integration testing)
Testing the interfaces and interaction between components. - System testing
Testing the overall behaviour and capabilities of the entire system or product. - System integration testing
Testing the interface of the system under test and other system and external systems. - Acceptance testing
Focuses on validation - system must fulfils the user’s business needs.
Distinguish the different test types?
- Functional testing
Evaluates the functions that a component or system should perform (“What the test object should do”) - Non-functional testing
Checking the non-functional software quality characteristics. (“How well the system behaves”)
a. Performance efficiency
b. Compatibility
c. Usability
d. Reliability
e. Security
f. Maintainability
g. Portability
- Black box testing
Checking the system behaviours against its specifications. - White box testing
Testing of a software solution’s internal coding and infrastructure.
Distinguish confirmation testing from regression testing?
Confirmation testing
Confirms that the original defect has been successfully fixed.
Regression testing
To verify that a code change in the software has not impacted the existing functionality.
Summarise maintenance testing and its triggers?
- The scope of maintenance testing depends on
a. The degree of risk of the change
b. The size of the existing system
c. The size of the change
- The triggers for maintenance and maintenance testing
a. Modifications e.g hot fixes,
b. Upgrades or migration
c. Retirement