WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Method and apparatus for environment-variable driven software testing    
United States Patent5634098   
Link to this pagehttp://www.wikipatents.com/5634098.html
Inventor(s)Janniro; Micheal E. (Mountain View, CA); Jervis; Robert B. (Monte Sereno, CA); Miller, Jr.; Donald G. (Los Altos, CA)
AbstractAn apparatus and method for testing software is disclosed. A test base is constructed on a storage device by creating a plurality of directories connected to form a hierarchical directory structure. Files associated with software programs to be tested are stored in directories within the hierarchical directory structure. Such files may include source code files, test input files and expected output files. Environment files and environment configuration files that specify values for environment variables are also stored in the test base. A test is run by invoking a test engine and passing to the test engine the name of an environment file and the name of a test. The test engine modifies the values of environment variables based on the specified environment file prior to executing the specified test. After modifying the environment based on the specified environment file and prior to executing the test, the test engine further modifies the environment based on any applicable environment configuration files. The test engine determines which environment configuration files are applicable to a test based on the location of the environment configuration files in the test base relative to the location of the directory that contains the files associated with the test. In addition to single test operations, the test engine may perform a series of tests based on a test list. The test apparatus also includes a tool for storing the results of past tests, and a tool for generating test lists in which tests are ordered based on the results of past tests. Multiple tests are performed simultaneously by distributing the test processes among a plurality of processors.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Drawing from US Patent 5634098
Method and apparatus for environment-variable driven software testing - US Patent 5634098 Drawing
Method and apparatus for environment-variable driven software testing
Inventor     Janniro; Micheal E. (Mountain View, CA); Jervis; Robert B. (Monte Sereno, CA); Miller, Jr.; Donald G. (Los Altos, CA)
Owner/Assignee     Sun Microsystems, Inc. (Mountain View, CA)
Patent assignment
All assignments
Publication Date     May 27, 1997
Application Number     08/384,318
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     February 1, 1995
US Classification     714/38 707/104.1 714/31
Int'l Classification     G06F 011/34
Examiner     Nguyen; Hoa T.
Assistant Examiner     Hua; Ly V.
Attorney/Law Firm     Blakely Sokoloff Taylor & Zafman LLP
Address
Parent Case    
Priority Data    
USPTO Field of Search     395/183.14 395/183.13 395/700 395/650 395/600 395/183.01 395/183.02
Patent Tags     environment-variable driven software testing
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5421004
Carpenter
714/25
May,1995

[0 after 0 votes]
5414836
Baer
714/38
May,1995

[0 after 0 votes]
5274803
Dubin
707/10
Dec,1993

[0 after 0 votes]
5230049
Chang
717/143
Jul,1993

[0 after 0 votes]
5021997
Archie
714/31
Jun,1991

[0 after 0 votes]
4945475
Bruffey
707/1
Jul,1990

[0 after 0 votes]
4825354
Agrawal
707/10
Apr,1989

[0 after 0 votes]
5182806
McKeeman
717/145
Dec,1969

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


What is claimed is:

1. An apparatus for performing a test on software in a computer system, wherein said computer system has an initial environment, the apparatus comprising:

a storage device containing a test base, wherein the test base includes a

plurality of directories connected to form a hierarchical directory structure, the plurality of directories including a test directory corresponding to said test;

a processor coupled to said storage device;

a test engine executing on said processor; and

a plurality of environment configuration files stored in said plurality of directories.

2. The apparatus of claim 1 wherein said test engine determines which environment configuration files of said plurality of environment configuration files are applicable environment configuration files, wherein applicable environment configuration files are environment configuration files that apply to said test.

3. The apparatus of claim 2 wherein said test engine determines said applicable environment configuration files based on where said plurality of environment configuration files are stored in said plurality of directories relative to said test directory.

4. The apparatus of claim 2 wherein said test engine modifies said initial environment to create a modified environment based on said applicable environment configuration files.

5. The apparatus of claim 4 wherein said test engine causes said software to be tested in said modified environment.

