Method and apparatus for testing a software component using an abstraction matrix
First Claim
1. A method of testing a software component comprising multiple layers of software, the method comprising:
- creating an abstraction matrix in mathematical abstract form by automatically partitioning the software component into multiple layers, the abstraction matrix comprising state and event information taking into account relationships that exist between the multiple software layers;
parsing the abstraction matrix to automatically generate and factor out test cases and mapped expected results therefor;
separating the test cases based on the software layers of the software component, and associating data structures with the separated test cases of the software layers which allow the test cases of the various software layers to be uncorrelated, wherein for at least one layer, the data structures simulate inputs to the layer from at least one other layer of the multiple software layers;
employing the software component in executable form to generate for each software layer of the software component test case execution threads from the test cases and mapped expected results for that software layer; and
executing in parallel at least some of the test case execution threads for at least one software layer of the software component, thereby testing the software component.
1 Assignment
0 Petitions
Accused Products
Abstract
A functional testing technique is provided employing an abstraction matrix that describes a complex software component to be tested. The abstraction matrix includes state and event information. The technique is an automated process which parses the abstraction matrix to generate test cases and mapped expected results therefore. The test cases are separated based on layers of the software component and data structures are associated with the separated test cases of the layers. The data structures allow the test cases of the various layers to be uncorrelated. The software component executable is employed to generate test case execution threads from the test cases and mapped expected results for a particular layer. These execution threads can then be executed in parallel, thereby testing the software component.
39 Citations
58 Claims
-
1. A method of testing a software component comprising multiple layers of software, the method comprising:
-
creating an abstraction matrix in mathematical abstract form by automatically partitioning the software component into multiple layers, the abstraction matrix comprising state and event information taking into account relationships that exist between the multiple software layers;
parsing the abstraction matrix to automatically generate and factor out test cases and mapped expected results therefor;
separating the test cases based on the software layers of the software component, and associating data structures with the separated test cases of the software layers which allow the test cases of the various software layers to be uncorrelated, wherein for at least one layer, the data structures simulate inputs to the layer from at least one other layer of the multiple software layers;
employing the software component in executable form to generate for each software layer of the software component test case execution threads from the test cases and mapped expected results for that software layer; and
executing in parallel at least some of the test case execution threads for at least one software layer of the software component, thereby testing the software component. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A computer-implemented method of testing a software component, the software component comprising multiple layers of software, said method comprising:
-
ascertaining a functional specification of the software component;
creating an abstraction matrix in mathematical abstract form that describes the software component by automatically partitioning the software component into multiple software layers using the functional specification, the abstraction matrix comprising state and event information taking into account relationships that exist between the multiple software layers;
parsing the abstraction matrix to automatically generate and factor out test cases and mapped expected results therefor;
separating the test cases based on the software layers of the software component, and associating data structures with the separated test cases of the software layers which allow the test cases of the various software layers to be uncorrelated, wherein for at least one layer, the data structures simulate inputs to the layer from at least one other layer of the multiple software layers;
employing the software component in executable form to generate for each software layer of the software component test case execution threads from the test cases and mapped expected results for that software layer; and
executing in parallel at least some of the test case execution threads for at least one software layer of the software component, thereby testing the software component. - View Dependent Claims (20, 21, 22, 23)
-
-
24. A system for testing a software component comprising multiple layers of software, the system comprising:
-
an abstraction matrix in mathematical abstract form that describes the software component, the abstraction matrix partitioning the software component into multiple software layers and comprising state and event information taking into account relationships that exist between the multiple software layers;
means for parsing the abstraction matrix to automatically generate and factor out test cases and mapped expected results therefor;
means for separating the test cases based on the software layers of the software component, and for associating data structures with the separated test cases of the software layers, which allow the test cases of the various software layers to be uncorrelated, wherein for at least one layer, the data structures simulate inputs to the layer from at least one other layer of the multiple software layers;
means for employing the software component in executable form to generate for each software layer of the software component test case execution threads from the test cases and mapped expected results for that software layer; and
means for executing in parallel at least some of the test case execution threads for at least one software layer of the software component, thereby testing the software component. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37)
-
-
38. A computer-implemented system for testing a software component comprising multiple layers of software, the system comprising:
-
an abstraction matrix in mathematical abstract form that describes the software component, the abstraction matrix partitioning the software component into multiple software layers and comprising state and event information taking into account relationships that exist between the multiple software layers;
a computer-implemented abstraction engine for parsing the abstraction matrix and automatically generating and factoring out test cases and mapped expected results therefor;
wherein the abstraction engine separates the test cases based on the software layers of the software component, and associates data structures with the separate test cases of the software layers which allow the test cases of the various software layers to be uncorrelated, wherein for at least one layer, the data structures simulate inputs to the layer from at least one other layer of the multiple software layers;
a computer-implemented functional verification test engine adapted to take the software component in executable form and generate for each software layer of the software component test case execution threads from the test cases and mapped expected results for that software layer, wherein the functional test verification engine outputs in parallel at least some test case execution threads for at least one software layer of the software component, thereby allowing testing of the software component; and
means for executing in parallel at least some of the test case execution threads for at least one software layer of the software component, thereby testing the software component.
-
-
39. A system for testing a software component, the software component comprising multiple layers of software, said system comprising:
-
a functional specification of the software component;
an abstraction matrix in mathematical abstract form that describes the software component, the abstraction matrix partitioning the software component into multiple software layers and comprising state and event information taking into account relationships that exist between the multiple software layers, and having been created from the functional specification;
means for parsing the abstraction matrix to automatically generate and factor out test cases and mapped expected results therefor;
means for separating the test cases based on the software layers of the software component, and for associating data structures with the separated test cases of the software layers which allow the test cases of the various software layers to be uncorrelated, wherein for at least one layer, the data structures simulate inputs to the layer from at least one other layer of the multiple software layers;
means for employing the software component in executable form to generate for each software layer of the software component test case execution threads from the test cases and mapped expected results for that software layer; and
means for executing in parallel at least some of the test case execution threads for at least one software layer of the software component, thereby testing the software component. - View Dependent Claims (40, 41, 42, 43)
-
-
44. A computer-implemented system for testing a software component comprising multiple layers of software, the system comprising:
-
a storage medium for storing an abstraction matrix in mathematical abstract form that describes the software component by partitioning the software component into multiple software layers, the abstraction matrix, which comprises state and event information taking into account relationships that exist between the multiple software layers, having been created from an automatic partitioning of a functional specification of the software component;
a computer-implemented abstraction engine for automatically retrieving and parsing the abstraction matrix to automatically generate and factor out test cases and mapped expected results therefor;
wherein the abstraction engine separates the test cases based on the software layers of the software component and associates data structures with the separated test cases of the software layers which allow the test cases of the various software layers to be uncorrelated, wherein for at least one layer, the data structures simulate inputs to the layer from at least one other layer of the multiple software layers;
employing the software component in executable form to generate for each software layer of the software component test case execution threads from the test cases and mapped expected results for that software layer; and
executing in parallel at least some of the test case execution threads for at least one software layer of the software component thereby testing the software component.
-
-
45. At least one program storage device readable by machine, tangibly embodying at least one program of instructions executable by the machine to form a method for testing a software component comprising multiple layers of software, the method comprising:
-
storing an abstraction matrix in mathematical abstract form that describes the software component by partitioning the software component into multiple software layers, the abstraction matrix comprising state and event information taking into account relationships that exist between the multiple software layers;
parsing the abstraction matrix to automatically generate and factor out test cases and mapped expected results therefor;
separating the test cases based on the software layers of the software component, and associating data structures with the separated test cases of the software layers which allow the test cases of the various software layers to be uncorrelated, wherein for at least one layer, the data structures simulate inputs to the layer from at least one other layer of the multiple software layers;
employing the software component in executable form to generate for each software layer of the software component test case execution threads from the test cases and mapped expected results for that software layer; and
executing in parallel at least some of the test case execution threads for at least one software layer of the software component, thereby testing the software component. - View Dependent Claims (46, 47, 48, 49, 50, 51, 52, 53, 54)
-
-
55. At least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform a method for testing a software component comprising multiple layers of software, the method comprising:
-
storing an abstraction matrix of the software component in mathematical abstract form that describes the software component by partitioning the software component into multiple software layers, the abstraction matrix comprising state and event information taking into account relationships that exist between the multiple software layers;
parsing the abstraction matrix to automatically generate and factor out test cases and mapped expected results therefor;
separating the test cases based on the software layers of the software component, and associating data structures with the separated test cases of the software layers which allow the test cases of the various software layers to be uncorrelated, wherein for at least one layer, the data structures simulate inputs to the layer from at least one other layer of the multiple software layers;
employing the software component in executable form to generate for each software layer of the software component test case execution threads from the test cases and mapped expected results for that software layer; and
executing in parallel at least some of the test case execution threads for at least one software layer of the software component, thereby testing the software component. - View Dependent Claims (56, 57, 58)
-
Specification