Category Archives: Reconstruction

Training Train of Thoughts

This would be a quick test. The cells in a table had been minimised, so an empty cell had been displayed like a rectangle with the height of a few pixels. Now it had been fixed.

I used some scripts to install the latest version. I put some test data into it. Then I modified the view. The empty cells were as big as the filled ones. Case almost closed.

I quickly browsed through the description of the ticket. The impact of the change was minimal or nothing. The table was used to show information. There was no way to modify the contents of the cells, either filled or empty.

Then I noticed a comment of mine. It could also occur in another application. The same functionality was used by a different application, so the developers would have reused the code. This is an obvious assumption and it was more plausible by the use of TDD.

Some explanatory stuff ahead.
Test Driven Development or TDD is a continuous cycle of test, code and refactor. During one of our Cleancode sessions uncle Bob told about this approach:

  • Make a test, that fails.
  • Make code, that let this test succeed (and of course all other previous unit tests)
  • Improve or refactor the code.

An example of refactoring is to reduce the occurrences of the same piece of code. If it is in one place, the dev has to fix it in one place.

Refactoring can also be used in making automated tests or manual test cases. Knowledge can also be refactored. The knowledge management system is my best friend. Specific information is stored in one place accessible for everyone in my firm.

Where was I writing about?
O yeah, testing the absence of minimised cells in another application.
Right. So I installed the other application and put some test data into it. I tried to find some empty cells, but that was not possible.

Thought while blogging
I could modify the input file, but that was an invitation to errors.
Sorry no access.

Let me continue with my thoughts.
I looked at the table and thought about the installed database client. Good. I opened the application and connected with the right database and the right table. Then I emptied one cell. And the cell was shown minimised on screen. Hmmm. That was not right.

Because I sat in the same room as the devs, I knew who had worked on this ticket. I told him about my finding. This could easily be fixed.

Then I tried to find out, why it was only fixed in one application:
“I put it in the comment.”
He did not read the comment.
“Okay, what can I do to fix this? Put in the description?”
The dev said, he would definitely read it. Even it was an assumption from my side. He had no problems with it. OK fine with me.

After a couple of minutes the dev made eye contact with me. He told me it was solved. I installed the other application. Just fivesome clicks.

I started the application. Nothing happened. Another reinstall followed by unsuccessful start. I opened two logs to find some clue, but there was nothing special to be found. So I asked another dev. He listened to my story and had a quick look in the logs. Back at his workplace he discovered a process that was still operational despite the reinstall. So a script had to be fixed.

Then it was time to go home. You know family waiting for daddy to join dinner.

The next day I could finish my test. There is no such thing like a quick test.
This might lead to a heuristic.

Backtracking for testers

“I cannot reproduce it.”, I admitted to my scrum master. He replied with:
“You can do exploratory testing, but you have to note down the steps, which led to this situation.”

How did I get in this mess?
I sanitised this story BTW.

On my screen were some filters and buttons. It was not possible to use the action button any more. That was NOK. I made a partial screen shot and put it into my test charter. I would later come back to reproduce it.

Somewhat later I looked at the screen shot. I thought it would be easy to reproduce the situation. After three attempts I gave up. That was NOK.

My scrum master had a point though. I had lame excuses like no recording tools and extra bureaucratic steps. Back to The Bug. If I could find it.

A little bit of theory
Backtracking is a term I picked up during my study. It took me years to understand the principles.

It is basically solving a labyrinth: continuously pick a direction and walk, until a dead end is encountered. Then go back to the place where the last wrong decision was taken and take a new direction.
Rinse and repeat.

This tactic can be applied to find the toilet or to solve a puzzle.

Sorry for this theory interruption. I will now continue with my blog post.

A lot of practice
The first thing was to examine the screen shot again. I realised I was on the wrong screen. So I switched screens.

Then I rebuilt the situation. I added the filters with the same values. I pressed the action button. That went right. I kept my mouse on the button. It could be used again.

I used the other buttons on the screen. After a few presses I returned to the action button, which was still completely functional.

I did a reset and started to rebuild the situation. If I pressed the other buttons before the action button, then it might become insensitive. After adding the last filter I pressed on one of the other buttons and clicked on the action button. It was still functional. Business as usual.

It was time for my visual memory. The adding of the filters went from left to right. It felt great. Every time the set of available filters became smaller. It was like dealing cards. The stack became smaller and the cards were put from left to right.

I looked to the most left filter. It was a date filter. I already had filed some bug reports on that one. Wait a sec. This was my starting point for bugs. I might have set it to a wrong value and quickly checked the side effects.

The word quickly triggered my mind. I was so used to this filter, that all date filter related actions were absolutely normal for me. It became natural and therefore easy to forget. Because I moved my mouse so fast, the movement was not stored in my memory. That made sense to me.

