Performance testing in a software deployment pipeline
First Claim
Patent Images
1. A computer-implemented method, comprising:
- deploying, based at least in part on a checkin of a software product, a build of the software product to a test environment prior to the build of the software product being deployed to a production environment;
generating a plurality of test transactions;
automatically performing a plurality of performance tests on the build of the software product in the test environment in response to said deploying the build of the software product to the test environment, wherein the performance tests include;
a performance test selected from a load test category, wherein each of the performance tests in the load test category comprises increasing a rate of transactions to the test environment to which the software product has been deployed until a predetermined latency threshold or an error rate threshold is reached, and wherein the performance tests are performed using at least one of the plurality of test transactions generated; and
another performance test selected from a sanity test category or a latency test category;
collecting a plurality of performance metrics based on the plurality of performance tests, wherein at least one performance test is configured in accordance with one or more respective pre-defined specifications;
determining whether the build of the software product passes or fails one or more of the performance tests based on one or more of the performance metrics; and
deploying the build of the software product to the production environment if the build of the software product passes the plurality of performance tests, and rejecting the build of the software product if the build of the software product fails one or more of the performance tests.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods and systems for performance testing in a software deployment pipeline are disclosed. One or more performance tests are automatically performed on a build of a software product in a test environment in response to deploying the build to the test environment. One or more performance metrics are collected based on the performance tests. Based on the performance metrics, the build of the software product is accepted or rejected.
70 Citations
20 Claims
-
1. A computer-implemented method, comprising:
-
deploying, based at least in part on a checkin of a software product, a build of the software product to a test environment prior to the build of the software product being deployed to a production environment; generating a plurality of test transactions; automatically performing a plurality of performance tests on the build of the software product in the test environment in response to said deploying the build of the software product to the test environment, wherein the performance tests include; a performance test selected from a load test category, wherein each of the performance tests in the load test category comprises increasing a rate of transactions to the test environment to which the software product has been deployed until a predetermined latency threshold or an error rate threshold is reached, and wherein the performance tests are performed using at least one of the plurality of test transactions generated; and another performance test selected from a sanity test category or a latency test category; collecting a plurality of performance metrics based on the plurality of performance tests, wherein at least one performance test is configured in accordance with one or more respective pre-defined specifications; determining whether the build of the software product passes or fails one or more of the performance tests based on one or more of the performance metrics; and deploying the build of the software product to the production environment if the build of the software product passes the plurality of performance tests, and rejecting the build of the software product if the build of the software product fails one or more of the performance tests. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A system, comprising:
one or more computers configured to implement a software build approval system, wherein the software build approval system comprises; a transaction generator module configured to generate a plurality of test transactions; a test environment deployment module configured to deploy, based at least in part on a checkin of a software product, a build of the software product to a test environment prior to the build of the software product being deployed to a production environment, wherein the test environment comprises one or more hosts configured to execute the build of the software product; a performance testing module configured to; apply a plurality of performance tests, using the plurality of test transactions generated by the transaction generator module, to the build of the software product in the test environment, wherein the performance tests include; a performance test selected from a load test category, wherein for the performance tests in the load test category a rate of transactions to the one or more hosts configured to execute the build of the software product is increased until a predetermined latency threshold or an error rate threshold is reached; and another performance test selected from a sanity test category or a latency test category; collect a plurality of performance metrics based on the plurality of performance tests; and determine whether to accept or reject the build of the software product based on the plurality of performance metrics; and a production environment deployment module configured to; deploy the build of the software product to a production environment in response to a determination to accept the build of the software product based on the plurality of performance metrics collected; and reject the build of the software product in response to a determination to reject the build of the software product based on the plurality of performance metrics collected. - View Dependent Claims (8, 9, 10)
-
11. A system, comprising:
one or more computing devices having one or more hardware processors and memory and configured to implement one or more services, wherein the one or more services are configured to; deploy, based at least in part on a checkin of a software product, a build of a software product to a test environment prior to the build of the software product being deployed to a production environment; generate a plurality of transactions for the test environment; automatically cause the build of the software product to process at least some of the generated transactions in performance tests of the test environment, wherein the performance tests include; a performance test selected from a load test category, wherein for the performance tests in the load test category a rate of transactions to the test environment to which the software product has been deployed is increased until a predetermined latency threshold or an error rate threshold is reached, and wherein the test environment comprises one or more test hosts, each test host configured to simulate a respective production condition; and another performance test selected from a sanity test category or a latency test category; collect a plurality of performance metrics for the build of the software product based on the plurality of transactions processed in the test environment; determine whether to pass or fail the build of the software product based on whether the performance metrics collected satisfy one or more predefined criteria; automatically deploy the build of the software product to a production environment in response to a determination to pass the build of the software product based on the performance metrics collected; and automatically reject the build of the software product in response to a determination to fail the build of the software product failed based on the performance metrics collected. - View Dependent Claims (12, 13, 14, 15)
-
16. A non-transitory computer-readable storage medium storing program instructions computer-executable to perform:
-
deploying, based on a checkin of a set of program code, the set of program code to a test environment distinct from a production environment and comprising one or more test hosts, prior to the set of program code being deployed to the production environment; generating a plurality of test transactions; applying a plurality of performance tests, using at least some of the generated test transactions, to the set of program code in the test environment in response to said deploying the set of program code to the test environment, wherein the plurality of performance tests include; a performance test selected from a load test category, wherein each of the performance tests in the load test category comprises increasing a rate of transactions to the test environment to which the software product has been deployed until a predetermined latency threshold or an error rate threshold is reached; and another performance test selected from a sanity test category or a latency test category; collecting a plurality of performance metrics based on the plurality of performance tests, wherein at least one of the performance tests is configured to simulate a respective production environment condition; determining whether to accept or reject the set of program code based at least in part on the performance metrics; and deploying the set of program code to a production environment if said determining determines to accept the set of program code based on the performance metrics, and rejecting the set of program code if said determining determines to reject the set of program code based on the performance metrics. - View Dependent Claims (17, 18, 19, 20)
-
Specification