Contributor: Vladimir Tutov, PM at Archer Software
Why Should I Consider Automated Software Testing?
The phrase “automated testing” gets thrown around a lot, and if you’re connected with the world of IT you’re at least familiar with the basic concept. Let’s dig a little deeper, though, and explore the benefits of automated testing presented to developers and consumers alike.
Put simply, automated testing is the automation of routine testing operations, and leads to a development process that is:
Automated vs Manual Testing comparison
When we talk about automating tests, we have in mind the writing of code that makes sure a given system works correctly. It goes without saying that these efforts require more time during the first steps of the development process, though early investment in automated testing ultimately results in more favorable outcomes than less-accurate manual testing.
These positive outcomes come from two main Pros of Automated Testing in comparison to manual testing:
First: Developers see errors more quickly when they use automated tests on each build, and thus are able to fix them earlier and at a lower cost.
Second: Human testers don’t need to check each new feature in an application. Rather, the auto-test makes sure that newly implemented features do not negatively impact features from earlier builds.
As the average size of web and mobile applications is slowly but sure grows, QA specialists are having to spend more and more time manually testing new code. Unfortunately, many developers are dealing with this problem by running necessary, but expensive, tests less frequently. The result is lower-quality products that require high-cost rounds of bug-fixing in the later stages of the development process.
Nowadays, automated testing is an essential part of the development process for many reasons. So how to put forth all the advantages of automation testing? -
Automated testing may be the best solution if you:
need a highly reliable system (e.g. due to business critical or life important purposes)
want to reduce the cost of future changes to your system (i.e. planning to develop your system in a future)
need to improve an inherited system with a team unfamiliar with the old software, especially in cases when the previous version is grossly outdated
So How Does Automated Software Testing Work?
1. Most basic of all auto-tests are unit-tests, which are small tests that check functions on the atomic level.
For unit-tests we have several testing frameworks and libraries, like JUnit, TestNG, nUnit, phpUnit, Winsdor and lots others.
2. Having covered major modules by unit-tests, we need to check the interaction of these modules with integration tests.
These tests are usually written by developers with such frameworks as Fit or Citrus, though a number of integration tests are based on unit-test frameworks.
3. Last but not least come UI tests, which simulate user behavior and check the scenarios most likely to occur during use. We use tools like Selenium, CubicTests, and WinRunner for UI tests, which are usually written by test engineers to reflect typical user scenarios.
Test Automation Tools selection
Selecting a tool for automating your tests is a very important step. If the tool features all needed functionality automation can be more telling and be performed with less efforts. Let’s list the main points in automation tool selection:
Budget is a decisive factor. There is no sense in researching and proposing tools to a client if it’s cost exceeds client's budget.
Automation tool hidden costs: sometimes developers have to pay for add-ons, the support fee, the training fee and upgrade fee.
Compatibility with the platform you develop for: if you build an application for iOS and Android, use the automation tool supporting both of them.
Support of technologies and 3rd party controls. List technologies used in your project and check the tools against these technologies support.
Languages: be sure the tool allows writing tests in a language familiar to developers involved.
Automated Testing Approaches
Selecting right automation tool is important but it is not everything. Do not forget that only a good manual test case brings real value. If manual test cases are already created, explore them to expand a scope.
You cannot automate all at once, the reasonable order for automation can be:
frequently performed tests
time taking tests
And overall, automation is software development, it needs best practices, code reviews, framework or design pattern to be followed and it also needs constant maintenance.