Recently, automation testing has become more popular as a complement to the traditional testing process. In a survey by Tricentis, 44% of respondents expect to automate half or more of their testing efforts in the next 12 months. While manual testing is still irreplaceable, there are repetitive activities that make it time-consuming and labor-intensive. Automation testing reduces these repetitions of tasks and helps testers focus on writing new, creative test cases.
So a good knowledge of test automation and automation tools will help you test faster and more reliably. This article will cover all the basics of automation testing.
What is Automation Testing?
Automated testing or automation testing is a modern software testing method. It involves the use of special tools or platforms to automatically run test cases and monitor test performance. The actual results of the tests are then compared with the forecast results.
In automation testing, most of the activities are automated, with the test engineer having little or no intervention. Automated testers (as distinct from manual testers) write scripts that have a number of actions and controls (so-called automated test cases). Well-written automated test cases can speed up the project, reduce errors, and help to save time and manpower.
In other words, automation testing is the use of tools specifically developed to emulate user interactions with an application and to verify test steps based on predefined requirements.
Note that automation and the implementation of automation act as a checker - it cannot replace your testing strategy. It is also important to keep in mind that "automation" does not apply only to user interface testing. You could actually benefit more from an automated test at a lower level, like a unit test, than from a large bloated end-to-end test suite.
Why do you need automation testing?
Testing is an integral stage in the software development life cycle (SDLC) and software testing life cycle (STLC). Most critical errors are found in this process. One of the testing principles, however, is that not all errors can be found – comprehensive testing is impossible. Consequently, IT experts consider that an application and software is workable if it is closer to certain functionalities, reliability, or performance. As the research and practical experience have shown, the software development life cycle takes place during the following stages – analysis, design, development, implementation, testing, deployment, and support. Given the demand for accelerated software development, there is a need for quality and faster testing. But some of the testing tasks are too time-consuming to perform manually.
Today the situation has changed. Almost every company wants to apply automation testing and hire automated testers, no matter if it's a big company or a small one. The growing number of communities, forums, and channels in which automated testers discuss their problems can also testify to the growing trend of automation testing.
Automation testing does not replace manual testing
There are a whole range of tests that just have to be manual
The main reason why manual testing is important is probably user experience. From time to time we could all use valuable criticism. There is no replacement for the human eye, not only for functionality but also for first impressions.
While smoke tests can be automated, they too often are better left for manual testing. You can switch to a tester and see if it's ready for hardcore testing instead of writing scripts for a tester that would do likewise. It's far easier. And early-phase scripts won’t last, anyway. Moreover, in a product targeting multiple regions, only people can double-check the language and other key locale factors.
Technical limitations can come into play
Certain test scenarios are either too complicated or non-automatable. Many people take it for granted that “automation is cheaper, always”. And it’s true that in certain cases, automation testing brings better ROI than manual testing. But it can be a waste of time and effort to automate tests that should be left to humans. Take for example, testing variations of touch screen interactions. It’s not possible, at least for now, to automate the experience of “tapping” and “swiping”. Automation testing is unable to perfectly mimic human interactions.
Manual testing can help find bugs that you expect the least
Intentionally or not, manual testers still can find bugs that they have not necessarily been looking for when testing for specific usage cases.
That’s a big deal. For some projects, the majority of bugs are actually found by manual testers that were looking for something else entirely. On the contrary, automated testing can’t find errors it wasn’t programmed to find.
Automated testing empowers human testers
Automation testing reduces the repetitive testing activities, so that testers can spend more time on coming up with creative use cases. Automated testing is not meant to replace people, but to improve the overall product portfolio by creating new, unique scripts.
Humans are creative and analytical
While we all complain that we are human, we have our good qualities. The skills and expertise of testers help them to strategize each time a new feature is launched. There is no substitute for humans’ fast mental processing speeds and dope analysis.
The Components of Test Automation Solution
Test Script Development Environment
Testers usually use tools for automatic scripts development and execution.
The HP Quick Test Pro Utility is one of the standard systems which enables the development of VBScript-language test scenarios. Testers can collect UI application layouts and enter the test code which is used to manipulate windows by using this recorded layout.
Another example would be FIX/API testing tools. These tools allow the development of automated tests using the FIX protocol or a custom API.
There are also low-code, user-friendly tools that can scale as the tem grows, such as Katalon. It’s an end-to-end automation tool that supports most activities related to automation testing.
An automated test tool is in general a program that enables testers to use a programming language or a pseudo-code to develop test scenarios. In general, the following tools allow:
- Record human actions while working with the application;
- Write scripts simulating human actions and capturing screens or app response;
- Generate test execution reports;
- Store test data using Excel external spreadsheets.
Test scripts contain the logic of tests. You can define the steps of the test process, either by programs or tablets. Test scripts should be held in a readable human format as they should be read and understood by QA or business analysts.
Prepared Test Input Data
Test data is a key part of all automated test suites and includes:
- Different securities and their parameters;
- Various trader accounts and their settings;
- Market information on all the securities in the test scenario;
- Anything else that may affect business trading logic.
Automated tests are heavily dependent on test data. Parts of them can be saved within the test script in Excel tables. The developer of the test script shall keep the data accurate and consistent. Another part of the test data is stored in the databases; this data maintainer, including appropriate user accounts, is responsible for the running of a test script.
Action Based Test Engine
Test cases for trading systems consist of a small number of clearly defined transactions, i.e. orders and executions. It is useful to present test scenarios as sets of order management requests, market data manipulations, venue responses and system responses verifications. It is also recommended that the test script be split into two major parts: (1) a library with generic actions (place, order, cancel, amend or verify the results); and (2) actual test scenarios defined in spreadsheets.
Requirements for test automation frameworks, which are used to run the test cases described as a set of Excel spreadsheets, normally include the following:
- Each line in the spreadsheet is a single action within the test case;
- Usually the spreadsheet contains multiple test cases;
- Each action is function with a set of input parameters which returns a set of outcomes;
- Consequent actions may re-use previous actions, parameters or outcomes. For this, the tester should have the ability to place in one of the cells an expression that instructs the extraction of values (either inputs or outcomes) from one of the previous actions;
- The input data values for each test case may be put into a separate spreadsheet(s). Each step may contain a link to a row within the input data table within the data spreadsheet(s);
- During the test, everything should be logged into a results table within the reporting database or a log file. The tester should be able to inspect the results at any time during or after test execution.
Emulation of external systems
Distributed trading environments normally have multiple interfaces to various external subsystems, such as execution venues, market data delivery and back office services. Often, such external subsystems are not available during testing hours and mostly they do not offer enough features and control either, which testers require in order to conduct meaningful end-to-end testing. Due to that, one of many test automation tasks would be to recreate the functionality of such external systems. This is normally achieved by building emulators allowing the testers to have full control over venue settings, market-maker responses for market venues or current prices for market data.
Benefits of automation testing
Automating regression tests
Automation testing is used the most commonly for regression testing. Regression testing is a type of testing aimed at checking changes made to an application or environment (debugging, code merging, migration to another operating system, database, webserver), to confirm that existing functionality is still working. Regression tests can either be functional and non-functional. It’s typical that regression testing uses test cases that are written in the early stages of development and testing. That is, regression automated tests are performed at a predetermined time interval. They are usually downloaded every night or every week after every successful compilation (in small projects). This ensures that the new software changes do not damage the already existing functionality.
Speed of execution
Automated verification scripts may take some time. However, the person who carries out these controls manually takes less time to complete them. Self-tests, therefore, help the development team to provide fast feedback.
Time-saving for testers.
Test automation frees up testers' time. Consequently, they can focus more on investigating new features for bugs. With minimal monitoring, or without monitoring or manually, automatic checks can be started automatically. Normally there is a cyclical lack of time when you do not want to use automated tests.
Ability to create automated tests by developers.
Automated testing is usually done in the same language as the test product. As a result, both developers and testers are responsible for writing, conducting and performing tests. Thanks to automation testing, not just testers but everyone in the team can improve the quality of the software.
Automation Testing is a welcome step forward, but it is incomplete and still has a lot of flaws. Automation testing cannot completely replace manual testing. Human involvement in the testing and functional assurance process is very important.
If you're still stuck with manual testing then try to level up with a little automation testing skill. Both Manual testing or Automation testing are methods that bring high work efficiency and they have certain advantages and disadvantages, so you should consider the amount of testing method that is appropriate. with the goals and needs of the business, at the lowest cost, and with the highest efficiency.
It’s clear that not every test can be automated, read this article to learn how to choose test cases for automation.
If you want to learn more about Software Testing, check out our latest paper on Software Testing Lifecycle.