Skip navigation.

Repeatable tests, not repeatable bugs.

context-driven testing | functional testing | test techniques
There are bugs that sit still waiting for you to catch them. There are flies that could only be killed with proper skills/techniques/tools.
This is the first issue in series of mini-experiences – learning opportunities I’ve recently described . It is typically mentioned that tests should be designed repeatable, so that if any defect is found it could be easily repeated. Nevertheless I’ve seen recently numerous blogs mentioning not repeatable bugs and casualties caused. However it seems the only message is to fix them, not how to make them repeatable.
Lecture course by Cam Kaner & James Bach talking about Oracle problem (slide 16) based on notes from Doug Huffman describe besides intended inputs system under test is also influenced by a lot of different aspects such as Program/System state, configuration, and other activities taking place in your computer and network (especially if you test client-server).
There are no not-repeatable problems. It is simply our inability sometimes to repeat them. To understand what it the actual reason for a problem. And then we give up and ask developers to do debugging – add some code that will investigate the system state – in case the problems is related to it.

The experience – the problem

Let me explain context of my story first. I was testing content repository software. It is JSR-170 compliant, but it is not very important here, what is important that it is an advanced, tree-like data storage with multi-user access. Imagine file system with arbitrary number of folder and document properties. So I was testing security management features of this system and found a bug – sometimes invoking “Edit his Node Security” do not work. More over once it failed to open the security editing window once it will never ever open it until I restart the application. Although I was observing this issue quite regularly and once happened it is 100% repeatable within the same session, it was still not repeatable because I was unable to write down any scenario (which starts with a new session) that would in 100% lead to the error. While it happened quite regularly I was able to repeat tests again and again. I had a lot of hypotheses (for example it is related to editing both parent and child node security) but all of them were dismissed.
The only clue I had: it happened more frequently for nodes direct-child to the root one... I will tell you one more thing that is important. However you are lucky to know that it IS important – I never had an idea that it is. We are two testers using the logical content repository. It means I see the data he have created and VV. But everyone of us is editing only a data entered by himself.

How I solved this
When I’ve analyzed the context described above I eventually come up with additional tests (a few of them). One of them repeated the problem 100% of the time. I suggest you to try to design your tests and submit them here are comments. I will later (depending on responses) tell you what was my tests and what was the scenario to repeat the problem. I will also tell everyone who have commented if their tests would succeed (if not too much of them:).
Feel free to ask clarification questions – English is my third language so I assume you may misunderstand anything...

Yet another example

A little bit adjusted real story: yesterday we tested a component that has feature business rule with “effective from-to” optional fields. When you enter same dates it means only in that period users will see the effect of a rule. Use case: changes in legislation effective since some date that makes some field of the input form mandatory. So we (me and a peer) found a bug in case when date to equals today (not effective today). The next day developer reported it nor repeatable. I found that it is not effective from equals today does not work. Could it be that I misspelled the problem yesterday? I can’t believe that and what I do – I change the system time on application server to evening (time when we tested it yesterday) and it appears again date to does not work.
I don’t know how I guessed that (I could say now that it is becuase of time-zones or storing date+time instead of date only in java, etc... but that was rather intuitive guess the first time) it is related to hour of a day, I just guessed it and the guess was correct.

One more good example

Just found on QAForums a story about digital camera testing Whole world as an environment is a part of input for this seemingly simple device.

Clarification question (hint)

The question I've received in private:
Question: Are you able to add and delete some nodes or the tree structure is fixed?
Answer: Yes it is possible to add and delete nodes. It is possible to edit their properties. It is the core functionality of the system, security is only additional feature.

Karen, you are very close

If you know that scheduled Windows job may affect software under test, you should be able to guess what affected my system from reading the last paragraph. More over I want to believe that I provided enough information to guess the most specific scenario to repeat a problem.

learning how to reproduce defects

One of my favorite bugs was a bug one that was near to impossible to repeat. The bug was an application crash when I imported a large data set - sometimes. Turned out the missing factor was a scheduled Windows job. The background Windows job and the data import had to kick off at the same time to crash the system. Timing. The reason it remains one of my favorite bugs is it opened my eyes to consider factors I might otherwise overlook. Sometimes the key factor isn't what I do or a step in a test case but another factor in the environment.

Great topic. I consider my ability to reproduce defects an attribute of being a good tester. The more stories we share like this - the more we help gain an awareness of the factors that matter.

Following are the steps I wou

Following are the steps I would try to reproduce the bug:
1. User 1 creates a new node.
2. Selects the root node.
3. User 2 creates a new node.
4. User 1 without refreshing the tree selects the node created and tries to edit the security of the node.

Comment viewing options

Select your preferred way to display the comments and click 'Save settings' to activate your changes.