In the past, when manual testing was the norm, it was common for software companies to employ a full-time QA team for software testing. This team used to develop various test plans, or step-by-step checklists, that confirm that certain software project behaves as expected. The QA team then manually went through these checklists each time a new update or change was made in the software project, and then forwarded the results of the test plans to the development team for review and to fix issues. This process was slow, expensive and error-prone. Automated testing brings tremendous benefits for team efficiency and ROI.

Automated testing puts the responsibility in the hands of the development team. Automated testing favors lean QA teams and allows the QA team to focus on more sensitive functions.

Automation Testing

Why is test automation important for continuous delivery?

Continuous Delivery (CD) is about getting new versions of code to customers as quickly as possible. Automated testing is critical to this goal. Deployment to users cannot be automated when there are manual, time-consuming steps within the deployment process.

CD is part of a larger deployment pipeline. CD is a successor to Continuous Integration and also depends on it. CI is fully responsible for conducting automated tests for new code changes and ensuring that these changes do not break established functionality or introduce new bugs. CD is triggered once the continuous integration step has passed the automated test plan.

This relationship between automated testing, CI, and CD brings many benefits to a high-velocity software team. Automated testing ensures quality at every stage of development by ensuring new commits don’t cause errors, keeping the software up and running at all times.

But it should be noted that it has some disadvantages as well:

The initial cost of automation is high. This is an investment, and as such it should be compared to the cost over time. Also, its maintenance must be planned (in short, it is code that needs to be maintained in case the application or its interface changes).

What types of software testing should be automated first?

Arguably the most valuable tests to implement are end-to-end (E2E) tests. E2E tests simulate a user experience of the entire stack of a software product. The plans for E2E testing generally include user-level stories like: “A user can log in”, “A user can make a deposit”, “A user can change email settings”. Implementing these tests is extremely valuable as they provide assurance that real users are having a smooth, bug-free experience even as new commits are pushed.

When there are gaps in a software product’s automated test coverage, the greatest benefit is gained by implementing E2E testing of the most critical business processes. Upfront E2E testing to capture and record user flows can be expensive. If the software product does not perform daily rapid releases, it may be more economical to have a human team execute the E2E test plans manually.

Also, unit tests can benefit from automation (view).  A unit test covers a single function. Unit testing confirms that the expected output for a function matches the expected input. Code with sensitive computations (such as in finance, healthcare, or aerospace) is best covered by unit testing. Unit testing is inexpensive, quick to implement, and offers a high return on investment.