Categories
Critical Thinking Software Testing

Mind maps for Software Testing

Using mind maps to help brain storm testing ideas is a great way to get all of your ideas out. Using a mind map you will be able to:

  • Generate more testing scenarios
  • Connect new ideas
  • Collaborate more with other people

How do I mind map?

Step 1: Start with your central idea/theme

Nothing beats using a good old pen and paper when it comes to starting, sure there are tools like xmind and coggle. You could also use your trusty presentation tool of choice (powerpoint, google slides, keynote or prezi). Even confluence has plugins that enable you to create mind maps.

But I like starting with my trusty pen and paper:

The word Idea is inside a cloud at the centre of the page

Step 2: Start brainstorming your ideas

Then you start putting your ideas down on the paper, maybe one idea triggers a bunch of related ideas? You might even come up with that 1 big awesome idea too.

The Central idea is surrounded by connected thoughts. Thought 3 has generated the "Big Idea"

Step 3: Share your mindmap and start collaborating

Ideas get better when you share them with other people. Share your mindmap with a colleague and see if they have any new ideas to add too.

Test Insane has this awesome repository of mind maps that other software testers have created.

How are mind maps useful?

They can used during sprint planning

I created, printed and laminated this mobile testing mind map in a previous team and I would bring it to planning meetings.

I would use it to remind myself to ask about:

  • Accessibility Testing
  • Performance Testing
  • Security Testing
  • Privacy

As these elements of quality are often overlooked when we are doing sprint planning in development teams.

They can be used during job interviews

When I’m interviewing other testers one of my goto questions is to ask, “how would you test a username/password field”:

If they start mind mapping test scenarios, that’s a bonus in my mind. Also bonus points if they mention something like a big list of naughty strings, or how hard it actually is to validate a proper email.

Ultimately I’m looking for them to get to context based questions, things like:

  • Why are we testing this?
  • What’s changed recently?
  • Is this already in production?

If you’d like to read more about interviewing technical testers, this post is for you.

Further reading

Testing heuristics are also a kick arse way to generate more testing ideas too. Combining heuristics and mind maps is a sure fire recipe for generating more scenarios.

Are you interested in learning more about visual note taking? This post is for you.

Wondering how you can use visual note taking with automation testing? This visual risk based framework for UI automation is for you.

Want another way of generating crazy test scenarios? Try soap opera/scenario based testing.

Do you find mind maps useful?

Let me know by leaving a comment below or by sharing this post.

Categories
Critical Thinking Politics Sustainability

What type of voter am I?

On my walk this morning I was listening to this radiolab podcast on how people try to categorise voters in the US. It started off with the Soccer mum category that helped Clinton remain elected in 1996. And this got me thinking, what type of voter am I?

Hipster Bogan

If I was to give myself a stereotype, I like the phrase; “hipster bogan”. I live in a big city, enjoy pretentious coffee, avocado on toast and craft beer.

However I’m very much a bogan at heart too, I’m one of the many young Australians that grew up in rural Australia (Tasmania) and migrated to a big city for work, however that trend appears to be changing too.

My family is very working class. My dad is a stereotypical bogan; think tradie with tattoos, blue singlet with shorts, say’s lots of “yeah mate”, drinks beer etc.

This conversation piece about bogans vs hipsters is a good read.

I vote 1 Science Party

Climate change is my biggest concern, when I think about my future it’s my biggest worry. The last 2 elections I’ve volunteered and voted for the Science Party. It’s not because I think they’ll win, but if they get enough votes then eventually the bigger parties actually have to pay attention to them.

Also these parties get more funding based on the number of first vote preferences. And with the way preferential voting works here in Australia, a major party still gets my first vote even when I put them second, here’s an explainer:

Language warning; lots of fucks and shits to give

Some other concerns I have

My other main concerns are access to education for poor Australians and jobs for people with low education rates (e.g. truck drivers).

What are people with low literacy rates going to do when jobs like truck driving are more automated? I have this post reflecting more on the future of work.

I’d vote Labor over Greens

