UI test automation skill ladder
Over the years I have seen many testers, automation engineers, SDETs’, QA engineers and some more variations in their title that usually have ‘Test Automation’ as a core skill set. I witnessed projects of varying complexity in mobile and web projects that have individuals/teams whose main focus is Automation. Test automation industry has titles like QA Engineer, Senior QA Engineer, Test lead, Automation Engineer, SDET, Senior SDET, Principle SDET, Automation Lead, Reliability Engineer, Test Architect and so on. Obviously not all of them have the understanding, maturity and skill level, in this article I attempt to put them in a skill ladder level.
Test automation is a hybrid field of developers + testers. They need to have an aptitude for manual testing, systems thinking and expert coding knowledge.
How can one tell whether a person has expert knowledge in test automation or he just started
One of the lame questions, I get asked by HR folks trying to answer that question is
how much time do you spend coding vs testing?
When faced with this question, I have never given them a same answer, it depends on the day and current sprint focus. That is like asking a developer how much time do you do design vs coding? This post is an attempt to give you that scale. Also just experience is not a measure of seniority eg: if a person has been doing this for 10 years so he must be a senior doesn’t really make sense. I knew of some SDETs’ in microsoft with a longer tenure but their skills cannot be easily translated.
Let me be clear on what I mean by test automation, because terms are important and testing industry has many terms for the same activity. I am deliberately taking a narrow approach here because test automation is complex and putting all these skills on the same scale is not feasible.
- Automation is done from a user perspective — usually involves a GUI.
- Does not include unit testing — tests that aid during development
- Component or functional testing — that requires a lot of mocking
- When tests are running one can see things move around visually
- Doesn’t consider skill levels in non-functional testing like performance testing, security testing and other specialized testing.
As the graphic implies a higher level member exhibits mastery over the previous level tasks as a pre-requisitie.
In text format:
- Can find elements through simple locators
- Run test cases
- Diagnose simple errors
- Edit existing tests for changes in locators, data
- Basic design patterns — page objects,abstraction
- Code in a single language/platform
- Utilize tools created by others
- Tests are atomic, independent and can run in parallel
- Tests can run on multiple browsers
- Create jobs in CI infrastructure
- Design patterns — DRY, Factories
- Tests reuse existing tools within framework
- Avoids using Thread.sleep() and uses explicit/implicit waits and loopers
- Understands the limitations of automation
- Tests can run in multiple locales/languages
- Tests are easy to be written by any dev
- Comfortable to code in multiple languages, platforms
- Bootstrap CI infrastructure
- Frameworks allow for code reuse outside of the team
- Mentor, coach junior levels
- Meta automation, automatic flagging of flaky tests
- Tests are easy to be written by business folks
- Create DSL’s for writing tests in a specific product
- Enhance and optimize CI infrastructure by plugins and integrations
- Enhances frameworks that are authored by someone else
- Evangelize Automation to business folks
What are your thoughts? Did I miss anything? Post in comments