We request to read each point carefully, understand and apply to realize the real benefits.

Seven Steps A Successful Test Automation Developer Should Follow.

Be 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 the 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 the Unittest, PyTest, and slash.

C-sharp can also come 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 application on 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 require 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 little wider for a programmer. But 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.

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.

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 which is in active development. Otherwise, you’ll end up criticizing the 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 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 no. 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 on a 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 waterfall model and started adopting the Agile testing methodology. But 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 you 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 based on priority.

This approach gives you a 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 suggest 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 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 supported by more than thousands of plugins. A 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.

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?

There are following two methods which 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, let them share their experience. Try to discover problems with legacy solution, 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 reporting feature which is essential to represent the status of test execution.

We can combine the above solution with TestNG framework which has an intuitive reporting feature. Together we get a fully functional system that runs tests and generates an elegant report. It’s a perfect example of an innovative idea via mixing solutions.