Chapter 2 – Testing Throughout the Development LifeCycle
- Testing Throughout the
Software Life Cycle
1 Fundamentals 2 Lifecycle
4 Dynamic test
techniques
3 Static testing
5 Management 6 Tools
Software Testing
ISTQB Foundation Exam Preparation
Chapter 2
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
Contents
2.1 Software Development Models
2.2 Test Levels
2.3 Test Types
2.4 Maintenance Testing
Neeraj Kumar Singh - Software Development Model
V-Model(SequentialDevelopment Model)
Business
Requirements
System
Requirements
Architectural
Design
Detailed
Design
Acceptance
Testing
System
Testing
Integration
Testing
Component
Testing
Code
ATP
STP
ITP
CTP
Neeraj Kumar Singh - Software Development Model
Testingwithin a Life Cycle Model
In any life cycle model, there are several characteristics of good testing:
For every development activity there is a corresponding testing activity.
Each test level has test objectives specific to that level.
The analysis and design of tests for a given test level should begin during the
corresponding development activity.
Testers should be involved in reviewing documents as soon as drafts are available in the
development life cycle.
Neeraj Kumar Singh - Software Development Model
Asequential development model describes the software development process as a linear,
sequential flow of activities. This means that any phase in the development process should begin
when the previous phase is complete.
Incremental development involves establishing requirements, designing, building, and testing a
system in pieces, which means that the software’s features grow incrementally. The size of these
feature increments vary, with some methods having larger pieces and some smaller pieces.
Iterative development occurs when groups of features are specified, designed, built, and tested
together in a series of cycles, often of a fixed duration. Iterations may involve changes to
features developed in earlier iterations, along with changes in project scope.
Rational Unified Process
Scrum
Kanban
Spiral
Neeraj Kumar Singh - Software Development Model
SoftwareDevelopment Model in Context
Software development lifecycle models must be selected and adapted to the context of
project and product characteristics. An appropriate software development lifecycle
model should be selected and adapted based on the project goal, the type of product
being developed, business priorities (e.g., time-tomarket), and identified product and
project risks.
In addition, software development lifecycle models themselves may be combined. For
example, a Vmodel may be used for the development and testing of the backend
systems and their integrations, while an Agile development model may be used to
develop and test the front-end user interface (UI) and functionality.
Internet of Things (IoT) systems, which consist of many different objects, such as
devices, products, and services, typically apply separate software development
lifecycle models for each object. This presents a particular challenge for the
development of Internet of Things system versions.
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
1 Fundamentals 2 Lifecycle
4 Dynamic test
techniques
3 Static testing
5 Management 6 Tools
Software Testing
ISTQB Foundation Exam Preparation
Chapter 2
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
Contents
2.1 Software Development Models
2.2 Test Levels
2.3 Test Types
2.4 Maintenance Testing
Neeraj Kumar Singh - Test Levels
Component Testing
Component testing searches for defects in, and verifies the functioning of, software
modules, programs, objects, classes, etc. that are separately testable.
Component testing is also known as unit, module, program, structure, code testing.
Component testing may be required to test core functionality and specific non-
functional characteristics, such as resource behavior.
Typically conducted with access to the code in form of White Box testing with support
of development environment
Test Basis for Component testing
Component requirement
Detailed design
Code
Typical Test Objects
Components
Programs
Data conversion/migration programs
Database Modules
Neeraj Kumar Singh - Test Levels
Integration Testing
Integration testing tests interfaces between components, interactions with different parts
of the system and interfaces between systems.
There may be more than one level of integration testing
Component Integration Testing.
System Integration Testing.
Systematic integration strategies may be based on the system architecture(TDA, BUA, BBA).
The greater the scope of integration, the more difficult it becomes to isolate defects to a
specific component or system, which may increase risk.
Test Basis for Integration testing
Software & System design
Architecture, Workflows
Use cases
Typical Test Objects
Subsystems
Database implementation
Infrastructure, Interfaces
System config & configuration data
Neeraj Kumar Singh - Test Levels
System Testing(K2)
System testing is concerned with the behavior of a whole system/product.
In System testing, the test environment should correspond to the final target or
production environment to minimize the risk of environment-specific failure.
Systems testing may include tests based on risk.
Testers also need to deal with incomplete or undocumented requirements.
System Integration Testing can be performed after System Testing as well.
Test Basis for System testing
System & Software requirement specs
Functional Specification
Use cases
Risk analysis report
Typical Test Objects
System, user and operation manuals
System Configuration
Configuration data
Neeraj Kumar Singh - Test Levels
Acceptance Testing(K2)
Acceptance testing is to establish confidence in the system, parts of the system or specific non-
functional characteristics of the system.
Typica forms of acceptance testing include
User acceptance testing
Operational (acceptance) testing
Contract and regulation acceptance testing
Levels of testing
Alpha Testing
Beta Testing
Test Basis for Acceptance testing
User & Software requirement specs
Business Process
Use cases
Risk analysis report
Typical Test Objects
Business process, operational process
User procedures
Forms, Reports
Configuration data
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
1 Fundamentals 2 Lifecycle
4 Dynamic test
techniques
3 Static testing
5 Management 6 Tools
Software Testing
ISTQB Foundation Exam Preparation
Chapter 2
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
Contents
2.1 Software Development Models
2.2 Test Levels
2.3 Test Types
2.4 Maintenance Testing
Neeraj Kumar Singh - Test Types
Classification ofTesting
Software Testing
Dynamic TestingStatic Testing
Informal
Review
Walkthrough
Technical
Review
Inspection
Component
Testing
Integration
Testing
System Testing
Acceptance
Testing
Reviews Levels of testing
Verification ValidationNeeraj Kumar Singh - Test Types
Testing offunction(Functional Testing)
Functional testing is all about testing the core features of testing.
The functions are “WHAT” the system does.
The general levels like – Unit Testing, Integration Testing, System Testing and
Acceptance Testing are conducted as Functional level of testing.
Neeraj Kumar Singh - Test Types
Testing ofNon-Functional Characteristics
Non-Functional testing is about enhancing the quality characteristics of the system.
The non-functions are “HOW” the system works.
The non-functional testing includes, but not limited to, performance testing, stress
testing, load testing, usability testing, maintainability testing, reliability testing and
portability testing.
Neeraj Kumar Singh - Test Types
Testing ofSoftware Structure
The different approaches to conduct dynamic levels of testing
White Box Testing.
Commonly performed by a developer, with
the knowledge of code/structure.
Performed by executing the program.
Also known as
Structure Box testing
Glass Box Testing
Open Box Testing
Clear Box Testing
Transparent Box Testing
Black Box Testing.
Commonly performed by a tester, without
the knowledge of code/structure.
Performed by entering inputs at User
Interface(UI) level.
Also known as
Skin Box testing
Closed Box Testing
Opaque Box Testing
Neeraj Kumar Singh - Test Types
Change RelatedTesting
After a defect is detected and fixed, the should be re-tested to confirm that the defect
reported is successfully fixed. This is also called as Re-testing.
Regression Testing is the repeated testing of an already tested program, after
modification to check if there are any adverse affect on unchanged part due to
changed part.
As regression doesn’t have a primary objective of finding defects it is considered as a
good candidate for automation.
Regression testing is also conducted in the scenario where –
A live operational system’s environment changes.
A new functionality or feature is included to a live operational system.
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
1 Fundamentals 2 Lifecycle
4 Dynamic test
techniques
3 Static testing
5 Management 6 Tools
Software Testing
ISTQB Foundation Exam Preparation
Chapter 2
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
Contents
2.1 Software Development Models
2.2 Test Levels
2.3 Test Types
2.4 Maintenance Testing
Neeraj Kumar Singh - Maintenance Testing
Maintenance Testing
Once deployed, a software system is often in service for years. During this time the
system, its configuration data, or its environment are often corrected, changed or
extended.
Modification include planned enhanced changes, corrective and emergency changes and
changes of environment.
These include updates, upgrades, migration and retirement.
Depending on the changes, maintenance testing(Regression Testing) may be done at all
test levels and for any or all test types.
Neeraj Kumar Singh - Maintenance Testing
Triggers forMaintenance Testing
We can classify the triggers for maintenance as follows: Modification, such as planned
enhancements (e.g., release-based), corrective and emergency changes, changes of the
operational environment (such as planned operating system or database upgrades),
upgrades of COTS software, and patches for defects and vulnerabilities
Migration, such as from one platform to another, which can require operational tests of
the new environment as well as of the changed software, or tests of data conversion
when data from another application will be migrated into the system being maintained
Retirement, such as when an application reaches the end of its life
Neeraj Kumar Singh - Maintenance Testing
Impact Analysis
Impact analysis may be done before a change is made, to help decide if the change
should be made, based on the potential consequences in other areas of the system.
Impact analysis can be difficult if:
Specifications (e.g., business requirements, user stories, architecture) are out of date or
missing
Test cases are not documented or are out of date
Bi-directional traceability between tests and the test basis has not been maintained
Tool support is weak or non-existent
The people involved do not have domain and/or system knowledge
Insufficient attention has been paid to the software’s maintainability during development
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
1 Fundamentals 2 Lifecycle
4 Dynamic test
techniques
3 Static testing
5 Management 6 Tools
Software Testing
ISTQB Foundation Exam Preparation
Chapter 2
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
Sample Questions
1. Given the following statements about the relationships between software development
activities and test activities in the software development lifecycle:
1. Each development activity should have a corresponding testing activity.
2. Reviewing should start as soon as final versions of documents become available.
3. The design and implementation of tests should start during the corresponding
development. activity
4. Testing activities should start in the early stages of the software development lifecycle.
Which of the following CORRECTLY shows which are true and false?
Answer Set:
A. True – 1, 2; False – 3, 4
B. True – 2, 3; False – 1, 2
C. True – 1, 2, 4; False – 3
D. True – 1, 4; False – 2, 3
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
Sample Questions
2. Given that the testing being performed has the following attributes:
based on interface specifications;
focused on finding failures in communication;
the test approach uses both functional and structural test types.
Which of the following test levels is MOST likely being performed?
Answer Set:
A. Component integration testing.
B. Acceptance testing.
C. System testing.
D. Component testing.
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
Sample Questions
3. Which of the following statements about test types and test levels is
CORRECT?
Answer Set:
A. Functional and non-functional testing can be performed at system and
acceptance test levels, while white-box testing is restricted to component and
integration testing.
B. Functional testing can be performed at any test level, while white-box testing
is restricted to component testing.
C. It is possible to perform functional, non-functional and white-box testing at any
test level.
D. Functional and non-functional testing can be performed at any test level, while
Whitebox testing is restricted to component and integration testing.
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
Sample Questions
4. Which of the following statements BEST compares the purposes of confirmation
testing and regression testing?
Answer Set:
A. The purpose of regression testing is to ensure that all previously run tests still work
correctly, while the purpose of confirmation testing is to ensure that any fixes made
to one part of the system have not adversely affected other parts.
B. The purpose of confirmation testing is to check that a previously found defect has
been fixed, while the purpose of regression testing is to ensure that no other parts
of the system have been adversely affected by the fix.
C. The purpose of regression testing is to ensure that any changes to one part of the
system have not caused another part to fail, while the purpose of confirmation
testing is to check that all previously run tests still provide the same results as
before.
D. The purpose of confirmation testing is to confirm that changes to the system were
made successfully, while the purpose of regression testing is to run tests that
previously failed to ensure that they now work correctly.
Neeraj Kumar Singh - Testing Throughout the
Software Life Cycle
Sample Questions
5. Which of the following statements CORRECTLY describes a role of impact
analysis in Maintenance Testing?
Answer Set:
A. Impact analysis is used when deciding if a fix to a maintained system is
worthwhile.
B. Impact analysis is used to identify how data should be migrated into the
maintained system.
C. Impact analysis is used to decide which hot fixes are of most value to the user.
D. Impact analysis is used to determine the effectiveness of new maintenance test
cases.
Neeraj Kumar Singh