The Software Testing Automation Framework
The Software Testing Automation Framework
Automation Framework
by C. Rankin
Software testing is an integral, costly, and time- placing it under machine or program control. In our
consuming activity in the software development case, the process in question was software testing.
life cycle. As is true for software development in
general, reuse of common artifacts can provide Through reuse and automation, we planned to re-
a significant gain in productivity. In addition, duce or remove the resources (i.e., hardware, peo-
because testing involves running the system ple, or time) necessary to perform our testing.
being tested under a variety of configurations
and circumstances, automation of execution- To help illustrate the problems we were seeing and
related activities offers another potential source
of savings in the testing process. This paper the solution we produced, I use a running example
explores the opportunities for reuse and of one particular product for which I was the SVT
automation in one test organization, describes lead. This product, the IBM OS/2 WARP* Server for
the shortcomings of potential solutions that are e-Business, encompassed not only the base operating
available “off the shelf,” and introduces a new
solution for addressing the questions of reuse system (OS/2*—Operating System/2*) but also included
and automation: the Software Testing the file and print server for a local area network
Automation Framework (STAF), a multiplatform, (LAN) (known as LAN Server), Web server, Java**
multilanguage approach to reuse. It is based on virtual machine (JVM), and much more. Testing such
the concept of reusable services that can be a product is a daunting, time-consuming task. Any
used to automate major activities in the testing
process. The design of STAF is described. Also improvements we could make to reduce the com-
discussed is how it was employed to automate a plexity of the task would make it more feasible.
resource-intensive test suite used by an actual
testing organization within IBM. For our purposes, a test suite is a collection of tests
that are all designed to validate the same area of a
product. I discuss one test suite in particular, known
affectionately as “Ogre.” This test suite was designed
to perform load and stress testing of LAN Server and
the base OS/2. Ogre is a notoriously resource-inten-
126 RANKIN 0018-8670/02/$5.00 © 2002 IBM IBM SYSTEMS JOURNAL, VOL 41, NO 1, 2002
Authorized licensed use limited to: University of West London. Downloaded on March 18,2024 at 13:15:06 UTC from IEEE Xplore. Restrictions apply.
With a focus on reducing the complexity of creating Figure 1 Software testing cycle
and automating our testing, we looked at existing so-
lutions within IBM and the test industry. None of
these solutions met our needs, so we developed a
new one, the Software Testing Automation Frame-
work (STAF). This paper explores the design of STAF, DEVELOP- EXECUTION ANALYSIS
explains how STAF addresses reuse, and details how MENT OR
STAF was used to automate and demonstrably im- REVIEW
prove the Ogre test suite. The solution provided by
STAF is quite flexible. The techniques presented here DESIGN
could be used by most test groups to enhance the
efficiency of their testing process.
Authorized licensed use limited to: University of West London. Downloaded on March 18,2024 at 13:15:06 UTC from IEEE Xplore. Restrictions apply.
method also introduces the potential of skipping one Figure 2 Ogre scenario flow before automation
or more clients, which can have a significant impact
on the scenario (such as not uncovering a defect due
to insufficient load or stress). Therefore, we wanted
a solution that would allow us to start and stop the START
scenario from a central “management console.”
INSTALL
Test suite distribution. As new tests were created or NEW BUILD
existing tests were modified, they needed to be dis-
tributed to all the client systems. Our existing mech- YES DISTRIBUTE
anism consisted of one or more individuals walking TEST CASES
CHANGED TEST CASES
around to each client copying the tests from diskettes.
NO
This method was complicated by the fact that the
tests did not always exist in the exact same location START
SCENARIO
on each client. Like the previous problem of test suite
execution, this mechanism was very wasteful of time YES NO
and human resources. It also introduced another po- MONITOR
NEW
tential point of failure whereby one or more clients BUILD? SCENARIO
do not receive updated tests, resulting in false er-
rors. Therefore, we wanted a solution that provided
STOP YES
a mechanism for distributing our tests to our clients SCENARIO
CONFIGURATION
correctly and consistently. CHANGE?
NO
Authorized licensed use limited to: University of West London. Downloaded on March 18,2024 at 13:15:06 UTC from IEEE Xplore. Restrictions apply.
Although scripting languages are not a direct solu- itoring, and test suite execution dynamics unsolved.
tion to reuse or automation, scripting languages do Additionally, test harnesses have no direct or gen-
have some general applicability to the problem of eral applicability to the problem of reuse. Thus, test
reuse. To begin with, they are available on a wide harnesses are, at best, only part of the solution to
variety of operating systems. They also have large category 4 of our preferences. That having been said,
well-established sets of extensions. Although not the proximity of test harnesses to the test environ-
complete from a test perspective, these extensions ment made it likely that one or more test harnesses
would provide a solid base from which to build. Ad- would play a role in our ultimate solution. However,
ditionally, some languages (notably Tcl and Java) we still needed to find a solution for reuse and de-
provide support for dealing with multiple codepages. termine which, if any, of the existing test harnesses
we would use and extend to fill in the rest of the au-
The benefits of scripting languages would clearly tomation gaps.
place them in category 3 of our preferences. Unfor-
tunately, these benefits are only available if one is CORBA. At a very basic level, CORBA** (Common
willing to standardize on one language exclusively. Object Request Broker Architecture) is a set of in-
As was mentioned earlier, our testers create tests in dustry-wide specifications that define mechanisms
many different programming languages, and it would that allow applications running on different operat-
have been tremendously difficult to force them to ing systems, and written in different programming
switch to one common programming language. Even languages, to communicate. 3 CORBA also defines a
if we could have convinced all of the testers on our set of higher-level services, sitting on top of this com-
team, we could never have convinced all the testers munication layer, that provide functionality deemed
in our entire organization (much less those in other beneficial by the programming community at large
divisions, or at other sites), with whom we hoped to (such as naming, event, and transaction services). It
share our solution. Therefore, we were unable to rely is important to understand that CORBA itself is not
on scripting languages for our solution. a product; it is a set of specifications. For any given
set of operating systems, languages, and services, it
Test harnesses. A test harness is an application that is necessary to either find a vendor who has imple-
is used to execute one or more tests on one or more mented CORBA for that environment, or, much less
systems. In effect, test harnesses are designed to au- desirably, implement it oneself.
tomate the execution of individually automated tests.
CORBA is not intended to directly solve the problems
A variety of different test harnesses are available. of reuse and automation. However, CORBA does have
Each is geared toward a particular type of testing. some general applicability to the problem of reuse.
For example, many typical UNIX** tests are written First, CORBA is supported on a wide variety of op-
in shell script or the C language. These tests are gen- erating systems. Second, there is CORBA support for
erally stand-alone executables that return zero on a wide variety of programming languages. Thus,
success and nonzero on error. Harnesses such as the CORBA solves two of our key reuse problems. In con-
Open Group’s Test Environment Toolkit (TET, also trast, CORBA has no direct support for multiple
known as TETware) are designed to execute these codepages. Additionally, the set of available CORBA
types of tests on one or more systems. 2 In contrast, services is not geared toward a test environment,
a harness such as Sun’s Java Test leverages the un- which is understandable given the general applica-
derlying Java programming language to create a har- bility of CORBA to the computer programming in-
ness that is geared specifically to tests written in the dustry as a whole.
Java language. It would not be uncommon for a test
team to use both of these harnesses. Additionally, Given the above, CORBA would clearly fit in cate-
it is not uncommon for test teams to create custom gory 3 of our preferences, although significant work
harnesses geared toward specialized areas they test, would be necessary to provide the missing support
such as I/O subsystems and protocol stacks. in terms of multiple codepages and existing automa-
tion components. Additionally, as we mentioned
It is clear that test harnesses have direct applicabil- above, there is no one company that produces a prod-
ity to the problem of automation. However, as a gen- uct called “CORBA.” What this means is that for a
eral rule, test harnesses only solve the execution part complete solution one must frequently obtain prod-
of the automation problem. This solution still leaves ucts from multiple vendors and attempt to config-
areas such as test suite distribution, test suite mon- ure them to work together. This attempt has been
INCOMING REQUEST
INTERNAL SERVICE
INTERNAL SERVICE
notoriously difficult in the past, 4 and, although the local and remote processes) to these services. STAF
situation is improving, we would rather have avoided has two “flavors” of services, internal and external.
this layer of complication. All told, we felt that a Internal services are coded directly into the daemon
CORBA solution was not worth the expense neces- process and provide the core services, such as data
sary to implement and maintain it. management and synchronization, upon which other
services build. External services are accessed via
The design of STAF shared libraries that are dynamically loaded by STAF.
These external libraries represent either the service
Having exhausted other avenues, we decided to cre- itself, in the case of languages like C or C⫹⫹, which
ate our own solution. We had a two-phased approach ultimately generate native executable object code,
to the development of STAF. The first phase ad- or a proxy interface to other languages, such as the
dressed the issue of reuse. This phase by itself would Java or REXX languages, which do not generate na-
give us a solution that fell into category 3 of our so- tive executable object code. The differentiation of
lution preferences. The second phase tackled the service “flavors” and proxy handling can be seen in
problem of automation. In this phase we would build Figure 4.
on top of the reuse solution and extend it to solve
our automation problem. This two-step approach This ability to provide services externally from the
provided a solution that fell into category 1 of our STAF daemon process allowed us to keep the core
solution preferences. The result of that work was the of STAF very small, while allowing users to pick and
Software Testing Automation Framework, or STAF. choose which additional pieces they wanted. It min-
imizes the infrastructure necessary to run STAF. Ad-
In the subsections that follow, I present the under- ditionally, the small STAF core makes it easy to pro-
lying design ideas surrounding STAF and how they vide support on multiple platforms, and also to port
helped provide a reuse solution. A subsequent sec- STAF to new platforms.
tion will then address how we built and extended this
solution to solve the problem of automation. Request-result format. Fundamentally, every STAF
request consists of three parameters, all of which are
Services. STAF was designed around the idea of re- strings. The first parameter is the name of the sys-
usable components. In STAF, we call these compo- tem to which the request should be sent. This pa-
nents services. Each service in STAF exposes a spe- rameter is analyzed by the local STAF daemon to de-
cialized set of functionality, such as logging, to users termine whether the request should be handled
of STAF and other services. STAF, itself, is fundamen- locally or should be directed to another STAF sys-
tally a daemon process that provides a thin dispatch- tem. Once the request has made it to the system that
ing mechanism that routes incoming requests (from will handle it, the second parameter is analyzed to
Authorized licensed use limited to: University of West London. Downloaded on March 18,2024 at 13:15:06 UTC from IEEE Xplore. Restrictions apply.
determine which service is being invoked. Finally, Figure 5 details the concepts just described. A STAF
the third parameter, which contains data for the re- request is initiated by the REXX program running on
quest itself, is passed into the request handler of the machine gamma (running Windows 2000). It is sub-
service to be processed. mitting the request “generate type Build subtype
WebSphere V4” to the event service on machine
After processing the request, the service returns two delta. In step 1 the REXX interpreter passes the re-
pieces of data. The first is a numeric return code, quest to the REXX API layer of STAF. In step 2, the
which denotes the general result of the request. The REXX API layer passes the request to the C API layer.
second is a string that contains request-specific in- In step 3 the C API layer makes the interprocess com-
formation. If the request was successful, this infor- munication (IPC) request to the STAF daemon pro-
mation contains the data, if any, which were asked cess. At this point the STAF daemon determines that
for in the request. If the request was unsuccessful, the request is destined for another system, which ini-
this information typically contains additional diag- tiates step 4, a network IPC request to the STAF dae-
nostic information. mon on machine delta (running AIX Version 4.3.3).
The STAF daemon on machine delta determines that
By dealing primarily with strings, we have been able the request is bound for the event service. This leads
to simplify many facets of STAF. First, there is only to step 5 where the request is passed to the Java ser-
one primary function used to interface with STAF vice proxy layer, the layer responsible for commu-
from any given programming language. This func- nicating directly with the JVM, which is step 6. In step
tion is known as STAFSubmit( ), and its parameters 7, the JVM invokes the corresponding method on the
are the three strings described above. Because of the event service object. Upon receiving the request, step
simplicity of this interface, requests look essentially 8 shows the event service passing the request string
identical across all supported programming lan- to the common request parser of STAF for valida-
guages, which makes using STAF from multiple pro- tion. At this point the event service would perform
gramming languages much easier. Adding support the indicated request and steps 1 through 7 would
for a new programming language is also trivial, be- be reversed as the result was passed back to the REXX
cause only a very small API set must be exposed in program on machine gamma.
the target language. Had we chosen to use custom
APIs for each service, the work to support a new pro-
There are a number of things to note about this re-
gramming language would be significant, since we quest flow. First, it was quite easy to specify a net-
would be faced with providing interfaces to a much, work-oriented request from the point of view of the
much larger set of APIs. REXX program. Second, the machines in question
are running different operating systems on different
Strings also make it easier to create and interface hardware architectures, and neither the REXX pro-
with external services. The primary interface for com- gram nor the event service need be aware of this dif-
municating with an external service consists of a ference. Third, neither the REXX program nor the
method to pass the requisite strings in and out of Java-based event service need be concerned with the
the service. Additionally, by restricting ourselves to language the other was using.
strings we are able to provide to services a common
set of routines to parse the incoming request strings.
Common routines allow service providers to simply The decision to have STAF deal only with strings was
define the format of their request strings and pass the most crucial and beneficial decision we made
them to this common parser for validation and data while designing STAF. It has allowed us to keep STAF
retrieval, which helps ease the creation of reusable simple and flexible at the same time.
components. This leads to benefits in the user space
as well, since all service request strings follow a com- Unicode. Because we focus predominantly on strings
mon lexical format, which provides a level of com- and were concerned with codepage issues, STAF was
monality to all services. It also makes it easier to use designed to use Unicode** internally. When a call
services when switching from one programming lan- to STAFSubmit( ) is made, the input strings are con-
guage or operating system to another, because the verted to Unicode. All further processing is carried
request strings are identical regardless of the envi- out in Unicode. Data are only converted out of Uni-
ronment. Commonality has the added benefit of hid- code when a result is passed back from STAFSub-
ing the programming language choice of the caller mit( ), or if STAF is forced to interact with the op-
and the service provider from one another. erating system or some other entity that does not
3 5
2 6
1 7
REQUEST PARSER
accept Unicode strings. By processing data in Uni- STAF provides. We will see these services again later
code, we keep the integrity of the data intact. For when we examine how they were used to create the
example, if a system using a Japanese codepage sends solution to our automation problems.
a request to log some data containing Japanese
codepage characters to a system using an English Three core services in STAF are the handle, variable,
codepage, the data are initially converted to Unicode and queue services. These services provide funda-
(which maintains the integrity of the data) when the mental capabilities that are common across all ser-
STAFSubmit() call is issued. The data are main- vices and provide a foundation from which to build.
tained in Unicode until another STAFSubmit() call Unsurprisingly, these services expose the capabili-
is issued to retrieve the data. If the same system run- ties of handles, variables, and queuing in STAF.
ning the Japanese codepage requests the data, the
data will be converted from Unicode back to the Jap- Handles are used to identify and encapsulate appli-
anese codepage, which preserves the integrity of the cation data in the STAF environment. When an ap-
data, since the data were originally in the same plication wishes to use STAF, it obtains a handle by
codepage. The data retrieved will be the same data calling a registration API. The handle returned is tied
initially logged even though, for some indeterminate specifically to the registering application. In general,
length of time, the data were being stored or main- this is a 1-to-N mapping between applications and
tained on a system using an English codepage. Thus, handles. An application may have more than one
by using Unicode throughout STAF, we solved our handle, but any given handle belongs to a single ap-
problem of handling multiple codepages. plication. However, STAF does support special “stat-
ic” handles that can be shared among applications.
Available services. In order to solve our automation Each STAF handle has an associated message queue.
problems, we needed a set of components on which This queue allows an application to receive data from
to build. As we built STAF, we kept this foremost in other applications and services. It also forms the ba-
our minds and ensured that the services we devel- sis for local and network-oriented interprocess com-
oped included these essential automation compo- munication in STAF. Many services deliver data to
nents. Here we describe some of the services that an application via its queue. These queues allow ap-
Authorized licensed use limited to: University of West London. Downloaded on March 18,2024 at 13:15:06 UTC from IEEE Xplore. Restrictions apply.
plications to work in an event-driven manner sim- STAF systems to be started, stopped, and queried. It
ilar to the approach used by many windowing sys- provides detailed control over the execution of pro-
tems. cesses including specification of environment vari-
ables, the working directory, input/output redirec-
STAF provides data management facilities through tion, and effective user identification. The process
STAF variables. These STAF variables are used by service can also, at user request, deliver notifications
STAF applications in much the same way that var- when processes end. These notifications are deliv-
iables are used in a programming language. When ered via the queuing facilities described earlier.
a STAF request is submitted, any STAF variables in
the request are replaced with their values. One of STAF provides file system facilities through the file
the powerful capabilities of STAF variables is that they system service. Currently, this service provides mech-
can be changed outside of the scope of the running anisms for transferring files and accessing file con-
application. This capability provides the ability to tent. Future versions of STAF will expand the capabil-
dynamically alter the behavior of an application. For ities of this service into file and directory management,
example, an application designed to apply a specific such as directory creation and enumeration and file
percentage of load on a system might allow the per- or directory deletion.
centage to be specified through an environment vari-
able or as a command line argument. In this case,
STAF provides logging facilities through the log ser-
once the application is running, the only way to
vice. At its most basic layer, this service provides
change the load percentage is to stop the applica-
time-stamped message logging based on levels, such
tion and restart it with the altered environment vari-
as “FATAL,” “ERROR,” “WARNING,” and “DEBUG.”
able or command line argument. Using STAF vari-
A variety of higher-level facilities are built on top
ables allows the value to be changed without stopping
of this foundation, including local and centralized
the application. The only change to the application
logging, log sharing between applications, dynamic
would be to periodically reevaluate the value of the
level-masking, and maintenance on active logs. The
STAF variable. These STAF variables are stored in
dynamic level-masking is of particular interest. Level-
variable pools. Each STAF handle has a unique vari-
masking refers to the ability of the user to determine
able pool that is specific to that application. There
which logging levels will be stored in a log file. Mes-
is also a global variable pool that is common across
sages with logging levels not included in the level-
all handles on a given STAF system. Commonality al-
mask will be discarded. The fact that this feature is
lows default values to be specified in the global vari-
dynamic means that the level-mask can be changed
able pool, which can then be overridden on a handle-
while an application is running. For example, this
by-handle basis.
ability would allow a user to “switch on” debug mes-
sages when a problem is encountered, without need-
STAF provides several other services in addition to
ing to stop and restart the application.
handle, variable, and queue. STAF provides synchro-
nization facilities through the semaphore and re-
source pool services. The semaphore service provides STAF provides remote monitoring facilities through
named mutual exclusion (mutex) and event sema- the monitor service. This service provides a light-
phores. Compared with native semaphores com- weight publish-query mechanism. Applications pub-
monly provided by an operating system, STAF sema- lish their state, which then allows other applications
phores have two advantages. One, they are available to remotely query it. The published state is a simple
remotely across the network. Two, they are more vis- time-stamped string, yet this has proven sufficiently
ible, meaning it is much easier, for example, to de- robust for monitoring the progress of typical tests
termine who owns a mutex semaphore and who is and applications.
waiting on an event semaphore. The resource pool
service provides a means to manage named pools of STAF provides event-handling facilities through the
resources, such as machines, user identifiers, and li- event service. This service provides standard publish-
censes. In particular, it provides features for man- subscribe semantics. Applications register for spe-
aging the content of the pools as well as synchro- cific types and, possibly subtypes, of events. Other
nizing access to the elements in the pools. applications generate events based on a type, sub-
type, and sets of properties (which are attribute/value
STAF provides process execution facilities through pairs). The events are delivered via the queuing fa-
the process service. This service allows processes on cilities described earlier.
ESTABLISH
CONNECTION(S)
Next, we looked to solve the problems associated
TO SERVER(S) with executing more than one instance of Ogre on
a given system. The two most pressing issues were
EXECUTE
test suite synchronization and resource management.
SUBTEST To handle synchronized access to tests, we relied on
the STAF semaphore service, in particular, its mutex
semaphore support. This service allowed one in-
RELEASE RELEASE stance of the test suite to gain exclusive access to a
CONNECTION(S) RESOURCE(S)
TO SERVER(S) test and then release control once execution of that
test was complete. To manage the drive letters and
printer ports, we relied on the resource pool service
NO YES RELEASE
SYNCHRONIZED
LOCK
of STAF. This service allowed us to set up separate
SUBTEST?
pools for the drive letters and printer ports. The ser-
vice then manages the access to entries within the
PROCEDURE NO MULTI-INSTANCE pool. Thus, when one instance of the test suite re-
ENTRY OR EXIT CONFLICT
quests a drive letter, we can be sure that no other
DECISION MULTI-INSTANCE
POINT OR STAF SPECIFIC
instance of the test suite will obtain that drive letter
until the first instance releases control of it back to
the resource pool service. With these problems
solved, we were able to run multiple instances of
Ogre on our systems. These changes to the test suite
In addition to the services described above, STAF are illustrated in Figure 6. In particular, the light pur-
makes it quite easy for groups to develop their own ple areas of Figure 6 represent where STAF was used
services to meet specific needs. These services can to solve the test suite synchronization and resource
then become part of the set of service components management problems.
available for use with STAF. The modular service-
based nature of the platform provides the infrastruc- While making the synchronization and resource
ture for evolution and growth. management changes described above, we found
ourselves redistributing the test suite more often than
usual, so in conjunction with the above changes, we
From reuse to automation
also set out to solve the test suite distribution prob-
Having addressed reuse, we next focused on auto- lem. Here we were able to leverage the file system
mation. Our plan was to build a solution on top of and variable services of STAF. Using these two ser-
STAF by leveraging the automation components that vices, we wrote a small script that iterated through
it provides. a list of clients in a file and used the file system ser-
Authorized licensed use limited to: University of West London. Downloaded on March 18,2024 at 13:15:06 UTC from IEEE Xplore. Restrictions apply.
vice to copy each file. The variable service was used given period of time. We were then able to ascer-
to deal with mapping the abstract destination defined tain which, if any, of those errors and warnings were
in the copy command to the actual destination on true problems or simply artifacts of temporarily push-
ing a server beyond its capacity. Remember, Ogre
is a load and stress test, so we expect to occasionally
push the servers beyond their limits.
STAF has allowed teams Finally, we were left with the problem of execution
to focus on directly solving dynamics. To solve this problem, we leveraged
their problems instead of GenWL again. As mentioned above, the workload
inventing infrastructure. file contains the configuration information for the
scenario. As the workload file is processed, this con-
figuration information is stored on each of the cli-
ent systems using the STAF variable service. As the
test suite executes, it retrieves the configuration in-
each client. With the list of clients maintained in a formation from the variable service. By using the
file, we were assured the updated test suite was con- variable service, we were able to update the config-
sistently distributed to all the clients. uration information dynamically. Thus, if we needed
to change the configuration information, such as to
With the problems of test suite distribution and ex- reintroduce a server or change server stress ratios,
ecution solved, we next addressed the test suite mon- we simply updated the appropriate values in the
itoring problem. Here we leveraged the monitor ser- workload file and directed GenWL to push that value
vice of STAF. Our test suite published its state to the out to all the clients.
monitor service every time it entered a subtest or
when an error or warning occurred. Given the pub- Figure 7 illustrates the flow of an Ogre scenario af-
lished information, we next developed a way to view ter our automation changes. In comparison to Fig-
this information using the GenWL execution har- ure 2, note that the majority of the steps are now
ness. The workload file read by GenWL defines all automated. The only two steps that are not auto-
the test suite instances; thus it is trivial for GenWL mated are updating the configuration and installing
to interact with the monitor service to retrieve the a new build. Updating the configuration consists of
published state for all the test suite instances. manually updating the workload file with the con-
GenWL then displays this information on a system- figuration changes. This updating effectively requires
by-system basis. With a single command from our human intervention. Installing a new build is some-
management console, we were able to ascertain the thing that we have automated in other areas but was
current state of the entire Ogre scenario. not deemed useful for the Ogre scenarios.
Authorized licensed use limited to: University of West London. Downloaded on March 18,2024 at 13:15:06 UTC from IEEE Xplore. Restrictions apply.
dition, our new monitoring capabilities improved create without a solution such as STAF from which
morale by removing the “grunt” work of perform- to build.
ing periodic monitoring check-ins at night and on
the weekend. If a problem was uncovered while mon- After a long incubation period, STAF is available in
itoring remotely, we were sometimes able to perform an open-source form on the SourceForge Web site
remote diagnostics and solve the problem without (http://staf.sourceforge.net). It is my hope that the
coming to the site. availability of this flexible framework will lead to sus-
tained advances in the testing efficiency and effec-
Finally, by overcoming our test suite execution tiveness of many software organizations.
dynamics problems, we were able to save time and
personnel by reducing the frequency of scenario re- Acknowledgments
starts. This reduction in restarts was yet another mo-
rale boosting item, since we no longer felt like we I would like to thank Clay Williams, Karen Rosen-
were “twiddling our thumbs” when running the sce- gren, Sharon Lucas, David Bender, and Don Ran-
nario in a configuration that we knew would have to dall for reviewing draft versions of this paper. I would
be restarted in mid-run. like to express my sincere gratitude to Peri Tarr for
helping me organize my thoughts and for keeping
Many times our group had contemplated fixing some this paper flowing in a consistent manner. Her as-
of the problems in the Ogre test suite. We had elab- sistance has been invaluable in making this paper
orated a list of items that we would need to create available to readers.
in order to solve the problem. Evaluating this list in *Trademark or registered trademark of International Business
hindsight, we realized that what we actually needed Machines Corporation.
was STAF. Had we addressed our list of items ear- **Trademark or registered trademark of Sun Microsystems, Inc.,
lier, we would have ended up with a solution that Microsoft Corporation, The Open Group, Object Management
was centered around our particular test suite, as op- Group, or Unicode Consortium, Inc.
posed to the general solution, which is STAF. Instead,
the reuse philosophy of STAF allowed us to pick up Cited references
the reusable components it provides and solve our
test suite problems. 1. J. Ousterhoust, “Scripting: Higher Level Programming for the
21st Century,” Computer 31, No. 3, 23–30 (March 1998).
2. The Open Group, http://tetworks.opengroup.org/.
3. The Object Management Group, http://www.corba.org.
Conclusion 4. R. Bastide, P. Palanque, O. Sy, and D. Navarre, “Formal Spec-
ification of CORBA Services: Experience and Lessons
To improve the efficiency and effectiveness of the Learned,” OOPSLA Conference Proceedings (2000), pp. 105–
testing process, groups need to find ways to improve 117.
their reuse and automation. As a solution to help 5. R. S. Pressman, Software Engineering: A Practitioner’s Approach,
address these issues, we created STAF. It was designed 3rd Edition, McGraw Hill, New York (1992), p. 559.
to solve our reuse problems and was then leveraged
to solve our automation problems. Using STAF, we Accepted for publication September 18, 2001.
have generated considerable savings with respect to
the people, time, and hardware necessary to perform Charles Rankin IBM Server Group, 11401 Burnet Road, Austin,
Texas 78758 (electronic mail: [email protected]). Mr. Rankin
testing. is an advisory software engineer in the IBM Austin Development
Laboratory. He graduated with a B.S. degree in electrical engi-
Since its inception, STAF has been adopted by nu- neering from the University of Florida in 1993, after which he
joined IBM in Austin. He has worked extensively with IBM’s PC-
merous test groups throughout IBM, and it is being oriented operating systems and networking products. He was the
used to create a variety of innovative testing solu- system test lead for IBM’s Directory and Security Server for OS/2
tions. In my organization alone, we have developed and IBM’s OS/2 WARP Server for e-Business. He is currently
a pluggable solution that drives automated testing the lead developer for STAF.
from build through results collection. When a new
build becomes available, the test systems are auto-
matically set up and installed. Then the test suites
are executed automatically, and the results are col-
lected for analysis. These types of solutions would
be tremendously more difficult, if not impossible, to