Have you just been hired as an automation developer? Congratulations on your new role! Being an automation developer is tricky, since it’s a bit of a hybrid position. You will need to learn both software development and and software testing — 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
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.
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:
- Java for Testers, by Alan Richardson, creator of the online course, Selenium WebDriver with Java
- The Selenium Guidebook, by Dave Haeffner, author of the blog, Elemental Selenium
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):
- Refactoring: Improving the Design of Existing Code (1999), by Martin Fowler
- The Pragmatic Programmer: From Journeyman to Master (1999), by Andrew Hunt and David Thomas
- Agile Software Development, Principles, Patterns, and Practices (2002), by Robert “Uncle Bob” C. Martin
- Clean Code: A Handbook of Agile Software Craftsmanship (2008), by Robert “Uncle Bob” C. Martin
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.