I have a tendency to vote Labor over the greens, even though I’m from Tasmania and that’s where the greens party started. The Greens party originated over protests of flooding lake peddar when Tasmania was building more hydro electric dams.

I view the greens history and a lot of their motivating factors to get in the way of creating jobs even though they have great intentions. I would prefer to vote for sustainable old growth logging in Tasmania over no old growth logging at all.

I slightly prefer Labor over Liberal

However my main deciding factor for who gets my 2nd vote is the person whose voice I can tolerate hearing the most. The two major parties are just as shit as each other. Last election Morrison got my second vote, I think Turnbull also got my second vote before that. However Rudd definitely got my vote over Abbott.

Though Abbott did give us some comedic gold:

Kevin Rudd Media Enquiry

Rudd had this petition to investigate conflicts of interest in the mainstream media. The petition got close to 500,000 signatures and I was one of them.

I did enjoy watching this interview with Rudd which goes into more detail about our biased media (Friendly Jordies is a comedic shit poster on youtube):

How would you describe your voting stereo type? Are you a soccer mum? A hipster bogan like me or some other label?

Categories
Critical Thinking Spirituality

It’s not cool to want someone to die

We are now 7 months into a global pandemic. And a certain political leader has come down with the infection. There’s been a lot of sentiment online of joy/excitement/anticipation over this:

screenshot of twitter searching for "is he dead yet" and displaying the excitement people have of this sentiment. Someone claims to be excited like a kid in a candy store.

And I understand the sense of, “Karmic Justice” in what has been a really stressful year. I personally felt a little excited about the news. But I want to say: It’s not cool to wish or desire the death of someone. No matter how narcissistic or horrible you think someone is:

No. One. Deserves. Death. Threats.

Even twitter has taken action to prevent this.

I have this other blog post on free speech if you’d like to read more on how social media companies are implementing their own censorship rules.

Spanish Flu – Analogy

The 1918 Spanish flu, despite its name is said to have started in Kansas as a version of the swine flu. It went to Europe before it evolved and became even deadlier. It’s only called the Spanish flu because Spain was fairly neutral during world war I and was one of the few countries openly reporting about the pandemic. None of the warring countries wanted to let the other know they were struggling with a killer pandemic.

The Spanish flu pandemic of 1918, the deadliest in history, infected an estimated 500 million people worldwide—about one-third of the planet’s population—and killed an estimated 20 million to 50 million victims, including some 675,000 Americans.

https://www.history.com/topics/world-war-i/1918-flu-pandemic

Some states responded differently and introduced fines for not wearing a face mask. Philadelphia had one of the worst outbreaks, by March 1919, over 15,000 citizens of Philadelphia had lost their lives.

Citizens in San Francisco were fined $5—a significant sum at the time—if they were caught in public without masks and charged with disturbing the peace.

https://www.history.com/topics/world-war-i/1918-flu-pandemic

The President came down with the Flu

The president of the United States, Woodrow Wilson was in the process of negotiating a peace deal between the prime minister of France, Georges Clémenceau and the League of Nations (kinda like a pre UN) which they wanted to send to the Enemy; Germany. Wilson wanted to give Germany a break, Clémenceau wanted tough measures. Wilson wouldn’t budge for months until he came down with the flu in April of 1919, afterwards he caved and those implications may have put in motion the creation of the Nazi party which resented having to pay the high World War I levies and wanted to return Germany to their former glory.

Listen to this podcast by RadioLab if you want more of this history.

The President downplayed the flu

Sound familiar? Wilson never publicly acknowledged the flu. In the US (and most of the world) there was never a clear response from leadership with how to deal with the Spanish flu and millions of people died because of it. Just like in the US today there was never a clear message from leadership in how to respond to today’s pandemic and this has contributed significantly to the huge amount of deaths in the US (despite being one of the wealthiest countries with some of the best health care in the world and was potentially the best prepared for a pandemic):

I have some hope

It’s utterly awful that anyone has gotten infected from this pandemic and it’s even worse when people have died. I hope people don’t suffer in vein because of this. When leaders come down with this I hope it highlights how serious this pandemic actually is. No one is invincible. I hope the many mask averse wearing characters out there take heed and see this as the serious threat it is.

