System for automatically generating tests to ensure binary compatibility between software components produced by a source-to-source computer language translator
First Claim
1. A method for assuring the valid operations of a translator that translates an original computer program into a target computer program in a target language, wherein the target language is different from the language of the original computer program, wherein the original computer program includes procedures that have interface specifications, the method executed by a processor coupled to a storage device, the method comprising the steps of:
- obtaining the interface specifications from one or more procedure calls in the original computer program;
deriving and storing test procedures that use the obtained interface specifications to determine whether a variable value passed to the test procedures during execution of the test procedures is valid;
using the translator to translate the test procedures into the target language;
linking the translated test procedures to one or more portions of the original computer program to produce a test module;
executing the test module to execute the test procedures and determine whether passed variable values are valid and;
indicating an error condition if a passed variable value it invalid.
5 Assignments
0 Petitions
Accused Products
Abstract
A system and method that implement a strategy for automatically generating self-checking tests of source-to-source translation. The tests make certain that software components produced by a source-to-source computer language translator continue to be binary-compatible with all other software components with which they previously interacted correctly, including components that remain in the original programming language. To that end, the correctness of procedure interfaces in a target computer program is also verified. With this strategy, correct translation of text preprocessor mechanisms such as macros, conditionally compiled regions of code, and source file inclusion can be achieved. The target program is the result of translating a source program written in a different language from the target program. The system creates a set of procedure calls to each procedure in the source program. The system also creates a set of callable procedures with the same interface specification as in the source program. However, the callable procedures created by the system to serve to perform tests on variables and other data that is passed to each procedures'"'"' interface specification. The system-generated procedure calls are designed to assign different test values to ensure that a valid interface exists. For example, high, low, zero, and random values, or other values, are chosen for a variable to test. The procedure calls, and callable procedures, are generated in the source language and are also translated into the target language by a translator. The procedure calls and callable procedures in both language formats are then cross-linked and executed to determine whether the translator is translating correctly with respect to the procedure interface specifications.
-
Citations
20 Claims
-
1. A method for assuring the valid operations of a translator that translates an original computer program into a target computer program in a target language, wherein the target language is different from the language of the original computer program, wherein the original computer program includes procedures that have interface specifications, the method executed by a processor coupled to a storage device, the method comprising the steps of:
-
obtaining the interface specifications from one or more procedure calls in the original computer program;
deriving and storing test procedures that use the obtained interface specifications to determine whether a variable value passed to the test procedures during execution of the test procedures is valid;
using the translator to translate the test procedures into the target language;
linking the translated test procedures to one or more portions of the original computer program to produce a test module;
executing the test module to execute the test procedures and determine whether passed variable values are valid and;
indicating an error condition if a passed variable value it invalid.
-
-
2. A method for verifying the operation of a source-to-source translator for translating computer programs from a first language into a second language, the method comprising the steps of:
-
deriving test procedures having procedure interfaces analogous to the procedure interfaces in the first language; and
analyzing procedure interfaces in both the first and second languages by linking the test procedures to portions of the computer programs.
-
-
3. A method for generating self-checking tests of a source-to source translation, comprising:
-
generating test components from a source program code, the test components being in an original language;
performing a source-to-source translation of the test components to produce target test components in a target language different from the original language;
compiling the test components and target test components, the compilation producing test objects and target test objects, respectively; and
linking, respectively, the test objects with the target test objects, the linked test and target test objects being executable tests of the source-to-source translation. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10)
scanning the source program code, the scanning producing a virtual source that represents the source program code; - and
parsing the virtual source, the parsing produces the representation in the form of a syntax tree of the virtual source.
-
-
5. The method of claim 3, wherein the source program code is in Ptal language.
-
6. The method of claim 3 wherein, when the original language is Ptal, the source-to-source translation produces the target test components in C++.
-
7. The method of claim 3, wherein the test components are Verify and Do.
-
8. The method of claim 3, wherein the source-to-source translation is performed by a Rosetta Translator.
-
9. The method of claim 3, wherein the virtual source is in the form of a fragment tree.
-
10. The method of claim 3, wherein the target test components produced by the source-to-source translation continue to be binary-compatible with all other software components with which they previously interacted correctly, including the test components in the original language.
-
11. A system for testing source-to-source translation in which an original computer program in an original language is translated into a target computer program in a target language that is different from the original language, wherein the original computer program includes procedures that have interface specifications, comprising:
-
means for obtaining the interface specifications from one or more procedure calls in the original computer program;
means for deriving and storing test procedures that use the obtained interface specifications to determine whether a variable value passed to the test procedures during execution of the test procedures is valid;
means for translating the test procedures into the target language;
means for linking the translated test procedures to one or more portions of the original computer program to produce a test module;
means for executing the test module to execute the test procedures and determine whether passed variable values are valid and;
means for indicating an error condition if a passed variable value it invalid.
-
-
12. A system for verifying the operation of a source-to-source translator for translating computer programs from a first language into a second language, the method comprising the steps of
means for deriving test procedures having procedure interfaces analogous to the procedure interfaces in the first language; - and
means for analyzing procedure interfaces in both the first and second languages by linking the test procedures to portions of the computer programs.
- and
-
13. A system for generating self-checking tests of a source-to source translation, comprising:
-
a scanner receiving a source program code and producing therefrom a virtual source representing the source program code;
a parser producing a syntax tree representation of the virtual source;
a test generator producing test components, the test components being in an original language;
a translator performing a source-to-source translation of the test components to produce target test components in a target language different from the original language;
a compiler producing test objects and target test objects, respectively, from the test components and target test components; and
a linker producing executable tests by linking, respectively, the test objects with the target test objects. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20)
-
Specification