Monitor health of non-Prod services with Jenkins & Slack

The product I currently work on depends on 3 different vendor APIs and, as you would expect, their non-Prod environments go down fairly regularly.

I found it very frustrating that I never knew when their services came back online. So I decided to build a healthcheck endpoint which integrated with Jenkins and Slack and notified me, via Slackbot, once their services came back up. This meant I could switch back and start testing tickets again asap. When you have tight deadlines, and service regularly go down, every minute counts!

Continue reading

Uncertainty and decision making

I recently discovered the Farnham Street website and something about the podcast with Annie Duke really struck a chord with me. She’s an ex-professional poker player who now gives talks on decision making. It got me thinking about how I my own decisions and how I can make better ones.

Difficult decisions are always based on missing information. If you knew an outcome was guaranteed, there isn’t really a decision to be made. I believe we should reframe how we approach discussions about complex decisions so it’s front and centre in people’s mind; we’re dealing with imperfect knowledge.

Instead of thinking of decisions (and their outcomes) in terms of good and bad, we should talk about them in the context of being better and worse. Good/bad decisions imply certainty, which is very rarely the case. Changing the conversation, so people talk about decisions as being better or worse, helps clarify in people’s minds that we’re dealing with a lack of information which will invariably result in compromise or trade offs.

The real world is full of uncertainty and our discussions should accurately reflect this reality. Peddling in certainty is dodgy business and should be left to the professionals; priests and politicians!

The “403 Forbidden” card game

There is a subtle but very important difference between naming something and explaining something.

I’m sure you’ve heard people use the phrase “technical work” in lots of different situations but have you ever stopped to question what it really means? Could you explain “technical work” to someone else in plain, simple language? Could you do it without using the words “technical” or “work”? Now how many of these familiar-sounding terms do you think could you explain to a friend in 90 seconds?

Continue reading

Naming URL and JSON components

These are some simple visuals I quickly threw together. I hope they will help to improve conversations which will lead to better-informed decisions. In IT we have a habit of using lots of names for exactly the same thing, which frequently leads to longer and more confusing conversations! I hope the visual breakdown of URLs and JSON objects into their constituent parts will be of benefit to newbies and non-techies alike.

Continue reading

Creating test data with Calabash

On returning to my old iOS team after a brief stint working on our services team, I wanted to implement what I had learned there and improved the stability of our Calabash scenarios. I wanted to shift away from our dependence on test data stored in config files and databases and create test data at the same time as executing our Calabash scenarios.

The whole process was surprisingly simple and straightforward. We used the “Rest-Client” gem and then called some simple data manager classes by using cucumber’s built-in hooks.

Continue reading

Annotating Test notes

I’m lucky in my current role to the independence to test how I see fit. I don’t have somebody forcing me to use a tool that doesn’t work for me. After weeks of plaguing my boss to pay for a JIRA Capture licence, I eventually got my way!! I have used JIRA Capture Test Sessions briefly at a previous company and found it to be a simple but very effective tool for capturing testing notes.

Continue reading

MVP in a graph

The project I’m working on has an end of August deadline and over the last few weeks I’ve noticed the term MVP being thrown around with increasing frequency. Back at the start of the project, a developer dropped the ‘M’ bomb in a meeting. Before he could finish pronouncing the letter ‘P’, one of the project stakeholders very politely but forcefully interrupted the dev to remind everyone that “we are not building an MVP!”. Continue reading

Scheduled releases and the importance of Regression Testing

Michael Bolton first highlighted the difference between testing and checking. The output of checks are binary results (true/false, on/off, black/white). Checks can be executed by humans or automatically by machines. The output of testing is questions, facts and information. Tests can only be executed by humans. Unfortunately, a lot of people continue to use these words interchangeably which can lead to confusion and mistakes. To become better testers, I believe we need to start with the basics; our vocabulary. Continue reading

My test heuristics mind map

Mind maps are awesome at allowing you to visualise complex/abstract concepts and link the relationships between them in a very simple format.

A few weeks back I was browsing through James Bach’s website and came across an article about rapid testing (heuristics are a central component of the rapid testing approach). A few days prior, one of the testers at work spoke about using mind maps to capture testing notes. So I decided to combine the two ideas and create a resource that would, at a glance, highlight the tools and techniques available to me as well as remind me of the testing skills I need to improve.

Continue reading