Stay safe, wash your hands, wear a mask, practice social distancing and I hope we can all get through this alive.

Here’s an Australian History version of the Spanish Flu:

Categories
Agile Books Conferences Critical Thinking Presenting Software Testing Technology Testing Archives

Where are they now?

Have you heard of the Agile Manifesto? It was published in 2001 when 17 blokes who work in tech came together to come up with a consolidated way of working. They came up with 12 principles which still hold up today. It’s worth a read.

This blog is digging into the archives and asking the question; where are they now? It is in alphabetical order by surname.

Kent Beck

He’s got a wikipedia page, I wonder how many of these blokes have their own wikipedia page? Author of the extreme programming series, which I’ve heard still holds up today.

You could also watch his recent YOW! Conference keynote presentation from 2018:

You can check out my sketchnotes of his talk here:

Mike Beedle

He also has a wikipedia page, he died in 2018, he got stabbed. Ouch, my condolences to his family and the community. At least he didn’t have to experience the dumpster fire that is 2020.

Arie van Bennekum

Alistair Cockburn

Ward Cunningham

Most of these blokes have a wikipedia page. But here’s the first one in this list to have a TEDx talk:

Martin Fowler

I often reference Martin Fowler’s content on my blog. I’ve also seen this bloke give a few presentations here in the land down under too:

James Grenning

Has published a book on TDD for embedded chips. Here’s a talk for TDD for embedded systems (I’m a sucker for a good testing talk):

Jim Highsmith

Andrew Hunt

I’ve been meaning to read the pragmatic programmer. Rubber ducking as a debug method was coined in that book and referenced in this talk:

Ron Jeffries

I’m following Ron on twitter, his blog on space invaders and testing seems to be a bit of fun to read. Does everything have to be a user story?

Jon Kern

He doesn’t have a SSL cert on his blog, well my old blog has had the SSL cert expire so I can’t blame him.

Brian Marick

Robert C. Martin

There’s a bit of controversy around “Uncle Bob”. I’ve previously mentioned some of these issues. So I won’t say too much but he’s been “cancelled” for a recent conference and then threatened to sue. Lovely stuff.

Steve Mellor

Ken Schwaber

If you want a bit of context on the term of Scrum, here is a good talk:

Jeff Sutherland

He’s also got a TEDx talk:

Dave Thomas

Finally I’ll leave you an Agile is Dead talk by Dave Thomas. It’s probably one of the most viewed software engineering talks on youtube that I’ve seen since I started putting this blog post together (over 1.2 million views):

Conclusion

Surprisingly, only one of these blokes is confirmed as dead. And there is a serious lack of diversity in this group. However they have all been instrumental in current development practices. Who hasn’t heard of Agile?

So who do you think is driving software development further these days?

Categories
Critical Thinking Software Testing Testing Archives

Interviewing technical testers

Angie Jones has this awesome video explaining the technical interview process for software testers. This blog is a summary of that process in written form. I often watch these videos at double speed.

1. The Testing Question

Many automation engineers out there are great at code but not so great at the testing element. Companies are looking for people with strong skills in both. Someone could ask you:

  • How would you test this pen/chair/bottle?
  • How would you test a username/password log in field on a website?

It’s easy to jump straight into test scenarios. BUT make sure you come back to the context;

  • Why is this being tested?
  • Who is it being built for?
  • What are the requirements/features?

2. Unit Testing

You might be given a sample function and ask to come up with some unit testing ideas. As an Automation Engineer you probably won’t be writing unit tests but this question is to see how you apply that testing mindset. You might answer this in a Test Driven Development approach.

public int add(int a, int b);
  • Does this method add two integers and return it?
  • What are the min and max values? e.g. is what about an integer larger than 32 bits?
  • a = 0 and/or b = 0
  • Negative numbers?

3. Service Tests

You might be asked to test a simple CRUD API for a sample API e.g. user management, what scenarios would you create to test the API? Make sure to talk about the different HTTP methods and the different error responses. How would you create scenarios to test them?

4. UI Tests

