Monday 15 February 2010

Exploratory Testing and Scrums

I was having a conversation with Michael Bolton (www.developsense.com) and we started to discuss how ET can be incorporated effectively within agile scrums. After a few minutes of chatting Michael suggested that I blog my thoughts on this since it appeared to be a good idea.

So here we have a short article on how we could use ET within a scrum.

The structure of a scrum in my experience is

What you have done?
What you intend to do?
What is stopping you?

In most cases a scrum normally turns into a technical debate – this may not always be the case but it is something that I have experienced. My thoughts are why not use the time in the scrum to the benefit of testers?

Instead of just saying what you have done, tell the story of what charters you have followed and what you have found interesting. Talk about the test ideas you followed and what other test ideas (test coverage?) you have thought about while testing.

The crucial difference is the next part:

Instead of just saying what charters or testing ideas you intend to carry out for the next days work why not start a discussion on what test areas they feel you could be missing – this would involve the programmer, the product owner and any others in attendance at the scrum. Imagine the benefit in using the experience and knowledge of other people on the project to help with your test coverage.

I am sure people could say why not just go and talk to them individually for their ideas? My view is that people are more than likely to bounce ideas off each other and trigger responses in others when they are together as a team rather than as individuals.

I have attempted to do this in my own scrums with mixed success. Sometimes people within the team have pointed out huge areas of coverage that the test team had not even thought about whilst in other cases there has been a muted silence. I feel for this to work depends on the dynamics of the team and how they interact.

The next stage for this experiment would be to try and take the user stories during the planning sessions and open a discussion on test coverage/ideas. I really would like to try to use something like HICCUPPS (http://www.developsense.com/articles/2005-01-TestingWithoutAMap.pdf ) or SFDPOT (http://www.developsense.com/articles/2005-10-ElementalModels.pdf) with all the development team to see if we as a team could improve test coverage.

I know I promised an article on my experience of being coached by Michael Bolton on Exploratory Testing and my discussions with Jon Bach (http://jonbox.wordpress.com/) on managing ET. However I thought I should blog this while it is still in my mind. The article will happen I promise. I just want to wait until I have finished the coaching sessions.

Plus shrinik – I have not forgotten that I will blog an article measuring management with a story. – I hope to put this together sometime in March.

Friday 5 February 2010

Child’s Play

This article is based upon some thoughts that I have had over the past year while watching my granddaughter playing and learning new things, she will be two years old in April. It is amazing how quickly children of that age learn to do tasks without being taught such as walking, the beginnings of communication and how to play and explore.

I am an exploratory tester and my thinking is how we can as tester harness what children do naturally? Some may say that they do exploratory testing and they feel it is natural. If that is the case why do so many testers have difficulty adapting to exploratory testing and keep falling back to scripted testing?

Peter (unlicensed testers) asks a lot of questions about children and learning in his blog article here: http://007unlicensedtotest.blogspot.com/2009/11/what-do-you-get-if-you-cross-7-month.html

Watching my granddaughter the other day I observed that she was trying to put her trousers on. At first she managed to get both legs into the same leg hole, she noticed that this did not feel right so started again but this time she tried to put both legs into one of the small leg holes and found that this did not work either. After this she then managed to get the trousers the correct way around and one leg in each hole but did not pull them up and ten tried to walk and fell over.

What can we learn from this?

We can see that she tried following different options and observing the results, she then thought she had completed the task but found that it was not really complete. So if we convert this to software testing we can see that she is using heuristics to determine how to do the testing, the trial and error approach. She is using her emotions and feelings that something is not correct and she is doing a lot of noticing, which is something that every good exploratory tester should be doing. There are also examples of mentally noting future areas to test, the fact that when she tried to walk she fell over. The next time she tried to put on her trousers she did manage to pull them all the way up before setting off to walk.

There are many other examples of trial and error that children appear to do when playing. If something does not feel right they will suddenly change the approach to the problem or in some cases they just give up.

What can we learn from children playing? I have observed that this exploring behaviour appears to start diminishing once children start to attend full time school. Why is this so?

Is it because schools start to impose on children their own ethos and standards and re-model children to not take risk?

One of the main elements of testing IMO is the taking of risks.

We all do the ‘Let us try this to see what happens’, ‘Let us try something else and see what happens.’ Many corporations are risk adverse and as such when testers are brought in they have to provide a return on investment (a hot topic on twitter at the moment) so they are less likely to follow a risky approach. Some may argue that exploratory testing is not risky and I would intend to agree with them. However the business world does not seem to afford the time to be able to cope with let us try this and see what happens and then let us try that and see what happens. They require order and structure and no risk.

Children on the other hand when learning and playing do not take risk into account they try and if it does not work try something else and if that does not work they continue trying until they get a result they are happy with. They remain focused on the task at hand but appear to be able to solve problems without the fear of failure.

So what happens as we get older? Why do we lose this ability to explore and learn without fear of failure? It appears to be a natural human instinct that somehow is gradually removed as we get older.

Is it to do with the education system and how they remove the risk factor and make everyone fear failure and taking risks? Do we become institutionalize in to conforming to the known path, to stop asking the probing questions and to stop playing? I am not sure I have the answer to these questions however I am sure as testers there are some valuable lessons we could learn from children and how they explore, learn and play. (Simultaneous learning, test design and test execution)

I wonder if James would not mind if we change the definition of exploratory testing to learn, explore and play?

I think everyone who wants to learn more about exploratory testing should take some lessons from children. Do not be afraid to explore, if you make a mistake learn from the mistake to improve the next time and have fun. Testing should be about having fun and enjoyment it should not be a chore. If it becomes a chore get a different job……

Does anyone have any interesting games for testers? If so I would love to hear from you.
___________________________________


My next blog should be on my experiences of being coached by Michael Bolton and Jon Bach on using and managing Exploratory Testing.