Foundation Level 2 Flashcards
1
Q
A software development lifecycle (SDLC)
A
- an abstract, high-level representation of the software development process
- defines how different development phases and types of activities performed within this process relate to each other, both logically and chronologically
2
Q
Examples of SDLC models
A
- sequential development models (e.g., waterfall model, V-model),
- iterative development models (e.g., spiral model, prototyping)
- incremental development models (e.g., Unified Process)
3
Q
Impact of the Software Development Lifecycle on Testing
A
- Scope and timing of test activities (e.g., test levels and test types)
- Level of detail of test documentation
- Choice of test techniques and test approach
- Extent of test automation
- Role and responsibilities of a tester
4
Q
Good testing practices, independent of SDLC model
A
- For every software development activity, there is a corresponding test activity => quality control
- Different test levels have specific and different test objectives => comprehensive, no redundancy
- Test analysis and design for a given test level begins during the corresponding development phase of the SDLC => principle of early testing
- Testers are involved in reviewing work products as soon as drafts of this documentation are available => supports shift left
5
Q
Testing as a Driver for Software Development (Approaches)
A
- Test-Driven Development (TDD)
- Acceptance Test-Driven Development (ATDD)
- Behavior-Driven Development (BDD)
6
Q
Test-Driven Development (TDD)
A
- Directs the coding through test cases
- Tests are written first, then the code is written to satisfy the tests
- The tests and code are refactored
7
Q
Acceptance Test-Driven Development (ATDD)
A
- Derives tests from acceptance criteria as part of the system design process
- Tests are written before the part of the application is developed to satisfy the tests
8
Q
Behavior-Driven Development (BDD)
A
- Expresses the desired behavior of an application with test cases written in a simple form of natural language, which is easy to understand by stakeholders – usually using the Given/When/Then format.
- Test cases are then automatically translated into executable tests
9
Q
Challenges & Risks of DevOps (test design perspective)
A
- The DevOps delivery pipeline must be defined and established
- CI / CD tools must be introduced and maintained
- Test automation requires additional resources and may be difficult to establish and maintain
10
Q
Benefits of DevOps for testing
A
- Fast feedback on the code quality, and whether changes adversely affect existing code
- CI promotes a shift-left approach in testing by encouraging developers to submit high quality code accompanied by component tests and static analysis
- Promotes automated processes like CI/CD that facilitate establishing stable test environments
- Increases the view on non-functional quality characteristics
- Automation through a delivery pipeline reduces the need for repetitive manual testing
- The risk in regression is minimized due to the scale and range of automated regression tests
11
Q
Shift-Left Approach
A
- an approach where testing is performed earlier in the SDLC
- it does not mean that testing later in the SDLC should be neglected.
- the process but is expected to save efforts and/or costs later in the process.
12
Q
Good practices that illustrate how to achieve a “shift-left” in testing,
A
- Reviewing the specification from the perspective of testing. These review activities on specifications often find potential defects, such as ambiguities, incompleteness, and inconsistencies
- Writing test cases before the code is written and have the code run in a test harness during code implementation
- Using CI and even better CD as it comes with fast feedback and automated component tests to accompany source code when it is submitted to the code repository
- Completing static analysis of source code prior to dynamic testing, or as part of an automated process
- Performing non-functional testing starting at the component test level, where possible. This is a form of shift-left as these non-functional test types tend to be performed later in the SDLC when a complete system and a representative test environment are available
13
Q
Benefits of retrospectives for testing include
A
- Increased test effectiveness / efficiency
- Increased quality of testware
- Team bonding and learning
- Improved quality of the test basis
- Better cooperation between development and testing
14
Q
Hot fix
A
unplanned releases/deployments
15
Q
Categories of maintenance
A
- Corrective
- Adaptive to changes
- Improve performance or maintainability