Chapter 2 Flashcards
Software Development Lifecycle Models
Describes the types of activity performed at each stage in a software development project, and how the activities relate to one another logically and chronologically.
Characteristics of good testing
- For every development activity, there is a corresponding test activity
- Each test level has test objectives specific to that level
- Test analysis and design for a given test level begin during the corresponding development activity
- Tester participates in discussions to define and refine requirements and design, and are involved in reviewing work products
Sequential model
- Sequential flow of activities
- This means that any phase in the begin in the development process should begin when the previous phase is complete
- In theory, there is no overlap of phases, it is beneficial to have early feedback from the following phase
Incremental Development
- Pieces
- Software grows incrementally
- The size of these feature increments vary
- The feature increments can be as small as a single change to a user interface screen
Iterative
- Groups of features
- Fixed duration
- Each iteration delivers working software which is a growing subset of the overall set of features
- Fast feedback from the customer
Waterfall Model
- Activities are completed one after another
- Test activities only occur after all other development activities have been completed
V-model
- Sequential
- Early-testing
- The customer doesn’t see the software until the acceptance testing
- Planning, designing and execution
Rational Unified Process RUP
- Each iteration tends to be relatively long (two or three months)
- Iterative and Incremental model
Scrum
- Agile
- Each iteration tends to be relatively short (days, a few weeks)
- Feature increments are correspondingly small
Kanban
- Implemented with or without fixed-length iterations
- Incremental model
Spiral or prototyping
- Experimental Increments
- Heavily re-worked or even abandoned in subsequent
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
- Test levels are related to other activities within the software development lifecycle
- For every test level, a suitable test environment is required.
Are characterized:
- Specific objectives
- Test basis, referenced to derive test cases
- Test object (what is being tested)
- Typical defects and failures
- Specific approaches and responsibilities
Component Testing or Unit Testing
- Focuses on components that are separately
- Reduce risk-find defects-prevent defects
- Behavior
- TEST BASIS→ Detailed design-code-data model component specification
- TEST OBJECTS→ Components - Units Modules - Code - Data Structures - Classes - database modules
- DEFECTS AND FAILURES→ Incorrect functionality - Data flow problems - Incorrect code and logic
- Done by the developer - TDD
TDD ⇒ Fail → Pass → Refactor
Integration Testing
- Interactions between components or systems
- System Integration Testing is after system testing not after integration testing
- If integrating module A with module B, tests should focus on the communication between the modules, not the functionality of the individual modules
- If integrating system X with system Y, tests should focus on the communication between the systems, not the functionality of the individual systems.
- Responsibility for TESTER, black box testing
- OBJECTIVES → Reduce risk-find defects-prevent defects
- TEST BASIS → Software and system design - Sequence diagrams - use cases - workflows
- TEST OBJECTS → Subsystems - APIs - Microservices - Interfaces - Databases - Infrastructure
- DEFECTS AND FAILURES → Failures in communication - Incorrect data - Interface - Incorrect data
- Top down - bottom up - simulators - stubs - drivers
- Integration should normally be incremental
- This is one reason that we use continuous integration, where software is integrated on a component-by-component basis
Integration Testing
• Component integration testing focuses on the interactions and interfaces between integrated
components. Component integration testing is performed after component testing, and is
generally automated. In iterative and incremental development, component integration tests are
usually part of the continuous integration process.
• System integration testing focuses on the interactions and interfaces between systems,
packages, and microservices. System integration testing can also cover interactions with, and
interfaces provided by, external organizations (e.g., web services). In this case, the developing
organization does not control the external interfaces, which can create various challenges for
testing (e.g., ensuring that test-blocking defects in the external organization’s code are resolved,
arranging for test environments, etc.). System integration testing may be done after system
testing or in parallel with ongoing system test