You might be given a web page and asked to create some UI tests using the tools you are the most familiar with. You could talk about the different approaches you might use too. If you could talk out how you would build out a page object model, what parts are common across different pages and how you’d abstract them out in their own classes such that they could be easily reused this would be gold.

5. Programming questions

Unfortunately you might have the same programming questions thrown at you as developers. These are a horrible part of the interview process but it’s something we have to live with. HackerRank is a great way to practice and to get efficient at this type of performance.

Dan Ashby’s approach to interviewing testers

Dan Ashby has this great post on how he interviews testers using this mindmap:

My approach

If I was interview a technical tester I’d start with an intro. We will then dive into an exploratory testing question. Then ask about using GIT and how you would collaborate with developers. Then deep diving into some more technical questions on unit/API testing depending on the role.

  • tell me a bit about yourself…
  • How would you test a username/password login page?
  • How do you create a pull request in GIT?
  • What unit tests for this function can you come up with?
  • How would you test this sample API?

If I was interviewing for a mobile tester role I’d ask about using command line tools like Android Debug Bridge (ADB). For example, how would you generate a battery historian report and pull files from an android device using ADB?

How do you go about interviewing testers? Do you have any other tips to add?

Categories
Critical Thinking mindfulness

Reflections on free speech

In today’s internet era it feels all too easy to get angry and upset over something offensive. It can be easy to find the rage machine in full swing and to get caught up in it all. Many platforms can concentrate that anger and it’s all in the name of “engagement”. Outrage gets more clicks and shares.

This blog post is a reflection on my thoughts about free speech, hate speech and how people become hateful.

3 approaches to moderation

If we let all types of speech fly under the free speech banner, then what do we do about speech that enacts violence? On the internet I’ve seen three levels of moderation:

1) Reddit – let everything fly

If you want to see some dark nasty corner of the internet you will find just the right corner in some subreddit thread somewhere. 4Chan has a similar culture. Anything goes, no moderation here.

Remember #GamerGate? One part of of it was some people didn’t like Anita Sarkeesian’s video posts on Tropes vs Women in video games. Someone even created a beat up Anita game.

2) Twitter – let most things fly

If it enacts a sense of violence twitter will now tag the post with a warning:

Twitter has flagged and hidden a tweet by United States President Donald Trump, saying he violated Twitter’s rules about glorifying violence.

https://www.aljazeera.com/news/2020/05/twitter-flags-hides-trump-tweet-glorified-violence-200529080054304.html

3) Facebook – post no evil

Facebook has a team of people and algorithms searching and blocking hate speech, e.g. commenting “Men are scum” will be removed.

you can’t attack a person or group of people based on a protected characteristic. A characteristic like race, religion or gender.

https://www.wnycstudios.org/podcasts/radiolab/articles/post-no-evil

Free speech isn’t a free pass

If I say something hateful, offensive or generally misguided, I should be held accountable for what I said. I want people to call out my offensive nature. There’s lots of things I don’t know or misunderstand. By calling me out you help me to improve my understanding.

We have to take responsibility of what we say

Rowan Atkinson – https://www.youtube.com/watch?v=BiqDZlAZygU

Comedians and cancel culture

Comedians have a reputation for being a bit offensive or a bit on the nose with their comedy. Comedy is criticism of society at large. Here are some Comedians calling out Cancel Culture:

These comedians tend to think we are now too sensitive and over react to everything.

How people are radicalized

I’m going to leave you with a video on how people become radicalized. It doesn’t matter if it’s veganism, transphobia, racism, sexism or general hatred. No one starts their life hating another group of people. We learn this behavior through the culture we absorb:

If you find yourself getting angry over something on the internet, please take some time to reflect and understand where that anger is coming from.

Further Reading

https://ketanjoshi.co/2020/08/07/journalism-has-a-social-media-abuse-problem-no-not-that-one/

Categories
Critical Thinking Marketing Mobile Testing Software Testing

That elusive Test Strategy

I recently was asked about recommendations for learning about test strategies. Here are my sample strategies:

a strategy doesn’t have to be a big giant document. It starts as an idea in your head and you have to get other people on board as part of that strategy. So you need to share some knowledge in some format to help share your idea. This blog is about how I’d go about developing a new test strategy in a new team.

