Friday, September 1, 2017

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)*

 

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* 
  • 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 understand network architecture 
  • 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!

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

    It takes trained people to do that." 

    - Grace Hopper

    4 comments:

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

      ReplyDelete
    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?

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

      ReplyDelete