Why test automation and continuous integration?

Test automation is essentially taking existing test cases and making a computer do them instead of a human being.

Test automation is usually part of continuous integration.  We would run Jenkins on a new instance in AWS. Every time an engineer commits new code, Jenkins runs all of our Cucumber test cases against it automatically, without the involvement of a single human being. This way, if any commit breaks anything anywhere in the system that’s covered by the automated tests, the error will become visible immediately and will be fixed before we even get close to a release date.

The advantage of this approach is that you don’t have to wait to accumulate a bunch of features so that you can push out a release.

In the world of manual testing, big, infrequent releases are inevitable because developers want to test everything in one shot. This is cheaper than doing regression testing for every separate feature every single time.

When you run with continuous integration, you can release as often as you want, even daily.