Tag Archives: it-agile-blog-planet

Pomodoro Testing

In the past week I was asked whether could test something. As of my curious nature, I took the challenge to learn something new. In this case it was an iPhone application. I own an iPhone myself, but I never tested an application on the iPhone purposefully – I tested some of them in terms of the banana software that seems to get shipped despite (or maybe just because?) Apple’s checks before an app reaches the App-Store. But I digress.

I planned a whole day – Thursday – for this. I knew I was going to explore the app in sessions influenced by the Bach’s session-based test management paper, and I knew that I had to take a closer look into the specialties of an iPhone application like memory management and stress testing. Prior to Thursday I had already taken a look into the application, and seen some of the features. My colleagues shared the current feature backlog with me covering the features that were already implemented.

Another thing I knew was the fact I was about to deal with some customers during the day in order to arrange some new consulting gigs. So, I was rather that I won’t be able to deal the whole day with testing of the application.

Taking all these considerations into the context of my testing approach, I felt that a test session of one hour was too long to test the application and deal with interruptions during the day. Additionally one hour seemed too long to cover one aspect of the application. I could easily go for multiple features in that one hour. A year back I had crossed the Pomodoro Technique to manage my time, and I decided that a combination of session-based test management and Pomodoro Technique looked promising to me. In the Pomodoro Technique a time slot is usually 25 minutes long, – called a Pomodoro – interrupted by 5 minutes of break for mails, fetch a new coffee or go on a body break. This seemed to be just the right time frame for my testing sessions. That’s when I coined the term Pomodoro Testing.

So far, so good. I took my Time Timer with me that day to cope with the session time frames. In the morning I took a first pomodoro to plan my work for that day. I quickly identified that I needed a brief overview of the application in order to learn more about the sessions for the day. So I planned a first session of 25 minutes of inspectional testing followed by a debriefing in order to lay out the additional sessions after I gathered more information. Having learned some things about iPhone application testing a few days before, I also planned sessions for special behavior on the iPhone. I also planned the work I had to follow-up on besides my testing activities for the day.

I started my first testing pomodoro following the mission to find out as much as possible about the application. I identified several areas of the application, that I would like to see more about. There were ten or so main categories which I wanted to conduct. In the first pomodoro I initially took some notes on paper, but collected them together on a mindmap in the debriefing. For each of the ten main categories I planned a pomodoro, and realized that this probably will be too much for a single day.

After the first two testing pomodoros I got more and more familiar with the application. I noticed some things in the settings, and some things in the UI which seemed confusing to me, but there was nothing serious for me to note down. The application was pretty straight forward.

On the afternoon I noticed though that I was able to pull in more than one session that I had planned into a single pomodoro. I think this was caused by me getting more and more familiar with some aspects of the application. I planned on a very granular level for this application, but still I made fewer progress in the beginning, and could easily deal with 2-3 topics that I initially planned for later.

At the end of the day I had collected many things in my mindmap which I then shared with the product owner and the whole team. I annotated bugs that I found and stuff that I found inconsistent with little icons to grasp quickly, and put some more lines about my major findings into that email.

Pomodoro Testing for me is the opposite of thread-based test management. In thread-based test management there are things of an application that may take more than a single session of focused testing. For an iPhone application it seemed right to me to limit the session length down further since there were not as many aspects I wanted to explore. In addition it seemed the right level to plan my testing activities for a whole day.

In reflection, I wouldn’t want to further cut down the session length than that. 25 minutes was pretty short for some things, and I also extended that time frame in one or two sessions to finish up what I was dealing with rather than stopping my curiosity forcefully.

Since I worked alone I didn’t do many debriefings over the day. I took one in order to plan additional sessions after the first pomodoro, and I talked to a colleague later for a complete debrief about my findings. That’s pretty much it. If I would have applied this in a team, I would experiment with debriefing times in order to achieve between one and two debriefings over the course of the whole day.

I think there are some smaller application – like mobile apps – where Pomodoro Testing is the right practice to apply in that context. For the majority of web applications and desktop application though this technique is probably too time constraint to serve the purpose.

Management 3.0

Last week I was fortunate to attend Jurgen Appelo‘s class on Management 3.0 in Hamburg, Germany. When Matt Heusser hit me to Jurgen’s Top200 Blogs for Software Developers in 2009, I sensed that Mr. Appelo had a unique view on software development. Last year he finished his book on Management 3.0, and accompanying the course we got a free copy of it. While I had read the stuff from Weinberg on Management, one of my goals was to find out what management is. Though I couldn’t achieve this goal in Jurgen’s class, I got some nice and unexpected take-aways from the training.

Continue reading Management 3.0

XP Days Germany 2010: Scrum Norris

At the XP Days Germany 2010 I presented a Pecha Kucha about Scrum Norris, initially a blog post merely collecting Chuck Norris for Agile software development initiated by some of my colleagues from it-agile. Here is the translated transcription of that talk with the pictures included as well. As I missed to mention this during my talk, take this write-up as an over-sketched situation, and see if you can find Chuck Norris in your project as well. Oh, and take it with humor if you find out that you’re Chuck Norris in your project.

Continue reading XP Days Germany 2010: Scrum Norris

The Testing equals Quality fallacy

