Training Sessions: 2. Testing Throughout The Software Life Cycle
Training Sessions: 2. Testing Throughout The Software Life Cycle
Module 2 of 6
2
Covered in this lesson...
4
Software Development Models
• Testing does not exist in isolation
• Test activities are related to software development activities
• Each development activity should have a corresponding test activity
• Different development life cycle models need different approaches to
testing
Good testing can be done in all of these!
Waterfall
V
V-Model
Iterative
V-Model
(Sequential Development Model)
• Lots of variants of the V-model, but the ISTQB syllabus uses four test levels,
corresponding to four development levels:
…System Integration
…User Acceptance
…Operational Acceptance Testing
Verification Validation
• Requirements • Acceptance
V
Test
The process of establishing requirements, designing, building and testing a system, done as a series
of shorter development cycles.
Examples are: prototyping, Rapid Application Development (RAD), Rational Unified Process (RUP)
and agile development models.
Regression testing is increasingly important on all iterations after the first one.
• In any life cycle model, there are several characteristics of good testing:
• For every development activity there is a corresponding testing activity
• 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
11
Component Testing
Component Testing (Also known as Unit, Module or Program Testing) is the first test that a software
program/code has to go through before being linked with other areas of the system.
Why?: to check for defects and check functioning of an individual piece of code like program, object or
class.
When?: At the time of code development. Defect usually fixed straight away
How?: Dry run of code using stubs, drivers and Simulators, Test Driven Development (Test First
approach), unit test framework, debugging tool
Targets?: to check functionality and non functional aspects like robustness, memory leakage etc.
12
Component Testing
Test basis:
• Component requirements
• Detailed design
• Data Model
• Code
Who?
• Developer who wrote the code
Integration Testing
Tests interfaces between components, interactions with different parts of a system, such as the operating
system, file system and hardware, and interfaces between systems.
Why?: to test communication of data and user/system actions across different systems, hardware,
software or environmental components. It also tests non-functional aspects.
How?: Ideally this should be done incremental mode rather than a BIG BANG approach as it’s harder to
isolate failures
Targets?: to isolate defects and performance issues arising out of integration of various systems. Early
integration testing helps in reducing the risk and trouble shooting time associated with detection of
defects in later stages.
14
Integration Testing
• There may be more than one level of integration testing and it may be carried out
on test objects of varying size as follows:
• Integration Strategies
• System Architecture (Top down, Bottom-up)
• Functional Tasks
• Transaction processing sequences
• Or other aspects or components
• Focus on Integration
• Eg. Module A with Module B (not functionality within the individual
module)
Integration Test Strategies
A B
C D E
F G
I H J
Integration Planning
• Ideally testers should understand architecture and influence integration planning
• Eg. Instead developing modules in sequence
1, 2, 3,…10, if there is a known critical interaction between 2 and 7 then suggest module
development sequence of 1, 2, 7, 3, …
if feasible
System Testing
System testing is concerned with the behavior of a whole system/product. System as a whole is
tested against requirement specifications, business processes and use cases.
Why?: to minimize the risk of environment-specific failures not being found in testing.
How?: by using the most appropriate specification-based (black-box) techniques for the
functionality of the system to be tested. For example a decision table for combinations of
business rules. And white-box techniques like Structure-based to assess thoroughness of
testing.
Targets?: investigate functional and non-functional requirements of the system, and data quality
characteristics. Testers also need to deal with incomplete or undocumented requirements.
20
System Testing
• Test Basis:
• System and software requirement specification
• Use cases
• Functional specification
• Risk analysis reports
When?: it is generally the last stage of testing but in larger systems, it may be a predecessor of a
large scale SIT.
How?: usually performed by end users and other stakeholders against the business process of the
function where the software is to be deployed.
Targets?: investigate functional and non-functional requirements of the system, and data quality
characteristics. Testers also need to deal with incomplete or undocumented requirements.
22
Acceptance Testing
27
Test Types
A test type is focused on a particular test objective, which could be any of the following:
• A function to be performed by the software
• A non-functional quality characteristic, such as reliability or usability
• The structure or architecture of the software or system
Change related, i.e. confirming that defects have been fixed (confirmation testing) and looking
for unintended changes (regression testing)
28
1. Functional Testing
The functions are “what” the system does.
Functional testing is aimed at testing the functionality as described in work products such as
requirements specification, use cases, or they may be undocumented.
Specification-based techniques may be used to derive test conditions and test cases. Functional
Testing concerns the external behavior of the system (Black box testing).
Also includes security testing – investigates the functions (e.g. a firewall) relating to detection of
threats, such as viruses.
Another type of functional testing is interoperability testing, evaluates the capability of the
software product to interact with one or more specified components or systems.
29
2. Non-Functional Testing
Non Functional testing addresses the quality of software in areas which may not be
directly visible but have a lot of impact on overall quality of software as a whole. External
behavior using specification based techniques can
ISO-9126
ISO-9126 Software
Software Product
Product Quality
Quality
Characteristics
Characteristics
30
3. Structural Testing
• White-box
• Applicable to all test levels
• Best after specification-based techniques
• Measures thoroughness through assessment of coverage
Coverage is the extent that a structure has been exercised by a test suite,
expressed as a % of the items being covered. If coverage is not 100%, then
more tests may be designed to test those items that were missed to
increase coverage.
Structural testing approaches can also be applied at the system level based
on architecture and hierarchy.
For example, based on menu structures.
31
4. Re-Testing and Regression Testing
32
4. Re-Testing and Regression Testing
The extent of regression testing is based on the risk of not finding defects in
software that was working previously - Preform impact analysis.
Tests should be repeatable if they are to be used for confirmation testing and to
assist regression testing.
Regression testing may be performed at all test levels, and includes functional,
non-functional and structural testing. Regression test suites are run many times
and generally evolve slowly, so regression testing is a strong candidate for
automation.
33
How do you determine how much testing?
• Perform Impact analysis
• What depth of testing into the “fix” or “change” will you decide to test?
• What breadth of testing around the “fix” or “change” will you decide to
test?
35
Maintenance Testing
Once deployed, a software system is often in service for years or decades. During this time the
system, its configuration data, or its environment are often corrected, changed or extended.
The planning of releases in advance is crucial for successful maintenance testing. A distinction
has to be made between planned releases and hot fixes. Maintenance testing is done on an
existing operational system, and is triggered by modifications, migration, or retirement of the
software or system.
Maintenance Testing Continued…
• Includes:
• Database upgrades
• Patches
• Testing for the retirement of a system may be needed to test data migration or archiving if data
retention is required
• Involves extensive regression testing and may be done at all test levels
37
End of Module 2
Questions?
End of Module Learning Check - 1
Non-functional
Functional Testing
February, 2017