Test Automation: More Efficiency, Fewer Bugs

Did you know that (according to a 2020 estimate) faulty software caused no less than 2080 billion dollars of damage in the USA alone? At today’s exchange rates, that’s approximately 759,200 billion HUF, which is nearly ten times Hungary’s 2024 state budget (combining both expenditure and revenue).

tesztautomatizálás, test automation, Testautomatisierung

This enormous amount is not just limited to the direct costs of fixing bugs for software companies. Another source of loss is reduced productivity, as software bugs can lead to work stoppages, disruptions, and delays. Financial loss can also result from reputational damage, as faulty software may signal to customers that a company does not perform quality work. Additionally, bugs can pose security risks with significant financial impacts in the form of cyberattacks, data breaches, data theft, and financial fraud.

Software Testing in General

Everyone involved in software development understands the importance of software testing, as effective testing helps

  • identify and fix bugs
  • detect and rectify security vulnerabilities before the software reaches the public
  • improve user experience
  • contribute to the long-term sustainability and maintainability of the software

Software Testing or Software Quality Assurance?

Although closely related concepts, it is important to distinguish between software testing and software quality assurance (QA). Both aim to improve software quality, but while software testing focuses on identifying bugs in code, software QA concentrates on preventing the creation of bugs throughout the development process.

Manual Testing

Manual testing involves human testers executing pre-prepared test cases through the usage of the system’s functions and verifying the software’s operation. The advantages of manual testing are well-known:

  • Does not require additional software tools to perform the testing
  • The most widely applicable general method capable of detecting most software bugs
  • Exploratory testing can only be performed manually
  • Human testers can still simulate user behavior much better than software

However, when compared to manual testing, automated testing has the following advantages:

  • With the appropriate automation software available, automated testing is more efficient and faster, as the testing software does not pause between clicks, does not take coffee breaks, and can “work” overnight without fatigue
  • To simulate a large number of users (such as in load testing), test automation is the better choice
  • For the repeated execution of the same tests (such as regression tests), automating the tests is a more efficient solution

Test Automation

But what exactly is automated testing, or test automation? Automated testing involves using a separate software (testing application) to execute test cases and evaluate the tests, i.e., compare actual and expected results.

The benefits of test automation can be summarized as follows:

  • Helps execute testing tasks faster, more efficiently, and free from human error
  • Enables continuous integration and continuous delivery (CI/CD), essential in modern software development, allowing developers to produce and deliver new code versions more frequently and reliably
  • Supports faster bug fixing by providing immediate feedback on errors

Typical Applications of Test Automation

1.       Unit Testing:

This involves testing small, individual components of the software. Although generally performed manually, it is well-suited for automation.

2.      Smoke Tests:

A functional test that checks basic functionality to ensure the program can withstand further testing.

3.      Integration Tests:

These ensure that the interactions between software components are correctly established when the entire software environment is used.

4.     Regression Tests:

Regression tests are functional and non-functional tests that ensure no part of the software is damaged by changes (e.g., software updates).

5.      Security Tests:

These aim to uncover potential security vulnerabilities that could be exploited maliciously, posing a security risk.

6.     Performance Tests:

These are non-functional tests that assess the system’s stability and responsiveness, ensuring the software can handle heavy user loads and provide a better user experience.

Typical Test Automation Methods

1.       API Testing:

The API connects the software to the outside world, accessing system functions without using the user interface. Testing via API offers excellent opportunities for automation, whether it’s implementing integration tests with complex API calls or load testing by calling APIs with large amounts of data.

2.      UI Tests:

UI tests simulate the typical user experience using automation. The test automation generates events like keystrokes and mouse clicks on the user interface and observes changes to verify the system’s correct operation.

DSS and Test Automation

At DSS, we increasingly use this methodology, particularly in the following areas: robotic UI testing, unit testing, performance tests, and API testing.

Our experience includes:

  • Selenium: Unit testing in Java environments
  • JMeter: Load tests for mass testing of software functions
  • UIPath: Robotic testing on user interfaces
  • Cypress: Testing web applications
  • REST Assured: API testing in Java environmentsAz alábbi technológiákkal szereztünk tapasztalatot:

Just a few examples of our test automation projects:

  • For a multinational pharmaceutical client, we conduct automated testing of a registry system organizing molecules, supporting drug research using Cypress technology.
  • For a customer in the energy industry, we assist in rethinking and automating hundreds of originally manual test cases using Selenium and Katalon Studio technologies.
  • For a leading insurance company, we design and oversee the execution of test cases within a custom automated testing framework supported by Selenium and XPath.

Perhaps our most interesting, related project is the automation of regression testing of two large systems:

For our client in banking, we have developed two large systems integrated with each other and with other systems that receive major upgrades 4-8 times a year, We run regression tests before each upgrade to see if the software upgrade has any negative impact on the systems’ performance. In total, we have defined more than 400 such regression test cases for the two systems, which take an average of 15 minutes each to run when tested manually – this translates into 80-100 hours to run all test cases, which means 2-2.5 weeks of work for a tester. With eight software updates per year, this is 16-20 weeks, which represents a significant time and cost overhead and slows down the release process.

By contrast, with test automation, these tests can be run more frequently, even overnight, with minimal labor, before the upgrade is submitted to end-users for a UAT test. Any bugs that surface can be fixed within a short time, and a more bug-free development is submitted to the UAT test, resulting in significant cost savings for our customer.

The Future of Automated Testing

The ongoing development of automated software testing and the rise of innovative technologies suggest that test automation will play an increasingly important role in future development processes.

Although automated testing is likely to increasingly replace manual testing, the role of manual testing may persist in areas such as user experience (UX) verification or testing complex business scenarios. Manual testing’s creative approach and human perspective remain outstanding in areas where automated testing still has limitations.

Soon, technologies like AI and machine learning are expected to enhance the intelligence of automated tests and adapt tests to changing environments. Additionally, advanced data analysis and the use of test data can help further optimize testing processes and early identification of errors.

Overall, automated software testing has a promising future, bringing further innovations even in software development.

Could your company make testing processes more efficient and cost-effective? Why not discuss this over a good cup of coffee?