Automated testing and QA: basics, pros and cons

Globalluxsoft
Globalluxsoft
Published in
4 min readFeb 7, 2018

While many companies still continue to test manually, automated testing has gained lots of traction since the inception of TDD practices into Agile software development doctrine. Testing the product is the essential part of the software lifecycle, and testing automation helps maximize the efficiency of code testing for a startup. We have elaborated on why software testing is crucial for startups in one of our previous articles, yet some questions still remain. What are TDD and automated testing then, and how do they differ from testing manually? We shall provide an answer in this article.

TDD stands for Test-Driven Development, where writing the automated tests for certain app features precedes writing the code for these features itself and is then followed by refactoring to ensure maximum code simplicity. The whole process looks as follows:

  • Once the app was designed, single unit tests are written to measure the performance of each feature of the app
  • These tests are then run to ensure they are written correctly, even though the features themselves are not yet developed; the tests should obviously fail
  • “Just enough” code is written, simple and minimalistic, just to pass the test
  • The code is further refactored to meet the simplicity criteria
  • Over time the codebase of automated unit tests grows.

The developers create and update automated unit tests, allowing them to delegate multiple routine tasks to scripts that can work 24/7. As a matter of fact, automation of testing is crucial for enabling a CI/CD process. This approach helps increase the reliability of software delivery pipeline and shorten the time-to-market for a product without compromising the quality, which is essential for every business.

Automated testing benefits and flaws

There are advantages and disadvantages for automating your product testing or sticking to the manual testing. The list below will help you better understand when to use autotests and when manual QA will suffice.

Benefits of automated testing:

  • Great ROI — despite demanding much time and effort (literally, wage money) to writing automated test units, the ROI of such approach for long-term and large-scale projects is huge, as these tests are adjustable and widely reusable. Instead of having to manually test multiple similar cases, your QA specialists will be able to automate this routine task
  • “Shift to the left” — the testing begins early in the software delivery pipeline, allowing to minimize the numbers of bugs and the time needed to fix them
  • Scalability — one specialist can run multiple automated unit tests simultaneously, greatly speeding up the testing workflow
  • Reusability — the source code of the same tests can serve as a codebase for testing similar functionality and saving up to 95% of time needed to cover the code with tests
  • Repeatability — the tests will yield the same results regardless of who runs them
  • Better code coverage — unit testing helps cover almost any code developed
  • Continuity — any new tester can evaluate the amount of testing code base, see what tests are in place and what needs to be done and continue the job

There are actually quite a lot of more subtle advantages of the automated approach to testing over the conventional manual testing practices. However, there are also certain flaws:

  • Big costs — writing efficient unit tests demands much time and effort from experienced QA specialists, meaning significant expenses on their wages
  • Hard to maintain — the constantly growing test code base has to be regularly updated to reflect the project advancement.

These reasons should be taken into consideration when choosing the appropriate software testing model.

When will automated testing do the job?

There are two profitable approaches to using automated testing:

  • A long-term project that receives new features over time. In that case, running unit tests helps provide regression testing and make sure new additions did not break any existing functionality. This demands lots of work for keeping the testing codebase up-to-date, yet is saves tenfold in terms of time and money when testing a mature product with rich features.
  • Lots of similar small projects. When there are many similar tasks and quite a slight adjustment of unit tests will suffice to properly test them, going for automation of the testing is a wise choice.

Quite contrary, testing manually is the best choice for one-time projects with unique features, which will either not be updated afterward or do not have corresponding autotests in the testing codebase, and writing these tests is not economically justified.

Conclusions on the automated testing and QA

Considering all the above, automated testing and QA are cornerstones of an efficient testing process. However, due to the fact that paying considerable wages to skilled QA specialists for keeping a vast and constantly growing code base of autotests is not justifiable for a small startup, such tasks are best delegated to a remote team of software developers, who have the specialists with the right experience and tools in place.

Manual testing will more than suffice in the majority of smaller cases, yet if you aim big — consider adding testing automation to your toolkit, either by building a capable in-house team or by working with a reliable partner.

--

--