6. The apparatus of claim 4 wherein: said software is defined in source code; and said source code is located in said test directory.

7. The apparatus of claim 6 wherein:

said applicable environment configuration files specify compile options for compiling said source code; and

said test engine causes said source code to be compiled according to said compile options prior to causing said software to be tested.

8. The apparatus of claim 4 wherein said test engine modifies said initial environment based on an environment file prior to modifying said initial environment based on said applicable environment configuration files.

9. The apparatus of claim 2 wherein said test engine determines any environment configuration files located in said test directory and in directories of said plurality of directories that are ancestors of said test directory to be said applicable environment configuration files.

10. The apparatus of claim 2 wherein:

said applicable environment configuration files include a first environment configuration file located in a first directory of said plurality of directories and a second environment configuration file located in a second directory of said plurality of directories;

said first environment configuration file specifies a first value for an environment variable;

said second environment configuration file specifies a second value for said environment variable;

said test engine causes said environment variable to be set to said first value if said first directory is a descendent of said second directory; and

said test engine causes said environment variable to be set to said second value if said second directory is a descendent of said first directory.

11. A method for performing a test on software in a specified environment in a computer system, the computer system including a storage device containing a test base, the test base including a plurality of directories connected to form a hierarchical directory structure, wherein a first directory of said plurality of directories corresponds to said test, wherein a plurality of environment configuration files are stored in said plurality of directories, the method comprising the steps of:

determining which of said plurality of environment configuration files are applicable environment configuration files based on where said plurality of environment configuration files are located in said hierarchical directory structure relative to said first directory;

creating said specified environment based on said applicable environment configuration files; and

testing said software in said specified environment.

12. The method of claim 11 wherein:

source code defining said software is stored in said first directory;

said applicable environment configuration files specify compile parameters for compiling said source code; and

said step of testing said software includes compiling said source code according to said compile parameters.

13. The method of claim 11 further comprising the step of modifying an initial environment of said computer system according to a specified environment file prior to performing said step of creating said specified environment based on said applicable environment configuration files.

14. The method of claim 11 wherein said plurality of directories includes a second directory corresponding to a second test, wherein said second directory is neither an ancestor of nor a descendent of said first directory, wherein the method further comprises performing the following steps prior to performing said steps of determining, creating and testing:

storing said applicable environment configuration files that apply to both said test and said second test in one or more common ancestor directories, wherein said one or more common ancestor directories are directories of said plurality of directories that are ancestors of both said first directory and said second directory; and

storing said applicable environment configuration files that apply to said test but not to said second test in either said first directory or in an ancestor of said first directory that is not an ancestor of said second directory.

15. The method of claim 14 further comprising the steps of:

storing source code defining said software in said first directory;

storing source code defining a second software for said second test in said second directory.

16. The method of claim 14 further comprising the step of storing an environment configuration file that applies to said second test but not said first test in either said second directory or in an ancestor of said second directory that is not an ancestor of said first directory.

17. A method for performing a test on software using a test base on a computer-readable storage device, the method comprising the computer-implemented steps of:

creating a plurality of directories on said computer-readable storage device, wherein said plurality of directories are connected to form a hierarchical directory structure, wherein a first directory of said plurality of directories corresponds to a first test and a second directory of said plurality of directories corresponds to a second test;

storing a plurality of environment configuration files in said plurality of directories, wherein said environment configuration files include a first set of environment configuration files that apply to said first test but not said second test, a second set of environment configuration files that apply to said second test but not said first test, and a third set of environment configuration files that apply to both said first test and said second test; and

performing a test on software using said plurality of directories and said plurality of environment configuration files, said performing step further including a step of determining which of said plurality of environment configuration files are applicable to said test based on a location of said environment configuration files in said plurality of directories.

18. The method of claim 17 wherein said step of storing said plurality of environment configuration files includes the steps of:

storing the environment configuration files of said first set of environment configuration files in either said first directory or in directories of said plurality of directories that are ancestors of said first directory but not ancestors of said second directory;