So another attempt to reproduce my bug began. I set the date filter to a single bad number and added the other filters from left to right. And I pressed the action button. It worked. Then I tried to use it again, but that was not possible. Bug reproduced.

Now I wanted to reduce the number of steps. My assumption was that the invalid value in the date filter triggered the bug. Time for a short cut.

I reset the screen and only added the bad date filter. The second push on the action button was useless as expected. I was able to backtrack my steps and reduce them afterwards. That was OK.

At the end of business day my scrum master groaned, when I showed him the bug.
“What else did you find?”

3 2 1 dissect

Looking for a new blog subject was not that difficult. At that moment I was making jokes.

The trigger for the post was my thought process during lunch. This painful moment reminded me that I have to careful with rehearsing. Especially in front of my family.

Jokes have to be rehearsed many times to get the right wording and timing. I do not mind a good joke. It just takes time.

The theme of the post was jokes. So I thought back which jokes I had used in the past.

This way I remembered the University of Technology. In my graduation year there was no presentation program. I wrote with a marker on transparent plastic slides and used an overhead projector to show the slides behind me.

I cut the slides to pieces, so I could add special effects like vanishing lines. This could be funny.

From then I started my journey to today. All kind of moments of used jokes I added to my list. After the first draft I had a mind map with two levels. When I looked more closely, I saw an unordered set of stories.

This is not particularly bad. Ed Catmull calls it the ugly baby. The creative process starts with rough ideas. At the early stages the writer has to be patient. It can become a beauty of a story.

This brainstorm did not automatically lead to sections. The paragraph about Harry Potter reminded me of a song of Queen. That became my first section title.

For another section I added ‘Expect the unexpected’. This advice is used too many times, but it was consistent with the vanishing walls

Next stage was to convert short word descriptions to snippets of stories. This was not difficult. At least I had some Fieldstones or stories to share.

It was time to continue in a new version of the mind map

mind map of first version blog post

In the second version of the mind map I continued to add notes to the branches.

The Fieldstones were short and hard to read. I had put pieces of my memory in a mind map without any transition, so I added some words to describe the setting.

Now I had to structure the mind map. I had already ordered some branches, so I added the first branches in one group.

It was about using jokes in the present and future. The next section was focused on my workshop at TestBash Netherlands. If someone without a test background can understand my jokes, then it is good.

The third section was about jokes in the office. Yes, I like the humour of programmers.

The last section was a transcript of some jokes during a presentation about a performance test. During the rehearsal of the jokes I thought about some visualisations to increase the impact of the jokes. These movements were added in the last weeks before the talk.

The grouping of branches led to the following sections: ‘expect the unexpected’, ‘practice makes people smile’, ‘it’s kind of magic’ and ‘what about this?’.

There was an extra section about twittering. I started with a simple story about my reaction on a single tweet. It began to grow. I still had the tweets stored in a mind map, so that saved me a lot of typing.

Then came the editor question: does it fit? I wanted to write about making jokes for my own presentation. I marked the branch with a red cross. It would not be contained.

A frequently used branch for me is Metadata. It is a way to remind me to add extra information to the post. I had found the Chicken picture beginning this year and this became the banner.

The categories were more difficult than usual. How would I categorise a post with jokes? So I introduced ‘Fun intended’. It is a variation on ‘Pun intended’. Fun rhymes on Pun, so that’s good. Fun!

mind map of second version blog post

My work title of the blog post was ‘Adding humour’. That was good enough. So I made a link from the title to the central object.

The Office section contained a reference to Harry Potter and that is difficult to follow for people who do not know this character. I solved this by using some common sense humour.

This was one of the few times that I used a joke as a writer in this post. Normally I add more jokes to make a post more digestible. But this would lessen the effects of the described jokes.

The Twitter section was still in my mind. Was it really off theme? I noticed that I was not the only one cracking jokes. Other people like the street artist and the scrum master made jokes about things unrelated to my workshop.

What the heck.
So I decided to put it back in the blog post.

Then the editing started followed by reediting. Etcetera.

The research part is a rewarding one. I checked facts in my blog post. For the Harry Potter section I had added a joke about muggles. While watching a movie I heard the American word for muggle. I went into a bookstore and looked up the word in the book with the screenplay.

The proper spelling of the quote from a song of Queen was checked using a search engine.

mind map of fourth version blog post

This ends my dissection of my previous blog post. I hope that you and I learned something. I certainly did. I basically wrote down my steps and thoughts.

mind map of this blog post

On my work I have test charters and bug reports which describe my actions. I can justify my tests.

For me it was one step more to tell a story to testing peers at a test conference.


Maybe you have something to share. Really. Just take your time.

Some experiences of you are really worthwhile for your peers. Especially things you just do automatically like me writing a blog post on a smartphone using mind maps.

There is a supporting testing community out there constantly looking for short and long stories, talks, and workshops for testers.
Please have a look.