Yesterday I mentioned something on twitter, which I would like to give some more thought in a blog post here. While picking a name for for this blog post, it occurred to me that there is a fallacy lurking behing that phrase, which I deliberately call the Testing equals Quality fallacy.

That said, here is my quote from yesterday:

It’s not testing that brings Quality to the product, it’s the reaction to the information that testing provides.

There are three parts in this sentence. First, we’ll look at testing and why it does not bring in quality to the product in itself. Second, we’ll see what testing can provide, if it does not provide quality in itself. Since there are many experts claiming that testing is not optional – which I fully support – there must be something to it that makes it worthwhile despite the bringing quality to the product. Last, we will dive into the reaction bit of the sentence, and what this means for testing.

Testing does not automatically yield Quality

What does a tester do on a full day of his testing job? Now, obviously she tests. But how does she do that? She creates test cases, test models, applies heuristics and oracles in order to decide whether an observed behavior is a problem in the software, or whether it is not. Testers attend bug triaging meetings, specification meetings, walk over to the programmer, and write reports about their activities. But does all of this create Quality in the product? Maybe. If your tester fixes the bugs she finds right away in the software. If your tester sends programmers to programming training. If your tester negotiates contract details with your customer. If your tester rejects ambiguous and vague requirements and user stories before they make it into the development cycle. But do your testers do all of this? Do they decide about all these factors? Or is it maybe someone else? Now, think about it this way, what provides more quality than one of the things I mentioned? And how do you expect your tester builds in the quality into the product without doing any of these?

What does Testing provide, if not Quality?

But, then you ask me, what does testing provide, if it’s not for the quality? Well, when testing a software product you gain information about the product, about its state, about its problems, about its itches, about its flaws. Testing provides information about the usefulness of the software, about whether the software solves the problem that the customer had before asking for it. Testing can inform about the product, the readiness to ship it, and about possible side-effects of making the decision to ship. Testing helps to see the blind-spots of the programming work, and helps to make the status of the quality transparent. Testing provides information about the quality of the product. That’s it. Information.

What does provide Quality after all?

But, wait, what does provide Quality in our development process? There must be something? Maybe it’s Scrum that provides Quality? Or XP? Or Kanban? Maybe the Waterfall? No. None of the mentioned do provide quality in themselves either. The reaction to the information you gather by testing the product can help to provide quality. It’s that simple. But let’s look at the implications here. The reaction is a human part in the system of effects. Based on your reaction to the information provided by testing different people will do different things. When you start to blame someone, he might hide this information from you the next time. When you placate your customer pushing more features into the development cycle than your team is capable of delivering, the information that testing can provide might just scratch the surface. In combination with blaming the team this may even yield dysfunctional information hiding politics in which you discover problems in the software only until it’s too late to react upon. Sounds familiar? I hope not.

Having a human reaction in the system implies that there is a human who is reacting, which means that a human needs to take the decision to react in a certain way to the information about the product. As taught by Jerry Weinberg in QSM Vol. 1

Whenever there’s a human decision point in the system, it’s not the event that determines the next event, but someone’s reaction to that event.

Decision By People (page 111)

Since the reaction to the information is based upon a human decision which directly may influence the quality of the software, we build a feedback loop. Human decisions about quality are always political and emotional, but people will claim to be rational about it. Quality decisions are political since they influence the development team in the same way as the customer. There may be reasons to ship the product earlier, and make money earlier, maybe just for the sake of attracting a new market, or to claim to be capable of delivering a new superior product and get the market share. Yet, decisions about quality are emotional, since they involve someone deciding about how the reaction will appear to others.

So, next time when talking about testing and quality, remember that testing might not provide quality, but reaction to testing, and to the information provided by it does directly influence the quality of the product.

The Wandering Book

Enrique Comba-Riepenhausen set up The Wandering Book over a year ago in order to capture the Zeitgeist of the Software Craftsmanship movement. It took me some time to realize what this book is going to be about, so that I finally signed up for the Wandering Book on the end of July 2009. After more than one year waiting for the book to arrive here, I played with my thoughts on what to write into it. During the last week the book arrived, and here are my thoughts, that I wrote in there.

Continue reading The Wandering Book

All of this is Software Craftsmanship, too

Over the course of the past week, I have been made aware about the perception what Software Craftsmanship is about. I asked two persons about their perception on Software Craftsmanship, and I got similar responses: The public perception seems to be that Craftsmanship is all about code, katas, and Coding Dojos. Unfortunately this is quite not all that is to Software Craftsmanship, and here is what I think anyone talking about Software Craftsmanship should be aware about.

Continue reading All of this is Software Craftsmanship, too

Software G Forces – The Effects of Acceleration

At a local talk in Hamburg, Kent Beck talked about G Forces in software, and what effects acceleration of the software process has. With regards to Continuous Deployment he talked about scaling up the deployment cycle from annually to a deployment cycle within minutes.

Continue reading Software G Forces – The Effects of Acceleration

Professionalism

Inspired by a Tweet from Jason Gorman I had to look up the definition of professionalism in my MacBook Pro. Amazingly I found the following:

the competence or skill expected of a professional : the key to quality and efficiency is professionalism.
• the practicing of an activity, esp. a sport, by professional rather than amateur players : the trend toward professionalism.

Let’s discuss this in the light of testing and Software Craftsmanship.

Continue reading Professionalism