storing the environment configuration files of said second set of environment configuration files in either said second directory or in directories of said plurality of directories that are ancestors of said second directory but not ancestors of said first directory; and

storing the environment configuration files of said third set of environment configuration files in directories of said plurality of directories that are ancestors of both said first directory and said second directory.

19. The method of claim 18 wherein said first test includes testing a first software program, wherein said second test includes testing a second software program, the method further comprising the steps of:

storing source code defining said first software program in said first directory; and

storing source code defining said second software program in said second directory.

20. The method of claim 19 further comprising the steps of:

storing in said first directory a file containing input to be sent to said first software program during said first test;

storing in said first directory a file containing expected output to be generated by said first software program during said first test;

storing in said second directory a file containing input to be sent to said second software program during said second test; and

storing in said second directory a file containing expected output to be generated by said second software program during said second test.

21. The method of claim 18 further comprising the step of storing environment files in said plurality of directories, wherein said environment files are stored in one or more directories that are neither ancestors nor descendants of said first directory or said second directory.

22. A method for performing a second series of tests on a plurality of software programs based on results of a first series of tests performed on said plurality of software programs, the method comprising the computer implemented steps of:

performing said first series of tests, wherein each test of said first series of tests is performed on a specified software/environment combination, wherein each software/environment combination includes a specified software program of said plurality of software programs and a specified environment of a plurality of predefined environments;

storing on a storage device result data indicating results of said first series of tests, said result data including data indicating whether a most recent performance of each test of said first series of tests was successful;

reading said result data from said storage device;

generating a test list based on said result data, wherein said test list includes an ordered list of entries, wherein each entry of said test list represents a test performed in said first series of tests, wherein each entry in said list of entries is ordered based on the outcome of the test represented by said entry during said first series of tests; and

performing said second series of tests based on said test list, wherein the tests represented in said test list are performed in the order of their corresponding entries in the test list.

23. The method of claim 22 further comprising the step of updating said result data to reflect results of said second series of tests.

24. The method of claim 22 wherein said step of storing on said storage device result data includes the step of, for each test of said first series of tests, storing data indicating how many consecutive performances of said test were successful if said most recent performance of said test was successful.

25. The method of claim 24 wherein said step of performing said second series of tests includes performing the step of:

for each entry in said list of entries

assigning values to a plurality of environment variables according to the specified environment corresponding to said entry; and

executing routines corresponding to one or more test blocks identified in a particular environment variable of said plurality of environment variables.

26. The method of claim 22 wherein said step of generating said test list includes the step of placing entries for a first set of tests before entries for a second set of tests, wherein said first set of tests are tests whose most recent performance was not successful, wherein said second set of tests are tests whose most recent performance was successful.

27. The method of claim 22 wherein said step of performing said second series of tests includes spawning a plurality of test processes.

28. The method of claim 27 wherein said step of performing said second series of tests includes distributing said plurality of test processes to a plurality of processors.

29. The method of claim 28 wherein said step of distributing said plurality of test processes to said plurality of processors includes distributing said plurality of test processes to processors identified in a particular environment variable.

30. A method for selecting a subset of tests to run on software programs, wherein said subset of tests are a subset of a plurality of tests, the method comprising the steps of:

A) establishing a mapping between said plurality of tests and a plurality of directories within a hierarchical directory structure on a storage device, wherein each test of said plurality of tests is mapped to at least one of said plurality of directories;

B) for each given directory within said hierarchical directory that is mapped to one or more of said plurality of tests, performing the steps of:

B1) generating attribute data that specifies attributes associated with said one or more of said plurality of tests;

B2) storing said attribute data in said given directory;

C) receiving input indicating a selected directory of said plurality of directories and a selected attribute;

D) determining whether any tests mapped to said selected directory are associated with said selected attribute;

E) including any tests mapped to said selected directory that are associated with said selected attribute in said subset of tests to run;

F) determining whether any tests mapped to said child directories are associated with said selected attribute; and

