Testing throughout the Software Development Life Cycle Flashcards
What are some impacts the SDLC has on testing?
Scope and timing of test activities (levels and types)
Level of detail of test documentation
Choice of test techniques and test approach
Extent of test automation
Role and responsibilities of a tester
What is an example of a sequential development model?
Waterfall
What is an example of an iterative development model?
Spiral
What is an example of an incremental development model?
Unified Process
What are some detailed software development methods and agile practices?
Acceptance test-driven development (ATDD)
Behavior-driven development (BDD)
Domain-driven development (DDD)
Extreme programming (XP)
Feature-driven development (FDD)
Kanban
Lean IT
Test-driven development (TDD)
What do testers typically participate in the initial phase of the sequential development model?
Requirement reviews
Test analysis
Test design
Code is not usually available until later phases so dynamic testing cannot be performed early in the SDLC
Because it is assumed that each iteration of an iterative or incremental development will provide a working prototype or product, what do testers participate/provide?
Both static and dynamic testing at all test levels with frequent delivery of increments requiring fast feedback and extensive regression testing
Why is lightweight work product documentation and extensive test automation preferred in Agile development?
It is assumed that changes may occur throughout the project. Extensive automation is preferred for easier regression testing. Manual testing tends to be done using experience-based test techniques that do not require extensive prior test analysis and design.
What are some SLDC good testing practices that are independent of the SDLC model used? And why?
For every software development activity, there is a corresponding test activity so that all development are subject to quality control.
Different test levels with specific and different test objectives allowing for testing to be comprehensive while avoiding redundancy.
Test analysis and design for a given test level begins during the corresponding development phase of the SDLC to allow for adherence to principal of early testing.
Testers are involved in reviewing work products as soon as drafts of documentation are available to support easier testing and defect detection (for a shift-left strategy)
How does test-driven development implement a test early/test-first approach?
TDD directs the coding through test cases instead of extensive software design.
Tests are written first, then the code is written to satisfy the tests, then the tests and code are refactored.
How does acceptance test-driven development implement a test early/test-first approach?
Tests are derived 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.
How does behavior-driven development implement a test early/test-first approach?
The desired behavior of an app is expressed through test cases written in simple form of natural language (Given, when, then) to allow for easy understanding by the stakeholders.
Test cases are then automatically translated into executable tests.
What are some benefits of DevOps from a testing perspective?
Fast feedback on the code quality and whether changes adversely affect existing code.
CI promotes a shift left approach 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 (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.
What are some risks of DevOps?
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.
What is DevOps?
An organizational approach aiming to create synergy by having development (including testing) and operations to work together to achieve a set of common goals.
What does DevOps do for teams?
Promotes team autonomy, fast feedback, integrated toolchains, and technical practices like CI/CD allowing teams to build test and release high quality code faster through a DevOps pipeline.
Why is early testing sometimes referred to as ‘shift-left’?
Because it is an approach where testing is performed earlier in the SDLC (before code is implemented or components to be integrated) but also without neglecting testing later in the SDLC.
What are some good practices to achieve a shift left approach?
Reviewing the specifications from a testing perspective, allowing to find potential defects (ambiguities), incompleteness, and inconsistencies.
Writing test cases before the code is written and have the code run in a test harness during implementation.
Using CI/CD as it provides fast feedback and automated component testing when code is submitted to the 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.
What benefits do retrospectives have on testing?
Increased test effectiveness/efficiency (by implementing suggestions for process improvement).
Increase quality of testware (by reviewing the test processes).
Team bonding and learning (as a result of the opportunity to raise issues and propose improvement points).
Improved quality of the test basis (as deficiencies in the extent and quality of the requirements could be addressed and solved).
Better cooperation between development and testing (as collaboration is reviewed and optimized regularly).