I would want to be a successful test automation engineer. Yes, you might also have a similar thought. And it triggers in the mind of every QA engineer and automation tester.
Since test automation is a technical job, merely being good at concepts or theory isn’t going to be enough. You need to excel in specific technical skills depending on your work domain.
Just becoming a talking parrot won’t take you too far in your career. Instead, quoting boneless and unverified claims would lead to a loss of trust between you and your peers.
So the first lesson is to find what tools/technologies to learn, and how to practice, then apply and share at work.
In this short article, we tried to cover points that you can start to work with immediate effect. Our objective is to give you a clear direction instead of chanting around with a few magical words.
Please follow the below TOC to navigate through the list of ideas to be a successful test automation developer.
1. Programming Language for Automation.
2. Master an Automation Tool.
3. Adopt the Right Testing Methodology.
4. Select a CI Tool.
5. Performance and Scalability.
6. Innovate and Improve.
7. Be a Good Estimator.
We request to read each point carefully, understand it, and apply it to realize the real benefits.
Seven Steps for a Successful Test Automation Developer
1. Programming Language for Automation
Find a programming language close to your domain and learn.
It’s always a best practice to hook on to the programming language that belongs to the domain or the product you use. Though, it’s not a difficult decision yet critical from the test automation perspective.
Here, we have to make the domain classification based on the technology level, not on the type of industry (e.g. e-commerce or healthcare) or the kind of users (e.g. enterprise or standalone) going to consume the product.
Please check out a few scenarios given below.
Scenario-1
If you work to test web-based products, then you might like to excel in one of the following programming languages.
- Pick either Java or Python.
- If the product supports multiple platforms including Windows, Linux, and Mac OS X, then you should learn either of Java or Python.
- You can further drill down the selection.
- Choose Java if the product has both the UI and API interfaces. As Java has the capability to handle both. You can extend its abilities by incorporating test frameworks like TestNG, JUnit, and JBehave for BDD.
- Prefer Python, if the product is primarily UI-based. It has many other advantages like easy integration with BDD test automation tools like Cucumber. Python comes with built-in test frameworks like Unittest, PyTest, and Slash.
- C-sharp can also come in handy if the product is only going to support the Windows platform.
Moreover, it’s easier to learn Python than Java.
Scenario-2
If your product for testing is a desktop-based solution, a backend service or a daemon silently serving thousands of clients, then read the below suggestions.
- For desktop applications on the Windows platform, you may need to learn C/C++/C#. You can discuss with the developers of the product to classify the selection further. Sometimes, scripting languages like VB or Javascript could also be useful when using them with tools like QTP and Squish.
- GUI Applications on Linux and OS X platforms, learn either Javascript or Python. Squish is the tool that supports both these languages and runs on both Linux and Mac OS X.
- For back-end services or daemon, you are required to learn combinations of programming and scripting language.
- Windows – Need to learn C/C++ with batch scripting.
- Linux or Mac OS X – Learn C/C++ and shell scripting.
Please note that the scope of learning a programming language could be a little wider for a programmer. However, a test automation developer can limit his efforts to learn the core part.
For example, while learning Java, you may not need to learn concepts like J2EE and JSP. And you won’t need to learn about device driver programming in C/C++. But you should know the advanced concepts like socket programming and inter-process communication (IPC).
2. Master an Automation Tool
Master an automation tool that can fit into your project.
Simultaneously working on a programming language, you must wisely choose a test automation tool that can give a real shape to your test automation plans.
On top of the test automation tool, you can create a wrapper layer and customize it to meet the actual automation needs for your product.
So having a tool that allows customization is what anyone would like to choose. Other parameters that you should look for are multiplatform support, parallelization, reporting, and cross-browser capabilities.
Check out a few other facts that are worth considering.
Facts to consider while choosing an automation tool.
- The learning curve should not last more than two weeks.
- It should provide out-of-the-box CI support which is important to scale automation.
- Only choose a tool that is in active development. Otherwise, you’ll end up criticizing your own decision.
- In the case of an open source tool, make sure it has support from the community which you can look up for queries.
Answering a few more questions could be useful. Though, it’s not mandatory to have all these features.
Questions you should know while selecting an automation tool.
- Does it allow working multiple engineers together?
- Can it be integrated with a bug-tracking system like JIRA?
- Is it possible to integrate it with source code control tools like Git or SVN?
- Does it provide an IDE to manage test cases?
We ourselves have worked with a number of test automation solutions. Our recommendation is to use Selenium for Web-based automation, Cucumber for BDD, Squish for desktop applications, and Fitnesse to automate service-level components.
3. Adopt the Right Testing Methodology
Choose the right testing methodology, plan, and monitor test coverage.
Since you’ve acquired the right set of tools, you should now put them to the test. However, you would first need to build a pitch to carry out the proof of concept.
The pitch is nothing but the testing process you or your company follow to validate the product before delivering it to the customer.
Most of the companies have come out of the ages of the waterfall model and started adopting the Agile testing methodology. However, the core testing values and concepts remain the same.
In Agile, we focus mainly on three types of testing strategies where you can add value by automating the tasks.
- Acceptance Testing
- Regression Testing
- End-to-End Testing
With the help of test automation tools explained earlier, you can create a unified test suite to target the above testing phases.
Whatever tests you would automate during acceptance testing, also become part of the regression test suite. It’ll result in increased coverage and ensure the feature being tested during regression cycles as well.
In your test suite, you should add a provision to assign labels to test cases. A label can be anything like the priority (p1, p2, or p3), or a component name. After labeling cases, you can group them into components or segregate them based on priority.
This approach gives you finer control over the test execution. It could be useful for validating a specific functionality. Also, when time is short, you can report results faster.
One of the core qualities of a successful test automation developer is to keep a tab on the progress of coverage. You can prepare a test coverage metric document and update it continuously.
The top stakeholders give due importance to such type of statistical data.
4. Select a CI Tool
Pick a CI tool to scale and manage test execution.
CI tool as the name suggests enables you to implement one of the industry’s best practices famously known as the Continous Integration.
It complements the Agile testing model which states to produce a working build at a regular interval (ideally daily but commonly after each sprint). However, we can’t mark a build as working until it passes through the validation.
That’s where the CI tool interjects in setting up the test automation jobs that it can trigger post the following events.
- After each check-in by the developer.
- At a scheduled time.
- On a demand basis.
So a good test automation developer should know how to configure the CI tool to scale the test automation capabilities. Jenkins is one of the most used CI tools and is supported by more than thousands of plugins. The right plugin can enormously increase the effectiveness of the test automation. So an automation engineer should also find time to search for plugins that are already available and boost the user experience.
5. Performance and Scalability
Invest in performance and scalability.
There’s a thin line between an average and a successful test automation developer.
The first type is the one who would do everything explained so far but sit with calm after settling things. However, the latter would try to slide the status quo.
So let’s see, what should he do when things are already at a gratifying level?
There could be following two possibilities.
- Find out areas of improvement in the automation framework and improve.
- Step out of the shell and look for improvement in the test infrastructure.
Automation Suite Improvements.
- Use code profiler to isolate bottlenecks in the automation source code.
- Run static code analysis tools to find bugs and memory leaks.
- Work on improving reporting, e.g. JUnit framework comes with a feature that allows tracking the age of a defect in the reporting. It’s useful to know how old the defect is and waiting for a fix.
- Track and try reducing the execution time. Ideally, a test suite should not run longer than an hour.
- Distribute test execution on multiple nodes to scale up.
Hardware Infra Improvements.
Ask a few questions from yourself.
- Are my test suites utilizing the full hardware resources?
- Can I replace the physical hardware with virtual machines and reduce cost?
- Is there a need to buy additional hardware for test execution?
- What are the latest h/w technologies that can help optimize the test execution?
So you just need to challenge yourself and tighten up the previous benchmarks.
6. Innovate and Improve
Set up a culture where innovation and continuous improvement are a part of the day-to-day work life.
So what else can you do to cultivate the innovation culture?
The following are two methods that you can apply at your workplace.
Method-1. Observe, Discover, and Uncover
You can begin innovation by improving the user experience or bringing new features or functions to address future needs.
At the same time, start observing existing solutions, their workflow, and patterns in use. Hand over them to new users, and let them share their experience. Try to discover problems with legacy solutions, and listen to new users. All of this would help to uncover the hidden issues and possibly result in a new idea.
Method-2. Mix Solutions
Probably every method has a few pros and cons as well. Also, not every time it requires a new way to spur innovation and make improvements. Instead, play simple and try to mix solutions utilizing their strengths.
Also, you can bifurcate the features that you need from one solution. And then let the other solution embrace it. The outcome could even surprise you with the outstanding results.
For example, If we consider Selenium for test automation, then we can build a perfect solution around it for web automation. But it lacks a reporting feature which is essential to represent the status of test execution.
We can combine the above solution with the TestNG framework, which has a user-friendly reporting feature. This will give us a fully functional system that runs tests and generates an attractive report. This is a great example of how mixing solutions can lead to innovative ideas.
7. Be a Good Estimator
Estimation skills are mandatory for any role including a test automation developer.
There are a bunch of things you can do to provide accurate estimates.
Outline your project
Identify all high-level areas, and review if they are covering the entire project. Repeat the previous steps one or more times to drill down the project further. Continue based on the size of the project.
There is a clear benefit of starting with the high-level areas as you can quickly point out missing areas if any.
Convert into granular tasks
Once you’ve listed down the primary tasks, begin splitting each of them into smaller tasks. Also, count the dependencies to a task and its subtasks.
Set down bottlenecks
A single bottleneck can shake your entire estimate. So it’s wise to anticipate it in advance. It could be a process bottleneck, pending approvals, or the requirements churn.
Use a three-point estimating technique
While estimating a project, there is always a scope for uncertainty. To factor in the risk, consider making the following three estimates.
- First in the best case,
- Second for the worst, and
- The last for the most likely case.
However, it would cost you a little more time to compute three different values. Even then, it’ll take you closer to a more realistic estimate.
Make space for drag
There could be items like meetings, unplanned leaves, and time spent in conducting interviews. All of these may cause drag while executing the project.
It won’t be easy to measure a fixed time for them. But you can add a little buffer based on your past experiences.
Summary – How to be a successful test automation developer
We don’t claim that all of a sudden, you’ll become a successful test automation developer. But we tried to share all of that worked for us and a number of our co-workers.
We hope the seven steps above will certainly fill out the gaps you might have. You just need to be consistent in following the process. Or at least do a pilot for the next project.
However, if you liked the post, then please care to share it on your social media accounts.
Wish You All the Best.
TechBeamers.