G) including any tests mapped to said child directories that are associated with said selected attribute in said subset of tests to run.

31. The method of claim 30 further comprising the steps of:

for each given directory within said hierarchical directory that is mapped to one or more of said plurality of tests, performing the steps of:

a) generating pointer data that specifies any directories that correspond to any of said plurality of tests and that are children of said given directory; and

b) storing said pointer data in said given directory.

32. The apparatus of claim 31, wherein environment configuration files in one or more directories of said plurality of directories are neither ancestors nor descendants of said first directory or said second directory.

33. An apparatus for performing a test on software in a computer system having a processor, wherein said computer system has an initial environment, the apparatus comprising:

a test base including a plurality of directories connected to form a hierarchical directory structure, wherein a first directory of said plurality of directories corresponds to a first test and a second directory of said plurality of directories corresponds to a second test, said test base further including a plurality of environment configuration files in said plurality of directories, said plurality of environment configuration files including a first set of environment configuration files that apply to said first test but not to said second test, said plurality of environment configuration files including a second set of environment configuration files that apply to said second test but not to said first test, said plurality of environment configuration files including a third set of environment configuration files that apply to both said first test and said second test; and

a test engine executed by said processor, wherein said test engine determines which of said plurality of environment configuration files are applicable to said test based on a location of said environment configuration files in said plurality of directories.

34. The apparatus of claim 33, wherein said first set of environment configuration files are ancestors of said first directory but not ancestors of said second directory.

35. The apparatus of claim 33, wherein said second set of environment configuration files are ancestors of said second directory but not ancestors of said first directory.

36. The apparatus of claim 33, wherein said third set of environment configuration files are ancestors of both said first directory and said second directory.
 Description Submit all comments and votes
 


FIELD OF THE INVENTION

The present invention relates to a method and apparatus for testing software, and more specifically, to a method and apparatus for performing automated software testing based on the values of environment variables specified in files stored in a hierarchical directory structure.

BACKGROUND OF THE INVENTION

As society becomes increasingly dependent on computers, it becomes increasingly important to detect and eliminate errors in the software executed by the computers. To detect errors, software developers typically run the software through a series of tests.

Software tests may be performed manually or automatically. Manual testing requires a user to enter test input during the testing process. As the user enters test input, the user notes how the computer system responds to the test input. If the computer system responds as expected, then the software passes the test. Otherwise, the software does not pass the test. Manual testing has the disadvantage that it involves a great deal of time and human resources. Further, repeat tests require approximately the same amount of time to perform as the original tests. Finally, notes made by the user during testing are often the only documentation of which tests were performed and what the results were.

For automated testing, a user prepares an input file with test input. The software to be tested reads test input from the input file and generates output based on the test input. The output can then be compared to expected output. If the actual output matches the expected output, then the software passes the test, otherwise it fails. Automated testing has numerous benefits over manual testing. For example, once a test input file and an expected output file have been prepared, virtually no additional user time is required to perform repeat tests. Further, the input test file serves to document which tests are run, and the generated output file serves to document the results of the tests.

The results of automated tests may be affected by the system environment in which the testing occurs. For example, two software programs compiled from the same source code may generate different outputs based on the same input if different compiler options were used to compile the two software programs. Testing may also be affected by the value of other environment parameters, such as the value of the "PATH" variable that is in effect when a testing operation is performed.

Consequently, testing operations that do not take into account the computer environment at the time of testing may yield inaccurate or inconsistent results. Therefore, it is clearly desirable to provide a method and apparatus for testing software that allows the tester to select different system environments. It is further desirable to provide a method and apparatus that establishes predefined system environments as part of an automated testing process.

SUMMARY OF THE INVENTION

According to one embodiment of the invention, an apparatus and method for testing software is provided. The apparatus performs the tests based on files contained in a test base. The test base is constructed on a storage device by creating a plurality of directories connected to form a hierarchical directory structure. Files associated with software programs to be tested are stored in directories within the hierarchical directory structure. Such files may include source code files, test input files and expected output files.