History of the term

First let’s take some time to understand this term; strategy. Historically the word strategy is associated with war and battle:

Quote: Strategy without tactics is the slowest route to victory. Tactics without Strategy is the noise before the defeat - Sun Tzu
https://www.pinterest.com.au/pin/287878601154737781/

Strategy is to help you win or achieve some goal. Many people talk about their tactics when they are thinking of their strategy. Tactics are your how. They aren’t your whole strategy.

A tactic is a conceptual action or short series of actions with the aim of achieving of a short-term goal. This action can be implemented as one or more specific tasks.

https://en.wikipedia.org/wiki/Tactic_(method)

Book: I have a strategy (No you don’t)

This book helped me understand the term, “Strategy” in a visual and fun way.

https://www.amazon.com.au/Have-Strategy-You-Dont-Illustrated/dp/1118484207

According to this book a strategy has 4 parts:

  • A purpose
  • A distinct, measurable goal
  • A plan
  • A sequence of actions or tactics

Start with a purpose

If I was dumped into a new team tomorrow and asked to develop a test strategy, I’d start by interviewing/surveying a few people. Depending on the size of the team and who I was working with it could be an online survey or a casual chat over a coffee. I’d ask something along the following lines:

  • What does quality mean to you?
  • What are common problems in the testing process here?
  • If you could fix just one thing about our quality, what would it be?

Now different people are going to answer this differently. Developers might say test code coverage, easily maintainable code and easy deployments make a high quality product. Your project manager might say happy customers. Testers might say less bugs found in the test phase.

Develop a goal

Once I’ve surveyed enough people (5 people is a good enough number for most user research interviews), I’ll work on constructing a goal. it might be;

  • improve our continuous integration build times
  • increase our test coverage
  • reduce the amount of negative customer feedback

Make sure it is measurable. You could use SMART or OKR goal formats.

https://www.toolshero.com/personal-development/smart-goals/
https://blog.weekdone.com/introduction-okr-objectives-key-results/

Develop a plan

Now what are some things I or the team could do to achieve our goals? We could create tasks during our sprint to help us work towards our goal. Once you’ve achieved something you survey those original interviewers to see if the perceived quality has actually improved.

Measure your progress

Measure the improvements in quality of your product. For my team we are tracking the average app store ratings, crash rates and engagement with in app features to see if they are actually useful. https://bughuntersam.com/metrics-and-quality/

Risks and Gaps

A Test Strategy could also have a section about risks or gaps in this approach. For example things like performance testing and security testing might not be included. Having a brief explainer why these aren’t part of your strategy can be useful for explaining the context and scope.

UI Automation Visual Risk Framework

if you are working on improving the UI Test automation coverage you can use this visual risk based framework to help focus on where to start and what to automate first and measure progress against it as part of your strategy.

https://bughuntersam.com/visual-risk-ui-automation-framework/

Conclusion

I’m more comfortable with the term marketing strategy over test strategy because it’s easier to measure your impact and easier to come up with concrete goals. Software testing isn’t as tangible as many other parts of the business process and can be hard to measure.

Can your strategy be summarised by this comic:

test all the things
automate all/some things

What resources have helped you understand test strategies? I’d love to check them out.

Categories
Craft Beer Critical Thinking Finances Job hunting Marketing mental health mindfulness Software Testing Technology

Buddha in Testing: Chapter 5

At the end of Buddha in Testing, Pradeep asks the reader to co-author the next chapter with him. So this blog post is my attempt at writing part of Chapter 5 of this book:

What is the chaos that surrounds you in testing?

Write now, during the pandemic a lot of people have been made redundant and are struggling to find work. I’m lucky enough that my day job isn’t all that chaotic, which is a good thing. The mobile app I’m working on is doing pretty well. I wouldn’t want to be dealing with a stressful work load on top of everything else.

What is my contribution?

I put together a software testers career cheatsheet to help anyone whose struggling to find work right now. After having career coaching sessions with a bunch of people, a few themes came to light. I got the inspiration to do a video series on those points. I found out it makes for great marketing content.

