1971 –
1985: Emphasize on Implementation and Single Program:
Beginning from the mid 1960s to
the mid 1980s, the whole software engineering research community
shifted it paradigms to the
program-in-the-small stage, and then started the program-in-the-large stage.
The main changes this migration
brought to software development were that the characteristic
problems changed from small
programs, to larger programs and algorithms, and were on the way to
developing more complex problems.
In response to this significant change, researches on testing
techniques began their
prosperity.
On the structural side, in 1975,
1976, 1980, and 1985, four significant papers were published, each
proposing a very important structural
testing strategy, and all of which were adopted as the classic
criteria for later researches
followed them. From Figure 3 we can see that almost all the important
13
theoretical structural testing
researches appeared in this period. Although the whole software
engineering community was facing
the challenge of switching the gear of developing from comparably
simple programs to complex large
systems, it took time for testing community to react to the change,
specifically, in approximately 5
years.
From the figure we also find that
only one significant result for functional testing appeared in this
period. The reason is obvious.
Functional testing is based on requirements and has consisted merely
of heuristic criteria. It is
difficult to determine when and if such criteria are satisfied without being
able to exp ress the requirements
in an efficient, rigorous, unambiguous way. This was in part the
motivation for developing
implementation-based testing techniques; they have the advantage that their
application can be automated and
their satisfaction determined. Fortunately the research appeared
during this period set up a very
good tone of successive researches, since it moved emphasis from the
simple input/output
specifications that testers often used in this period to a higher level – the
design of
the system.
In this period, how to test a “program”,
instead of a “system”, still drew the attention of researchers
and practitioners. However the
whole software engineering had begun to get ready for moving from
the stage of
programming-in-the-large to a higher level.
1986 –
current: Emphasize on Specification and System:
As software become more and more
pervasive, the engineering for this area experienced the shift from
programming-in-the-large to
programming-in-the-world, starting from the mid 1980s. The
characteristic problems changed
from algorithms, to system structures, and component interfaces.
Systems have been specified in
more complex ways. Studies in software architecture and formal
methods have brought a lot of
facilities as well as inspiration to the way people specifying their
systems. Based on these studies,
software system now can be specified in more rigorous,
understandable, automatable ways,
which has brought great chances to improve functional testing
techniques. Meanwhile, software
development is no longer limited to standalone systems, in reality,
there have been more and more
needs to develop distributed, object-oriented, and component based
systems. The researchers in
testing community have responded this trend and move their emphasis
accordingly.
Starting from the late 1980s,
many researches have made use of the achievements of formal methods
and logical analysis. There is
still limitation in the specification capabilities so that researchers have
been calling for better
specification methods to improve their results. Both functional and structural
testing techniques have benefited
from the enhancement of software specification technologies.
The widespread developing and
using of object-oriented technologies, COTS software and componentbased
systems has brought a great
density of testing researches on these kinds of systems. The earliest
OO testing studies appeared in
the early 1990s. Most of them use traditional functional and/or
structural techniques on the
components, i.e. classes and so on. Researchers have proposed new
problems and solutions on testing
the connections and inheritances among components. Both
structural and functional techniques
are hired in their approaches, and it has proven to be an effective
method to integrate the two
techniques for testing complex systems.
No comments:
Post a Comment