Chapter 8 – Software Testing
30/10/2014 Chapter 8 Software Testing 1
Program (Software) testing
Testing is intended to show that a program does what it is
intended to do and to discover program defects before it is put
into use.
When you test software, you execute a program using
artificial data.
Can reveal the presence of errors NOT their absence.
Testing is part of a more general Verification & Validation
(V&V) process.
30/10/2014 Chapter 8 Software Testing 2
A model of the software testing process
30/10/2014 Chapter 8 Software Testing 3
Stages of testing
1. Development testing: the system is tested during
development to discover bugs and defects.
• A bug is the result of a coding error
• A defect is a deviation from the requirements
2. Release testing: a separate testing team tests a
complete version of the system before it is released to
users.
3. User testing: users or potential users of a system test
the system in their own environment.
30/10/2014 Chapter 8 Software Testing 4
1. Development testing
Development testing includes all testing activities that
are carried out by the team developing the system:
a) Unit testing
b) Component testing
c) System testing
30/10/2014 Chapter 8 Software Testing 5
a) Unit testing
Unit testing is the process of testing individual components
in isolation.
Units may be:
Individual functions or methods within an object
Object/Classes with several attributes and methods
…
30/10/2014 Chapter 8 Software Testing 6
Automated testing
Whenever possible, unit testing should be automated so
that tests are run and checked without manual intervention.
In automated unit testing, you make use of a test
automation framework (such as JUnit) to write and run your
program tests.
Unit testing frameworks provide generic test classes that
you extend to create specific test cases.
30/10/2014 Chapter 8 Software Testing 7
b) Component testing
Software components are often composite components
that are made up of several interacting objects.
You access the functionality of these objects through the
defined component interface.
Testing composite components should therefore focus
on showing that the component interface behaves
according to its specification.
https://www.linkedin.com/pulse/component-testing-vs-interface-inte
gration-vimal-singh
30/10/2014 Chapter 8 Software Testing 8
c) System testing
System testing during development involves integrating
components to create a version of the system and then
testing the integrated system.
The focus in system testing is testing the interactions
between components.
System testing checks that components are compatible,
interact correctly and transfer the right data at the right
time across their interfaces.
30/10/2014 Chapter 8 Software Testing 9
Regression testing
Regression testing is testing the system to check that
changes have not ‘broken’ previously working code.
In a manual testing process, regression testing is
expensive but, with automated testing, it is simple and
straightforward. All tests are rerun every time a change is
made to the program.
Tests must run ‘successfully’ before the change is
committed.
30/10/2014 Chapter 8 Software Testing 10
Release testing
30/10/2014 Chapter 8 Software Testing 11
2. Release testing
Release testing is the process of testing a particular release
of a system that is intended for use outside of the
development team.
The primary goal of the release testing process is to
convince the supplier of the system that it is good enough
for use.
Release testing is usually a black-box testing process
where tests are only derived from the system specification.
Tester doesn’t know the internal structure of the code.
30/10/2014 Chapter 8 Software Testing 12
Release testing and system testing
Release testing is a form of system testing.
Important differences:
A separate team that has not been involved in the system
development, should be responsible for release testing.
System testing by the development team should focus on
discovering bugs in the system (defect testing). The objective of
release testing is to check that the system meets its
requirements and is good enough for external use (validation
testing).
30/10/2014 Chapter 8 Software Testing 13
User testing
30/10/2014 Chapter 8 Software Testing 14
3. User testing
User or customer testing is a stage in the testing process
in which users or customers provide input and advice on
system testing.
User testing is essential, even when comprehensive
system and release testing have been carried out.
30/10/2014 Chapter 8 Software Testing 15
Types of user testing
Alpha testing
Users of the software work with the development team to test
the software at the developer’s site.
Beta testing
A release of the software is made available to users to allow
them to experiment and to raise problems that they discover with
the system developers.
Acceptance testing
Customers test a system to decide whether or not it is ready to
be accepted from the system developers and deployed in the
customer environment. Primarily for custom systems.
30/10/2014 Chapter 8 Software Testing 16