Environment files and environment configuration files that specify values for environment variables are also stored in the test base. In one embodiment, the environment files are stored in a single environment directory. The location of the environment configuration files within the test base depends on the tests to which they apply.

To run a single test, a test engine is invoked and passed the name of an environment file and the name of a test. The test engine modifies the values of environment variables based on the specified environment file prior to executing the specified test. After modifying the environment based on the specified environment file and prior to executing the test, the test engine further modifies the environment based on any applicable environment configuration files.

The test engine determines which environment configuration files are applicable to a test based on the location of the environment configuration files in the test base relative to the location of the directory that contains the files associated with the test. According to one embodiment, the environment configuration files located (1) in the directory associated with the specified test and (2) in directories above the directory associated with the specified test are processed prior to the specified test.

In addition to single test operations, the test engine may perform a series of tests based on a test list. The test apparatus also includes a tool for storing the results of past tests, and a tool for generating test lists in which tests are ordered based on the results of past tests. Multiple tests are performed simultaneously by distributing the test processes among a plurality of processors.

According to one aspect of the invention, an apparatus for performing a test on software in a computer system is provided. The computer system has an initial environment. The apparatus includes a storage device containing a test base. The test base includes a plurality of directories connected to form a hierarchical directory structure. The plurality of directories includes a test directory corresponding to the test. A plurality of environment configuration files are stored in the plurality of directories.

The apparatus also includes a processor coupled to the storage device and a test engine executing on the processor. The test engine determines which environment configuration files of the plurality of environment configuration are applicable environment configuration files. Applicable environment configuration files are environment configuration files that apply to the test. The test engine determines the applicable environment configuration files based on where the plurality of environment configuration files are stored in the plurality of directories relative to the test directory.

The test engine modifies the initial environment to create a modified environment based on the applicable environment configuration files. The test engine then causes the software to be tested in the modified environment.

According to another aspect of the invention, a method for performing a test on software in a specified environment in a computer system is provided. The computer system includes a storage device containing a test base. The test base includes a plurality of directories connected to form a hierarchical directory structure. A first directory of the plurality of directories corresponds to the test to be performed. A plurality of environment configuration files are stored in the plurality of directories.

The method includes the step of determining which of the plurality of environment configuration files are applicable environment configuration files based on where the plurality of environment configuration files are located in the hierarchical directory structure relative to the first directory. After the applicable environment configuration files are determined, the specified environment is created based on the applicable environment configuration files. Once the modification of the environment has been competed, the software is tested in the specified environment.

According to yet another aspect of the invention, a method for constructing a test base on a storage device is provided. The method includes the creating the data structure for the test base and storing files the files required for the tests in the appropriate locations within the data structure.

Specifically, the method includes creating a plurality of directories on the storage device. The plurality of directories are connected to form a hierarchical directory structure. A first directory of the plurality of directories corresponds to a first test, and a second directory of the plurality of directories corresponds to a second test.

A plurality of environment configuration files are stored in the plurality of directories. The environment configuration files include a first set of environment configuration files that apply to the first test but not the second test, a second set of environment configuration files that apply to the second test but not the first test, and a third set of environment configuration files that apply to both the first test and the second test.

More specifically, the environment configuration files of the first set of environment configuration files are stored in either the first directory or in directories of the plurality of directories that are ancestors of the first directory but not ancestors of the second directory. The environment configuration files of the second set of environment configuration files are stored in either the second directory or in directories of the plurality of directories that are ancestors of the second directory but not ancestors of the first directory. The environment configuration files of the third set of environment configuration files are stored in directories of the plurality of directories that are ancestors of both the first directory and the second directory.

According to another aspect of the invention, a method for performing a second series of tests on a plurality of software programs based on results of a first series of tests performed on the plurality of software programs is provided. The method includes the computer implemented steps of performing the first series of tests, storing the results of the first series of tests, constructing a test list based on the results, and performing the second series of tests in the order specified in the test list.

