advance in this way of thinking is continuous deployment, which calls for the software to be deployed directly into production, often with additional automation to prevent defects or regressions. Costs and benefits Continuous integration is intended to produce benefits such as: Integration bugs are detected early and are easy to track down due to small changesets. This saves both time and money over the lifespan of a project. Avoids last-minute chaos at release dates, when everyone tries to check in their slightly incompatible versions When unit tests fail or a bug emerges, if developers need to revert the codebase to a bug-free state without debugging, only a small number of changes are lost (because integration happens frequently) Constant availability of a "current" build for testing, demo, or release purposes Frequent code check-in pushes developers to create modular, less complex code With continuous automated testing, benefits can include: Enforces discipline of frequent automated testing Immediate feedback on the system-wide impact of local changes Software metrics generated from automated testing and CI (such as metrics for code coverage, code complexity, and feature completeness) focus developers on developing functional, quality code, and help develop momentum in a team Some downsides of continuous integration can include: Constructing an automated test suite requires a considerable amount of work, including ongoing effort to cover new features and follow intentional code modifications. Testing is considered a best practice for software development in its own right, regardless of whether or not continuous integration is employed, and automation is an integral part of project methodologies like test-driven development. Continuous integration can be performed without any test suite, but the cost of quality assurance to produce a releasable product can be high if it must be done manually and frequently. There is some work involved to set up a build system, and it can become complex, making it difficult to modify flexibly. However, there are a number of continuous integration software projects, both proprietary and open-source, which can be used. Continuous integration is not necessarily valuable if the scope of the project is small or contains untestable legacy code. Value added depends on the quality of tests and how testable the code really is. Larger teams mean that new code is constantly added to the integration queue, so tracking deliveries (while preserving quality) is difficult and builds queueing up can slow down everyone. With multiple commits and merges a day,