The use of test automation has become even more important in the past few years as productivity has increased and competition has become more intense. A test automation tool can save time and money while at the same time reducing the role that the testing team (consisting of programmers, QA engineers, and testers) can play in building software. But what are the different types of testing? This article will describe different types of automation testing employed in most software systems today.
Types of automation testing
Smoke tests are very short automated tests designed to test the most basic features. They are usually only a few lines of code. Smoke tests are often used in agile software development where there is no time for extensive testing before getting feedback from end-users on the product. Smoke tests also need to be simple to re-run when it’s time for maintenance, which may happen many times per day.
Performance tests are designed to evaluate the performance of the system under test. They are run infrequently, usually once or twice during major development milestones. Performance tests may be automated, but they often require human input.
Regression tests are automated tests that were formerly known to fail in a product release due to changes made in the application. Regression testing is performed when a new version of an application or when changes have been made since the last version. The purpose of this type of testing is to verify that any fixes and/or new functionality do not adversely affect the existing features and behavior of the application.
Security testing is a process that tests the security policies and controls of an application. It is very important as no software can be protected from malicious code. To test for security vulnerabilities, a security test will have to have access to the source code.
Usability testing is a process through which a user community will attempt to find software faults and flaws. These types of tests are performed by stakeholders, who may or may not be directly employed by the organization making the software. Usability testing is most commonly conducted on end-users with physical access to the software being developed. A usability test generally involves subjects performing tasks, filling out forms or verbally describing their experience with a product or system under test (SUT).
Integration tests determine whether individual software components work together as a system. Integration testing is performed at the module level. A single test case may require multiple modules to be tested together. In order to properly test a product, an integration test suite must include tests for each of the features being developed by the team.
Unit tests aim to verify that individual units of code are functioning properly. Unit tests are generally automated and require few resources. Thus, they can be used as a form of regression testing and a performance measurement tool.
Feature tests are normally used to verify that all functionality within a specific feature or capability has been implemented correctly. Feature tests are typically performed by developers when they are writing the source code for the features.
There are several areas where the different types of test automation can be applied. The most commonly automated tests are smoke, regression and performance. However, many organizations also apply automation to smaller-scale testing such as integration and unit tests.
To read about the differences between manual and automation testing, see this article.