Saturday, September 23, 2017

Dear Writer: How To Find A Topic To Write

"The most difficult and complicated part of the writing process is the beginning."
 - A. B. Yehoshua

A lot of people want to write, but often have a problem getting started with an idea. Coming up with an idea is fairly easy, but figuring out if that idea is worth something to someone else is the hard part, because most people, including myself, stop themselves before they even write a word and discard an idea or a topic thinking it’s worthless.

Dear writer, don’t worry about the worth of the topic. Get past the idea that it might be worthless and write about it anyway. This will give you a few things to think about:

  1. You gain more experience every time you write something, no matter how relevant or silly it might seem to you at the time.
  2. You could gain insight on how to approach another topic that does have more value, or more details, simply because you’ve written the “fluff” out of your system.
  3. You can always come back to the idea and make it better, expand on it, and grow it into something that has more value than it previously did.

Here are a few ideas on how to come up with topics:

  1. Keep a notebook. When you think of something, write the idea or title for the idea in the notebook. At the end of the day, transfer them to an electronic “notebook” so that you can access them whenever.
  2. Use mind maps to list out ideas around a main umbrella topic like “pies,” or “testing,” or “carrots.” You’ll be surprised how fast you can come up with different ways to approach a broad subject once you get started.
  3. Venn diagrams are pretty useful as well. Play with ideas to see where the intersections are and figure out what topics might be of interest.
  4. With topic in mind, open a blank doc and start writing. Stop writing when the words stop coming to mind. Save the docs somewhere you can get back to them easily.

Use any method to get started. Keep going. I have ideas all over the place. I don’t want to slow down to write something in some moments, but I don’t want an idea that could turn into something great to escape into nothingness. Ideas, even wacky ones, are important. Find your combination of how you generate ideas and run with it.

An Experience Report: TestSphere

“We do not stop playing because we grow old, we grow old because we stop playing!”- Benjamin Franklin

GeekNight, hosted by ThoughtWorks- Dallas, is pretty popular, and I jumped at the chance to host one as well as give the evening presentation on TestSphere, the testing game!

If you don't know anything about TestSphere, go check this out!

The short explanation is that it's a card game designed to get folks talking about testing topics. 

I started the session off explaining the different colors and basically what topics they were divided up into.

Lean TestSphere

For the main part of the evening, I had everyone divide into groups of three and four. I explained how we were going to do a modified Lean Coffee style to pick topics and discuss the cards everyone pulled. 

Each person pulled a card from the deck and took it back to their group. Each card was given eight minutes of discussion time with the option to continue talking about the topic for a few more minutes before moving onto the next card.

The discussion was lively and interesting. I was asked mostly about the "feelings" cards and what they meant. I explained them as best I could from a tester's perspective. 
Groups playing with TestSphere

I should mention here that pretty much everyone in attendance was more developer than tester. I think there were two other people besides myself that had been involved with testing in some way. 


After we wrapped up the discussions about the cards we went into a short retrospective about what happened with the topics and what people thought about the cards. 

People reported that they enjoyed the discussions a lot. One group thought the topic of Security wasn't important really, until someone started thinking about it from a tester's perspective and then the conversation really opened up. 

A majority of people came to the realization that testing was NOT and easy practice. The cards actually generated sympathy with non-testers about how much testers needed to keep track of and what the role really entails on a day-to-day basis.

At the end of the night, one participant was excited to share the cards with his off-shore testing team. He hoped to spark ideas and conversations with them through using TestSphere. 

Continue The Narrative

The night turned out to be a great success and I hope that I can host/present TestSphere again to another group. I think the biggest win was influencing non-testers and gaining empathy for the testers and their craft. 

Let me know your TestSphere stories in the comments! Or become part of the narrative at The Club or on the Slack channels. 

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