What situations have put you out of calmness?

Last weekend I recorded 7 career tip videos in one weekend. I was burnt out by Monday and a blubbery, teary mess. I couldn’t focus on work and took the day off to mentally recharge. I told twitter I was out of spoons.

How did you bring peace?

Walking around the city, listening to podcasts and shopping in second hand clothes stores was how I recharged. I even had a beer in a sports bar at lunch and watched some cricket (England vs West Indies) :

What answers are you searching for?

Satisfaction in life. I’m over software testing. I’m starting a graduate diploma in financial advice next week because I have an idea to disrupt the retirement funds industry here in Australia. Making retirement funds easier is something I can get behind.

How will you recognise the peace?

I enjoy adding value to other people. It’s a huge driver to most of what I do. I miss the constant interaction with people from my shop assistant days. If money/labour wasn’t a drawback I’d prefer to work in a supermarket over most of the testing roles I’ve had. With my history of depression, I don’t think I’d ever achieve peace but I can be more content with life.

I’m now outta steam

I could continue answering the questions but I think I’m going to leave it there. How would you answer some of these questions?

Categories
Critical Thinking Job hunting Marketing Software Testing Technology

Technical tips for Software Testers

My software testing career tips series on Youtube is going well. So well in fact that I need to break out and collect the 4 part mini series on technical skills into it’s own blog post here.

Part 1: learn command line

Nothing will impress you colleagues more than your technical prowess with the command line, even if all your doing is checking your email. Here’s all of the references in the video:

You should focus on learning tools and technology that help you collaborate with the developers on your team. Here’s all of the references in the video:

Part 3: The Technical profile

Having a GitHub profile is key to establishing your tech credibility. Here’s all of the references in the video:

Part 4: Manual vs Automation

I avoid these terms in my profile like the plague and as an Industry we should drop these terms. Here’s all of the references in the video:

What are your tips for testers when it comes to improving their technical skills?

Categories
Critical Thinking Software Testing Technology

Code Smells and Boolean Logic

Have you ever come across a boolean in code (i.e. a TRUE/FALSE) variable and had to stop and question if TRUE meant enabled or disabled? I call this a code smell.

A code smell is a surface indication that usually corresponds to a deeper problem in the system.

https://martinfowler.com/bliki/CodeSmell.html

Naming variables is hard

One of the hardest things in software engineering is naming variables. They need to be easy to understand, short (ish) yet descriptive. And working in international teams, everyone has a different understanding of language. It’s a nigh impossible task if you ask me.

Kill Switches

Say there’s a kill switch feature that a business or developer can enable to block a client from hitting a backend via an API. Just in case there’s peak demand or something in the system is struggling. Or maybe you are concerned there’s a widespread Denial of Service Attack (DoS) hitting your system and you want to keep your customer data safe.

What should this kill switch be named? And what state corresponds to the switching off of web traffic?

The enabled state should correspond with the no traffic state. When this kill switch is enabled, the business has gone in and switched it on, effectively switching off traffic. By default this kill switch is disabled and web traffic is normal. You might want to call this kill switch something that relates to the API it switches off, e.g. WebLoginKillSwitch if the kill switch prevents people from login to your web.

Feature Flags

A feature flag is a software development technique used to enable or disable functionality remotely without deploying code.

https://launchdarkly.com/blog/what-are-feature-flags/

Say you are working on a new feature but you are operating in a continuous integration and deployment environment. Once your code is merged in it could be deployed to customers within minutes. But your feature isn’t ready for customers just yet. You can wrap your feature behind a feature flag and enable it for your team so you can test in production even before your customers see it.

By default this feature is disabled for most of your users. But you could also set up a % rollout for the feature too. Maybe 5% of your users see the new feature before doing a general release.

When naming a feature flag you don’t need to include the word enabled or disabled in the variable. If you are experimenting with a new way of web login using apple ID you might call this feature flag webLoginWithAppleID and have it disabled by default.

Read the art of readable code

If you are interested in learning more about readable code, I recommend reading the Art of Readable Code:

Do you have any code smells related to naming of variables? How about test code smells?