Carlos Arguelles

Carlos Arguelles

Seattle, Washington, United States
18K followers 500+ connections

Activity

Join now to see all activity

Licenses & Certifications

Volunteer Experience

Publications

  • How we use Hermetic, Ephemeral Test Environments at Google to reduce Test Flakiness

    IEEE International Conference on Software Testing, Verification and Validation 2023

    At Google we’ve reduced test flakiness by using ephemeral, hermetic test environments. This addresses a number of root causes (unreliable dependencies, hardware issues if communication between your system and its dependencies happens over the network, tests failing to clean up or concurrently modifying state), but it has been challenging to implement at scale, and has brought its own set of problems. Come learn about our journey!

    See publication
  • Bug Management Using Machine Learning

    Defensive Publication

    Automated tests of software can often independently log different bugs for the same underlying problem (root cause). Manually identifying duplicate bugs is a source of toil for engineers. A related problem of bug management is that of bug routing, e.g., determining the right team or person to route a bug report to for the purposes of debugging. This disclosure describes techniques for bug deduplication and bug routing based on machine learning (ML). Per the techniques, a binary machine…

    Automated tests of software can often independently log different bugs for the same underlying problem (root cause). Manually identifying duplicate bugs is a source of toil for engineers. A related problem of bug management is that of bug routing, e.g., determining the right team or person to route a bug report to for the purposes of debugging. This disclosure describes techniques for bug deduplication and bug routing based on machine learning (ML). Per the techniques, a binary machine classification model is trained to aggregate bugs with a common root cause. Bugs in a class of bugs with a common root cause are deduplicated, e.g., represented by just one of the multiple bugs in the class. Further, a multi-class ML model is trained to predict the right team for handling a new (incoming) bug.

    Other authors
    See publication
  • Integrating Bug Deduplication in Software Development and Testing

    Defensive Publication

    A bug deduplicator identifies independently discovered bugs that have the same underlying cause. Deduplication of bugs reduces toil for the software team by reducing the number of bugs that developers need to examine. However, if a bug deduplicator incorrectly classifies a bug as a duplicate, human developers might ignore the bug, allowing it to escape to production. A tradeoff exists between toil reduction and risk tolerance. This disclosure describes techniques that enable a software team to…

    A bug deduplicator identifies independently discovered bugs that have the same underlying cause. Deduplication of bugs reduces toil for the software team by reducing the number of bugs that developers need to examine. However, if a bug deduplicator incorrectly classifies a bug as a duplicate, human developers might ignore the bug, allowing it to escape to production. A tradeoff exists between toil reduction and risk tolerance. This disclosure describes techniques that enable a software team to trade off the effort to remove bugs (e.g., auto-close bugs so that humans save toil and time) against the risk of errors in a bug deduplicator. Custom settings and a confidence level that a bug is a duplicate are used to determine whether to log a particular bug, to log it with comments, etc. The techniques enable the embedding of a bug deduplicator at suitable locations within a software development toolchain. The performance of the bug deduplicator can be fine-tuned in real-time by an analysis of its true negative and false positive metrics.

    Other authors
    See publication
  • Critical User Journey Test Coverage

    Defensive Publication

    In the space of software testing, making sure that all critical user scenarios or journeys (CUJs) in a product have been tested is important. A CUJ is essentially a series of steps in the product taken by users of the product to achieve a desired outcome. Ensuring CUJ coverage during testing is a difficult problem that often requires subject matter experts to identify critical scenarios and expensive manual efforts to track coverage. This disclosure describes automatic extraction of CUJs based…

    In the space of software testing, making sure that all critical user scenarios or journeys (CUJs) in a product have been tested is important. A CUJ is essentially a series of steps in the product taken by users of the product to achieve a desired outcome. Ensuring CUJ coverage during testing is a difficult problem that often requires subject matter experts to identify critical scenarios and expensive manual efforts to track coverage. This disclosure describes automatic extraction of CUJs based on analysis of test logs and production logs, e.g., traffic logs at a website. Data mining techniques are applied to merge various sources of data, deduce critical user journeys, and prioritize them during testing. Code release can be gated based on test coverage of a threshold proportion of the identified CUJs.

    Other authors
    See publication
  • Critical User Journey Test Coverage

    TD Commons (Defensive Publication)

    In the space of software testing, making sure that all critical user scenarios or journeys (CUJs) in a product have been tested is important. A CUJ is essentially a series of steps in the product taken by users of the product to achieve a desired outcome. Ensuring CUJ coverage during testing is a difficult problem that often requires subject matter experts to identify critical scenarios and expensive manual efforts to track coverage. This disclosure describes automatic extraction of CUJs based…

    In the space of software testing, making sure that all critical user scenarios or journeys (CUJs) in a product have been tested is important. A CUJ is essentially a series of steps in the product taken by users of the product to achieve a desired outcome. Ensuring CUJ coverage during testing is a difficult problem that often requires subject matter experts to identify critical scenarios and expensive manual efforts to track coverage. This disclosure describes automatic extraction of CUJs based on analysis of test logs and production logs, e.g., traffic logs at a website. Data mining techniques are applied to merge various sources of data, deduce critical user journeys, and prioritize them during testing. Code release can be gated based on test coverage of a threshold proportion of the identified CUJs

    See publication
  • Code Coverage Best Practices

    Official Google Test Blog

    We have spent several decades driving software testing initiatives in various very large software companies. One of the areas that we have consistently advocated for is the use of code coverage data to assess risk and identify gaps in testing. However, the value of code coverage is a highly debated subject with strong opinions, and a surprisingly polarizing topic. Every time code coverage is mentioned in any large group of people, seemingly endless arguments ensue. These tend to lead the…

    We have spent several decades driving software testing initiatives in various very large software companies. One of the areas that we have consistently advocated for is the use of code coverage data to assess risk and identify gaps in testing. However, the value of code coverage is a highly debated subject with strong opinions, and a surprisingly polarizing topic. Every time code coverage is mentioned in any large group of people, seemingly endless arguments ensue. These tend to lead the conversation away from any productive progress, as people securely bunker in their respective camps. The purpose of this document is to give you tools to steer people on all ends of the spectrum to find common ground so that you can move forward and use coverage information pragmatically. We put forth best practices in the domain of code coverage to work effectively with code health.

    Other authors
    See publication

