Methods, computer program products, and computer systems (testing components of software applications)
The software integration testing framework addresses the inefficiencies of end-to-end testing by automatically validating changes to software components, allowing for faster verification by resuming from a validated state, thus optimizing the testing process.
Patent Information
- Application Number
- JP2021202719
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-12-18
- Filing Date
- 2021-12-14
- Publication Date
- 2025-11-05
- Estimated Expiration
- 2041-12-14
AI Technical Summary
Existing software integration testing methods require lengthy and resource-intensive end-to-end tests, especially for complex processes like machine learning, leading to delays in verifying changes due to the need to re-execute all previous steps, which is inefficient and time-consuming.
A software integration testing framework that automatically detects, tests, and validates changes to software components by capturing the state of each step and allowing execution to resume from a validated end-to-end test state, reducing the need for full end-to-end testing.
This approach speeds up the verification process by testing only affected components, thereby reducing execution time and resource usage while maintaining the integrity of the software application.
Smart Images

Figure 0007764095000001 
Figure 0007764095000002 
Figure 0007764095000003
Abstract
Description
[Technical Field]
[0001] The present invention relates generally to the field of integration testing, and more particularly to testing components of software applications. [Background technology]
[0002] Software testing is an investigation conducted to provide stakeholders with information about the quality of the software product or service being tested. Software testing can also provide an objective, independent view of the software, allowing businesses to recognize and understand the risks of software implementations. Testing techniques include the process of running a program or application to discover software bugs (errors or other defects) and verify that the software product is suitable for use, as well as other techniques. Software testing involves exercising a software component or system component to evaluate one or more properties of interest. Generally, properties refer to the extent to which the component or system being tested meets the requirements that guided its design and development, responds correctly to all types of input, performs its functions within an acceptable time frame, is sufficiently usable, can be installed and run in its intended environment, and achieves the general results desired by stakeholders.
[0003] Integration testing (sometimes referred to as integration and testing, or I&T for short) is the phase of software testing in which individual software modules are combined and tested as a group. Integration testing is performed to evaluate the compliance of a system or component with specified functional requirements. Integration testing occurs after unit testing and before verification testing. Integration testing takes the input of the unit tested modules, groups the modules into larger collections, applies the tests defined in the integration test plan to the collection, and delivers as output an integrated system ready for system testing.
[0004] Continuous delivery (CD) is a software engineering approach in which teams produce software in short cycles to ensure that software can be released consistently and reliably, and when software is released, it is released manually. Continuous delivery aims to build, test, and release software at a faster velocity and with a higher frequency. This approach helps reduce the cost, time, and risk of delivering changes by enabling more incremental updates to a running application. A simple and repeatable deployment process is important to continuous delivery. Continuous delivery contrasts with continuous deployment, a similar approach in which software is also produced in short cycles, but is deployed automatically rather than manually. Summary of the Invention [Problem to be solved by the invention]
[0005] Methods, computer program products, and systems for performing tests on portions of an application are provided. [Means for solving the problem]
[0006] Aspects of the present invention disclose methods, computer program products, and systems for performing testing on a portion of an application. The method includes one or more processors identifying a test configuration for testing the application. The application includes a plurality of components. The test configuration includes an indication to test at least one component of the application. The method further includes the one or more processors testing the indicated at least one component of the application. The method further includes the one or more processors determining a validation result of the testing of the indicated at least one component of the application. [Brief explanation of the drawings]
[0007] [Figure 1] 1 is a functional block diagram of a data processing environment according to one embodiment of the present invention; [Figure 2A] FIG. 1 illustrates an exemplary application comprised of multiple software components, in accordance with an embodiment of the present invention. [Figure 2B] FIG. 1 illustrates an exemplary application comprised of multiple software components, in accordance with an embodiment of the present invention. [Figure 3] 4 is a flowchart illustrating the operational steps of a program for running tests on a portion of an application, according to an embodiment of the present invention. [Figure 4] FIG. 2 is a block diagram of components of a computing system representing the computing device and test management system of FIG. 1, according to one embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION
[0008] Embodiments of the present invention operate to provide a software integration testing framework that, in conjunction with software change control systems and continuous delivery systems, automatically detects, tests, and validates changes to software components, thereby reducing the need to repeatedly perform full end-to-end integration tests. Embodiments of the present invention recognize the benefits of such processing, particularly when end-to-end integration tests are long, taking hours or even longer (e.g., for machine learning training tasks).
[0009] Some embodiments of the present invention recognize that using analytics involving machine learning models requires multiple steps, including feature generation, feature selection, model training, and other steps. The entire process can be very complex and take a long time to fully complete. Additionally, while the examples discussed are of machine learning, embodiments of the present invention recognize that many different implementations and functions use lengthy tests that require the execution of multiple previous steps before a changed step can be validated. Embodiments of the present invention recognize that solving problems in later parts of the process depends on the execution of all previous steps to build the information necessary for validation.
[0010] Thus, embodiments of the present invention recognize that a change (even a relatively simple one) to an application may need to be run for potentially several hours before it can be verified to determine whether the change is correct and will not adversely affect downstream processing of the application. Such limitations can often delay verification of a modification or update because steps within the process or application (both before and after the change) must be completed before the process or application can revert.
[0011] In various aspects, embodiments of the present invention provide a process for testing / executing a set of application operations (e.g., software components) without having to re-execute all previous operations (e.g., software components) to verify changes in later steps / operations. While some of the following examples relate to integration testing, the corresponding concepts and patterns can also be extended to any multi-step testing scenario.
[0012] Embodiments of the present invention process a complete, validated end-to-end test against a system (e.g., an application composed of multiple software components), which includes capturing the state (e.g., metadata and data) of each step (e.g., software component) of the system, including its inputs and outputs. The validated end-to-end test is stored. Then, when the system needs to be revalidated (e.g., in response to a change to one or more software components of the application), embodiments of the present invention can reload the system into a valid end-to-end test state and execute the step(s) affected by the change(s) that caused the revalidation. Embodiments of the present invention can then verify that the metadata and data resulting from executing those step(s) is identical to the metadata and data resulting from the validated end-to-end test.
[0013] Accordingly, embodiments of the present invention recognize that existing solutions can provide the ability to resume system execution from a point of failure (checkpointing). Also, embodiments of the present invention recognize that other alternative solutions can provide the ability to capture state and resume from a point corresponding to that state. However, embodiments of the present invention recognize that such solutions do not integrate with the source system to understand the steps (and corresponding components) that need to be retested (instead, identification remains a manual process). Furthermore, embodiments of the present invention recognize that other solutions can provide the ability to use a previously output state of a component as a way to verify that no changes have occurred. However, embodiments of the present invention recognize that such current solutions do not provide a complete, end-to-end process for solving this problem.
[0014] Implementations of embodiments of the present invention may take a variety of forms, and details of exemplary implementations are discussed below with reference to the figures.
[0015] The present invention is now described in detail with reference to the figures. Figure 1 is a functional block diagram illustrating a distributed data processing environment, broadly designated 100, in accordance with one embodiment of the present invention. Figure 1 provides an illustration of only one implementation and is not intended to imply any limitation with regard to the environments in which various embodiments may be implemented. Many modifications to the depicted environment may be made by one skilled in the art without departing from the scope of the present invention as defined in the claims.
[0016] One embodiment of data processing environment 100 includes computing device 110 and test management system 120, all interconnected via network 105. In an exemplary embodiment, test management system 120 represents a computing device (e.g., one or more management servers) that can interface with a software change management system and continuous delivery system to provide a software integration testing framework that reduces the need to repeatedly perform full end-to-end integration tests by automatically detecting, testing, and validating changes to software components (e.g., of an application such as application 200 on computing device 110). In other embodiments, data processing environment 100 may include additional instances (not shown) of computing devices that can interface with test management system 120, according to various embodiments of the present invention.
[0017] Network 105 may be, for example, a local area network (LAN), a telecommunications network, a wide area network (WAN) such as the Internet, or any combination of the three, and may include wired, wireless, or fiber optic connections. In general, network 105 may be any combination of connections and protocols that support communication between computing devices 110 and test management systems 120, according to embodiments of the present invention. In various embodiments, network 105 facilitates communication between multiple networked computing devices (e.g., computing devices 110 and test management systems 120, as well as other devices not shown), corresponding users (e.g., users associated with computing devices 110 and test management systems 120), and corresponding management services (e.g., test management systems 120).
[0018] In various embodiments of the present invention, computing device 110 may be a workstation, a personal computer, a personal digital assistant, a mobile phone, or any other device capable of executing computer-readable program instructions, according to embodiments of the present invention. Generally, computing device 110 represents any electronic device or combination of electronic devices capable of executing computer-readable program instructions. Computing device 110, according to embodiments of the present invention, may include components shown and described in further detail with respect to FIG. 4.
[0019] Computing device 110 includes application 200. In an exemplary embodiment, computing device 110 is a personal workstation or mobile device that includes an application composed of multiple software components. In various embodiments, computing device 110 represents a device that hosts application 200 (i.e., application 200 is installed on computing device 110) and receives updates to application 200. In one example, computing device 110 hosts an instance of application 200 that is updated and tested (e.g., before deployment to other devices, not shown) according to various embodiments of the present invention. In one exemplary scenario, computing device 110 may be a device that hosts application 200 and is a component of a software change management system. In another exemplary scenario, computing device 110 may be a device that hosts application 200 and is a component of a continuous delivery system.
[0020] 2A illustrates application 200, which represents an application composed of multiple software components, in accordance with various embodiments of the present invention. In the example illustrated in FIG. 2A, application 200 includes data input 202, software component 204, software component 206, software component 208, software component 210, output 212, software component 214, software component 216, and output 218. In various embodiments, the software components of application 200 represent processes, functions, steps, modules, etc. that make up application 200. According to various embodiments of the present invention, the software components of application 200 are updated (e.g., as part of a continuous delivery process), and test management system 120 operates to verify the updates.
[0021] Additionally, the exemplary illustration of application 200 in FIG. 2A includes test bot 220, test bot 221, test bot 222, test bot 223, test bot 224, test bot 225, test bot 226, and test bot 227. In various embodiments, the test bots of application 200 capture the inputs and outputs of respective software components of application 200. In an exemplary embodiment, the test bots are components of a test integration system (e.g., a test integration system associated with test management system 120) that interfaces with the application components. In additional embodiments, the test bots may also operate to execute test fragments using the captured data (e.g., in accordance with the operation of test management system 120 and fragment test program 300). In other embodiments, application 200 may include more or fewer test bots than those shown in FIG. 2A based on the particular operation of application 200 and test management system 120.
[0022] In an exemplary embodiment, test management system 120 may be a desktop computer, a computer server, or any other computer system known in the art. In particular embodiments, test management system 120 represents a computer system utilizing clustered computers and components (e.g., database server computers, application server computers, etc.) that function as a seamless single pool of resources when accessed by elements of data processing environment 100 (e.g., computing device 110 and other devices not shown). Generally, test management system 120 represents any electronic device or combination of electronic devices capable of executing computer-readable program instructions. Test management system 120, according to embodiments of the present invention, may include components shown and described in further detail with respect to FIG. 4.
[0023] Test management system 120 includes fragment test program 300 and storage device 122, which includes test data set 124 and complete end-to-end test 126. In various embodiments of the present invention, test management system 120 operates as a computing system that provides application testing services (to one or more deployments and / or enterprises) according to embodiments of the present invention. In an exemplary embodiment, test management system 120 represents a computing device (e.g., one or more management servers) that can interface with software change management systems and continuous delivery systems to provide a software integration testing framework that reduces the need to repeatedly run complete end-to-end integration tests by automatically detecting, testing, and verifying changes to software components (e.g., of an application such as application 200 on computing device 110).
[0024] In an exemplary embodiment, fragment test program 300, according to various embodiments of the present invention, performs tests on a portion of an application. Fragment test program 300 can determine that a component of the application (e.g., a software component of application 200) has changed, and in response, fragment test program 200 can identify components of the application to be tested and corresponding configurations for testing the changed component. In an exemplary embodiment, fragment test program 300, according to various embodiments of the present invention, can reduce processing resources and execution time / complexity by operating to test the changed software component without having to execute all previous components of the application.
[0025] The storage device 122 may be implemented by any type of storage device, such as persistent storage 405, capable of storing data that can be accessed and utilized by the test management system 120, such as, for example, a database server, a hard disk drive, or flash memory. In other embodiments, the storage device 122 may represent multiple storage devices and a collection of data within the test management system 120. In various embodiments, the test management system 120 may utilize the storage device 122 to store data related to testing of a software product, such as application 200 of the computing device 110.
[0026] Test data set 124 represents a collection of data utilized by test management system 120 to test application 200, according to embodiments of the present invention. In various embodiments, test data set 124 includes a defined set of known data (e.g., sample data input to application) utilized by test management system 120 (and fragment test programs 200) to test application 200. In one example, test data set 124 is input to data input 202 in the exemplary illustration of application 200 in FIG. 2A. In an exemplary embodiment, test management system 120 utilizes test data set 124 to generate a complete end-to-end test 126 corresponding to application 200 for use with fragment test programs 300, according to embodiments of the present invention.
[0027] The complete end-to-end test 126 represents the results of a complete, verified test of the application using the test data set 124 (i.e., a complete, verified end-to-end data set). In various embodiments, execution of the fragment test program 200 by the test management system 120 captures all inputs and outputs between the software components (e.g., the software components shown in FIG. 2A ) that make up the application 200 using the complete end-to-end test 126, which is the result of an initial end-to-end test of the application 200 using a known data set (e.g., the test data set 124). In additional embodiments, in generating the complete end-to-end test 126, the test management system 120 utilizes a fragment test bot (i.e., the test bot shown in FIG. 2A ) to capture inputs and outputs from the software components of the application 200.
[0028] During test execution to establish a complete end-to-end test 126, the test management system 120 supplies a known data set (e.g., test data set 124) to the application 200. As the supplied data flows through the application 200 (i.e., processes utilizing each software component), test bots capture input and output data and information corresponding to each component of the application 200. The test management system 120 can then store the captured input / output data and information in the storage device 122 as a complete end-to-end test 126 corresponding to the application 200. In various embodiments, the test management system 120 (and the fragment test program 200) can utilize the data from the complete end-to-end test 126 and the test bots of the application 200 to test fragments or portions (e.g., individual software components or modules) according to various embodiments of the present invention.
[0029] In some embodiments, the test framework of the test management system 120 may integrate with a software change management system to record changes to the software components of an application during the software development process. For example, in response to detecting a change, the test framework of the test management system 120 may store details of the change for use in validation testing, according to various embodiments of the present invention.
[0030] In an exemplary embodiment, the test framework of test management system 120 can integrate with a software change management system utilizing a test fragment plug-in (not shown). For example, a plug-in on computing device 110 notifies test management system 120 of changes to application 200. In an exemplary scenario, when changes to application 200 (e.g., source files) are committed to the software change management system, the test fragment plug-in detects the changes and sends a component change packet and a corresponding timestamp indicating when the change was made to test management system 120. In an additional embodiment, test management system 120 can map the received change indications to an integration test suite (e.g., further store it in storage device 122) for use in testing the modified components of the application (utilizing fragment test program 300), in accordance with embodiments of the present invention.
[0031] In a further embodiment, the test framework of the test management system 120 can integrate with a continuous delivery system to run integration test fragments on software components of the application that have changed since a previous build of the application. In an exemplary embodiment, the test fragments are subsets of a complete integration test suite (e.g., complete end-to-end tests 126) for testing one or more software components of the application.
[0032] In an exemplary embodiment, the test framework of the test management system 120 can integrate with a continuous delivery system to execute one or more integration test suites as the continuous delivery system builds and deploys an application. For example, the test framework of the test management system 120 can integrate with a continuous delivery system that utilizes a test fragment plugin (described above). In a further embodiment, the continuous delivery system (and the test management system 120) can utilize the test fragment plugin to facilitate the execution of tests on the application as it is built and deployed. For example, the test management system 120, according to an embodiment of the present invention, can interact with the test fragment plugin to determine / provide the required test suite configuration and instantiate a test fragment bot to test the application.
[0033] In other embodiments, the test framework of the test management system 120 may be manual or semi-manual, with a software change management system augmented by a software integration testing framework to enable testing of an application that skips one or more steps (e.g., software components) when performing end-to-end testing of the application.
[0034] FIG. 2A illustrates application 200, which represents an application comprised of multiple software components, according to various embodiments of the present invention. In the example illustrated in FIG. 2A, application 200 includes data input 202, software component 204, software component 206, software component 208, software component 210, output 212, software component 214, software component 216, and output 218. In various embodiments, the software components of application 200 represent the processes, functions, steps, modules, etc. that make up application 200. The exemplary illustration of application 200 in FIG. 2A also includes test bot 220, test bot 221, test bot 222, test bot 223, test bot 224, test bot 225, test bot 226, and test bot 227. In various embodiments, the test bots of application 200 capture the inputs and outputs of each software component of application 200.
[0035] FIG. 2B illustrates application 250, which represents an application comprised of multiple software components, in accordance with various embodiments of the present invention. In an exemplary embodiment, application 250 represents application 200 (shown in FIG. 2A) in the presence of at least one change or update to a software component comprising application 200 (e.g., a change to software component 210). In the example shown in FIG. 2B, application 250 includes data input 202, software component 204, software component 206, software component 208, software component 210, output 212, software component 214, software component 216, and output 218. In various embodiments, the software components of application 250 represent processes, functions, steps, modules, etc., comprising application 250. The exemplary illustration of application 250 in FIG. 2B also includes test bot 223 and test bot 224. In various embodiments, the test bot of application 250 captures the inputs and outputs of each software component of application 250, which can be utilized by fragment test program 300 to test software component 210, according to an exemplary embodiment of the present invention.
[0036] FIG. 3 is a flowchart illustrating the operational steps of fragment test program 300, a program for performing tests on portions of an application, in accordance with an embodiment of the present invention. In one embodiment, fragment test program 300 is initiated and operates to test an application (e.g., application 200) or software product. In an exemplary embodiment, fragment test program 300 is initiated in response to identifying or receiving an indication of a change to one or more components of the application. In various embodiments, fragment test program 300 operates to test portions (fragments) of an application. Thus, fragment test program 300 can reduce the need to repeatedly run complete (potentially lengthy and resource-intensive) end-to-end integration tests on an application, such as application 200, by operating to automatically detect, test, and verify changes to software components.
[0037] In step 302, the fragment test program 300 identifies a test configuration. In one embodiment, the fragment test program 300 fetches a test configuration that includes an indication of one or more components of the application 200 to be tested (e.g., software components that have changed since the last test). In an exemplary embodiment, a change management system can track changes to the components of the application 200 and aggregate them into a test suite or test configuration. Once the test suite or test configuration is generated and stored, the fragment test program 300 can operate to run one or more test fragments on the application 200 without having to perform a complete end-to-end integration test. In various embodiments, the test configuration can include configurations for running all test fragments, a subset of all test fragments, or only test fragments that correspond to software components of the application 200 that have changed since the most recent test of the application 200.
[0038] In an exemplary scenario, test management system 120 receives an indication (e.g., from a plug-in on computing device 110) that a change has been made to software component 210 of application 200. In response, test management system 120 generates a test suite that includes test configurations for testing software component 210 of application 200. In this example, in response to initiating testing of application 200, fragment test program 300 identifies a test configuration that includes instructions for testing software component 210 of application 200. In various embodiments, fragment test program 300 can conveniently operate to test the changed portion of application 200, thereby reducing resources of test management system 120 by not performing a full end-to-end test of application 200.
[0039] In step 304, the fragment test program 300 identifies the components to be tested. In one embodiment, the fragment test program 300 analyzes the identified test configuration (from step 302) to identify the components of the application 200 to test. In other embodiments, the fragment test program 300 may identify multiple components of the application 200 to test based on the test suite of the test configuration (i.e., corresponding to the amount of changes to the application 200). The fragment test program 300 may be run to test multiple components simultaneously (e.g., based on a client / customer specification), or separate instances of the fragment test program 300 may be run to test multiple components.
[0040] In the exemplary scenario discussed above, fragment test program 300 identifies (at step 302) a test configuration including instructions for testing software component 210 of application 200. In response, fragment test program 300 identifies that software component 210 as a component of application 200 to be tested. In further embodiments, fragment test program 300 may operate to automatically (e.g., at automated intervals, in response to receiving a request, etc.) analyze application 200 to determine when changes are made to application 200. Fragment test program 300 may then identify the changes to the component (e.g., software component 210) and determine to test the modified software component of application 200, according to embodiments of the present invention.
[0041] In step 306, fragment test program 300 initiates a fragment test on the identified component. In one embodiment, fragment test program 300 initiates a fragment test on the component identified (by step 304) of application 200. In an exemplary embodiment, fragment test program 300 instantiates and starts a fragment test bot for that component. Fragment test program 300 can utilize the fragment test bot to send appropriate input data (from complete end-to-end test 126) to the identified component. In other exemplary embodiments, fragment test program 300 can interact directly with application 200 to test the modified and identified component.
[0042] In other embodiments, the fragment test program 300 identifies data within the complete end-to-end test 126 that corresponds to inputs to the identified components to be tested. In various embodiments, the complete end-to-end test 126 includes verified inputs and outputs corresponding to the components of the application 200 (using the test data set 124). Accordingly, the fragment test program 300 identifies data (e.g., metadata, data, information, etc.) within the complete end-to-end test 126 that corresponds to inputs to the identified components of the application 200.
[0043] In the exemplary scenario discussed above, fragment test program 300 initiates a fragment test on software component 210 of application 200. In this exemplary scenario, fragment test program 300 identifies data in complete end-to-end test 126 that corresponds to input to software component 210. As shown in the example of FIG. 2B , fragment test program 300 can process the test of software component 210 (in accordance with the operation of application 200) by utilizing test bot 223 to send the corresponding input data (from complete end-to-end test 126) to software component 210.
[0044] In step 308, fragment test program 300 receives fragment test results. In one embodiment, fragment test program 300 receives the results of the fragment tests (per step 306) for the identified components of application 200 to be tested (per step 304). In an exemplary embodiment, fragment test program 300 receives data output from executing (e.g., testing) the components of application 200. In other embodiments, fragment test program 300 utilizes a fragment test bot to receive output data from the components.
[0045] In the example scenario discussed above, the fragment test program 300 receives data output from the software component 210. As shown in the example of FIG. 2B, the fragment test program 300 can utilize a test bot 224 to receive data output resulting from executing (e.g., testing) the software component 210 of the application 200.
[0046] In step 310, the fragment test program 300 determines a validation result for the test fragment. In one embodiment, the fragment test program 300 validates the received output (by step 308) resulting from testing the identified component (by step 304) of the application 200. In various embodiments, the fragment test program 300 determines whether the received results for the test fragment executed on the component of the application 200 match the expected (i.e., validated) output results included in the complete end-to-end test 126 corresponding to the output from the software component 210. In an exemplary embodiment, the fragment test program 300 may determine whether the output data corresponds (e.g., matches within a defined threshold) to the corresponding output results included in the complete end-to-end test 126. In response, the fragment test program 300 may determine and generate a test / visual indication of the validation result (e.g., “Yes” or “No,” “Pass” or “Fail,” etc.).
[0047] In other embodiments, the fragment test program 300 can utilize a test fragment bot to receive the output and perform validation of the results. In the example of FIG. 2B, the fragment test program 300 can utilize a test bot 224 to receive data output from executing (e.g., testing) the software components 210 of the application 200 and perform validation of the received output. In this example, the fragment test program 300 can receive an indication of the validation results from the test bot 224.
[0048] In step 312, fragment test program 300 outputs the verification results. In one embodiment, fragment test program 300 transmits the verification results determined (by step 310) to one or more users associated with application 200 or the test associated with application 200. In other embodiments, fragment test program 300 can store the verification results determined in the fragment test in storage device 122 associated with application 200.
[0049] In additional embodiments, the test framework of the test management system 120 can be configured to address and handle changes in expected outputs resulting from one or more code changes. In an exemplary scenario, the test management system 120 can validate changes made to the application 200 that change the input and output values included in the complete end-to-end test 126. For example, a user associated with the application 200 can receive the validation results and authorize the test management system 120 to update the complete end-to-end test 126 to correspond to the updated instance of the application 200. In such a scenario, the test management system 120 can run a subset of the complete end-to-end integration tests against the application 200, starting with the first changed component, capturing all input and output data throughout the remaining test flow. In response, the test management system 120 can update the instance of the complete end-to-end test 126 with the newly captured (and validated) data for use in future runs of the fragment tests of the application 200 (i.e., when executing the fragment test program 300).
[0050] FIG. 4 illustrates a computer system 400 representing a computing device 110 and a test management system 120 in accordance with an exemplary embodiment of the invention. It should be understood that FIG. 4 provides an illustration of only one implementation and does not imply any limitation with regard to the environments in which various embodiments may be implemented. Many modifications to the illustrated environment may be made. Computer system 400 includes processor(s) 401, cache 403, memory 402, persistent storage 405, communications unit 407, input / output (I / O) interface(s) 406, and communications fabric 404. Communications fabric 404 provides communications between cache 403, memory 402, persistent storage 405, communications unit 407, and input / output (I / O) interface(s) 406. Communications fabric 404 may be implemented by any architecture designed to pass data and / or control information between processors (e.g., microprocessors, communication and network processors, etc.), system memory, peripheral devices, and any other hardware components in the system. For example, communications fabric 404 may be implemented by one or more buses or crossbar switches.
[0051] Memory 402 and persistent storage 405 are computer-readable storage media. In this embodiment, memory 402 includes random access memory (RAM). In general, memory 402 may include any suitable volatile or non-volatile computer-readable storage medium. Cache 403 is high-speed memory that enhances the performance of processor(s) 401 by holding recently accessed data and data near recently accessed data from memory 402.
[0052] Program instructions and data (e.g., software and data 410) used to implement embodiments of the present invention may be stored in persistent storage 405 and memory 402 for execution by one or more respective processor(s) 401 via cache 403. In one embodiment, persistent storage 405 includes a magnetic hard disk drive. Instead of, or in addition to, a magnetic hard disk drive, persistent storage 405 may include a solid-state hard drive, a semiconductor storage device, read-only memory (ROM), erasable programmable read-only memory (EPROM), flash memory, or any other computer-readable storage medium capable of storing program instructions or digital information.
[0053] The media used by persistent storage 405 may also be removable. For example, a removable hard drive may be used for persistent storage 405. Other examples include optical and magnetic disks, thumb drives, and smart cards, which are inserted into a drive and transferred onto other computer-readable storage media, which are also part of persistent storage 405. Software and data 410 may be stored in persistent storage 405 for access and / or execution by one or more respective processor(s) 401 via cache 403. With respect to computing device 110, software and data 310 includes applications 200. With respect to test management system 120, software and data 410 includes test data sets 124, complete end-to-end tests 126, and fragment test programs 300.
[0054] Communications unit 407, in these examples, provides for communication with other data processing systems or devices. In these examples, communications unit 407 includes one or more network interface cards. Communications unit 407 may provide for communication through the use of one or both physical and wireless communications links. Program instructions and data (e.g., software and data 410) used to implement embodiments of the present invention may be downloaded to persistent storage 405 via communications unit 407.
[0055] The I / O interface(s) 406 enable the input and output of data to and from other devices that may be connected to each computer system. For example, the I / O interface(s) 406 may provide connection to external device(s) 408, such as a keyboard, keypad, touch screen, or some other suitable input device, or a combination thereof. The external device(s) 408 may also include portable computer-readable storage media, such as thumb drives, portable optical or magnetic disks, and memory cards. Program instructions and data (e.g., software and data 410) used to implement embodiments of the present invention may be stored on such portable computer-readable storage media and loaded into persistent storage 405 via the I / O interface(s) 406. The I / O interface(s) 406 are also connected to a display 409.
[0056] Display 409 provides a mechanism for displaying data to a user and may be, for example, a computer monitor.
[0057] The programs described herein are identified based on the use for which they are implemented in specific embodiments of the invention. However, it should be understood that any specific program names herein are used merely for convenience and therefore should not limit the invention to any particular use identified and / or implied by such names.
[0058] The present invention may be a system, method, or computer program product, or combination thereof, integrated at any possible level of technical detail. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon for causing a processor to carry out aspects of the present invention.
[0059] A computer-readable storage medium may be any tangible device capable of retaining and storing instructions for use by an instruction-execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disc read-only memory (CD-ROM), digital versatile disk (DVD), Memory Stick®, floppy disk, mechanically encoded devices such as punch cards or grooved ridge structures having instructions recorded thereon, and any suitable combination thereof. Computer-readable storage medium, as used herein, should not be construed as a transitory signal per se, such as, for example, radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through fiber optic cable), or electrical signals transmitted over wires.
[0060] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may include copper transmission cables, fiber optic transmission cables, wireless transmission cables, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions for storage in a computer-readable storage medium within the respective computing / processing device.
[0061] Computer-readable program instructions for carrying out the operations of the present invention may be source or object code written in any combination of one or more programming languages, including assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state-setting data, integrated circuit configuration data, or object-oriented programming languages such as Smalltalk®, C++, and procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or a connection may be made to the external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may be personalized by utilizing state information of the computer-readable program instructions to execute the computer-readable program instructions to perform aspects of the present invention.
[0062] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0063] These computer-readable program instructions may be provided to a processor of a computer or other programmable data processing apparatus to produce a machine such that, when the instructions are executed by the processor of the computer or other programmable data processing apparatus, means are generated for implementing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may also be stored on a computer-readable storage medium capable of directing a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, such that the computer-readable storage medium on which the instructions are stored constitutes an article of manufacture including instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0064] Furthermore, computer-readable program instructions may be loaded into a computer, other programmable data processing apparatus, or other device and caused to perform a series of operational steps on the computer, other programmable apparatus, or other device to generate a computer-implemented process that, when executed on the computer, other programmable apparatus, or other device, implements the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0065] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order depicted. For example, depending on the functionality involved, two blocks shown in succession may actually be realized as a single step, may be executed simultaneously, may be executed substantially simultaneously, may be executed in a partially or fully overlapping manner, or the blocks may possibly be executed in the reverse order. It will also be noted that each block in the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that performs the specified functions or acts or executes a combination of dedicated hardware and computer instructions.
[0066] The description of various embodiments of the present invention has been presented for purposes of illustration and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the invention. The terms used herein have been selected to best explain the principles of the embodiments, practical applications, or technical improvements over commercially available technologies, or to enable those skilled in the art to understand the embodiments disclosed herein. [Explanation of symbols]
[0067] 100 Data Processing Environment 105 Network 110 Computing Devices 120 Test Management System 122 Storage Devices 124 test data sets 126 complete end-to-end tests 200 applications 300 Fragment Test Program
Claims
1. identifying, by one or more processors, a test configuration for testing an application, the application including a plurality of components, the test configuration including instructions for testing at least one component of the application; testing, by one or more processors, at least one designated component of the application; determining, by one or more processors, a validation result of testing at least one designated component of the application; Including, Testing at least one indicated component of the application includes: receiving, by one or more processors, data output from at least one designated component of said application; comparing, by one or more processors, the received data output with verified data output from a verified end-to-end test data set corresponding to the application; further comprising: method.
2. Identifying the test configuration for testing your application is Identifying, by one or more processors, at least one component of the application that has changed since a previous test of the application; generating, by one or more processors, the test configuration for testing the application, the test configuration including a test suite for the application, the test suite including the instructions for testing the at least one component of the application; The method of claim 1 further comprising:
3. and further comprising: executing, by one or more processors, a complete end-to-end test on the application, wherein executing the complete end-to-end test comprises: providing, by one or more processors, a test data set to the application; capturing, by one or more processors, the inputs and outputs of each of the components of said application; storing, by one or more processors, each captured input and output of each component of the application as a verified end-to-end test data set; The method of claim 1 further comprising:
4. Testing at least one indicated component of the application includes: identifying, by one or more processors, validated data inputs from a validated end-to-end test data set corresponding to the application; providing, by one or more processors, the validated data input to at least one designated component of the application; The method of claim 1 further comprising:
5. transmitting, by one or more processors, the determined validation result to a user associated with the application, the determined validation result indicating whether at least one indicated component of the application passed test validation. The method of claim 1 further comprising:
6. Identifying at least one component of the application that has changed since a previous test of the application includes: Identifying, by one or more processors, an indication of a change to the application from a plug-in that manages changes to software associated with the application. The method of claim 2 further comprising:
7. A computer program comprising program instructions, the program instructions comprising: program instructions for identifying a test configuration for testing an application, the application including a plurality of components, the program instructions identifying the test configuration including instructions for testing at least one component of the application; program instructions for testing at least one designated component of the application; program instructions for determining a verification result of a test of at least one designated component of the application; Including, The program instructions for testing at least one indicated component of the application include: program instructions for receiving data output from at least one designated component of the application; program instructions for comparing the received data output with verified data output from a verified end-to-end test data set corresponding to the application; The computer program product further comprises:
8. The program instructions identifying a test configuration for testing an application include: program instructions for identifying at least one component of the application that has changed since a previous test; program instructions for generating the test configuration for testing the application, the test configuration including a test suite for the application, the test suite including the instructions for testing the at least one component of the application; 8. The computer program of claim 7, further comprising:
9. further comprising program instructions for performing a complete end-to-end test on the application, the program instructions for performing the complete end-to-end test comprising: program instructions for supplying a test data set to the application; program instructions for capturing the inputs and outputs of each component of said application; program instructions for storing each captured input and output of each component of the application as a verified end-to-end test data set; 8. The computer program of claim 7, further comprising:
10. The program instructions for testing at least one indicated component of the application include: program instructions for identifying validated data inputs from a validated end-to-end test data set corresponding to the application; program instructions for providing the verified data input to at least one designated component of the application; 8. The computer program of claim 7, further comprising:
11. and program instructions for transmitting the determined verification result to a user associated with the application, the determined verification result indicating whether at least one indicated component of the application passed test verification.
8. The computer program of claim 7, further comprising:
12. one or more processors; one or more computer-readable storage media; program instructions stored on the one or more computer-readable storage media for execution by at least one of the one or more processors; wherein the program instructions include: program instructions for identifying a test configuration for testing an application, the application including a plurality of components, the program instructions identifying the test configuration including instructions for testing at least one component of the application; program instructions for testing at least one designated component of the application; program instructions for determining a verification result of a test of at least one designated component of the application; Including, The program instructions for testing at least one indicated component of the application include: program instructions for receiving data output from at least one designated component of the application; program instructions for comparing the received data output with verified data output from a verified end-to-end test data set corresponding to the application; further comprising: Computer systems.
13. The program instructions identifying a test configuration for testing an application include: program instructions for identifying at least one component of the application that has changed since a previous test; program instructions for generating the test configuration for testing the application, the test configuration including a test suite for the application, the test suite including the instructions for testing the at least one component of the application; 13. The computer system of claim 12, further comprising:
14. program instructions stored on the one or more computer-readable storage media for execution by at least one of the one or more processors, for performing a complete end-to-end test on the application; and wherein the program instructions for performing the complete end-to-end test further include: program instructions for supplying a test data set to the application; program instructions for capturing the inputs and outputs of each component of said application; program instructions for storing each captured input and output of each component of the application as a verified end-to-end test data set; 13. The computer system of claim 12, further comprising:
15. The program instructions for testing at least one indicated component of the application include: program instructions for identifying validated data inputs from a validated end-to-end test data set corresponding to the application; program instructions for providing the verified data input to at least one designated component of the application; 13. The computer system of claim 12, further comprising:
16. and program instructions stored on the one or more computer-readable storage media for execution by at least one of the one or more processors for transmitting the determined verification result to a user associated with the application, the determined verification result indicating whether at least one indicated component of the application passed test verification.
13. The computer system of claim 12, further comprising:
17. The program instructions for identifying at least one component of the application that has changed since a previous test include: program instructions for receiving instructions for changes to the application from a plug-in that manages changes to software associated with the application; 14. The computer system of claim 13, further comprising:
Citation Information
Patent Citations
Built-in system test method and device, and record medium
JP1999212825A
Operator simulation system and operator simulation method
JP2007140954A
Test support system, method, and program
JP2010122959A
Device and method for testing program
JP2011159008A
Transition test support system, transition test support program, and transition test support method
JP2012203580A