Chapter 2 Testing in the Context of the Software Development Lifecycle
What are good testing practices?
All development activities subject to quality control.
What potential defects can be found during specification review?
Ambiguities, incompleteness, inconsistencies.
What is Scrum?
An Agile framework for managing complex projects.
What is a software development lifecycle (SDLC) model?
An abstract representation of the software development process.
What is Lean IT?
An approach to IT management that focuses on reducing waste and improving efficiency.
What is static analysis?
Analyzing source code without executing it.
What does component integration testing focus on?
Component integration testing focuses on testing the interfaces and interactions between components.
What is another name for component integration testing?
Component integration testing is also known as unit integration testing.
What is component integration testing dependent on?
Component integration testing is heavily dependent on integration strategy approaches like bottom-up, top-down, or big-bang.
What is component testing?
Component testing (or unit testing) focuses on testing components in isolation.
What is another name for component testing?
Component testing is also known as unit testing.
What is the relationship between test types and test activities?
Test activities may include multiple test types.
What is the relationship between test levels and test processes?
Test levels are instances of the test process.
What are test levels?
Test levels are related to other activities within the SDLC.
What is the relationship between test levels and test activities?
Test levels consist of multiple test activities.
What is the relationship between test levels and software development stages?
Test levels correspond to different stages of software development.
What is the relationship between test levels and test types?
Test levels may include multiple test types.
What are test types?
Test types are groups of test activities related to specific quality characteristics.
Who participates in retrospectives?
Testers, developers, architects, product owner, business analysts.
Why is it called shift-left?
Testing done earlier in the process.
What is the principle of early testing?
Testing performed earlier in the SDLC.
What is regression testing?
Testing performed to ensure that changes to the software have not introduced new defects.
What are automated tests?
Tests that ensure code quality in future adaptations/refactoring.
How are test levels defined in sequential SDLC models?
The exit criteria of one level are part of the entry criteria for the next level.
Give examples of SDLC models.
Waterfall model, V-model, spiral model, prototyping, Unified Process.
What is extreme programming (XP)?
A software development methodology that emphasizes collaboration and adaptability.
What is Kanban?
A visual system for managing work as it moves through a process.
What are some detailed software development methods and Agile practices?
ATDD, BDD, DDD, XP, FDD, Kanban, Lean IT, Scrum, TDD.
What is test-driven development (TDD)?
A software development practice that involves writing tests before writing code.
What is feature-driven development (FDD)?
A software development process that is driven by designing and building features.
What is a test harness?
A tool or framework to run code during implementation.
What is behavior-driven development (BDD)?
A software development method that focuses on defining behavior through examples.
What is acceptance test-driven development (ATDD)?
A software development method that involves creating tests based on acceptance criteria.
What is agile software development?
A development approach that allows for changes throughout the project.
What is domain-driven design (DDD)?
A software development approach that emphasizes understanding the domain.
When are retrospectives typically held?
At the end of a project or iteration, at a release milestone, or when needed.
When are tests written in ATDD?
Before developing the corresponding application part.
When should test cases be written?
Before the code is written.
What types of testing can be performed at all test levels in iterative and incremental development models?
Both static and dynamic testing.
What is Test-Driven Development (TDD)?
Coding directed by test cases.
Who typically performs component testing?
Component testing is normally performed by developers in their development environments.
What support may be required for component testing?
Component testing often requires specific support, such as test harnesses or unit test frameworks.
Why are retrospectives important?
Critical for continuous improvement and follow-up on recommended improvements.
What is Acceptance Test-Driven Development (ATDD)?
Deriving tests from acceptance criteria.
When does test analysis and design begin?
During the corresponding development phase of the SDLC.
When does test analysis and design start?
During the corresponding development phase of the SDLC.
What is assumed in iterative and incremental development models?
Each iteration delivers a working prototype or product increment.
Why is dynamic testing usually not performed early in the SDLC for sequential development models?
Executable code is usually created in later phases.
What kind of testing techniques are commonly used in agile projects?
Experience-based test techniques that do not require extensive prior test analysis and design.
What is Behavior-Driven Development (BDD)?
Expressing desired behavior with test cases in natural language.
What might be the initial impact of a shift-left approach?
Extra training, effort, and/or costs.
What is required for frequent delivery of increments in iterative and incremental development models?
Fast feedback and extensive regression testing.
What are the benefits of using CI/CD?
Fast feedback, automated component tests.
What are examples of test types?
Functional testing, performance testing, security testing, etc.
What are test levels?
Groups of test activities organized and managed together.
What does system testing often include?
System testing often includes functional testing of end-to-end tasks and non-functional testing of quality characteristics.
What are the benefits of retrospectives for testing?
Increased test effectiveness/efficiency, improved quality of testware, team bonding and learning, improved quality of test basis, better cooperation between development and testing.
What does each test level cover?
Individual components to complete systems or systems of systems.
Who should ideally perform acceptance testing?
Intended users
What is the shift-left approach?
Involving testing early in the development process.
What are retrospectives?
Meetings held to discuss project successes and improvements.
Should testing later in the SDLC be neglected?
No.
What is a possible approach for component integration testing?
Possible approaches for component integration testing include bottom-up, top-down, or big-bang.
What should be done with the results of retrospectives?
Recorded and included in the test completion report.
What activities do testers typically participate in during the initial phases of sequential development models?
Requirement reviews, test analysis, test design.
What are some good practices for achieving a shift-left in testing?
Reviewing specifications, writing test cases before code, using CI/CD, completing static analysis, performing non-functional testing at component level.
What is the expected long-term impact of a shift-left approach?
Savings in efforts and/or costs.
How does the choice of SDLC impact testing?
Scope and timing of test activities, level of detail of test documentation, choice of test techniques and approach, extent of test automation, role and responsibilities of a tester.
What is important for a shift-left approach?
Stakeholder buy-in and conviction.
When should non-functional testing be performed?
Starting at the component test level.
What is discussed in retrospectives?
Successful aspects to retain and areas for improvement.
What is the benefit of involving testers early?
Supporting the shift-left strategy and detecting defects earlier.
What is system integration testing?
System integration testing focuses on testing the interfaces of the system under test and other systems and external services.
What does system integration testing require?
System integration testing requires suitable test environments, preferably similar to the operational environment.
What does system testing focus on?
System testing focuses on the overall behavior and capabilities of an entire system or product.
What is system testing related to?
System testing is related to specifications for the system.
Who may perform system testing?
System testing may be performed by an independent test team.
What is each test level an instance of?
The test process performed in relation to software at a given stage of development.
What happens to BDD test cases?
They are automatically translated into executable tests.
Why is lightweight work product documentation favored in agile projects?
To accommodate changes and promote flexibility.
What is the objective of different test levels?
To achieve comprehensive testing without redundancy.
What is the purpose of test types?
To address specific testing objectives or criteria.
What is the role of tests in TDD, ATDD, and BDD?
To direct the development process.
What is the purpose of test levels?
To ensure comprehensive testing at different stages of development.
What is the purpose of different test levels?
To ensure comprehensive testing without redundancy.
What is the goal of good testing practices?
To ensure quality control for all development activities.
Why is stakeholder buy-in important for a shift-left approach?
To ensure support and adoption of the concept.
What is the purpose of TDD, ATDD, and BDD?
To implement early testing and follow a shift-left approach.
Why is extensive test automation favored in agile projects?
To make regression testing easier.
Why are testers involved in reviewing work products?
To support early testing and defect detection.
What is the purpose of non-functional testing?
To test aspects like performance, security, usability.
What are the main forms of acceptance testing?
User acceptance testing (UAT), operational acceptance testing, contractual and regulatory acceptance testing, alpha testing, beta testing
How are BDD test cases written?
Using the Given/When/Then format.
What is acceptance testing?
Validation and readiness for deployment
What is the process of TDD?
Write tests, write code to satisfy tests, refactor.
What is the principle of early testing?
Writing tests before writing code.
Is it preferable to test non-functional quality characteristics on a complete system?
Yes, for some non-functional quality characteristics, it is preferable to test them on a complete system in a representative test environment.
Can test activities be performed at every test level?
Yes, most test activities can be performed at every test level.
Do test levels overlap in time?
Yes, test levels may overlap in time.