Chapter 2: Testing Throughout the Software Development Lifecycle Flashcards
Impact of the Software Development Lifecycle on Testing
The choice of the SDLC impacts on the:
* 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
in the initial phases testers typically participate in requirement
reviews, test analysis, and test design
sequential development models
assumes that change may occur throughout the project
Agile software development
it is assumed that each iteration delivers a
working prototype or product increment.
iterative and incremental development models
Good Testing Practices
- For every software development activity, there is a corresponding test activity
- Different test levels have specific and different test objectives
- Test analysis and design for a given test level begins during the corresponding development phase of the 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
Directs the coding through test cases
Tests are written first, then the code is written to satisfy the tests
Test-Driven Development (TDD):
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
Acceptance Test-Driven Development (ATDD)
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.
Behavior-Driven Development (BDD):
The principle of early testing
Shift-Left Approach
Good practices for Shift-Left Approach
- Reviewing the specification from the perspective of testing -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
- 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.
also known as “post-project meetings” and project retrospectives)
Retrospectives
benefits of Retro for testing
- Increased test effectiveness / efficiency (e.g., by implementing suggestions for process improvement)
- Increased quality of testware (e.g., by jointly reviewing the test processes)
- Team bonding and learning (e.g., as a result of the opportunity to raise issues and propose improvement points)
- Improved quality of the test basis (e.g., as deficiencies in the extent and quality of the requirements could be addressed and solved)
- Better cooperation between development and testing (e.g., as collaboration is reviewed and optimized regularly)
Test Levels
Component testing
Component integration testing
System testing
System integration testing
Acceptance testing
(also known as unit testing) focuses on testing components in isolation. It often requires specific support, such as test harnesses or unit test frameworks.
Component testing is normally performed by developers in their development environments.
(also known as unit integration testing) focuses on testing the
interfaces and interactions between components.
Component integration testing is heavily dependent on the integration strategy approaches like bottom-up, top-down or big-bang.