Specifically, each test of the first series of tests is performed on a specified software/environment combination. Each software/environment combination includes a specified software program of the plurality of software programs and a specified environment of a plurality of predefined environments.

Result data indicating results of the first series of tests is stored on a storage device. The result data includes data indicating whether a most recent performance of each test of the first series of tests was successful. The result data is then read from the storage device.

A test list is generated based on the result data. The test list includes an ordered list of entries. Each entry of the test list represents a test performed in the first series of tests. Each entry in the list of entries is ordered based on the outcome, during the first series of tests, of the test represented by the entry.

The second series of tests is performed based on the test list. Specifically, the tests represented in the test list are performed in the order of their corresponding entries in the test list.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings and in which like reference numerals refer to similar elements and in which:

FIG. 1 illustrates a computer system upon which an embodiment of the invention may be implemented;

FIG. 2 is a block diagram illustrating a test base constructed according to an embodiment of the invention;

FIG. 3 is a block diagram illustrating a software testing system according to an embodiment of the invention;

FIG. 4 is a flow chart illustrating steps for establishing the values of environment variables prior to performing a specified test;

FIG. 5 is a block diagram illustrating a portion of an exemplary test base;

FIG. 6 is a flow chart illustrating the steps for performing a testing operation once the testing environment has been established;

FIG. 7 is a flow chart illustrating the steps for processing a list of tests; and

FIG. 8 is a block diagram illustrating a history file creation tool and a test list generator according to an embodiment of the invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

A method and apparatus for testing software is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.

Referring to FIG. 1, the computer system upon which the preferred embodiment of the present invention can be implemented is shown as 100. Computer system 100 comprises a bus or other communication means 101 for communicating information, and a processing means 102 coupled with bus 101 for processing information. Computer system 100 further comprises a random access memory (RAM) or other dynamic storage device 104 (referred to as main memory), coupled to bus 101 for storing information and instructions to be executed by processor 102. Main memory 104 also may be used for storing temporary variables or other intermediate information during execution of instructions by processor 102. Computer system 100 also comprises a read only memory (ROM) and/or other static storage device 106 coupled to bus 101 for storing static information and instructions for processor 102. Data storage device 107 is coupled to bus 101 for storing information and instructions.

Furthermore, a data storage device 107 such as a magnetic disk or optical disk and its corresponding disk drive can be coupled to computer system 100. Computer system 100 can also be coupled via bus 101 to a display device 121, such as a cathode ray tube (CRT), for displaying information to a computer user. An alphanumeric input device 122, including alphanumeric and other keys, is typically coupled to bus 101 for communicating information and command selections to processor 102. Another type of user input device is cursor control 123, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 102 and for controlling cursor movement on display 121. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), which allows the device to specify positions in a plane.

In the currently preferred embodiment, the present invention is related to the use of computer system 100 for performing software testing operations. Processor 102 executes instructions stored in memory 104 which implement a test engine. Execution of the test engine instructions causes processor 102 to access data stored in a hierarchical test base data structure preferably located on storage device 107. Processor 102 modifies the system environment and tests software based on files stored within the test base structure, as shall be described hereafter.

THE TEST BASE STRUCTURE

Referring to FIG. 2, it illustrates a test base 200 for storing the files required to perform a series of tests according to an embodiment of the present invention. Test base 200 is a hierarchical directory structure. That is, test base 200 includes levels or layers of connected directories. Within the hierarchical directory structure, a directory directly connected to and above a given directory is referred to as a parent of the given directory. A directory directly connected to and below a given directory is referred to as a child of the given directory. All directories connected to and above a given directory are referred to as ancestors of the given directory. All directories connected to and below a given directory are referred to as descendants of the given directory.

In the preferred embodiment, all files involved in the testing process are named according to strict naming conventions so that the type of information contained in each file may be determined based on the name of the file. For example, files containing source code written in the "C" programming language end in the extension ".c". Similarly, files containing the expected output of a block of a test end in the extension ".block.pass".

