Chapter 2 - Testing Throughout the SDLC Flashcards
What is a SDLC model ?
A software development lifecycle (SDLC) model is an abstract, high-level representation of the software development process.
It defines how different development phases and types of activities performed within this process relate to eachother, both logically and chronogically.
The choice of the SDLC impacts on the :
- Scope and timing of tests activities
- Level of detail of test documentation
- Choice of test techniques and test approach
- Extent of automation
- Role and responsibilities of a tester
Good practices and SDLC :
- For every software development activity, there is a corresponding test activity, so that all development activities are subject to quality control
- Different test levels have specific and different test objectives, which allows for testing to be appropriately comprehensive while avoiding redundancy
- Test analysis and design for a given test level begins during the corresponding development phase of SDLC, so that testing can adhere to the principle of early testing
- Testers are involved in reviewing work products as soon as drafts of this documentation are available, so that earlier testing and defect detection can support the shift-left strategy
How is characterized the Test-Driven Development (TDD) approach ?
- Direct the coding through test cases
- Tests are written first, then the code is written to satisfy the tests, and then the tests and code are refactored
How is characterized the Acceptance Test-Driven Development (ATDD) approach ?
- Derives tests from acceptance criteria as part of the system design process
- Tests are written before the part of the app is developed to satisfy the tests
How is characterized the Behavior-Driven Development (BDD) approach ?
- 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
Some benefits of DevOps from the testing perspective :
- Fast feedback on the code quality, and wheter changes adversely affects existing code
- CI promotes a shift-left approach in testing by encouraging devs to submit high quality code accompanied by component tests and static analysis
- Promotes automated processes like CI (continuous integration ) / CD(continuous delivery) that facilitate establishing stable test environments
- Increases the view on non-functional quality characteristics (e.g., performance, reliability)
- 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
Some risks of using DevOps from the testing perspective :
- The DevOps delivery pipeline must be defined and established
- CI (continuous integration ) / CD(continuous delivery) tools must be introduced and maintained
- Test automation requires additional resources and may be difficult to establish and maintain
Manual testing will still be needed.
What is Shift-Left approach ?
The principle of early testing is sometimes referred to as shift-left because it is an approach where testing is performed earlier in the SDLC.
Good practices to achieve a “shift-left” ?
- Reviewing the specification from the perspective of testing. These review activities on specs often find potential defects, such as ambiguities, incompleteness, and incinsistencies
- Writing test cases before the code is written and have a code run in a test harness during code implementation
- Using CI and aven 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 automated process
- Performing non-functionnal testing starting at the component test level, where possible.
A shift-left approach might result in extra training, effort and/or costs earlier in the process but is expected to save afforts and/or costs later in the process.
What are Retrospectives and what is their purpose ?
Also known as “post-project meetings”, they are often held at the end of a project or an iteration, at a release milestone, or can be held when needed. In these meetings the participant discuss :
1. What was successful, and should be retained ?
2. What was not successful and could be improved ?
3. How to incorporate the improvements and retain the successes in the future ?
The results should be recorded and are normally part of the test completion report.
Retrospectives are critical for the successful implementation of continuous improvement and it is important that any recommended improvements are followed up.
What are typical benefits for testing after a Retrospective?
- Increased test effectiveness /efficiency (e.g., by implementing suggestions for process improvement)
- Increased quality of testware (by jointly reviewing the test processes)
- Team bonding and learning (as a result of opportunity to raise issues and propose improvement points)
- Improved quality of the tests basis
- Better cooperation between development and testing (collaboration is reviewed and optimized regularly)
What are test levels ?
Test levels are groups of test activities that are organized and managed together.
Each test level is an instance of the test process, performed in relation to software at a given stage of development, from idividual components to complete systems or, where applicable, systems of systems.
They are related to other activities witin the SDLC.
Test levels may overlap in time.
What are the 5 test levels ? (adressed in the syllabus)
- Component testing
- Component integration testing
- System testing
- System integration testing
- Acceptance testing
Some of the non-exhaustive list of attributes for test levels ?
- Test object
- Test objectives
- Test basis
- Defects and failures
- Approach and responsibilities
…