Lecture 3
Lecture 3
1
Introduction
Optimistic customers assume software
systems will never fail.
The ideas and techniques of software
testing have become essential knowledge
for all software developers.
Testing is the primary method that the
industry uses to evaluate software under
development.
2
A Test Engineer
Test Engineer : An IT professional who is in
charge of one or more technical test
activities such as
Designing test inputs
Producing test values
Running test scripts
Analyzing results
Reporting results to developers and
managers
3
A Test Manager
Test Manager:
Is in charge of one or more test engineers
Sets test policies and processes
Interacts with other managers on the
project
Supports the engineers
4
Testing Levels Based on Software
Activity
Acceptance Testing: assess software with
respect to requirements.
System Testing: assess software with
respect to architectural design.
Integration Testing: assess software with
respect to subsystem design.
Module Testing: assess software with
respect to detailed design.
Unit Testing: assess software with respect
to implementation.
5
Acceptance Testing
The requirements analysis phase of
software development captures the
customer’s needs. Acceptance testing is
designed to determine whether the
completed software in fact meets these
needs.
Acceptance testing must involve users or
other individuals who have strong domain
knowledge.
6
System Testing
The architectural design phase of software
development chooses components and
connectors that together realize a system whose
specification is intended to meet the previously
identified requirements.
System testing is designed to determine whether
the assembled system meets its specifications. It
assumes that the pieces work individually, and
asks if the system works as a whole. This level of
testing usually looks for design and specification
problems. It is usually not done by the
programmers, but by a separate testing team.
7
Integration System
The subsystem design phase of software development
specifies the structure and behavior of subsystems,
each of which is intended to satisfy some function in
the overall architecture. Often, the subsystems are
adaptations of previously developed software.
Integration testing is designed to assess whether the
interfaces between modules in a given subsystem
have consistent assumptions and communicate
correctly.
Integration testing must assume that modules work
correctly. Some testing literature uses the terms
integration testing and system testing interchangeably.
Integration testing is usually the responsibility of
members of the development team.
8
Module Testing
The detailed design phase of software development
determines the structure and behavior of individual
modules.
A program unit, or procedure, is one or more contiguous
program statements, with a name that other parts of the
software use to call it. Units are called functions in C and
C++.
A module is a collection of related units that are
assembled in a file, package, or class.
Module testing is designed to assess individual modules
in isolation, including how the component units interact
with each other and their associated data structures.
Most software development organizations make module
testing the responsibility of the programmer.
9
Unit Testing
Implementation is the phase of software
development that actually produces code.
Unit testing is designed to assess the units
produced by the implementation phase and
is the “lowest” level of testing.
Most software development organizations
make unit testing the responsibility of the
programmer.
10
Beizer’s Testing Levels
Beizer’s testing levels are based on test process maturity.
Level 0 is the view that testing is the same as debugging.
This model does not distinguish between a program’s
incorrect behavior and a mistake within the program, and
does very little to help develop software that is reliable or
safe.
In Level 1 testing, the purpose is to show correctness.
In Level 2 testing, the purpose is to show failures.
The thinking that leads to Level 3 testing starts with the
realization that testing can show the presence, but not the
absence, of failures.
Once the testers and developers are on the same “team,” an
organization can progress to real Level 4 testing. Level 4
thinking defines testing as a mental discipline that increases
quality.
11
Level 0 Thinking
Testing is the same as debugging
14
How can we move to a team
approach ??
Level 3 Thinking
Testing can only show the presence of
failures
24
Prefix Values: Any inputs necessary to put
the software into the appropriate state to
receive the test case values.
Postfix Values: Any inputs that need to be
sent to the software after the test case
values are sent.
Postfix values types:
Verification Values: Values necessary to see
the results of the test case values.
Exit commands: Values needed to terminate
the program or otherwise return it to a stable
state.
25
Thank You
26