Test base 200 includes a root directory 202 that has a plurality of child directories 204 and 206. Each directory in the test base 200 directory structure, with the possible exception of root directory 202, has one parent directory. Typically, root directory 202 will be the child of a directory (not shown) that is not part of the test base 200. Each directory may store any number of files and have any number of child directories.

TEST FILES

The files stored within test base 200 include environment files, environment configuration files, source code files, test input files and expected output files. Environment files and environment configuration files specify values for environment variables. Source code files contain source code that defines software to be tested. Test input files contain data to be sent to a software program during testing. Expected output files contain data to be compared with the actual output of software after the software has been tested. While FIG. 2 shows directories with one of each of these types of files, the actual correlation between files, directories and tests may vary. For example, some tests may have more than one of some types of test files. Conversely, some tests may not require some of these types of files. In addition, a directory may hold the files for more than one test.

Files are stored at locations within the hierarchical directory structure of test base 200 according to the information that the files contain. Specifically, the environment files are stored in or below directory 204. Source code files, environment configuration files, test input files and expected output files are stored in or below directory 206.

In the illustrated example, a separate directory exists under source directory 206 for each test to be performed. The directory corresponding to a test is referred to herein as the "target directory" of the test. Target directories may be one or more levels below source directory 206 in the hierarchical tree structure. The source code, test input and expected output files for a particular test are stored in the target directory of the particular test. The target directory of a particular test may also have stored therein an environment configuration file that specifies parameters that apply to the test by establishing values for certain environment variables.

As mentioned above, multiple tests can share a single directory, so that many small tests can conserve system resources. In this situation the test consists of all files that match, by name, the name of the test. A match occurs if the name of the test is a prefix of the name of the file. Thus, a test xyz will consist of all files in directory xyz, if xyz is a directory. Otherwise, the test consists of all files beginning with xyz.

In the specific example shown, directory 206 includes four child directories 208, 210, 212 and 214. Each of directories 208, 210, 212 and 214 corresponds to a test. Specifically, directories 208, 210, 212 and 214 correspond to TEST.sub.-- 1, TEST.sub.-- 2, TEST.sub.-- 3 and TEST.sub.-- 4, respectively. The source code, test input file and expected output file involved in each test is stored in the target directory for that test. Specifically, directory 208, which corresponds to TEST.sub.-- 1, includes a source code file 216, a test input file 218 and an expected output file 220 for TEST.sub.-- 1. Directory 210, which corresponds to TEST.sub.-- 2, includes a source code file 222, a test input file 224 and an expected output file 226 for TEST.sub.-- 2. Directory 212, which corresponds to TEST.sub.-- 3, includes a source code file 228, a test input file 230 and an expected output file 232 for TEST.sub.-- 3. Directory 214, which corresponds to TEST.sub.-- 4, includes a source code file 234, a test input file 236 and an expected output file 238 for TEST.sub.-- 4.

Directory 204 includes four environment files 250, 252, 254 and 256. Directories 208, 210, 212 and 214 contain environment configuration files 260, 262, 264 and 268, respectively. As shall be explained hereafter, environment files and environment configuration files contain environment modifiers.

ENVIRONMENT MODIFIERS

Environment modifiers are instructions that specify values for environment variables. Thus, a typical environment modifier has two components, the first component identifies an environment variable and the second component identifies the value that is to be assigned to the environment variable. For example, the environment modifier E.sub.-- VAR.sub.-- 1="VAL1" specifies that the environmental variable E.sub.-- VAR.sub.-- 1 is to be assigned the value VAL1.

In general, the environment modifiers in environment files and environment configuration files establish values for environment variables that relate to some aspect of the testing process. In the preferred embodiment, the environment variable "TEST.sub.-- SEQUENCE" is one such environment variable. The environmental variable TEST.sub.-- SEQUENCE is used to store a list of steps that are to be performed during a particular test operation. For example, the environment modifier TEST.sub.--