Ready, Tester One? *GO!*

"I handed my passport to the immigration officer, and he looked at it and looked at me and said, 'What are you?'"
- Grace Hopper (60 Minutes Interview)

The Grace Hopper quote above always makes me think about my job as a tester. Companies that develop software know they need testers, but they generally have hard time figuring out what testers are and what skills they need in the role. There have many discussions about how testers can be more technical and at some point, coding comes up in the conversation. My response on twitter contained a few things on a list I have, which I created for a client, so they could have a checklist of skills. This checklist was a guideline to determine the skill level of the tester applicant. This is by no means a complete list and I would be open to additions to the list. Feel free to add those to the comments or tweet them to me.

For clarity, I took the list of skills I had and broke them into levels. I like games and I like leveling up. It seemed like an easy way to motivate myself and others to "level up" career skills. There is a mix of technical soft skills along with technical hard skills and coding skills. Items I consider marginally technical soft skills are noted with an asterisks(*). Skills that involve coding or knowing a coding language are noted with a plus symbol (+).

Level One:

  • Cross-browser knowledge
  • Multiple OS knowledge 
  • Can write effective test cases*
  • Can write or verbalize a testing approach*
  • Can use screen/video capture tools
  • Can write effective defect reports*
  • Can use test management tools (defect & test cases)
  • Can install supporting software without issues 
  • Understands Software Development Lifecycle*
  • Understands Software Development processes (Waterfall, Water-Wheel, Agile, Lean, XP)*
  • Understands Exploratory Testing
    • Uses Session Testing
    • Can write Charters

Level Two:

  • Can use developer tools in browsers 
    • Can read error messages from the console
      • Can diagnosis what the error means
  •  Uses command line 
  •  Uses an IDE 
  • Can use monitoring tools such as: Fiddler, Charles
  • Can run automation
    • Via IDE
    • Via command line
  • Can configure or modify an OS (Registries/Root)
  • Can run software builds
    • Via command line
    • Via build tool (ie Jenkins, Bamboo)
  •  Can analyze user stories for gaps*
    • domain knowledge*
    • integration knowledge*
    • network knowledge*
  • Can modify a mobile OS for testing purposes
  • Can use tools to check non-functional requirements

Level Three:

  •  Can remote/access application environments
    • Spin-up/Use multiple application environment setups 
  • Can run a version of the application locally
  • Can run a local database instance
  • Can run any automated checks or tests (unit, integrated, contract, functional, UI, API)
  • Can run any non-functional automation checks or tests (performance, load, security, etc)
  • Can analyze errors from automated checks/tests for any framework
  • Can use supporting development tools (examples listed, not a complete list)
    • Docker
    • Vagrant
    • Swagger
    • SQL Manager and/or Oracle Manager
    • Artifactory
    • Rancher
    • Hadoop 
  • Can understand micro-service architecture
    • Can draw it for a project*
  • Can understand network architecture
    • Can draw it for a project*
  • Can run a SQL query

    Level Four:

    • Can write automated test scripts for different levels of the application  +
    • Can use versioning software (SVN, GIT)
      • Can make a commit using versioning software
    • Can use software package management systems (npm, yarn, homebrew)
    • Can maintain automation framework +
      • Fix test script errors
      • Fix framework issues
      • Update/Change dependent software packages
    • Can maintain mobile automation framework +
      • Fix test script errors
      • Fix framework issues
      • Update/Change dependent software packages
    • Collaborate with developers on code/application +
      • can evaluate unit tests w/ developer help
      • can evaluate code changes on a basic level or w/developer help
    • Can understand database structures/tables 
      • Know the difference between SQL & NoSQL
    • Can create complex database queries +

    Level Five:

    • Can create and maintain a testing framework for any level of the software +
      • Includes things like: mobile, performance, API, contract, database
    • Can coach & review automation script code +
    • Can integrate automated test framework with CI & CD processes +
    • Can configure CI/CD tools for builds and automation +
    • Can create/maintain testing tools + 

    As you can see, many skills require technical knowledge, but there are very few which are marginally technical or require coding knowledge. While there is an emphasis on testers knowing how to code/program (which I would argue that coding and programming are two different things) there are many more skills which testers literally NEED which do not require knowing a software language but do require technical expertise.

    Addendum: As I was thinking about this, there was another list that sprung to mind as things that are technical, but not necessarily require that you know code. Enjoy!

    Update: I've created a career character sheet. I'm working on a second version now, but the first version can be downloaded here!

    Update 8/2/18: Here is another great blog post on how to get more technical. These are quick start ideas and I definitely advocate them!

    "No computer is ever going to ask a new, reasonable question. 

    It takes trained people to do that." 

    - Grace Hopper


    1. Hi, what do you mean by "Can modify a mobile OS for testing purposes"?

    2. It was a catch-all for being able to do something like rooting a phone, to adding or installing packages for monitoring or automation. I could probably word it better if you have a suggestion?

    3. You just earned another follower--great post!

    4. Interesting! I didn’t know it before, but I’m at level 4.1 with aspirations to make it to level 5. I wish companies had lists like this and used them instead of popularity & confidence to assign pay & consider people for advancement. I know teamwork is important, so being subjectively likeable is always of practical value, but I also feel like not having objective lists of skills holds many of us back. Not just from promotion & fair pay, but also from understanding which skills others think we should work on to advance. I’m curious to know if any of the skills I think I’ve mastered others I work with think I need to improve on.

      1. This is exactly why I posted this list. I think a lot of us are told to "learn testing" - what does that mean exactly? Learn "automation" - that comes in all shapes and sizes, and from what I have seen, there is no standard way of approaching automation. I've had to learn a new "way" to automate something every time I've been on a new project or a new job. The skills testers have are hidden, even a lot of the technical ones. This was my attempt to try to make what I know more visible. Also make what I want to know visible. I haven't quite achieved level 5 myself, but I know I'll get there. There could be a level 6, but I'm not sure yet, and maybe that has more to do with management and coordination of other testers and project level skills. I plan on being around for a while, so we'll see. I think if HR/Business people approached our skills sets like this instead of the very binary can automate/can't automate, I think we'd see a more even playing field and the industry understand the value of someone trained to do this kind of work.

      2. Also! Thank you for your comment! :)

    5. Updated with Exploratory Testing - if you aren't using it now, definitely learn it. I have been using it for a while and I can't believe I left it off my list!


    Post a Comment

    Most Read Posts

    Learning From Failure: The Tricky iOS Environment

    Postman In The Pipeline: Newman Delivers