Patents

  • Analysis Of Code Coverage Differences Across Environments

    Issued 11500761

    Methods, systems, and computer-readable media for analysis of code coverage differences across environments are disclosed. A code coverage profiling system determines a first code coverage profile associated with execution of program code in a first environment. The first code coverage profile indicates one or more portions of the program code that were executed in the first environment. The code coverage profiling system determines a second code coverage profile associated with execution of…

    Methods, systems, and computer-readable media for analysis of code coverage differences across environments are disclosed. A code coverage profiling system determines a first code coverage profile associated with execution of program code in a first environment. The first code coverage profile indicates one or more portions of the program code that were executed in the first environment. The code coverage profiling system determines a second code coverage profile associated with execution of the program code in a second environment. The second code coverage profile indicates one or more portions of the program code that were executed in the second environment. The code coverage profiling system performs a comparison of the first code coverage profile and the second code coverage profile. The comparison determines a difference between the portions of the program code that were executed in the first and second environments.

    Other inventors
    See patent
  • Framework for Performing Load Testing and Profiling of Services

    Issued US 10,915,437

    Other inventors
    See patent
  • Contributed test management in deployment pipelines

    Issued US 10719427

    A contributed test management system receives a first request from a consumer system, where the first request comprises a request for a contributed test to be added to a deployment pipeline of a producer system, and where the contributed test is associated with an application component in the deployment pipeline. The contributed test management system causes the contributed test to test a code update provided by the producer system for the application component in the deployment pipeline…

    A contributed test management system receives a first request from a consumer system, where the first request comprises a request for a contributed test to be added to a deployment pipeline of a producer system, and where the contributed test is associated with an application component in the deployment pipeline. The contributed test management system causes the contributed test to test a code update provided by the producer system for the application component in the deployment pipeline, detects whether the first test fails during execution, and, if so indicates to the consumer system that the first test has failed.

    Other inventors
    See patent
  • Ordered test execution based on test coverage

    Issued US 10,678,678

    Methods, systems, and computer-readable media for ordered test execution based on code coverage are disclosed. A suite of tests are executed on a first version of program code to generate data indicative of code coverage of respective tests with respect to the program code. A mapping of the tests to the program code is determined based at least in part on the data indicative of code coverage and is stored. The mapping comprises data indicative of one or more portions of the program code…

    Methods, systems, and computer-readable media for ordered test execution based on code coverage are disclosed. A suite of tests are executed on a first version of program code to generate data indicative of code coverage of respective tests with respect to the program code. A mapping of the tests to the program code is determined based at least in part on the data indicative of code coverage and is stored. The mapping comprises data indicative of one or more portions of the program code exercised by respective tests from the suite. Based at least in part on the mapping of the tests to the program code and on data indicative of one or more modified or new portions of a second version of the program code, a subset of the tests is determined that are likely to be exercised by the second version of the program code.

    Other inventors
    See patent
  • Optimization of Application Parameters

    Issued US 10,666,716

    Optimization preferences are defined for optimizing execution of a distributed application. Candidate sets of application parameter values may be tested in test execution environments. Measures of performance for metrics of interest are determined based upon the execution of the distributed application using the candidate sets of application parameter values. Utility curves may be utilized to compute measures of effectiveness for metrics of interest. A multi-attribute rollup operation may…

    Optimization preferences are defined for optimizing execution of a distributed application. Candidate sets of application parameter values may be tested in test execution environments. Measures of performance for metrics of interest are determined based upon the execution of the distributed application using the candidate sets of application parameter values. Utility curves may be utilized to compute measures of effectiveness for metrics of interest. A multi-attribute rollup operation may utilize the computed measures of effectiveness and weights to compute a grand measure of merit (MOM) for the candidate sets of application parameter values. An optimized set of application parameter values may then be selected based upon the computed grand MOMs. The optimized set of application parameter values may be deployed to a production execution environment executing the distributed application. Production safe application parameters might also be identified and utilized to optimize execution of the distributed application in a production execution environment.

    Other inventors
    See patent
  • Automatic Determination of Maximum Service Throughput

    Issued US 10,523,511

    Methods, systems, and computer-readable media for determining the maximum throughput of a service are disclosed. A first sequence of load tests is initiated for a service host. Individual ones of the load tests comprise determining a respective throughput at the service host for a respective number of concurrent connections to the service host. The number of concurrent connections increases nonlinearly in at least a portion of the first sequence of load tests. The first sequence of load tests…

    Methods, systems, and computer-readable media for determining the maximum throughput of a service are disclosed. A first sequence of load tests is initiated for a service host. Individual ones of the load tests comprise determining a respective throughput at the service host for a respective number of concurrent connections to the service host. The number of concurrent connections increases nonlinearly in at least a portion of the first sequence of load tests. The first sequence of load tests is discontinued when the throughput is not increased by a threshold from one of the load tests to the next. An estimated maximum throughput for the service host is determined based at least in part on the first sequence of load tests. The estimated maximum throughput corresponds to a particular number of concurrent connections to the service host.

    See patent
  • Non-deterministic load-testing

    Issued US 10489807

    This patent relates to stress testing a computer system using a non-deterministic technique (e.g., randomly adjusting transaction intensity). Based on a load testing specification, the system: (a) identifies the number of virtual computing instances as well as (b) a particular way of determining a threshold. The threshold that is used to make the request is determined based on historical criteria for the virtual computing service. The historical criteria acts as a source of the…

    This patent relates to stress testing a computer system using a non-deterministic technique (e.g., randomly adjusting transaction intensity). Based on a load testing specification, the system: (a) identifies the number of virtual computing instances as well as (b) a particular way of determining a threshold. The threshold that is used to make the request is determined based on historical criteria for the virtual computing service. The historical criteria acts as a source of the non-deterministic character of the non-deterministic testing. For example, the threshold may be determined based on historical pricing data such that the load testing will be performed in a non-deterministic manner with respect to time.

    See patent
  • Synthetic data generation from a service description language model

    Issued US 10452522



    Embodiments presented herein provide techniques for dynamically generating synthetic test data used to test a web service. In one embodiment, a service description language document defining a web service may include a test interface definition. The test interface definition specifies rules for generating the synthetic data to use when testing API interfaces exposed by the web service, e.g., to generate synthetic data needed carry out load and performance testing. Including rules for…



    Embodiments presented herein provide techniques for dynamically generating synthetic test data used to test a web service. In one embodiment, a service description language document defining a web service may include a test interface definition. The test interface definition specifies rules for generating the synthetic data to use when testing API interfaces exposed by the web service, e.g., to generate synthetic data needed carry out load and performance testing. Including rules for generating test data in the service description language document provides a centralized and authoritative source for both building and testing the web service.

    See patent
  • Decoupled load generation architecture

    Issued US 10444744

    Techniques, including systems and methods, for testing systems utilize a decoupled architecture. A device for administering a test on a system is decoupled from one or more other devices that apply a load on the system as part of the test. The one or more devices that apply the load on the system and the system itself may be located in a common facility. The one or more devices that apply the load on the system may apply the load in a manner specific to one or more applications executing on the…

    Techniques, including systems and methods, for testing systems utilize a decoupled architecture. A device for administering a test on a system is decoupled from one or more other devices that apply a load on the system as part of the test. The one or more devices that apply the load on the system and the system itself may be located in a common facility. The one or more devices that apply the load on the system may apply the load in a manner specific to one or more applications executing on the system.

    Other inventors
    See patent
  • Performance testing in a software deployment pipeline

    Issued US Performance testing in a software deployment pipeline

    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.

    See patent
  • Load testing with automated service dependency discovery

    Issued US 10,216,608

    Methods, systems, and computer-readable media for load testing with automated service dependency discovery are disclosed. A request is received to approve load testing for a service. One or more downstream services are identified for the service. The one or more downstream services are identified based at least in part using automated discovery. The availability of the one or more downstream services for load testing is determined. The request is approved or denied based at least in part on the…

    Methods, systems, and computer-readable media for load testing with automated service dependency discovery are disclosed. A request is received to approve load testing for a service. One or more downstream services are identified for the service. The one or more downstream services are identified based at least in part using automated discovery. The availability of the one or more downstream services for load testing is determined. The request is approved or denied based at least in part on the availability of the one or more downstream services for load testing.

    See patent
  • Workflow support for an annotations-based generic load generator

    Issued US 10,185,937

    A generic transaction generator framework for testing a network-based production service may work in conjunction with a product-specific transaction creator module that executes transactions on the service. The transaction creator module may include runtime-discoverable information, such as source code annotations, to communicate product specific details to the framework. Runtime-discoverable information may identify transaction types, transaction methods, as well as dependencies between…

    A generic transaction generator framework for testing a network-based production service may work in conjunction with a product-specific transaction creator module that executes transactions on the service. The transaction creator module may include runtime-discoverable information, such as source code annotations, to communicate product specific details to the framework. Runtime-discoverable information may identify transaction types, transaction methods, as well as dependencies between different transaction types and transaction methods. The framework may generate and execute various test transactions and may call a substituted transaction method for a transaction type on which a generated transaction depends prior to calling the generated transaction. The output from the substituted transaction may be used as input to the generated transaction when executed subsequently.

    Other inventors
    See patent
  • Generating source code review comments using code analysis tools

    Issued US 10,180,836

    Technologies are disclosed herein for generating comments in a source code review tool using code analysis tools. A producer module can be executed in order to obtain source code from a source code review tool. One or more source code analysis modules can then be executed in order to analyze the source code. A reporter module can then store the output of the source code analysis modules as comments in the source code review tool for use by a developer of the source code. The producer, reporter,…

    Technologies are disclosed herein for generating comments in a source code review tool using code analysis tools. A producer module can be executed in order to obtain source code from a source code review tool. One or more source code analysis modules can then be executed in order to analyze the source code. A reporter module can then store the output of the source code analysis modules as comments in the source code review tool for use by a developer of the source code. The producer, reporter, and source code analysis modules can be executed in response to a request from the source code developer to perform a source code review, by a job scheduler, or in another manner. An application programming interface (API) exposed by the source code review tool can be utilized to obtain the source code and to store the comments associated with the source code.

    Other inventors
    See patent
  • Tracking work in an asynchronous application or service during load testing

    Issued US 10,135,709

    Embodiments presented herein provide techniques for evaluating an asynchronous application using a test framework. The test framework may perform a load test of an asynchronous application or service composed from a collection of applications or services. To do so, the test framework may submit transactions to a distributed application at a specified transaction rate and monitor how the distributed application operates at that transaction rate. An aggregate load test component may evaluate the…

    Embodiments presented herein provide techniques for evaluating an asynchronous application using a test framework. The test framework may perform a load test of an asynchronous application or service composed from a collection of applications or services. To do so, the test framework may submit transactions to a distributed application at a specified transaction rate and monitor how the distributed application operates at that transaction rate. An aggregate load test component may evaluate the remaining work pending at work accumulation points of the distributed application to determine whether the distributed application can sustain the specified transaction rate. A transaction tracking component may initiate transactions to generate load at the specified transaction rate without blocking while the transactions are processed by the distributed application.

    Other inventors
    See patent
  • Promotion determination based on aggregated code coverage metrics

    Issued US 10,102,106

    Techniques are described for aggregating code coverage data generated from various types of testing of software modules, and automatically determining whether to promote software upwards in a multi-level software deployment hierarchy based on the aggregated code coverage data. In embodiments, a code coverage metric is determined for a software module, and the metric is compared to a set of promotion criteria, including whether the metric meets a predetermined threshold for quality. In some…

    Techniques are described for aggregating code coverage data generated from various types of testing of software modules, and automatically determining whether to promote software upwards in a multi-level software deployment hierarchy based on the aggregated code coverage data. In embodiments, a code coverage metric is determined for a software module, and the metric is compared to a set of promotion criteria, including whether the metric meets a predetermined threshold for quality. In some cases, the threshold may be a general threshold, a threshold based on the level of possible promotion, and/or a threshold that is based on an identified category for the software module such as whether the module is a front-end module, a shared module, a legacy module, or a critical module.

    See patent
  • Executing integration tests in a distributed load and performance evaluation framework

    Issued US 10,095,596

    A software testing framework provides functionality for utilizing pre-existing tests to load and performance test a network service. Methods can be tagged with annotations indicating that they are tests, such as integration tests. The methods implementing the integration tests can also be tagged with other types of annotations that can be used to select individual tests for use in testing, such as annotations indicating whether a test is a positive or negative test, annotations specifying…

    A software testing framework provides functionality for utilizing pre-existing tests to load and performance test a network service. Methods can be tagged with annotations indicating that they are tests, such as integration tests. The methods implementing the integration tests can also be tagged with other types of annotations that can be used to select individual tests for use in testing, such as annotations indicating whether a test is a positive or negative test, annotations specifying dependencies upon other tests, or annotations indicating that a test is a member of a test suite. The annotations can be utilized in conjunction with test selection criteria to select individual integration tests for use in load and performance testing of the network service. The selected integration tests can be deployed to and executed upon load-generating instances to execute the integration tests and generate requests to the network service at high throughput.

    See patent
  • Data Providers for Annotations Based Generic Load Generator

    Issued US 9,870,310

    A generic transaction generator framework for testing a network-based production service may work in conjunction with a product-specific transaction creator module that executes transactions on the service. The transaction creator module may include runtime-discoverable information, such as source code annotations, to communicate product specific details to the framework. Runtime-discoverable information may identify transaction types, transaction methods, data provider methods and data…

    A generic transaction generator framework for testing a network-based production service may work in conjunction with a product-specific transaction creator module that executes transactions on the service. The transaction creator module may include runtime-discoverable information, such as source code annotations, to communicate product specific details to the framework. Runtime-discoverable information may identify transaction types, transaction methods, data provider methods and data sources. The framework may generate and execute various test transactions and may call a data provider method to prepare data for the transaction and pass the prepared data to a transaction method. The framework may also load and parse test data from a data source and provide the test data to the data provider method for use when preparing data for the transaction.

    Other inventors
    See patent
  • Distributed software testing

    Issued US 9,811,451

    Technologies are disclosed herein for distributed software testing. A software testing service is disclosed that can receive tests for software under test. The software testing service can determine a number of test instances to utilize to perform the tests. The determined number of test instances can then be provisioned, such as through the use of an on-demand computing service executing in a service provider network. The test instances can also be configured with the software under test and a…

    Technologies are disclosed herein for distributed software testing. A software testing service is disclosed that can receive tests for software under test. The software testing service can determine a number of test instances to utilize to perform the tests. The determined number of test instances can then be provisioned, such as through the use of an on-demand computing service executing in a service provider network. The test instances can also be configured with the software under test and a test runner capable of performing the tests on the software. The software testing service can place the tests on a queue, such as a queue provided by a queue service. The test runners executing on the test instances can dequeue the tests and perform the tests on the software. Once the testing of the software under test has been completed, the test instances can be de-provisioned.

    Other inventors
    See patent
  • Optimization of application parameters

    Issued US 9,692,811

    Optimization preferences are defined for optimizing execution of a distributed application. Candidate sets of application parameter values may be tested in test execution environments. Measures of performance for metrics of interest are determined based upon the execution of the distributed application using the candidate sets of application parameter values. Utility curves may be utilized to compute measures of effectiveness for metrics of interest. A multi-attribute rollup operation may…

    Optimization preferences are defined for optimizing execution of a distributed application. Candidate sets of application parameter values may be tested in test execution environments. Measures of performance for metrics of interest are determined based upon the execution of the distributed application using the candidate sets of application parameter values. Utility curves may be utilized to compute measures of effectiveness for metrics of interest. A multi-attribute rollup operation may utilize the computed measures of effectiveness and weights to compute a grand measure of merit (MOM) for the candidate sets of application parameter values. An optimized set of application parameter values may then be selected based upon the computed grand MOMs. The optimized set of application parameter values may be deployed to a production execution environment executing the distributed application.

    See patent
  • Automated determination of maximum service throughput

    Issued US 9,647,919

    Methods, systems, and computer-readable media for determining the maximum throughput of a service are disclosed. A first sequence of load tests is initiated for a service host. Individual ones of the load tests comprise determining a respective throughput at the service host for a respective number of concurrent connections to the service host. The number of concurrent connections increases nonlinearly in at least a portion of the first sequence of load tests. The first sequence of load tests…

    Methods, systems, and computer-readable media for determining the maximum throughput of a service are disclosed. A first sequence of load tests is initiated for a service host. Individual ones of the load tests comprise determining a respective throughput at the service host for a respective number of concurrent connections to the service host. The number of concurrent connections increases nonlinearly in at least a portion of the first sequence of load tests. The first sequence of load tests is discontinued when the throughput is not increased by a threshold from one of the load tests to the next. An estimated maximum throughput for the service host is determined based at least in part on the first sequence of load tests. The estimated maximum throughput corresponds to a particular number of concurrent connections to the service host.

    See patent
  • Architecture for end-to-end testing of long-running, multi-stage asynchronous data processing services

    Issued US 9,639,444

    This patent relates to end-to-end testing of long running asynchronous data processing systems where it may take hours or days for data to get from one end of the system to the other (e.g., a large-scale ecommerce website in which data is logged an analyzed). The invention simplifies end-to-end testing of such systems by dividing the testing into independent single-stage tests that can be inter-connected to form longer running tests. A scalable test data repository service handles the storing…

    This patent relates to end-to-end testing of long running asynchronous data processing systems where it may take hours or days for data to get from one end of the system to the other (e.g., a large-scale ecommerce website in which data is logged an analyzed). The invention simplifies end-to-end testing of such systems by dividing the testing into independent single-stage tests that can be inter-connected to form longer running tests. A scalable test data repository service handles the storing and fetching of actual and expected data across test machines, abstracting the actual storage method so that the tests do not have to be storage-dependent and can easily be migrated to other storage solutions if needed. With this infrastructure, end-to-end integration tests can be performed for long running multi-stage data processing service in a fraction of the time required by other test frameworks.

    See patent
  • Annotations Based Generic Load Generator Engine

    Issued US 9,558,465

    This patent relates to helping ensure production systems are robust by allowing a user to create a load generator in Java frameworks to test their services before they are moved to production. The invention uses a generic transaction generator that works together with a product-specific transaction creator to generate test transactions to load the service. The transaction creator includes runtime-discoverable information, such as source code annotations, to communicate product specific details…

    This patent relates to helping ensure production systems are robust by allowing a user to create a load generator in Java frameworks to test their services before they are moved to production. The invention uses a generic transaction generator that works together with a product-specific transaction creator to generate test transactions to load the service. The transaction creator includes runtime-discoverable information, such as source code annotations, to communicate product specific details to the transaction generator. The runtime-discoverable information may identify initialization methods, terminate methods, transaction types, transaction methods, as well as dependencies between different transactions. Additionally, the runtime-discoverable information can identify various testing parameters, such as transaction rate, testing period and/or a desired distribution among various transaction types. The transaction generator generates various test transactions, causes them to be executed on the service, and collects performance metrics regarding how well the service performed the test transactions.

    Other inventors
    See patent
  • Ordered Test Execution to Enable Faster Feedback

    Issued US 9,514,034

    This patent relates to speeding up software development through the use of ordered test execution to enable faster feedback. In a test suite for testing a computer program, the individual tests are ordered in a sequence based on their likelihood of failure. The tests that are more likely to fail are performed earlier, so that a developer can be notified of failure or the test suite can be suspended as soon as possible.

    Other inventors
    See patent
  • Scalable Testing in a Production System with Autoscaling

    Issued US 9,507,681

    This patent relates to a highly-scalable test system for testing large network-based production services (e.g., Amazon.com). The test system includes scalable job controllers for specifying test jobs, and a scalable pool of workers to perform the test jobs on the production service. A job queue is used to de-couple the job controllers from the workers such that the job controllers and the workers may be scaled independently from one another. The test jobs may utilize previously captured…

    This patent relates to a highly-scalable test system for testing large network-based production services (e.g., Amazon.com). The test system includes scalable job controllers for specifying test jobs, and a scalable pool of workers to perform the test jobs on the production service. A job queue is used to de-couple the job controllers from the workers such that the job controllers and the workers may be scaled independently from one another. The test jobs may utilize previously captured production request data from the production service to create a test load. The test system also includes an auto-scaling feature to scale the workers as needed (and independently from the job controllers).

    Other inventors
    See patent
  • Varying Cluster Sizes in a Predictive Test Load While Testing a Production Environment

    Issued US 9,459,980

    This patent relates to helping ensure production systems are robust by modeling potential situations (e.g., what if right now, 30% of the transactions are X, but this will go up to 80% in the future?) with real world production data instead of randomly generated data. This is accomplished by clustering real world production data for use in generating a predictive test load. Real production data is turned into vectors and the vectors are clustered. The clusters form patterns that are useful in…

    This patent relates to helping ensure production systems are robust by modeling potential situations (e.g., what if right now, 30% of the transactions are X, but this will go up to 80% in the future?) with real world production data instead of randomly generated data. This is accomplished by clustering real world production data for use in generating a predictive test load. Real production data is turned into vectors and the vectors are clustered. The clusters form patterns that are useful in the creation of predicted data loads that can be used to test a production system. In particular, the cluster definitions are used to sort the production data into a predictive test load.

    Other inventors
    • Carlos Arguelles
    See patent
  • Scalable Load Testing Using a Queue

    Issued US 9,396,039

    This patent relates to improving the scalability of load testing systems. A total target load is divided into smaller jobs, and the jobs are placed in a queue. Individual worker hosts retrieve the jobs from the queue and execute them locally to implement the load test. The individual worker hosts self-adjust to different portions of the total target load, and the number of worker hosts may be automatically adjusted according to the requirements of the load test.

    Other inventors
    See patent
  • Scalable Testing in a Production Environment with Auto Shutdown

    Issued US 9,363,156

    This patent relates to a highly-scalable test system for testing large network-based production services (e.g., Amazon.com). The test system includes scalable job controllers for specifying test jobs, and a scalable pool of workers to perform the test jobs on the production service. A job queue is used to de-couple the job controllers from the workers such that the job controllers and the workers may be scaled independently from one another. The test jobs may utilize previously captured…

    This patent relates to a highly-scalable test system for testing large network-based production services (e.g., Amazon.com). The test system includes scalable job controllers for specifying test jobs, and a scalable pool of workers to perform the test jobs on the production service. A job queue is used to de-couple the job controllers from the workers such that the job controllers and the workers may be scaled independently from one another. The test jobs may utilize previously captured production request data from the production service to create a test load. The test system also includes an auto-shutdown feature to prevent a test from overly-stressing the production service. In some cases, auto-shutdown may be implemented by killing the job queue.

    Other inventors
    • Ramakrishnan C H
    See patent
  • System and Method for Load Testing in a Production Environment

    Issued US 9,329,915

    This patent relates to improving the customer experience by using a test system to ensure that a production service with many hosts can scale to handle abnormal loads. The test system includes scalable job controllers for specifying test jobs, and a scalable pool of workers to perform the test jobs on the production service. A job queue is used to de-couple the job controllers from the workers such that the job controllers and the workers may be scaled independently from one another. The test…

    This patent relates to improving the customer experience by using a test system to ensure that a production service with many hosts can scale to handle abnormal loads. The test system includes scalable job controllers for specifying test jobs, and a scalable pool of workers to perform the test jobs on the production service. A job queue is used to de-couple the job controllers from the workers such that the job controllers and the workers may be scaled independently from one another. The test jobs utilize previously captured production request data from the production service to create a test load.

    Other inventors
    • Ramakrishnan C H
    See patent
  • Proxy server testing

    Issued US 9203931

    Systems and associated processes for testing a reverse proxy server are disclosed. A backend proxy server test system can receive a request from a reverse proxy server under test. The request may be generated in response to a request from a test client to access a backend service. In responding to the received request, the backend proxy server test system can include a copy of the received request. Upon the test client receiving the response from the proxy server to the test client's request…

    Systems and associated processes for testing a reverse proxy server are disclosed. A backend proxy server test system can receive a request from a reverse proxy server under test. The request may be generated in response to a request from a test client to access a backend service. In responding to the received request, the backend proxy server test system can include a copy of the received request. Upon the test client receiving the response from the proxy server to the test client's request, the test client can extract the embedded copy of the received request that the reverse proxy server generated to determine whether it matches the request that a functioning reverse proxy server generates. Based, at least in part on the result of this comparison, the test client can determine whether the reverse proxy server is malfunctioning.

    Other inventors
    See patent
  • Automated tuning of a service configuration using load tests on hosts

    Issued US 9,053,070

    Methods and systems for automated tuning of a service configuration are disclosed. An optimal configuration for a test computer is selected by performing one or more load tests using the test computer for each of a plurality of test configurations. The performance of a plurality of additional test computers configured with the optimal configuration is automatically determined by performing additional load tests using the additional test computers. A plurality of production computers are…

    Methods and systems for automated tuning of a service configuration are disclosed. An optimal configuration for a test computer is selected by performing one or more load tests using the test computer for each of a plurality of test configurations. The performance of a plurality of additional test computers configured with the optimal configuration is automatically determined by performing additional load tests using the additional test computers. A plurality of production computers are automatically configured with the optimal configuration if the performance of the additional test computers is improved with the optimal configuration.

    See patent
  • Validation of Log Formats

    Issued US 8,930,330

    Systems and methods for validation of log formats are described herein. Log data is stored via a logging service in a data store or other storage system. An example log or proposed log format is received by the logging service. The proposed log format is validated against validation rules provided by log consumers.

    Other inventors
    See patent
  • Highly reusable test frameworks and tests for web services

    Issued US 8,904,353

    Systems and methods for incrementally building tests and test frameworks may enable cost reduction and/or code sharing between teams testing various products (or features thereof) in different domains or of different product types. Test frameworks may be layered into standalone sub-framework packages that build on each other and whose object classes inherit object classes of lower layers. Sub-framework packages may provide generic utilities, domain-specific testing operations…

    Systems and methods for incrementally building tests and test frameworks may enable cost reduction and/or code sharing between teams testing various products (or features thereof) in different domains or of different product types. Test frameworks may be layered into standalone sub-framework packages that build on each other and whose object classes inherit object classes of lower layers. Sub-framework packages may provide generic utilities, domain-specific testing operations, application-specific testing operations, or operations for specific application types (e.g., web services). Test clients may plug into test frameworks at any layer to exercise features of a product under test. Tests may be built from components at multiple levels of abstraction, and may include test operations, test steps that include multiple test operations, and tests that include multiple test steps. Implementation details of products to be tested may only be visible to, and/or exercised by, the lowest-level elements of the tests (e.g., test operations).

    Other inventors
    See patent
  • Architecture for end-to-end testing of long-running, multi-stage asynchronous data processing services

    Issued US 8,819,488

    One or more computers is configured to run an end-to-end test including at least a plurality of independent tests of multiple stages of an asynchronous multi-stage data processing system. One of the set of independent tests is configured to send a request for test input data from a test data repository service for a particular stage. A converted version of the test input data is obtained. A comparison of the converted version to the output of the particular stage to verify operation of the…

    One or more computers is configured to run an end-to-end test including at least a plurality of independent tests of multiple stages of an asynchronous multi-stage data processing system. One of the set of independent tests is configured to send a request for test input data from a test data repository service for a particular stage. A converted version of the test input data is obtained. A comparison of the converted version to the output of the particular stage to verify operation of the particular stage is obtained. The output of the particular stage is transmitted to the test data repository service. One or more computers is configured to provide the test data repository service. The test data repository service is configured to store in the test data storage the output of the particular stage as test input data for a next stage of the asynchronous multi-stage data processing system.

    See patent
  • Scalable testing in a production system with autoscaling

    Issued US 8,984,341

    A network-based production service is configured to process client requests for the production service via a network, capture production request data defining the requests and store the production request data in a data store. A test system comprising one or more controllers creates test jobs according to a test plan for testing the production service. The test plan creates a test profile for using specified production request data to simulate a load on the production service. Each job created…

    A network-based production service is configured to process client requests for the production service via a network, capture production request data defining the requests and store the production request data in a data store. A test system comprising one or more controllers creates test jobs according to a test plan for testing the production service. The test plan creates a test profile for using specified production request data to simulate a load on the production service. Each job created by the test plan specifies a portion of production request data. A job queue receives and queues test jobs from one or more controllers configured to add test jobs to the job queue according to the test plan. Workers access jobs from the job queue and the production request data from the data store as specified in each job and replay the production request data to the production service.

    Other inventors
    See patent
  • Proxy server testing

    Issued US 9,203,931

    Systems and associated processes for testing a reverse proxy server are disclosed. A backend proxy server test system can receive a request from a reverse proxy server under test. The request may be generated in response to a request from a test client to access a backend service. In responding to the received request, the backend proxy server test system can include a copy of the received request. Upon the test client receiving the response from the proxy server to the test client's request…

    Systems and associated processes for testing a reverse proxy server are disclosed. A backend proxy server test system can receive a request from a reverse proxy server under test. The request may be generated in response to a request from a test client to access a backend service. In responding to the received request, the backend proxy server test system can include a copy of the received request. Upon the test client receiving the response from the proxy server to the test client's request, the test client can extract the embedded copy of the received request that the reverse proxy server generated to determine whether it matches the request that a functioning reverse proxy server generates. Based, at least in part on the result of this comparison, the test client can determine whether the reverse proxy server is malfunctioning.

    Other inventors
    See patent
  • Testing using production data in scalable pre-production environments

    Issued US 9,229,845

    Proposed updates to systems are evaluated in a manner that is automated and horizontally scalable. Input to a first system is provided to a second system. The first system and second system process the input and each generates output. The output from the first system and second system is analyzed and differences in the output data between the two systems are identified. Analyzing the output may be performed by a fleet of data processing units and the work of analyzing the output may be…

    Proposed updates to systems are evaluated in a manner that is automated and horizontally scalable. Input to a first system is provided to a second system. The first system and second system process the input and each generates output. The output from the first system and second system is analyzed and differences in the output data between the two systems are identified. Analyzing the output may be performed by a fleet of data processing units and the work of analyzing the output may be performed such that differences in the output data are traceable to subsystems of the second system that caused the differences.

    Other inventors
    See patent
  • Promotion determination based on aggregated code coverage metrics

    Issued US 9,208,062

    Techniques are described for aggregating code coverage data generated from various types of testing of software modules, and automatically determining whether to promote software upwards in a multi-level software deployment hierarchy based on the aggregated code coverage data. In embodiments, a code coverage metric is determined for a software module, and the metric is compared to a set of promotion criteria, including whether the metric meets a predetermined threshold for quality. In some…

    Techniques are described for aggregating code coverage data generated from various types of testing of software modules, and automatically determining whether to promote software upwards in a multi-level software deployment hierarchy based on the aggregated code coverage data. In embodiments, a code coverage metric is determined for a software module, and the metric is compared to a set of promotion criteria, including whether the metric meets a predetermined threshold for quality. In some cases, the threshold may be a general threshold, a threshold based on the level of possible promotion, and/or a threshold that is based on an identified category for the software module such as whether the module is a front-end module, a shared module, a legacy module, or a critical module.

    Other inventors
    See patent
  • Scalable Load Testing in a production system with autoshutdown

    Issued US 8,977,903

    A network-based production service is configured to process client requests for the production service via a network, capture production request data defining the requests and store the production request data in a data store. A test system comprising one or more controllers creates test jobs according to a test plan for testing the production service. The test plan creates a test profile for using specified production request data to simulate a load on the production service. Each job created…

    A network-based production service is configured to process client requests for the production service via a network, capture production request data defining the requests and store the production request data in a data store. A test system comprising one or more controllers creates test jobs according to a test plan for testing the production service. The test plan creates a test profile for using specified production request data to simulate a load on the production service. Each job created by the test plan specifies a portion of production request data. A job queue receives and queues test jobs from one or more controllers configured to add test jobs to the job queue according to the test plan. Workers access jobs from the job queue and the production request data from the data store as specified in each job and replay the production request data to the production service.

    Other inventors
    See patent
  • Distributed testing for computing features

    Issued US 7,823,138

    A new method is provided for using distributed computing for computing process testing. The method includes distributing a feature testing tool, computing feature builds, and data sets to client computing systems. The feature testing tool is run on the client computing systems during times when the client computing system is not otherwise in active use. The feature testing tool prompts the computing feature build to process the data sets, and collects results from the processing of the data…

    A new method is provided for using distributed computing for computing process testing. The method includes distributing a feature testing tool, computing feature builds, and data sets to client computing systems. The feature testing tool is run on the client computing systems during times when the client computing system is not otherwise in active use. The feature testing tool prompts the computing feature build to process the data sets, and collects results from the processing of the data set, including any erroneous results. The results from processing the data sets on the client computing systems are provided to a managing computing system. The managing computing system may try to reproduce the erroneous results on other client computing systems with alternate hardware-software configurations, to send erroneous results to an investigation queue to isolate their cause, and to report useful information on the erroneous results to developers working on the computing feature.

    Other inventors
    See patent
  • Dynamic corpus generation

    Issued US 7,941,418

    A computer-implemented method of generating a dynamic corpus includes generating web threads, based upon corresponding sets of words dequeued from a word queue, to obtain web thread resulting URLs. The web thread resulting URLs are enqueued in a URL queue. Multiple text extraction threads are generated, based upon documents downloaded using URLs dequeued from the URL queue, to obtain text files. New words are randomly obtained from the text files, and the randomly obtained words from the text…

    A computer-implemented method of generating a dynamic corpus includes generating web threads, based upon corresponding sets of words dequeued from a word queue, to obtain web thread resulting URLs. The web thread resulting URLs are enqueued in a URL queue. Multiple text extraction threads are generated, based upon documents downloaded using URLs dequeued from the URL queue, to obtain text files. New words are randomly obtained from the text files, and the randomly obtained words from the text files are enqueued in the word queue. This process is iteratively performed, resulting in a dynamic corpus.

    See patent
  • Natural Language Assistance for Digital Image Indexing

    Filed US 20090092340

    A processing device and method may provide natural language assistance for digital image indexing. Candidate keywords may be generated based on an entered keyword for a digital image file. The candidate keywords may be synonyms of the entered keyword, or otherwise related to the entered keyword. The candidate keywords may be ranked as possible keywords for the digital image file based on use of the candidate keywords as keywords of other digital image files. Similarity measures of the other…

    A processing device and method may provide natural language assistance for digital image indexing. Candidate keywords may be generated based on an entered keyword for a digital image file. The candidate keywords may be synonyms of the entered keyword, or otherwise related to the entered keyword. The candidate keywords may be ranked as possible keywords for the digital image file based on use of the candidate keywords as keywords of other digital image files. Similarity measures of the other digital image files may be determined based on aspects of the other digital image files compared with the corresponding aspects of the digital image file. Rankings of the candidate keywords may be adjusted based on the similarity measures of the other digital image files. At least some of the ranked candidate keywords may be presented.

    See patent
  • Photography Auto-Triage

    Filed US 20100054544

    Photography auto-triage is described. In embodiment(s), at least a portion of each photograph in a group of photographs can be analyzed with triage filters of an auto-triage service to identify deficient photographs. A deficient photograph can be identified and then removed from the group of photographs.

    See patent

