O!Snap

During software development, there is a time for continuous testing, running and re-running tests at low cost, and a time for fast testing, getting results in a short timeframe. With O!Snap, developers can choose at any time whether they want to optimize for time, for cost, or a mix of the two achieving significant cost and/or time savings over naive serial or massively parallelized executions.

O!Snap is a technique to automatically generate plans to cost-efficiently execute tests in the cloud. O!Snap takes as input the list of tests to execute, the list of available virtual machine images, and additional configuration parameters, such as the cost model adopted by the cloud provider. As output, it produces a test execution plan that suggests which virtual machine images to use for running the tests, how to schedule their execution inside cloud instances, and how to create more suitable testing images.

O!Snap works as a two-staged pipeline: it starts with opportunistic snapshotting, which aims to maximize the reuse of images across test executions and define new images to limit the effort of setting up test environments; and it ends with test schedule planning, which computes the test execution plan by interleaving the creation of the new images and the execution of tests to minimize the overall test execution time and cost.

Approach Overview

The O!Snap Pipeline

Opportunistic Snapshotting

Reduces the effort of setting up test environments by maximizing the reuse of dependencies across test executions.
Suggests the allocation of test jobs to images and identifies which new image is worth creating.

Test Schedule Planning

Computes the final test execution plan by interleaving the creation of new images and the execution of tests.
Minimizes the overall test execution time and cost according to a user-defined goal and cost model.

ICST 2017 Dataset (~3.0GB)