Most modern developers don’t think of software testing as a part of their job descriptions, let alone part of their development career plan. Traditionally, developers were responsible just for writing code. Someone else handled testing and QA. But that is changing. The rise in popularity of automated testing means that developers are increasingly being asked to play a role in software quality assurance (QA)--or, in some cases, to take over responsibility for it entirely.
Here’s a look at why this is happening, and what it means for modern developers.
What Is Automated Testing?
Automated testing is what it sounds like: the use of automated scripts to evaluate how an application (or part of an application) behaves. It’s the opposite of testing software by manually interacting with it in order to trigger certain functions or features and evaluate how well they work. With automated testing, code is written to trigger this behavior automatically, and the results are also collected in an automated fashion.
There are many different types of software testing--integration testing, usability testing, performance testing and load testing are the most common categories--and there are thus multiple types of automated testing tools available. (For a rundown of which tools support which types of testing, check out our Software Test Automation Buyer’s Guide.) But no matter which type of testing you are performing, if you use a script to automate the process, then you are doing automated testing.
It’s worth noting that some folks draw a distinction between automated testing and test automation. To them, the former term refers to the use of automated scripts to evaluate an application. Once started, those scripts run autonomously, and, in that sense, they are automatic, even if they are triggered manually. In contrast, test automation refers to the automation of the broader process of starting tests and collecting results. For the purposes of this article, the differences between the two terms don’t really matter, because it’s the rise of automated testing frameworks that has changed the way developers interact with QA. But it’s still an important distinction to understand.
The Rising Popularity of Testing Automation
Automated testing has been around for decades in one form or another. However, in recent years, a few factors have converged to make automated testing a much more common approach for evaluating applications prior to deploying them into production:
- Open source automated testing frameworks, like Selenium and Appium, have matured, making it easier to create and run automated tests without having to rely on proprietary tools.
- The availability of cloud-based test environments has made it easy for teams to run many tests at the same time, without being constrained by the availability of on-premise testing environments. Automated testing is critical for getting maximum performance out of cloud-based test environments because it minimizes the time that test clouds sit idle, waiting for the next set of tests to be executed.
- From a cultural perspective, the emergence of CI/CD pipelines, and the DevOps movement in general, have encouraged automation of every aspect of the software delivery process.
To be sure, manual testing is still a thing. I’ve yet to hear of an organization that has completely automated all of its tests, and certain types of tests (such as usability testing) will always be hard to perform in a totally manual way. (Sometimes, you need to sit down and watch how real users interact with your software in order to glean important usability insights.)
By and large, however, automated testing has become the rule, rather than the exception, for most software delivery operations. Based on my conversations with software delivery teams, I’d estimate that the typical organization now automates somewhere between 60% and 80% of its tests.
How Automated Testing Impacts Developers
What does all of the above have to do with developers and their development career plans, you ask? The answer is pretty straightforward: When automated testing becomes the basis for software QA operations, testing is reduced to code. And no one knows code as well as developers.
If you want to automate software tests, you need to write code that allows your automated testing tool to evaluate whichever aspects of an application you are testing. So, instead of manually clicking a button within an application to trigger certain behavior and assess the result, for example, you write code that does that for you.
For QA engineers, this is sometimes a challenge. QA folks have been trained to evaluate usability, performance and so on manually. They have not traditionally been trained to code.
This doesn’t mean that no QA engineer can write code. Many have learned to write scripts using popular frameworks like Selenium and Appium. But others haven’t. And even when QA folks do write automated tests, they may not be as good at doing so as developers. That’s true not only because developers spend all day writing code, and therefore are better at it than anyone else, but also because understanding the code within an application itself is often important for writing an automated test script that will test that application.
Thus, in a world where software testing has become largely automated, developers have become increasingly important for assisting QA specialists in writing and optimizing automated tests. For many developers today, knowing how to code in Java or C++ is not enough; they are also expected to be able to write scripts using popular automated testing
Automated Testing and Development Career Plans
Although I know of at least once company (which I can’t name, but it’s a large financial services organization) that has totally replaced its QA team with developers, I doubt that QA engineers will disappear entirely from most organizations anytime soon. QA is still an important discipline, and developers can’t typically be expected to do everything that a QA engineer does.
Still, the fact is that helping to perform automated testing operations has become one of the important skills for developers in the age of DevOps. If you’re a developer looking for a way to make yourself more valuable to forward-thinking organizations, teaching yourself Selenium (or a similar framework) is one way to do it.