Version aware test management system and method
The present invention provides for a test management system that maintains fine-grained versioning information without sacrificing query, filtering, and reporting capabilities. Metadata associated with a test is stored in an XML file that is versioned with the test assets and source code. Furthermore, the XML file can contain all the attributes necessary for query and management, for example via XSLT transformations.
Latest Microsoft Patents:
- ULTRA DENSE PROCESSORS WITH EMBEDDED MICROFLUIDIC COOLING
- Automatic Binary Code Understanding
- Personalized Branding with Prompt Adaptation in Large Language Models and Visual Language Models
- CODING ACTIVITY TASK (CAT) EVALUATION FOR SOURCE CODE GENERATORS
- ARTIFICIAL INTELLIGENCE INFERENCING VIA DELTA MODELS
The present invention relates generally to computers and more particularly toward automated software application testing.
BACKGROUNDSoftware application testing systems have been around for quite some time. Testing systems are fueled by consumer demand for high quality and reliable software. Accordingly, newly developed or extended software applications will not be released by software development companies until and unless they pass the tests developed for them (e.g., functional, load, unit, integration . . . ). Testing begins by clearly and completely defining requirements for a software application (e.g., functional requirements, performance requirements . . . ). These requirements can be employed to more clearly delineate the scope of an application in development. A test plan can then be devised that captures requirements, for example by dividing an application up into functional units. Thereafter, tests can be designed and developed that examine application functions in terms of expected results, for instance. If upon test termination functional unit values are different than expected results, then the application has failed the test. Accordingly, the software under test will or has failed to meet a defined application requirement. Subsequently, defects can be analyzed and fixes applied to the code. One or more tests can then be re-executed and the process repeated until successful.
Fortunately, developers and testers do not have to tackle software testing manually. Presently, there are various software test management systems that automate all or part of the testing process. However, effective software testing has two requirements that are in conflict in conventional test management systems. First, large amounts of data need to be accessible in a form that provides ready querying and reporting, to view exception patterns, trends, productivity, success rates, among other things, over the breadth of a team and over the course of a software lifecycle. Second, individual tests are intimately tied to specific versions of software under test (SUT). Both the tests and the SUT are updated frequently, although often at different times, and the versions need to be correctly matched to provide accurate test results.
Conventionally, there are two divergent approaches to persistence in software test management. Test management data can be stored in a relational database, optimized for querying and reporting. For example, Mercury TestDirector and IBM Rational TestManager utilize this approach. However, this creates a problem in that the database reflects a snapshot in time and as a consequence tests and source cannot be kept in sync unless all development assets are backed up (baselined) at once, which is typically only done sparingly (e.g., product ships, beta releases . . . ). This has been the favored approach for managing testing activities in teams. An alternative approach is to store tests as source code with granular version control consistent with the source code. For instance, open source frameworks NUnit (for .Net) and JUnit (for Java) utilized this approach. This allows tests and source under test to be synchronized but prevents the querying and reporting that are necessary for managing a testing effort across a team of any size. Accordingly, this approach has been used for testing performed by individual programmers on their own code, but not employed for team activity.
Accordingly, there is a need in the art for a single test management system that maintains versioning of tests and their relationships to software under test, without sacrificing querying, filtering, and reporting.
SUMMARYThe following presents a simplified summary of the invention in order to provide a basic understanding of some aspects of the invention. This summary is not an extensive overview of the invention. It is not intended to identify key/critical elements of the invention or to delineate the scope of the invention. Its sole purpose is to present some concepts of the invention in a simplified form as a prelude to the more detailed description that is presented later.
The present invention resolves conventional competing requirements and provides for a single test management system to maintain fine-grained versioning of tests and their relationship to software under test, without sacrificing querying, filtering, and reporting. In particular, the subject invention stores metadata associated with one or more tests in an XML file that is versioned with the test assets and source code. In other words, fine-grained versioning information is explicitly specified. This is significant, as source code gets versioned many times throughout a software development lifecycle. Accordingly, a tester needs to know which version of software is being tested by which test, as test results may not be comparable because the source code under test may have changed. Conventional large scale approaches are not explicit about versioning and thus are of little value for trending an analysis.
According to an aspect of the invention, the XML file, also referred to as the Test Case XML (TCX) file, can also include all of the attributes necessary for query and management including pointers to source under test, requirement under test, configuration under test, and other aspects needed for filtering, in addition to versioning data. Persisting metadata to the TCX file allows versioning consistent with a source and version-aware references to the source under test (SUT).
According to another aspect of the subject invention, TCX data can be loaded into memory or treated as a database via XSLT transformation, for example, in order to allow management operations including but not limited to selection, query, reporting, suit composition, and scheduling.
In brief, the subject invention keeps fine-grained track of tests' relations to the version of software under test and at the same time preserves query ability, thus providing, among other things, a union of benefits from the conventional conflicting approaches employed today.
To the accomplishment of the foregoing and related ends, certain illustrative aspects of the invention are described herein in connection with the following description and the annexed drawings. These aspects are indicative of various ways in which the invention may be practiced, all of which are intended to be covered by the present invention. Other advantages and novel features of the invention may become apparent from the following detailed description of the invention when considered in conjunction with the drawings.
BRIEF DESCRIPTION OF THE DRAWINGSThe foregoing and other aspects of the invention will become apparent from the following detailed description and the appended drawings described in brief hereinafter.
The present invention is now described with reference to the annexed drawings, wherein like numerals refer to like elements throughout. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed. Rather, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present invention.
As used in this application, the terms “component” and “system” are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on a server and the server can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
Furthermore, the present invention may be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof. The term “article of manufacture” (or alternatively, “computer program product”) as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. For example, a computer readable media can include but are not limited to magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips . . . ), optical disks (e.g., compact disk (CD), digital versatile disk (DVD) . . . ), smart cards, and flash memory devices (e.g., card, stick). Of course, those skilled in the art will recognize many modifications may be made to this configuration without departing from the scope or spirit of the subject invention.
Turning initially to
Test case file component 140 receives or retrieves version data from version component 130 regarding particular source code and tests, and stores them to a file such as an XML (extensible Markup Language) file. In essence, the XML file can store metadata associated with tests and source code. Additionally, the file can contain all the attributes necessary for query and management including but not limited to pointers to the source under test, requirements under test, configuration under test, and other aspects necessary for filtering. Persistence to the test XML file enables fine-grained versioning consistent with source as well as version-aware references to the source under test. Furthermore, according to an aspect of the present invention, the XML file data can be loaded into memory or treated like a database utilizing XSLT transformation, for instance, in order to provide management operations including but not limited to selection, query, reporting, suite composition and scheduling. Hence the present invention provides a union of benefits of conventional conflicting approaches including enabling querying and reporting as well as synchronization of tests and sources under test.
Turning to
Turning briefly to
It should be appreciated that the namespace hierarchy stored in one TCX file can extend its namespace and store onto another TCX file, creating a father-child relationship between the two files. Turning to
Returning to
As shown in
To facilitate a clear understanding of the interaction between particular test components
In view of the exemplary system(s) described supra, a methodology that may be implemented in accordance with the present invention will be better appreciated with reference to the flow charts of
Additionally, it should be further appreciated that the methodologies disclosed hereinafter and throughout this specification are capable of being stored on an article of manufacture to facilitate transporting and transferring such methodologies to computers. The term article of manufacture, as used, is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. By way of illustration and not limitation, the article of manufacture can embody computer readable instructions, data structures, schemas, program modules, and the like.
In order to provide a context for the various aspects of the invention,
With reference to
The system bus 818 can be any of several types of bus structure(s) including the memory bus or memory controller, a peripheral bus or external bus, and/or a local bus using any variety of available bus architectures including, but not limited to, 11-bit bus, Industrial Standard Architecture (ISA), Micro-Channel Architecture (MSA), Extended ISA (EISA), Intelligent Drive Electronics (IDE), VESA Local Bus (VLB), Peripheral Component Interconnect (PCI), Universal Serial Bus (USB), Advanced Graphics Port (AGP), Personal Computer Memory Card International Association bus (PCMCIA), and Small Computer Systems Interface (SCSI).
The system memory 816 includes volatile memory 820 and nonvolatile memory 822. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer 812, such as during start-up, is stored in nonvolatile memory 822. By way of illustration, and not limitation, nonvolatile memory 822 can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable ROM (EEPROM), or flash memory. Volatile memory 820 includes random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), and direct Rambus RAM (DRRAM).
Computer 812 also includes removable/non-removable, volatile/non-volatile computer storage media.
It is to be appreciated that
A user enters commands or information into the computer 812 through input device(s) 836. Input devices 836 include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, touch screen, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit 814 through the system bus 818 via interface port(s) 838. Interface port(s) 838 include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s) 840 use some of the same type of ports as input device(s) 836. Thus, for example, a USB port may be used to provide input to computer 812 and to output information from computer 812 to an output device 840. Output adapter 842 is provided to illustrate that there are some output devices 840 like monitors, speakers, and printers, among other output devices 840 that require special adapters. The output adapters 842 include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device 840 and the system bus 818. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s) 844.
Computer 812 can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s) 844. The remote computer(s) 844 can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer 812. For purposes of brevity, only a memory storage device 846 is illustrated with remote computer(s) 844. Remote computer(s) 844 is logically connected to computer 812 through a network interface 848 and then physically connected via communication connection 850. Network interface 848 encompasses communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet/IEEE 802.3, Token Ring/IEEE 802.5 and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).
Communication connection(s) 850 refers to the hardware/software employed to connect the network interface 848 to the bus 818. While communication connection 850 is shown for illustrative clarity inside computer 812, it can also be external to computer 812. The hardware/software necessary for connection to the network interface 848 includes, for exemplary purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems, DSL modems, power modems, ISDN adapters, and Ethernet cards.
What has been described above includes examples of the present invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the present invention, but one of ordinary skill in the art may recognize that many further combinations and permutations of the present invention are possible. Accordingly, the present invention is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes or having” is used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.
Claims
1. An application test management system comprising:
- a version component that monitors source under test components and test components for changes; and
- a test case file component that includes versioning metadata associated with test case and source under test components received from the version component and attributes necessary for query and test management.
2. The system of claim 1, wherein the test case file component includes a pointer to the source under test.
3. The system of claim 1, wherein the test case file component includes a pointer to requirement for test data.
4. The system of claim 1, wherein the test case file component includes a pointer to requirement and/or configuration under test data.
5. The system of claim 1, wherein the test case file component includes a pointer to a test case component.
6. The system of claim 1, wherein the test case file component is loaded into memory or treated as a database to facilitate management operations including at least one of query, reporting, suite composition and scheduling.
7. The system of claim 1, wherein the test case file component is an XWL document.
8. The system of claim 7, wherein XSLT is employed to facilitate management operations including at least one of selection, query, reporting, suit composition, and scheduling.
9. The system of claim 1, wherein the test case file component is located in the source file under test.
10. The system of claim 9, wherein the test case file component is loaded into a test catalog.
11. The system of claim 8, wherein the test case component specified in the test case file component is loaded into the test catalog.
12. The system of claim 11, wherein a test execution component executes the test case on the software under test and generates test results.
13. The system of claim 12, wherein the test results are tagged with the test case component and source under test component versions for historical and/or trend analysis.
14. A test management system comprising:
- a means for maintaining fine-grained track of a test's relation to a version of software under test; and
- a means for querying test data to facilitate generation of test management reports.
15. The system of claim 14, wherein the means for maintaining fine-grained track of a test's relation to a version of software under test includes persisting software version information and related test information to an XML file.
16. The system of claim 15, wherein the XML file is transformed utilizing XSLT to enable test data to be queried.
17. A test management methodology comprising:
- retrieving metadata regarding test version information in relation to software under test; and
- persisting the metadata to a markup language file versioned with test assets and source code.
18. The method of claim 17, wherein version information is retrieved from a version component that monitors changes to source code versions.
19. The method of claim 17, wherein the file is an XML file.
20. The method of claim 19, wherein the file comprises a pointer to at least one of a source under test, requirement under test, and configuration under test.
21. The method of claim 19, further comprising transforming the XML file utilizing XSLT to enable management operations to be performed on the data including at least one of selection, query, reporting, suit composition, and scheduling.
22. A computer readable medium having stored thereon computer executable instructions for carrying out the method of claim 17.
23. A testing methodology comprising:
- loading a test case in accordance with a test case file stored in a source file;
- executing the test case on a source under test; and
- generating test results, wherein the test results are version tagged.
24. The method of claim 23, further comprising saving test results to an XML file.
25. The method of claim 23, further comprising publishing the test results to an enterprise data store.
26. The method of claim 23, wherein the version tags indicate the version of the source under test and the version of the test.
27. A computer readable medium having stored thereon computer executable instructions for carrying out the method of claim 23.
Type: Application
Filed: Apr 12, 2004
Publication Date: Oct 13, 2005
Applicant: Microsoft Corporation (Redmond, WA)
Inventors: Erez Haba (Redmond, WA), Sam Guckenheimer (Kirkland, WA)
Application Number: 10/822,454