Congratulations on your new role as an automation developer. Being an automation developer is tricky, since it's a bit of a hybrid position. You will need to learn both software development and software quality assurance—dual skill sets that may at first seem to be at odds with each other. With enough practice, though, you will find that they compliment each other, working in harmony.

What automation developers do, essentially

Allow me to sidestep the advice for a minute, and describe for those who don't know what an automation developer does. The basic goal is to simulate a user navigating through a web application. Filling out a form. Selecting links. Clicking buttons. Open-source tools such as Selenium WebDriver—paired with Java, JavaScript, Python, or Ruby code—can simulate a customer navigating through the web app. This means that you can now take the Quality Assurance department's regression test suite, figure out which tests would be most valuable to the development team, and automate them. If you add other free Continuous Integration (CI) tools such as Jenkins you can set up multiple automated regression test suites.

Imagine a small subset of automated tests, used as a sanity check, run before users merge their code into the master codebase, just to make sure their new code doesn't break anything in the application. Imagine if the regression test suite could automatically run against a release candidate just before it is pushed to production. That is automated testing. And to create the tests, you need automation developers.

As I mentioned in my earlier TechBeacon article, "Switching careers in QA: From manual testing to automation development" the relationship between development and QA shouldn't be the same as the relationship between an artist and an art critic. It should be more like the relationship between a writer and a copy editor, both applying their specialized skill sets to make a quality product. Your skill in one field will make you better in the other.

Are you new to QA?

If you are a software developer who is new to quality assurance, you will need to develop a whole new mindset, that of the software quality assurance engineer.

A QA engineer's job is to focus on quality, to meet or exceed the needs and expectations of the major stakeholders. Does the product meet your customer's needs? Is the product usable? Is it intuitive? Would it work with all the different browsers, platforms, and mobile devices your customers require? Are the product requirements clearly understood and explicitly implemented in the product? Can your team meet the expected release date? Have you put the product through its paces enough, discovering most of the critical bugs? Have you traversed the product through pathways major and minor, using the product as you'd expect the customer to use it? Have you performed exploratory testing to figure out how a customer could potentially misuse it? Identified both positive and negative tests?

To get into the QA mindset, picture all the ways a login page can be tested:

What happens if you enter a valid username and password and then select the Login button? Does it log you into the system with the correct user type (admin, superuser, user), displaying the correct landing page?

What happens if you enter an invalid username and password? Does the error message show up in red underneath the Login button, assuming that is how it was designed?

Is the username supposed to be an email address? If so, what happens if you leave out the @, or .com, .net, .edu, .uk, .io, etc.? Does it clue the user regarding the correct format?

Do the username and password text boxes allow enough characters to be entered?

What happens if you log in and the server is down? Do you inform the user, handling the error gracefully, or is there a white page with "Error 404"?

Further reading for QA folks:

Although being ISTQB-certified isn't part of any job requirement for QA engineers here in the United States, I have enjoyed reading International Software Testing Qualifications Board certification prep sites such as "What is Software Testing?"

Agile Testing: A Practical Guide for Testers and Agile Teams, by Lisa Crispin and Janet Gregory, is a great read!

Are you new to development?

Whether you are going to be using using Java or Python to write browser tests in Selenium WebDriver, software development is going to be like learning how to write in a foreign tongue. Nobody will expect you to submit a research paper on your first day, but you will soon have to figure out how to write a few "paragraphs" in the new language.

You may feel overwhelmed, flooded with technical information that may be difficult to put into context. You may feel insecure because you are new to coding. The important thing is to relax and keep your mind receptive. Understand that with technology moving at such a fast pace—with new open-source technologies unheard of just a few years ago becoming the new standard—everyone feels overwhelmed at times, even senior developers. Take good notes, and spend some time after-hours practicing what you are learning.

A few books on automated testing:

A few books that helped me get in the mindset of a coder, giving me exposure to good software design principles (check to see if any developers at your company can let you borrow them):

Networking is everything

The period when you are new is the best time to network with your co-workers. How did other automation developers learn their craft? Did they take online classes? What books or blogs do they read to stay current? Remember: With outside learning, it's important to stay focused. It's easy to fall down the rabbit hole learning a new technology that your department doesn't use or new skills you will never put into practice.

Make sure to network just with your fellow automation developers, but also with the senior software engineers who built the application you are testing. Learn from them which best practices they use in coding.



Image source: Flickr

Keep learning