Most of the testers at my new company do not have programming skills (or at least are not putting them to use). This is not necessarily a bad thing. But in our case, many of the products-under-test are perfect candidates for automation (e.g., they are API rich).
We are going through an Agile transformation. Discussions about tying programmatic checks to “Done” criteria are occurring and most testers are now interested in getting involved with automation. But how?
I think this is a common challenge.
Here are some ways I have had success getting manual testers involved in automation. I’ll start with the easiest and work my way down to those requiring more ambition. A tester wanting to get involved in automation can:
- Do unit test reviews with their programmers. Ask the programmers to walk you through the unit tests. If you get lost ask questions like, “what would cause this unit test to fail?” or “can you explain the purpose of this test at a domain level?”.
- Work with automators to inform the checks they automate. If you have people focused on writing automated checks, help them determine what automation might help you. Which checks do you often repeat? Which are boring?
- Design/request a test utility that mocks some crucial interface or makes the invisible visible. Bounce ideas off your programmers and see if you can design test tools to speed things up. This is not traditional automation. But it is automation by some definitions.
- Use data-driven automation to author/maintain important checks via a spreadsheet. This is a brilliant approach because it lets the test automater focus on what they love, designing clever automation. It lets the tester focus on what they love, designing clever inputs. Show the tester where the spreadsheet is and how to kick off the automation.
- Copy and paste an automated check pattern from an IDE, rename the check and change the inputs and expected results to create new checks. This takes 0-to-little coding skills. This is a potential end goal. If a manual tester gets to this point, buy them a beer and don’t push them further. This leads to a great deal of value, and going further can get awkward.
- Follow an automated check pattern but extend the framework. Spend some time outside of work learning to code.
- Stand up an automation framework, design automated checks. Support an Agile team by programming all necessary automated checks. Spend extensive personal time learning to code. Read books, write personal programs, take online courses, find a mentor.
2 comments:
Subscribe to:
Post Comments (Atom)
Hi Eric, I have a general automated testing question for you. I'm being asked to create a automated regression testing library for the internal system at my current company. I'm finding the task a bit daunting. I know automated tests are great for easily repeatable tasks, but is it best when they are high level tests? I'm not sure how detailed they should be. Any thoughts on this would be appreciated. Thanks Eric, and welcome back to the blog!
Thanks for the question, Patrick. You might get some ideas from the next post, "Which Tests Should Be Automated?".
Like most questions, it depends on your situation and the goals of your mission. Typically, we want our automation to free up the exploratory testers' time so they can focus on new testing instead of repeating the same checks.
If there is no obvious chunk of valuable checks to automate, I agree with your proposal; start with shallow tests that provide good coverage (think Build Verification Tests) then add deeper tests over time.
Of course...you'll want to consider many of the ideas in the next post.
Good luck!