Testing is at the heart of modern development workflows. Long gone are the days when a developer could code a feature, run a few ad-hoc tests, and call it a day. Tests must be comprehensive, documented, and, ideally, continuous. With cloud-based continuous integration, the work around testing, including setup and tear-down, can be automated, ensuring that tests are consistently applied every time new code is committed.
Of course, every responsible developer can and should run unit tests while they’re developing, but unit tests don’t account for integration problems. Continuous integration can help reveal how a particular commit interacts with the codebase as a whole and with other recent commits.
Because continuous integration testing runs in an environment built to mirror the production environment, developers avoid the “but it works on my machine” situations that often arise when teams use heterogeneous development environments.
Constant testing allows development teams to find regressions and other bugs quickly and put them right before they cause problems. In an ideal world, a codebase is tested after every commit. The alternative is testing after multiple commits, only to discover that a mistake was made several days or weeks ago and having to backtrack through to find the one commit that caused the problem.
With constant testing, developers can be sure that the codebase is reliably in a state that can be pushed to production.
Everything we’ve talked about so far sounds great, but there’s a reason continuous integration has only become popular in the last few years — without the necessary infrastructure and tooling, continuous integration and testing becomes a huge time sink.
Fortunately, the necessary infrastructure is both inexpensive and easy to automate. Everything from server deployment and configuration to building the test environment and running tests can be automated. It requires very little developer involvement unless something goes wrong. If the tests do fail, iterating on the code is facilitated by further automatic testing, allowing developers to focus on the work that really matters rather than managing the testing process.
Because tests are run continuously and automatically, there’s almost no cost to experimentation. Developers can add new features, test them immediately, and roll them back just as quickly if they don’t work out. In an environment with a low barrier to experimentation, developers can work more quickly, try out new ideas, and find solutions to business problems. Most startups enthusiastically embrace continuous integration and deployment because it helps them get high-quality code and new features into production with little delay.
Cloud infrastructure is key to development workflows that include continuous integration. Cloud users can automate the instantaneous deployment of testing servers, reducing developer workloads and improving the speed at which companies can iterate on their products and bring new features to users.