Unit 8_ Software Testing
Unit 8_ Software Testing
1
2
Software Testing
3
Program testing goals
To demonstrate to the developer and the customer that the software meets
its requirements.
For custom software, this means that there should be at least one test for every
requirement in the requirements document. For generic software products, it means that
there should be tests for all of the system features, plus combinations of these features,
that will be incorporated in the product release.
To discover situations in which the behavior of the software is incorrect,
undesirable or does not conform to its specification.
Defect testing is concerned with rooting out undesirable system behavior such as system
crashes, unwanted interactions with other systems, incorrect computations and data
corruption.
4
Validation and defect testing
5
V
a
l Testing process goals
i
d
a
t
i
o
n
t
e
s
t
i
n
g 6
An input-output model of program testing
7
V
e
r Verification vs validation
i
f
i
c
a
t
i
o
n
:
"
A 8
r
A
i
m V & V confidence
o
f
&
i
s
t
o
e 9
s
Inspections and testing
10
Inspections and testing
11
T
h
e Software inspections
s
e
i
n
v
o
l
v
e
p
e
o
p 12
l
Advantages of inspections
During testing, errors can mask (hide) other errors. Because inspection is a
static process, you don’t have to be concerned with interactions between
errors.
Incomplete versions of a system can be inspected without additional costs. If
a program is incomplete, then you need to develop specialized test
harnesses to test the parts that are available.
As well as searching for program defects, an inspection can also consider
broader quality attributes of a program, such as compliance with standards,
portability and maintainability.
13
I
n
s Inspections and testing
p
e
c
t
i
o
n
s
a
n
d
t
e 14
s
A model of the software testing process
15
Stages of testing
16
Development testing
Development testing includes all testing activities that are carried out by the
team developing the system.
Unit testing, where individual program units or object classes are tested. Unit testing
should focus on testing the functionality of objects or methods.
Component testing, where several individual units are integrated to create composite
components. Component testing should focus on testing component interfaces.
System testing, where some or all of the components in a system are integrated and the
system is tested as a whole. System testing should focus on testing component
interactions.
17
U
n
i Unit testing
t
t
e
s
t
i
n
g
i
s
t
h 18
e
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 to
write and run your program tests.
Unit testing frameworks provide generic test classes that you extend to
create specific test cases. They can then run all of the tests that you have
implemented and report, often through some GUI, on the success of
otherwise of the tests.
19
Unit test effectiveness
The test cases should show that, when used as expected, the component
that you are testing does what it is supposed to do.
If there are defects in the component, these should be revealed by test
cases.
This leads to 2 types of unit test case:
The first of these should reflect normal operation of a program and should show that the
component works as expected.
The other kind of test case should be based on testing experience of where common
problems arise. It should use abnormal inputs to check that these are properly processed
and do not crash the component.
20
Testing strategies
Partition testing, where you identify groups of inputs that have common
characteristics and should be processed in the same way.
You should choose tests from within each of these groups.
Guideline-based testing, where you use testing guidelines to choose test
cases.
These guidelines reflect previous experience of the kinds of errors that programmers
often make when developing components.
21
Component testing
22
Interface testing
23
Interface errors
Interface misuse
A calling component calls another component and makes an error in its use of its
interface e.g. parameters in the wrong order.
Interface misunderstanding
A calling component embeds assumptions about the behaviour of the called component
which are incorrect.
Timing errors
The called and the calling component operate at different speeds and out-of-date
information is accessed.
24
System testing
25
Testing policies
26
Test-driven development
27
TDD process activities
28
Test-driven development
29
Benefits of test-driven development
Code coverage
Every code segment that you write has at least one associated test so all code written
has at least one test.
Regression testing
A regression test suite is developed incrementally as a program is developed.
Simplified debugging
When a test fails, it should be obvious where the problem lies. The newly written code
needs to be checked and modified.
System documentation
The tests themselves are a form of documentation that describe what the code should be
doing.
30
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.
31
Release testing
32
Release testing and system testing
33
Requirements based testing
34
P
a
r Performance testing
t
o
f
r
e
l
e
a
s
e
t
e 35
s
User testing
36
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.
37
Stages in the acceptance testing process
38