Test Automation Frameworks
"When developing our test
strategy, we must minimize the impact caused by changes in the
applications we are testing, and changes in the tools we use to test
them."
--Carl J. Nagle
1.1 Thinking Past "The Project"
In today’s
environment of plummeting cycle times, test automation becomes an
increasingly critical and strategic necessity. Assuming the level of
testing in the past was sufficient (which is rarely the case), how do
we possibly keep up with this new explosive pace of web-enabled
deployment while retaining satisfactory test coverage and reducing
risk? The answer is either more people for manual testing, or a greater
level of test automation. After all, a reduction in project cycle times
generally correlates to a reduction of time for test.
With the onset and
demand for rapidly developed and deployed web clients test automation
is even more crucial. Add to this the cold, hard reality that we are
often facing more than one active project at a time. For example,
perhaps the team is finishing up Version 1.0, adding the needed new
features to Version 1.1, and prototyping some new technologies for
Version 2.0!
Better still; maybe
our test team is actually a pool of testers supporting many diverse
applications completely unrelated to each other. If each project
implements a unique test strategy, then testers moving among different
projects can potentially be more a hindrance rather than a help. The
time needed for the tester to become productive in the new environment
just may not be there. And, it may surely detract from the productivity
of those bringing the new tester up to speed.
To handle this
chaos we have to think past the project. We cannot afford to engineer
or reengineer automation frameworks for each and every new application
that comes along. We must strive to develop a single framework that
will grow and continuously improve with each application and every
diverse project that challenges us. We will see the advantages and
disadvantages of these different approaches in Section 1.2
1.1.1 Problems with Test Automation
Historically,
test automation has not met with the level of success that it could.
Time and again test automation efforts are born, stumble, and die. Most
often this is the result of misconceived perceptions of the effort and
resources necessary to implement a successful, long-lasting automation
framework. Why is this, we might ask? Well, there are several reasons.
Foremost among
this list is that automation tool vendors do not provide completely
forthright demonstrations when showcasing the "simplicity" of their
tools. We have seen the vendor’s sample applications. We have seen the
tools play nice with those applications. And we try to get the tools to play nice with our applications just as fluently. Inherently, project after project, we do not achieve the same level of success.
This usually
boils down to the fact that our applications most often contain
elements that are not compatible with the tools we use to test them.
Consequently, we must often mastermind technically creative solutions
to make these automation tools work with our applications. Yet, this is
rarely ever mentioned in the literature or the sales pitch.
The commercial
automation tools have been chiefly marketed for use as solutions for
testing an application. They should instead be sought as the
cornerstone for an enterprise-wide test automation framework. And,
while virtually all of the automation tools contain some scripting
language allowing us to get past each tool’s failings, testers have
typically neither held the development experience nor received the
training necessary to exploit these programming environments.
"For the most part, testers have been testers,
not programmers. Consequently, the ‘simple’ commercial solutions have
been far too complex to implement and maintain; and they become
shelfware."
Most unfortunate of all, otherwise fully capable
testers are seldom given the time required to gain the appropriate
software development skills. For the most part, testers have been
testers, not programmers. Consequently, the "simple" commercial
solutions have been far too complex to implement and maintain; and they
become shelfware.
Test automation must be approached as a full-blown
software development effort in its own right. Without this, it is most
likely destined to failure in the long term.
click here for more details:
http://safsdev.sourceforge.net/FRAMESDataDrivenTestAutomationFrameworks.htm