|Publication number||US6694509 B1|
|Application number||US 09/473,869|
|Publication date||17 Feb 2004|
|Filing date||28 Dec 1999|
|Priority date||28 Dec 1999|
|Also published as||DE60010420D1, DE60010420T2, EP1113367A1, EP1113367B1|
|Publication number||09473869, 473869, US 6694509 B1, US 6694509B1, US-B1-6694509, US6694509 B1, US6694509B1|
|Inventors||William M. Stoval, David P. Edwards|
|Original Assignee||Ge Medical Systems Global Technology Company Llc|
|Export Citation||BiBTeX, EndNote, RefMan|
|Patent Citations (18), Non-Patent Citations (4), Referenced by (56), Classifications (16), Legal Events (6)|
|External Links: USPTO, USPTO Assignment, Espacenet|
The field of the invention is the testing of workstation hardware and software using regression testing techniques.
Computer programs used for testing software applications exist which can receive input data, such as key strokes, which are recognized by the software application. Upon receipt of the input data, these computer programs have the ability to store the input data (into files called test scripts), and to replay them such that the software application functions as though a user were actually typing the input data into the software application. In this way, input data can be repeatedly fed into the software application, with a user creating a test script by entering the input data only once.
By using such a computer program, a software application can be executed using a prepared test script, so as to verify that the software application performs as expected. This can be accomplished by comparing previously stored results with results which were subsequently acquired by replaying the test script through the software application. The fact that the software application performs as expected can also be used as an indication that the hardware on which the software application runs is performing as expected.
Regression testing involves providing a program with many different tests. The tests provide the program with different input. These tests exercise the specific functions, data structures, and features of the program. To perform regression testing, a computer executes the program a number of times. Each execution uses a different one of the regression tests in the script as input. The regression test results indicate which of the tests passed and which failed.
Different programmers modify different parts of the source code during application program development. Typically, the programmer compiles the program with just his/her changes. Before the programmer releases the changes, the programmer performs a number of tests on the changes. (The programmer “releases” changes by allowing others in the development team to use the changed source code.) Ideally, the testing includes running the regression tests on the newly compiled program. The regression testing shows whether the program changes cause some of the regression tests to fail.
One problem with requiring a programmer to run the regression tests when a change is made, is that regression testing may take hours or even days. Regression test script libraries can be built up over months or years. The information about what is tested by them can be lost or may not be updated. Additionally, the volume of tests makes knowing which tests test which statements very difficult. The tests may be unsorted or unclassified as to which part of the program they test. Even tests that are understood will typically test other parts of the program than the target area. Therefore, it is very difficult for a programmer to know which of the regression tests will test a particular part of the program.
During the development of a computer system many application programs are typically created and modified by one or more programmers over an extended period of time. After the product is released, maintenance activities become an important factor over the life of the product. Studies have found that more than 50% of development effort in the life cycle of a software system is spent in maintenance, and of that, a large percentage is due to testing. Except for the rare event of a major rewrite, changes to a system in the maintenance phase are usually small and are made to correct problems or incrementally enhance functionally. Therefore, techniques for selective software retesting can help to reduce development time and maintenance time.
A test script library, which is used to test a software system, typically consists of many test scripts, each of which exercises or covers some subset of the entities of the system under test. A test script must be re-run if and only if any of the program entities it covers has changed. Information relating the test scripts to the various software entities in the computer system greatly facilitate regression testing. Keeping such information up-to-date during the active development period and the extended maintenance period of the product is very difficult.
The present invention is a method and means for maintaining a library of test scripts for use in regression testing application programs. More particularly, a test directory tree is maintained which is a mirror image of a source directory tree that is used to compile the executable code for the application program. The test directory tree indicates the test scripts which are to be used in regression testing executable code compiled from corresponding entries in the same directory trees. If no mirror entry exists in the test directory tree, one is automatically created and a corresponding default test script is created and stored in the library.
FIG. 1 is a perspective view of a workstation which has been modified to practice the preferred embodiment of the invention;
FIG. 2 is an electrical block diagram of the workstation of FIG. 1;
FIG. 3 is a block diagram which illustrates the software and data structures in the workstation of FIG. 1 used to create and test application programs for use on the workstation;
FIG. 4 is a flow chart of the steps carried out in accordance with the preferred embodiment of the invention to compile and test an application program for use on the workstation;
FIG. 5 shows an exemplary source code directory tree; and
FIG. 6 shows an exemplary test directory tree.
The preferred embodiment of the invention is employed in a workstation. As shown in FIG. 1 the workstation includes a mini-tower 10 which houses a processor and associated circuitry, memory, and peripheral interface circuits. One of the peripheral devices is a commercially available CRT monitor 12 which connects to a graphics circuit housed in the mini-tower 10, and another peripheral device is a keyboard and mouse 14 that connects to a PCI-based controller in the mini-tower 10. An operator may input data through the keyboard and control the position of a cursor on the monitor display 12 using the mouse. The workstation 10 may operate as a stand alone graphic display system, or it may be connected to receive digitized image data directly from a medical imaging system such as an x-ray system, x-ray CT system, MRI system, PET scanner system or nuclear medicine system. The workstation 10 typically contains application programs which perform image processing functions, such as, filtering the medical images, transforming the size and orientation of the medical images and adding textual information to the medical images.
Referring particularly to FIG. 2, the workstation includes a processor 20 which executes instructions stored in a memory 22. The processor 20 is a commercially available device sold by Sun Microsystems, Inc. under the trademark UltraSPARC-lli. It incorporates on-chip memory and I/O control to facilitate system integration. It is a superscalar processor implementing the SPARC-V9 64-bit RISC architecture and executing the instruction set sold commercially under the trademark “VIS”. It also includes an integral PCI bus driver which provides a direct interface with a 32-bit PCI bus 24. It also includes integral memory management circuitry for handling all external memory 22.
The PCI bus 24 is an industry standard bus that transfers 32-bits of data at 33 MHz between the processor 20 and a number of peripheral controller cards. These include a PCI EIDE controller 26 which provides a high-speed transfer of data to and from a CD ROM drive 28 and a disc drive 30. An Ethernet controller 32 supports data transfer with a number of peripheral devices, including input from the keyboard and mouse 14 and communication with Ethernet ports on medical imaging equipment. And finally, a graphics controller 34 couples the PCI bus 24 to the CRT monitor 12 through a standard VGA connection 36.
Referring particularly to FIG. 3, a number of programs and data structures are stored in the disc drive 30 and used to create, modify and test application programs for use on the workstation. Such an application program might be, for example, a program for retrieving a medical image and filtering the medical image to remove artifacts caused by patient motion or the like. It can be appreciated that while only a single user 50 is shown in FIG. 3, many users, each operating separate program editor software 52, may develop application programs for the workstation.
The source code for application programs developed with the editor 52 is stored in memory as part of a source code library 54. Also stored in the memory is a source code directory tree 56 which contains information about each source code program file in the library 54. The source code director tree 56 identifies which source code files in the library 54 form a particular program and indicate how those program files are linked to each other. This information is used by a compiler program 58 to retrieve the proper source code files from the library 54, compile them into executable program code, and properly link the program code together to form executable code 60.
The user 50 may direct that a set of regression tests be performed on the executable code 60 to determine if it is operating properly. This is accomplished by a program called a regression test engine 62 which may be run each time new source code is compiled. In the preferred embodiment the regression test engine 62 is run each evening and the results are produced as a report 64 that is available the next morning.
The regression test engine 62 accesses stored regression test scripts 66, and uses those test scripts 66 to verify that the executable code 60 performs as expected. As is well known in the art, the regression test scripts 66 direct the regression test engine 62 to operate the executable code 60 and provide input data to test the operation. The results produced by the executable code 60 are compared with the results expected by the regression test script 66, and a pass or fail indication is produced on the report 64. The report 64 is thus a list of the tests performed on the executable code 60 and an indication whether each test passed or failed.
The management of the regression test script library 66 and the proper selection of the regression test scripts therein for use with the regression test engine 62 is the problem addressed by the present invention. As will be described in more detail below, the solution to this problem employs a test directory tree 68, which is a data structure that is maintained during the program compilation procedure. It “mirrors” the source directory tree 56 and it indicates to the regression test engine 62 which test scripts in the library 66 are to be used to test the executable code 60.
Referring particularly to FIG. 4, when source code in the library 54 is to be compiled a program is run as indicated at process block 100. The source code directory tree 56 is used to identify each of the source code files that must be compiled and linked. As illustrated in FIG. 5, for example, a source code file “gvtk” is compiled along with two linked source code files “display” and “graphic”. As explained above, this compilation and linking process produces executable code 60.
The test directory tree 68 is then checked as indicated at decision block 102. This is accomplished by searching the test directory tree 68 for “test” header files corresponding to those in the compiled source directory tree. As illustrated in FIG. 6, for example, a complete test tree has the header files “gvtktest”, “displaytest” and “graphictest”. If any of the corresponding test header files are not found, a new test header file is created as indicated at process block 104. This test header file is given the same name as its corresponding source code file with the appended text string “test”. A default test script for this new test header is then added as indicated at 106 to the regression test script library 66. The default script is comprised of a “runTest” portion which is a standardized script for all programs and a “reportTest” portion which indicates whether or not the test has been implemented, and if so, whether the test passed or failed. For automatically generated test files the tests are not performed and will indicate “not implemented” on the test result report 64.
To maintain the test directory tree 68, a check is made at decision block 108 to determine if any test header files therein have been orphaned. An “orphaned” file is a test file whose corresponding code file has been removed. This is done by reading each test header file in the test directory tree 68 and searching for its corresponding file in the source directory tree 56. If an orphan is found, an error message is produced as indicated at process block 110 and the user 50 may either delete the orphan test header file or rename it as indicated at process block 112. In any case, the result is a test directory tree 68 which is maintained as a mirror image of the source directory tree 56.
The final step in the compilation process is the creation of a “TESTALL” file as indicated at process block 114. This testall file is used by the regression test engine 62 to determine which regression test scripts in the library 66 are to be used in testing the newly compiled executable code 60. It is formed by listing the test header files from the test directory tree 68 which correspond to the source files from the source directory tree 56 used to compile the program. In the example depicted in FIGS. 5 and 6, the testall file is a list of the file names” gvtktest; displaytest; and graphictest.
The automatic maintenance of the test tree directory ensures that test scripts are produced for all source code files listed in the source code directory tree 56. Unused, or orphaned, test scripts are identified and the user is allowed to delete or rename them. When regression testing is performed on a periodic basis and a number of compilations are performed between tests, the testall file accumulates the test scripts that are to be performed for all the compilations. Duplicate entries in the testall file are deleted to avoid running test scripts more than once.
The invention enables an automatic test system that can be run periodically during software development. The system can operate automatically from start to finish, determining which test scripts are to be run, running the test scripts, and generating a report which indicates whether tests failed or passed.
|Cited Patent||Filing date||Publication date||Applicant||Title|
|US5022028||30 Mar 1989||4 Jun 1991||Elverex Limited||Software verification apparatus|
|US5218605||31 Jan 1990||8 Jun 1993||Hewlett-Packard Company||Software modules for testing computer hardware and software|
|US5634002||31 May 1995||27 May 1997||Sun Microsystems, Inc.||Method and system for testing graphical user interface programs|
|US5634098 *||1 Feb 1995||27 May 1997||Sun Microsystems, Inc.||Method and apparatus for environment-variable driven software testing|
|US5673387||12 Aug 1996||30 Sep 1997||Lucent Technologies Inc.||System and method for selecting test units to be re-run in software regression testing|
|US5694540||16 Jan 1996||2 Dec 1997||Lucent Technologies Inc.||Automated software regression test and compilation system|
|US5761408 *||12 Feb 1996||2 Jun 1998||Parasoft Corporation||Method and system for generating a computer program test suite using dynamic symbolic execution|
|US5778169||7 Aug 1995||7 Jul 1998||Synopsys, Inc.||Computer system having improved regression testing|
|US5784553 *||30 Apr 1997||21 Jul 1998||Parasoft Corporation||Method and system for generating a computer program test suite using dynamic symbolic execution of JAVA programs|
|US6071317 *||9 Dec 1998||6 Jun 2000||Digits Corp.||Object code logic analysis and automated modification system and method|
|US6118447 *||22 Mar 1999||12 Sep 2000||Ergolight Ltd.||Apparatus and methods for analyzing software systems|
|US6259911 *||6 Jan 1998||10 Jul 2001||Wireless Access||Network operations center hardware and software design|
|US6279124 *||17 Jun 1996||21 Aug 2001||Qwest Communications International Inc.||Method and system for testing hardware and/or software applications|
|US6349393 *||29 Jan 1999||19 Feb 2002||International Business Machines Corporation||Method and apparatus for training an automated software test|
|US6415396 *||26 Mar 1999||2 Jul 2002||Lucent Technologies Inc.||Automatic generation and maintenance of regression test cases from requirements|
|US6513154 *||21 Oct 1997||28 Jan 2003||John R. Porterfield||System and method for testing of computer programs in programming effort|
|US6523027 *||30 Jul 1999||18 Feb 2003||Accenture Llp||Interfacing servers in a Java based e-commerce architecture|
|US6536036 *||6 Apr 1999||18 Mar 2003||International Business Machines Corporation||Method and apparatus for managing code test coverage data|
|1||A Visual Test Development Environment for GUI Systems, Ostrand et al., pp. 82-92.|
|2||*||TITLE: Empirical Evaluation of the Textual Differencing Regression Testing Technique, author: Vokolos et al, IEEE, 1998.*|
|3||*||TITLE: Regression containment through source change isolation, author: Ness et al, IEEE, Aug. 1997.*|
|4||*||TITLE: The Use of Regression Methodology for the Compromise of Confidential Information in Statistical Database, author: Palley et al, ACM, 1987.*|
|Citing Patent||Filing date||Publication date||Applicant||Title|
|US6889337 *||3 Jun 2002||3 May 2005||Oracle International Corporation||Method and system for screen reader regression testing|
|US7047446 *||26 Oct 2000||16 May 2006||International Business Machines Corporation||Load test system and method|
|US7444397||21 Dec 2004||28 Oct 2008||International Business Machines Corporation||Method of executing test scripts against multiple systems|
|US7454660 *||13 Oct 2003||18 Nov 2008||Sap Ag||System and method for testing applications at the business layer|
|US7490319||3 Nov 2004||10 Feb 2009||Kimberly-Clark Worldwide, Inc.||Testing tool comprising an automated multidimensional traceability matrix for implementing and validating complex software systems|
|US7539977 *||21 Jan 2005||26 May 2009||Xilinx, Inc.||Automatic bug isolation in computer programming languages|
|US7568183||21 Jan 2005||28 Jul 2009||Microsoft Corporation||System and method for automation testing and validation|
|US7614042 *||21 Jan 2005||3 Nov 2009||Microsoft Corporation||System and method for selecting applicable tests in an automation testing system|
|US7627859 *||4 Apr 2005||1 Dec 2009||Hewlett-Packard Development Company, L.P.||Method for configuring non-script language library files to be run as scripts|
|US7746218||29 Jun 2010||Hill-Rom Services, Inc.||Configurable system for alerting caregivers|
|US7752502||9 Aug 2006||6 Jul 2010||International Business Machines Corporation||Method and apparatus for testing software|
|US7852208||7 Feb 2007||14 Dec 2010||Hill-Rom Services, Inc.||Wireless bed connectivity|
|US7868740||29 Aug 2007||11 Jan 2011||Hill-Rom Services, Inc.||Association of support surfaces and beds|
|US7873944||22 Feb 2006||18 Jan 2011||International Business Machines Corporation||System and method for maintaining and testing a software application|
|US7895565 *||15 Mar 2006||22 Feb 2011||Jp Morgan Chase Bank, N.A.||Integrated system and method for validating the functionality and performance of software applications|
|US8031057||7 Dec 2010||4 Oct 2011||Hill-Rom Services, Inc.||Association of support surfaces and beds|
|US8046625||12 Feb 2009||25 Oct 2011||Hill-Rom Services, Inc.||Distributed fault tolerant architecture for a healthcare communication system|
|US8095636||29 Aug 2008||10 Jan 2012||International Business Machines Corporation||Process, system and program product for executing test scripts against multiple systems|
|US8120471||4 Dec 2009||21 Feb 2012||Hill-Rom Services, Inc.||Hospital bed with network interface unit|
|US8169304||12 Feb 2009||1 May 2012||Hill-Rom Services, Inc.||User station for healthcare communication system|
|US8261239 *||23 Dec 2003||4 Sep 2012||International Business Machines Corporation||Locating a testable object in a functional testing tool|
|US8270001 *||15 Apr 2004||18 Sep 2012||Canon Kabushiki Kaisha||Printing apparatus and canceling method|
|US8272892||28 May 2008||25 Sep 2012||Hill-Rom Services, Inc.||Hospital bed having wireless data capability|
|US8284047||3 Dec 2010||9 Oct 2012||Hill-Rom Services, Inc.||Wireless bed connectivity|
|US8347147 *||9 Mar 2009||1 Jan 2013||Wipro Limited||Lifecycle management of automated testing|
|US8359580 *||26 Dec 2007||22 Jan 2013||Visa U.S.A. Inc.||System and method for tracking testing of software modification projects|
|US8384526||12 Feb 2009||26 Feb 2013||Hill-Rom Services, Inc.||Indicator apparatus for healthcare communication system|
|US8392747||23 Sep 2011||5 Mar 2013||Hill-Rom Services, Inc.||Distributed fault tolerant architecture for a healthcare communication system|
|US8421606||23 Dec 2011||16 Apr 2013||Hill-Rom Services, Inc.||Wireless bed locating system|
|US8456286||11 Apr 2012||4 Jun 2013||Hill-Rom Services, Inc.||User station for healthcare communication system|
|US8461968||29 Aug 2007||11 Jun 2013||Hill-Rom Services, Inc.||Mattress for a hospital bed for use in a healthcare facility and management of same|
|US8536990||24 Jan 2012||17 Sep 2013||Hill-Rom Services, Inc.||Hospital bed with nurse call system interface unit|
|US8561036 *||23 Feb 2006||15 Oct 2013||Google Inc.||Software test case management|
|US8598995||12 Feb 2009||3 Dec 2013||Hill-Rom Services, Inc.||Distributed healthcare communication system|
|US8604916||23 Sep 2011||10 Dec 2013||Hill-Rom Services, Inc.||Association of support surfaces and beds|
|US8604917||28 Sep 2012||10 Dec 2013||Hill-Rom Services, Inc.||Hospital bed having user input to enable and suspend remote monitoring of alert conditions|
|US8689187||7 May 2007||1 Apr 2014||Cadence Design Systems, Inc.||Predictive run testing|
|US8762766||20 Feb 2013||24 Jun 2014||Hill-Rom Services, Inc.||Distributed fault tolerant architecture for a healthcare communication system|
|US8779924||24 Feb 2010||15 Jul 2014||Hill-Rom Services, Inc.||Nurse call system with additional status board|
|US8803669||3 Jun 2013||12 Aug 2014||Hill-Rom Services, Inc.||User station for healthcare communication system|
|US8866598||11 Sep 2013||21 Oct 2014||Hill-Rom Services, Inc.||Healthcare communication system with whiteboard|
|US8917166||6 Dec 2013||23 Dec 2014||Hill-Rom Services, Inc.||Hospital bed networking system and method|
|US9015671 *||27 Dec 2006||21 Apr 2015||The Mathworks, Inc.||Integrating program construction|
|US9050031||9 Oct 2014||9 Jun 2015||Hill-Rom Services, Inc.||Healthcare communication system having configurable alarm rules|
|US9142923||13 May 2014||22 Sep 2015||Hill-Rom Services, Inc.||Hospital bed having wireless data and locating capability|
|US20020016718 *||1 Jun 2001||7 Feb 2002||Rothschild Peter A.||Medical image management system and method|
|US20040194054 *||23 Dec 2003||30 Sep 2004||International Business Machines Corporation||Locating a testable object in a functional testing tool|
|US20040227972 *||15 Apr 2004||18 Nov 2004||Canon Kabushiki Kaisha||Printing apparatus and canceling method|
|US20050050521 *||2 Sep 2003||3 Mar 2005||Henry Chang||Efficient re-validation of modified software|
|US20050166094 *||3 Nov 2004||28 Jul 2005||Blackwell Barry M.||Testing tool comprising an automated multidimensional traceability matrix for implementing and validating complex software systems|
|US20060136579 *||21 Dec 2004||22 Jun 2006||International Business Machines Corporation||Method of executing test scripts against multiple systems|
|US20060225063 *||4 Apr 2005||5 Oct 2006||Potts Matthew P||Method for configuring non-script language library files to be run as scripts|
|US20070038898 *||9 Aug 2006||15 Feb 2007||International Business Machines Corporation||Method and apparatus for testing software|
|US20090070738 *||27 Dec 2006||12 Mar 2009||The Mathworks, Inc.||Integrating program construction|
|US20090171893 *||26 Dec 2007||2 Jul 2009||Gonzales Jesus Orlando Ll||System and method for tracking testing of software modification projects|
|US20100235816 *||16 Mar 2009||16 Sep 2010||Ibm Corporation||Data-driven testing without data configuration|
|U.S. Classification||717/124, 715/234, 717/128, 717/110, 717/113, 717/126, 714/E11.218, 707/999.205, 707/999.202|
|International Classification||G06F11/28, G06F11/22, G06F11/36|
|Cooperative Classification||Y10S707/99956, Y10S707/99953, G06F11/3688|
|28 Dec 1999||AS||Assignment|
Owner name: GE MEDICAL SYSTEMS GLOBAL TECHNOLOGY COMPANY, LLC,
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:STOVAL, WILLIAM M., III;EDWARDS, DAVID P.;REEL/FRAME:010512/0623
Effective date: 19991221
|26 May 2000||AS||Assignment|
Owner name: GE MEDICAL SYSTEMS GLOBAL TECHNOLOGY COMPANY, LLC,
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:EDWARDS, DAVID P.;REEL/FRAME:010812/0169
Effective date: 20000512
Owner name: GE MEDICAL SYSTEMS GLOBAL TECHNOLOGY COMPANY, LLC,
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:STOVAL, WILLIAM M., III;REEL/FRAME:010812/0172
Effective date: 20000503
|10 Jul 2007||FPAY||Fee payment|
Year of fee payment: 4
|17 Aug 2011||FPAY||Fee payment|
Year of fee payment: 8
|14 Sep 2015||FPAY||Fee payment|
Year of fee payment: 12
|14 Sep 2015||SULP||Surcharge for late payment|
Year of fee payment: 11