Monday, April 24, 2017

Best software testing books


1) Introduction
2) My framework for choosing IT books
3) How Google Tests Software
4) Team Geek - A Software Developer Guide to Working Well with Others
5) Thinking Fast & Slow
6) Continuous Delivery
7) (More) Agile Testing

1) Introduction

I've been very lucky recently to read quite a few fascinating books (like How to Fail at Almost Everything and Still Win Big, Black Swan or Surely You're Joking Mr Feynman to recommend just a few) which reminded me that I haven't made any software testing books posts yet. I did of course start Awesome Book Reviews blog some time ago, but it failed to gain popularity so I switched full focus here.

I once read on a polish Software Testing group that the majority of candidates during a job interview fail to answer this simple question: 'What's the latest software testing book you have read?' That should never happen. Today I give you my recommendations for continuous improvement.

2) My framework for choosing IT books

There are tons of IT books available on the market. Here are my simple rules for narrowing down the list:

a) Start with recommended books
b) Always choose books that are trying to answer 'why?' question instead of the 'how?'
c) Read the 'how?' books (for example Java for Testers) only when you know 'why?'

Let's say you want to delve deep into TestOps. Here is the approach I take:
a) Ask my colleagues for recommendations
b) Ask Google (here's great reddit source by the way)
c) Read recommendations
d) Only now would I study books focused on tools like DevOps 2.0, Ansible or Docker

Remember that various problems can be solved by various tools. No tool solves every problem, so don't start your education with them.

Ok, let's go into books recommended for testers.

3) How Google Tests Software 

Many things in our lives that look complicated at first can be simplified by following one simple rule: 'Take a look what's working for the most successful and do the same'. If you want to have a body like the local gym muscleman you need to train like he does. If you want to increase your employability on the job market you should consider starting a blog. If you want to have a effective testing process then you need to take a look how it's done by Google.

It's often shocking for young testers who have just finished ISTQB Foundation certification to realise that the processes described here are considered obsolete by top tech companies. Well, that's reality. How Google Tests Software by James Whittaker, Jason Arbon and Jeff Carollo explains why it's happening.

Lot's of quotes from the book can be found in my How to become software tester post. I'll add just one here from Patrick Copeland's foreword.
In all my interactions up to this point, one thing about Google was clear. It respected computer science and coding skill. Ultimately, if testers were to join this club, they would have to have good computer science fundamentals and some coding prowess. First-class citizenship demanded it.

4) Team Geek - A Software Developer's Guide to Working Well with Others

I often emphasise the importance of social aspects in software development. Engineers who can communicate only in a boolean language are no longer looked for. They're often exploited in average positions, because they can't stand up for themselves. Team Geek - A Software Developer's Guide to Working Well with Others by Brian W. Fitzpatrick and Ben Collins-Sussman explains how to avoid such situations and productively cooperate with others.

In technical terminology we can say that Team Geek teaches us how to have an easy-to-use and effective communication API. There are a lot more technical-social analogies in the book which make it very thought-provoking read. You don't want to miss that one.

Also it's short. You can finish it in one trip.

Further reading: Soft Skills: The software developer's life manual

5) Thinking Fast & Slow

Absolute classic. Number one of Gurock's alternative book list recommended for testers. Thinking Fast and Slow by Daniel Kahneman starts with description of two thinking modes guiding our behaviour: system 1 (fast, automatic, emotional) which often let us down and system 2 (slow, conscious, logical) which require a lot effort from our side.

The author nicely explains how we are so often wrong during risk analysis, estimation and planning. Unfortunately our brains have a lot of flaws. It's good for testers to understand the root cause of bugs. Isn't it?

A book recommended for everyone.

6) Continuos Delivery

The ultimate guide of 'why?'. Why do we build automated pipelines? Why do we want to release as often as possible? Why frequent releases actually reduce the probability of production bugs? Why do we automate tests? Why do we need fast feedback from tests? Why do we need to monitor production? Why do we need to have a rollback possibility all the time? Continuos Delivery by Jez Humble and David Farley answer all these questions in an easy to understand manner.

Continuous Delivery describes an effective and efficient software delivery approach from start to finish. It's pretty much what top computer science universities should teach us on a daily basis. It describes a professional approach for doing things with simple explanations on why top companies consider them obvious and beneficial for their business.

A must read.

7) Agile Testing & More Agile Testing

Last but not least. Agile Testing and More Agile Testing by Lisa Crispin and Janet Gregory are two high quality books describing the peculiar role of testers in Agile teams. The first part covers the basics (including a description of Agile practices) and the second one describes a lot of real world examples and use cases.

What I very much like about those books is the huge emphasis the authors make regarding  teamwork. Lisa & Janet are certainly context-driven testers which not only deal with testing scientifically, but also want to support business with frequent and bug-free releases. Very fluent/agile/lean approach which I can fully recommend to others.