Beruflich Dokumente
Kultur Dokumente
Management
illusions
What
is
testing
Testing
is
misunderstood,
and
because
of
this
misunderstanding,
people
may
think
very
differently.
When
software
was
new,
people
thought
testing
was
an
activity
that
would
show
that
software
worked.
Testing
was
demonstration,
it
was
positive.
Running
the
program
to
show
that
it
is
right.
This
is,
to
say
the
least,
dangerous.
It
is
theoretically
and
practically
impossible
to
show
that
a
program
is
correct.
Additionally,
what
is
right
for
one
user
may
be
wrong
for
another,
depending
on
personal
needs.
We
have
to
distinguish
between
technical
quality,
where
the
testing
task
is
verification
and
user
quality,
where
testing
does
validation.
Psychologically,
it
is
also
problematic:
If
people
shall
show
that
things
are
correct,
they
will
do
their
best
to
do
this
and
they
will
tend
to
overlook
problems
that
do
not
contribute
to
this
goal.
As
a
reaction
to
this,
testing
was
defined
as
the
opposite:
Testing
is
trying
to
show
that
the
software
does
NOT
work.
The
slogan
You
make
it,
Ill
break
it!
Psychologically
a
much
better
definition.
We
try
our
best
to
find
trouble.
Only
if
we
do
not
find
trouble,
it
is
a
side-effect
that
our
trust
in
the
software
product
will
increase.
This
definition
also
conforms
to
the
usual
way
scientific
advances
are
criticized
and
then
accepted:
New
theories
are
finally
accepted
after
comprehensive
criticism.
The
trouble
with
this
definition,
however,
is
a
kind
of
war
between
testing
and
developing.
This
is
detrimental
to
productivity.
Testing
was
then
redefined:
Testing
is
a
measurement
task:
Measuring
product
quality
and/or
measuring
product
risk.
Thus,
testing
is
independent
of
development,
tries
to
be
objective
and
just
collect
information
about
the
product
for
whoever
is
interested.
This
sounds
better.
However,
there
may
be
a
motivational
problem:
If
testers
find
no
trouble,
they
may
see
their
work
as
boring.
If
product
owners
just
get
positive
feedback,
i.e.
no
trouble
found,
then
they
may
see
test
resources
as
a
waste.
On
the
other
hand,
it
is
not
often
true
that
testers
find
no
trouble,
and
there
is
value
of
information.
Actually,
one
might
say:
Testing
is
the
KGB
of
the
product
owner.
Its
task
is
to
provide
information.
However,
most
people
do
not
like
the
KGB.
Thus,
testing
needs
another
changed
definition:
Testing
is
any
activity
that
evaluates
a
product
in
order
to
provide
information,
feedback
and
contributing
to
future
improvement.
This
subsumes
that
testing
is
not
only
pounding
at
the
keyboard
and
looking
at
the
screen
(difficult
to
do
with
most
control
programs
anyway).
But
testing
is
any
evaluation
done
on
any
part
of
a
product.
It
may
be
reading
or
reviewing
documents.
It
may
be
static
analysis
using
tools
(like
spell
checking
documents
or
analyzing
code),
or
finally,
it
may
be
executing
the
product
with
inputs
and
checking
outcomes.
The
goal
of
it
all
is
to
provide
information
to
product
owners,
but
also
to
provide
feedback
about
what
is
done
wrong,
and
helping
people
who
do
this
wrong
to
improve.
Thus,
testing
is
feedback
to
help
learning.
Every
problem
found
can
be
analyzed
in
order
to
find
more
of
such
problems
in
the
future
(testing
improvement)
or
in
order
to
prevent
occurrence
of
such
problems
in
the
future
(development
improvement).
The
basis
for
finding
problems,
however,
is
a
critical
attitude
with
any
tester:
It
is
best
I
look
for
problems.
Many
illusions
about
testing
are
prevented
when
we
agree
on
a
common
definition.
Developer
illusions
My
software
has
no
bugs
(or
too
few
to
care)
This
corresponds
to
the
management
belief
that
some
products
do
not
need
testing.
Humans
err,
developers
err.
Developers
need
the
other
pair
of
eyes
a
tester
would
give.
A
typical
developer
introduces
about
1
bug
for
every
five
lines
of
code.
Even
the
best
ones
are
only
a
factor
of
20
better.
This
would
be
1
bug
in
100
lines
of
code.
That
bug
may
be
fatal!
If
it
is
not
worth
to
care
about,
what
about
the
user
of
the
product?
Users
care
if
the
software
does
not
work.
Developers
believing
in
their
own
infallibility
need
especially
much
reviewing.
No.
According
to
industry
statistics
collected
by
Capers
Jones,
Productivity
Research,
no
testing
method
short
of
high
volume
beta
testing
can
be
relied
on
to
find
more
than
50%
of
the
bugs.
Even
with
six
phases
of
the
best
testing,
3%
of
the
bugs
will
then
still
survive.
And
testing
is
like
filter:
Garbage
in
leads
to
garbage
out.
The
more
bugs
in,
the
more
bugs
out.
Bugs
also
take
time
from
testing.
The
more
bugs
are
found,
the
more
work
is
used
to
isolate
bugs,
document
them,
fix
them
and
retest
and
regression
test.
Thus
less
testing
is
done,
and
less
of
the
remaining
bugs
are
found.
Believing
in
the
testers
is
dangerous
risk
compensation.
Introducing
start
criteria
to
testing
may
be
a
solution.
In
agile
methods,
a
lot
of
automated
unit
and
continuous
integration
testing
may
be
done.
Many
people
believe
this
is
enough,
However,
this
testing
is
directed
against
coding
and
interface
bugs.
The
total
system
may
still
not
meet
the
requirements.
Every
test
level
has
its
own
special
objectives.
Good
unit
testing
reduces
the
bug
content
in
the
system,
but
testing
the
parts
does
not
guarantee
that
the
whole
is
good.
(Anyway,
testing
cannot
guarantee
anything
anyway).
Tester
illusions
I
am
allowed
to
stop
bad
software
Beware
of
being
the
quality
police!
Releasing
software
is
a
plain
business
decision,
to
be
made
by
the
product
owner.
A
testers
task
is
to
provide
information,
to
measure
the
risk
of
releasing.
The
decision
to
release
or
not
depends
on
the
risk,
but
also
factors
beyond
our
control,
like
the
state
of
the
market.
Sometimes
products
full
of
bugs
may
be
released
because
otherwise
a
market
window
would
disappear.
IN
that
case
it
may
be
better
to
get
product
sales
going
and
fix
the
problems
later,
even
if
that
might
be
expensive.
Testers
may,
however,
show
possibilities
for
action.
Such
possibilities
should
be
used
during
the
end
game,
right
before
release.
For
examples,
if
some
features
are
full
of
serious
bugs,
they
might
be
removed
or
disabled,
or
simplified.
If
they
cannot
be
cut
out,
the
testers
may
propose
to
postpone
release.
But
the
testers
do
not
decide
on
release.
A
test
report
is
a
statement
about
the
risk
to
release
only.
References
There
are
definitely
more
illusions
than
the
ones
mentioned
here.
There
are
also
many
more
references
where
illusions
may
be
found,
as
well
as
advice
what
to
do
about
them.
The
following,
however,
were
the
main
inspirations
for
this
talk.
(1) Gerald
Weinberg,
Perfect
Software
and
other
illusion
about
testing,
Dorset
House,
2008.
This
book
is
inspiring.
The
author
describes
many
more
illusions
and
fallacies
and
how
to
fight
them.
He
also
describes
much
of
the
psychological
reasons
behind.
(2) James
A.
Whittaker,
Exploratory
Software
Testing,
Addison-Wesley
2010.
This
is
a
great
book
about
testing
using
improvisation
and
peoples
brain.
It
also
does
away
with
the
illusion
that
no
other
testing
than
this
is
necessary.
(3) Lisa
Crispin
and
Tip
House,
Testing
Extreme
Programming,
Addison-
Wesley
2003.
This
book
is
rather
technical,
showing
how
to
implement
automated
unit
testing.
However,
it
emphasizes
that
testers
are
not
vacuum
cleaners,
that
they
have
a
right
to
a
minimum
quality
in
what
they
have
to
test,