Courses

  • Amazon Web Services Developer Training

    -

  • Dale Carnegie Leadership Development

    -

  • Hadoop World Conference, 2011

    -

  • Management Foundation Excellency Training at Microsoft

    -

  • Oracle JavaOne Conference

    -

Honors & Awards

  • Just Do It Award at Amazon.com

    Amazon.com

    Winner of the "Just Do It" Award, a prestigious Amazon-wide award given by our CEO Jeff Bezos at the Company All Hands once a year

  • "Bias for Action" Award at Amazon.com

    Amazon.com

    The Website Applications Platform division of Amazon.com has ~200 engineers. Won the "Bias for Action" Award of 2011 for going above and beyond my responsibilities and solving a division-wide problem.

  • Amazon.com Samurai

    Amazon.com

    Amazon.com Samurais are peer-nominated Senior engineers that conduct design reviews and focus on division-wide technical growth and best practices across the entire organization.

  • Outstanding Computer Science Senior Award

    Computer Science Department of the University of Missouri - Columbia

    While doing my undergraduate degree in Computer Science at the University of Missouri - Columbia, I was selected by the professors as the Outstanding Senior of 1997

  • Received $45,000 in college scholarships

    -

    Received $45,000 in college scholarships:
    - MO Bookstore Service Freshman Textbook Award
    - Chevron Scholarship
    - Curator Grant-in-Aid Scholarship (5 times)
    - Millard Maienthal Scholarship
    - DataStorm Scholarship
    - Ketcham Scholarship
    - Graduate tuition fully covered by Microsoft Corp.

  • Member of several Honor Societies in college

    -

    Member of several Honor Societies in college:
    - University of Missouri Dean’s List all semesters, 1993-97
    - National Freshman Honor Society
    - Golden Key National Honor Society
    - Phi Kappa Phi Honor Society
    - Upsilon Pi Epsilon Honor Society

Languages

  • English

    Native or bilingual proficiency

  • Spanish

    Native or bilingual proficiency

Recommendations received

More activity by Carlos

View Carlos’ full profile

  • See who you know in common
  • Get introduced
  • Contact Carlos directly
Join to view full profile

People also viewed

Explore collaborative articles

We’re unlocking community knowledge in a new way. Experts add insights directly into each article, started with the help of AI.

Explore More

Others named Carlos Arguelles in United States

Add new skills with these courses