Automated testing

Automated testing is the use of software separate from the software being tested to control the execution of tests and the comparison of actual outcomes with predicted outcomes.

Test automation can automate some repetitive but necessary tasks in a formalized testing process already in place.

Test automation is critical for continuous delivery and continuous testing.

Test automation, mostly using unit testing, is a key feature of extreme programming and agile software development, where it is known as test-driven development (TDD) or test-first development.

Unit tests can be written to define the functionality before the code is written.

Once automated tests have been developed, they can be run quickly and repeatedly. Many times, this can be a cost-effective method for regression testing of software products that have a long maintenance life. Even minor patches over the lifetime of the application can cause existing features to break which were working at an earlier point in time.

Test automation tools can be expensive and are usually employed in combination with manual testing. Test automation can be made cost-effective in the long term, especially when used repeatedly in regression testing.

A good candidate for test automation is a test case for common flow of an application, as it is required to be executed (regression testing) every time an enhancement is made in the application. Test automation reduces the effort associated with manual testing. Manual effort is needed to develop and maintain automated checks, as well as reviewing test results.

A few types of automated testing:

  • Unit
  • Smoke
  • Integration
  • Regression
  • API
  • Security
  • Performance
  • Acceptance
  • UI

So, to sum up, just a few benefits gained from automated testing:

  • Speed
  • Wider test coverage
  • Consistency
  • Frequent testing
  • Reduced costs