Advanced system and method for continuous testing and delivery of software
OwnerAlon EIZENMAN, Eran SHER +1inventors
InventorsAlon EIZENMAN, Eran SHER, Nadav Yeheskel
Life of this patent
Estimating the term…
Abstract
A system and method for CI/CT/CD, which is continuous integration/continuous testing/continuous delivery, in which testing is fully integrated to the needs of rapid code development and delivery. Such a system and method may also determine a relative importance of a selected test in a plurality of tests, such that the system and method may comprise a computational device for receiving one or more characteristics relating to an importance of the code, an importance of each of the plurality of tests, or both; and for determining the relative importance of the selected test according to said characteristics.
Claims33
A system for determining a relative importance of a selected test in a plurality of tests for testing code, comprising:
- a. a computational device for receiving one or more characteristics relating to an importance of said code, an importance of each of said plurality of tests, or both;
- b. said computational device comprising a memory for storing instructions and a processor for executing said stored instructions to determine the relative importance of the selected test;
- c. an analyzer executed by said processor for determining a relationship between the selected test and the code that is tested according to a statistical analysis, a machine learning algorithm or a combination thereof;
- d, wherein said characteristics relate to an importance of said code and are selected from the group consisting of interactions between a section of the code and other sections, an importance of the code overall for execution in production, code with many changes or new commits, and otherwise modified code;
- and
- e, wherein said characteristics relate to an importance of said plurality of tests and are selected from the group consisting of tests that apply to code that is deemed important, tests that have failed previously, a new test, and a test that is testing modified code.
A test selection system comprising one or more computing devices, wherein the test selection system is configured to:
- a. execute a set of a plurality of tests on a first set of program code, wherein execution of each respective test generates data indicative of code coverage of the respective test;
- b. store a mapping of the tests to the first set of program code based on the code coverage data, wherein the mapping comprises data indicating portions of the first set of program code exercised by said respective tests;
- c. receive a second set of program code, comprising modifications to said first set of program code, associated with data indicating one or more modified portions;
- d. select a subset of the tests likely to exercise the second set of program code based on:
- i. the mapping of the tests to the first set of program code,
- ii. the data indicating the one or more modified portions, and
- iii. a determination of a relationship between the mapping of the tests to the one or more modified portions;
- and
- e. cause the subset of tests to be executed on the second set of program code.
A computer-implemented method, comprising:
- a. receiving a mapping of tests to a first set of program code, wherein the mapping is based on code coverage data generated from execution of the tests on the first set of program code and indicates portions of the first set exercised by respective tests;
- and
- b. determining a subset of the tests likely to exercise a second set of program code comprising one or more modified portions of the first set of program code, based on:
- i. the mapping,
- ii. data indicating the one or more modified portions, and
- iii. a determination of a relationship between the mapping of the tests to the one or more modified portions.
A computer-readable storage medium storing instructions computer-executable to perform:
- a. executing tests on a first version of program code to generate code coverage data;
- b. storing a mapping of the tests to the first version based on the code coverage data, wherein the mapping indicates portions of the first version exercised by respective tests;
- c. receiving data indicating modifications to one or more portions of the first version of the code for a second version of the program code;
- d. determining a subset of the tests likely to exercise the second version based on:
- i. the mapping,
- ii. the data indicating modified portions, and
- iii. a determination of a relationship between the mapping of the tests to the one or more modified portions;
- and
- e. initiating execution of the subset on the second version.
A computer-implemented method for continuous integration, continuous testing, and continuous delivery (CI/CT/CD) of software, the method comprising:
- receiving a mapping of a suite of tests to a first set of program code, wherein data indicative of code coverage is generated using execution of the tests on the first set of program code;
- determining a subset of the tests that are likely to exercise a second set of program code that comprises one or more modified portions of the first set of program code, based at least in part on the mapping and the data indicative of the one or more modified portions, as well as a determination of a relationship between the mapping of the tests to the one or more modified portions;
- and
- executing the subset of the tests on the second set of program code.
A system, comprising:
- one or more computing devices configured to implement a test selection system, wherein the test selection system is configured to:
- execute a suite of tests on a first set of program code, wherein execution of a respective test from the suite generates data indicative of code coverage of the respective test with respect to the first set of program code;
- store a mapping of the tests to the first set of program code, wherein the mapping is determined based at least in part on the data indicative of code coverage;
- receive a second set of program code, wherein the second set of program code is associated with data indicative of one or more modified portions of the first set of program code;
- select a subset of the tests that are likely to exercise the second set of program code based at least in part on the mapping and the data indicative of the one or more modified portions of the first set of program code;
- and
- cause the subset of the tests to be executed on the second set of program code;
- further comprising a test execution module configured to execute selected tests across different environments and testing tools;
- wherein said mapping is performed per test executed on code in a selected environment, and also according to at least one previous mapping for said code in a different environment.
A non-transitory computer-readable storage medium storing program instructions computer-executable to perform:
- executing a suite of tests on a first version of program code, wherein execution of a respective test from the suite generates data indicative of code coverage of the respective test with respect to the program code;
- storing a mapping of the tests to the program code, wherein the mapping is determined based at least in part on the data indicative of code coverage;
- receiving data indicative of one or more modified portions of a second version of the program code, wherein said one or more modified portions are modified from said first version of the program code;
- determining a subset of the tests that are likely to exercise the second version of the program code, based at least in part on the mapping and the data indicative of the one or more modified portions of the second version of the program code;
- and
- initiating execution of the subset of the tests on the second version of the program code.
A method for automatic build discovery in a CI/CT/CD system, the method comprising:
- monitoring a distributed testing environment to detect a build version of running components;
- automatically identifying changes in the build version;
- and
- updating a test selection system based on the identified changes to select tests relevant to the new build version.
Dependencies are inferred from the claim text.