Wednesday, January 1, 2020

The Demo Effect

"Hang on, the demo starts soon, then let's go out and ruin their show".

Originally, the text was "wait until the sprint review is over, then let's go out and show up again", but the scene is less funny with the previous text. The current one turns this cartoon into a more common situation, aka. the demo-effect.

The original text  has its root in a real story. Long time ago (not in the company I work right now), the product owner regularly moved all reported defects to a low priority heap shortly before the sprint review, only to put them back into the next sprint right after the review. The goal was to shine with a good product having non-important bugs. With this approach he kept the release manager quiet, because the release manager was looking at high priority bugs only shortly before the review. If there weren't any left, the product owners were out of the line of fire.

It's like in Patriot Games, where the secret armed forces in the desert knew exactly when the spy satellite flied over their hidden military camp. They tided up everything shortly before it reaches their coordinates and then they rebuilt the camp after it had passed (until next time). Result: pin sharp satellite images of unsuspicious cabins in the desert.

Thursday, December 26, 2019

Robots slacking off

Dear readers,
this is very likely my last cartoon for 2019 and I am already looking forward to drawing and publishing the next ones in 2020.
14 cartoons in a year is not bad, considering the fact, I have hardly any time to settle back after work and after having helped kids for school.

For those who want to know, I have a quite consistent hit-count on my blog (1600 pageviews p. month). In my world this is a lot. Well, not enough to become famous but still a lot of reasons to continue drawing in 2020.  I wish you very XMAS (even though I am kind of late) and a happy New Year 2020.
Torsten J. Zelger

Sunday, December 8, 2019

False Positives

When developers start working on a new feature, they sometimes hard-code things with the intention to replace this part later with dynamic values. Sometimes, these snippets are forgotten, and you are testing features that work with hard-coded results. Success messages aren't excluded from this practice.

Simply said, never trust any success messages. If the program claims it worked, the program may be wrong. The opposite is also true.

The term "false positives" has its roots in medical testing. A false positive is an error in which a test result improperly indicates presence of a disease (the result is positive), when - in reality - it is not present, while a false negative is an error in which a test result improperly indicates no presence of the disease when in reality it is present.



Friday, November 29, 2019

Technical Debt not close-to-balance

I think it is normal in a project to accumulate technical debt somehow. You may have tough deadlines or other reasons to tend get things done more quickly than usual, probably with the mindset of getting it right later.

Other reasons for (quick) workarounds are new awarenesss (more experience) of how things work better under certain circumstances. The old approach was good for one particular problem, but not good enough for a general solution.

An increasing number of developers working on the same project may force the architect to enforce new coding guidelines or best practices for typical software development problems.

The use of embedded third party software may also trigger changes on your side when updates are delivered.

Technical debt should be avoided as much as possible and yes, there are scenarios where you are simply forced to live with technical debt. But, one should always be aware that, often, the time to improve old code won't be availble. Even if there will be such time, think about the risk of removing technical debt. Someone who works under pressure not only tends to seed ugly workarounds, but he is likely also adding sloppy unit tests (if he adds any at all). If that's the case, removing technical debts with refactored code adds new risks breaking functionality you won't know about until the customer reports them.

Saturday, November 23, 2019

Kind of mixed up

Fred: "Lucy, look I bought a pedal tractor for our kids".

Lucy: "No you didn't, you fool! "

Sunday, October 13, 2019

How dare you, Lambretta?

Usually I am testing software, but today, I enjoyed a 15 minute test ride on a brand-new Lambretta and
I decided to add my personal results to my cartoon blog even though this blog is mainly for software testing.

My goal today was to check-out whether the Lambretta revival V-Special is an interesting alternative
to my beloved but seriously broken Vespa. I've read the Lambretta advertisement in the news. I checked many pictures and it made me curious. The longer I googled the more excited I got, and I also checked the price which seemed reasonable to me.

The positive things I noted, was the quiet motor and the firm road holding at the speed of 80km/h. Something I wasn't used to my current Vespa. Also the design of the new Lambretta is great and contains so much of the Sixties. There is also space for the helmet under the seat which is cool.
However, less joyful is the fact, that almost everything is made out of plastic. Would have been great if at least the wings could have been made out of solid metal. If you carry a passenger, the wing will be full of scratches shortly.
I understand, in order to save fuel, you need to consider weight, but a little less of elastic material is desirable.

While on the test ride, I realized the slightly oversized LCD monitor just below the small analog speedo. Unfortunately, the LCD is so big that you can hardly read your speed in the analog display which I think is kind of dangerous, because you spend too much time looking for the needle; time that may be needed elsewhere.

Overall it looks really nice. The designers did a great job keeping as much of the Sixties as possible. It didn't work out for the mounting actually and the plastic, unfortuantely, is a disappointement. I really hope they are going to change that soon.

Tuesday, October 8, 2019

He just knew too much

THE DAILY BUG. "A software tester was found dead due to an overdose of drugs yesterday evening at his home in lower Manhattan, New York. His body was discovered before dawn on Sunday, October 5. He was a professional software tester and known for his strategies in spotting even hard to find bugs. An interviewed friend on site believes, he was murdered. "The tester was threatened several times by suspicious phone calls", he said. The police states they have found traces left by ugly critters at the crime scene. The police also stated, the main suspect was identified as Dendro Ponderosa, a modified name which has its roots in the Latin name Dendroctonus ponderosae, a mountain pine beetle and a remote relative of Dendro. The police published an appropriate mug shot of the suspect."
Reported by Formica Rufa

Saturday, October 5, 2019

BETA Test at Green Galactica

One day the PL asked me to provide a checklist with the most important acceptance criteria and which served as checkpoints to enter the next phase of the project.The list was then extended with a few more items by the PL and PO themselves.When the date came close someone worked on the list and started to add an extra attribute for all checklist items to lessen certain acceptance criteria. When I realized the majority of the checklist items were reset to "NICE-TO-HAVE", I insisted to remove that new classification. Most of the items now classified as NICE-TO-HAVE were a clear NOGOs (look at the cartoon), but it seemed the editor started to realize one is not going to achieve a big set of these topics. My concern was that if something is labeled NICE-TO-HAVE the team wouldn't even start trying to work on the topic. What we then all agreed to made more sense: We kept the list as is and instead on D-DAY went through all topics together and discussed the current state of each acceptance criteria. We then decided whether or not we could still continue under this or that particular condition.

Sunday, June 9, 2019

Duplicate Bugs Arguing in JIRA

I guess, we all agree, duplicate bug reports may cause people to spend time working on avoidable tasks. But it isn't always easy to find out whether or not a bug report is a duplicate.

When a developer believes that a series of bug reports all have the same root cause, she tends to claim these bugs are all duplicates. 
The test engineer on the other hand would disagree and state “these are all different scenarios from an E2E perspective”. 

At the time of reporting an issue, we usually don’t know the root cause unless we dig deeper into understanding the anomaly. Even if a developer assures the bugs all have the same cause, it still makes no sense to mark these reports as redundant. One can never be sure the developer is right.  

What if one or more of these issues is still broken after the developer fixed one or the other? Isn’t it a good idea to re-test all the identified scenarios where that bug left his mark?

Michael Stahl [1] makes an interesting note when he states:
"Why would the same tester report the same issue twice? It just adds extra work for the tester, who for sure remembers the first report. Usually, a duplicate bug is reported when two testers identified the same problem and both reported it without first checking if it’s already in the system".

I personally believe that doing an upfront research in the bugtracking system doesn’t really help avoiding duplicates. The best experience I’ve made is to contact your colleagues directly rather than searching for bug descriptions which use different wordings. A screenshot could help setting the record straight, but searching for clarifying pictures is even harder. Better ask your colleagues directly “have you already seen that…”.If no, raise the issue, if yes clarify with them verbally whether that's the same issue and then enrich the existing bug report with additional data if you have.

Even if your employees raise duplicate bug reports, I consider it a reliable indication that these bugs are either easy to find or really annoying.

But what are you doing if your customers raise bug reports? You cannot expect a customer to first ask all other customers whether they have the same problem. A customer does not care about how many times the same bug was already reported. Some smart techies might "google" for a solution to their problems, but you can hardly avoid duplicate bug reports raised by customers. For example, according to Castelluccio [2], Mozilla receives hundreds of bug reports and feature requests from Firefox users every day. It is clear now that in such cases, tools are required which categorize bug reports based on similarities of other bug reports to save a developer's valuable time. 

Per Runeson [3] describes an approach using NLP to support the automatic identification of duplicates. Their conclusion: "Even though only 40% of the duplicates are found using this approach, it still means a substantial saving for a major development organization"

However, the best way to avoid duplicate bug reports is fixing any reported issue as soon as they are reported before another user raises yet another duplicate.

[1] When Testers Should Consider a Bug a Duplicate (Michael Stahl), Sticky Minds, January 15, 2018
[2] Teaching machines to triage Firefox bugs (Marco Castelluccio), April 2019 at
[3] Detection of Duplicate Defect Reports Using Natural Language Processing (Per Runeson & Magnus Alexandersson), IEEE 2007

Thursday, December 13, 2018

Confetti User Stories

Finding the right balance between "too big" and "too small" isn't easy sometimes.

Thursday, November 29, 2018

Lining up in the Ocean

It's about how fast we can be wrong with our conclusions. I often see that we detect an alledged new issue, not realizing that the same anomaly was already there before. It's easier and faster to judge without collecting the facts first. Things that may look the same, sometimes aren't.

Monday, November 26, 2018

Patched UFOs

When developers state, they didn't change anything but one line of code, they actually believe that themselves. It's just that they have a bias towards forgetting all the work they've done (plus their colleagues') before their last coffee break.

Tuesday, November 13, 2018

Sprint Review #37

An agile team is one that continually focuses on doing its best work and delivering the best possible product. In our experience, this involves a ton of discipline, learning, time, experiementation, and working together.
[Crispin - Agile Testing]

Sunday, November 11, 2018

Gung-Ho Tester

Last Friday, in the "daily", Cindy handed over a draft of her own doodled sketch about me. I was really surprised and found it brilliant. I promised her to put the sketch into my style cartoon over the weekend and here we go.

ThanX. I never met someone who made a drawing about me. I really enjoyed having this moment of conducting a little self-mockery.

And this is the original sketch from Cindy:

Sunday, November 4, 2018

Analyzing Lenny's flight paths

We are tracking the routes of animals all over the world. Some birds have already become famous like Lenny the stork whose annual airtrip to Spain and back to his home at Basel Zoo is observed by over 1500 fans. Lenny has a transmitter and everyone can check online when he starts his journey from Switzerland to South Spain where he spends a few months before he returns.

His routes [lenny] are recorded since 2013 and each time he starts his way back to Basel, the local news are celebrating it with corresponding articles [lenny2]. People are desperately awaiting his arrival near February/March and are fascinated by the fact he returns to the same nest every year. He also meets the same old girlfriend to enlarge his family. What a faithful and diligent bro.

I wonder what Lenny thought of us bird-stalkers if he knew that each day of his life is tracked as a spot on a map that many people find so exciting. He'd probably bring us to court, took off the transmitter or at least got himself unsubscribed from all social media accounts. 

Maybe he'd become more vain and demonstrate that he could fly further south to Africa like others and/or his antecessor did. He'd probably also felt ashamed when we watch him stop at all these fastfood rest places which are nothing else but garbage dumps. Or, he could be a little rascal like in the cartoon - with a big portion of humour. But since he doesn't know he's getting observed, he blithely goes on doing what many others do until a yet unknown trigger in his head tells him to go back home.

It's is not only the incredible flight-paths that I find so fascinating, it is also sad and heartrending if you see that almost every second of the ringed storks do not survive. The datalogger web page [logger] keeps a record of each stork with his/her name and if you read their fates, you will learn that some don't even manage to accomplish a single trip. They die by flying into electric power lines, wind wheels, get shot or perish because they ate wrong or morbit things. These are all causes of death which are not natural.

But that's not really what I was about to talk. While digging deeper into Lenny's flight routes, I got a lot of questions. Why do these storks no longer fly to Africa and instead stay in Spain? How do they know where to go and how do they find their way back to their original nest they grew up? When do they start going South and how do they know it's time to go back?

Scientists have raised the same questions about the truncated routes and they have come up with two theories. The first one is the fact that Swiss storks are the result of a resettlement project that started with Algerian storks, a species that is not used to fly the same long distances as the original domestic storks.

The route they are taking now pretty much matches the distance to what their relatives are "programmed for" or what they can perform. The second theory is less pleasant. Spain is full of garbage dumps where they find enough food. If you follow the markers of Lenny and then switch from the "map"-view to "satellite"-view, it is really appaling to see where he likes to rest and eat. I feel sorry for him and his friends. These garbage dumps seem to be another reason why there is no need to search for food further south.

These are fair explanations and I can live with those very well. But I could not find any clear answer to all my other questions like how do they remember which route to take and when? Explanations in scientific articles range from "inner-clock", "genetically programmed to go South with no plan" to "orientiation by the Sun", "stars" and even "magnetic fields" or "orientiation by the landscape".

I am a software tester and if I am given similar amounts of illustrations from a software developer whose pieces of sofware don't work, then my conclusion normally is that one simply doesn't know.

I took the time and verified just one of many theories, which is "orientation by the landscape".
If you zoom out then it looks like Lenny takes the exact same route every year. But if you zoom into Lenny's flight path, I see that his first 2 routes to Spain went over the region of Burgundy in France while the last 2 years he took a route which was 100 km East of the first routes. This doesn't really look to me as if he strongly remembers each hill and course of a river but it still looks like he follows a main path from which he takes small excursions.
When Lenny headed South the very first time, he took a shortcut over the Mediterranean Sea (08/2013); a route which he never took again in the subsequet years on his way South. But he used it regularly on his way back north except for 2016 and 2017. That's interesting, 'cause big birds generally don't like to fly over the sea. They have less natural draft. It costs them more energy to fly. So, what happened the first time that he never took that route again? And why did he find that route more attractive for his return to Switzerland? Did he follow and  trust less experienced storks? Probably not, because at the time he got "chipped" he was already an experienced 10 year old stork. May weather conditions or seasonable winds play a role which make it more economically to fly over the Sea at some time of the year? Did he learn about dangerous places which he tried to avoid next time? Is this aberration from the main route broadening his skills and make him a real travel expert over time by learning on the fly and really remember all these things?

Now we have our link to software testing. Isn't there an analogy to the process of following a strict testscript vs. taking some detours? Isn't it more successful to find bugs by making some extra tours from your documented test steps? What if we don't enter the prescribed number 9481 in the calculator but do something different and watch what happens next? What if we use an alternative way to trigger the same software function/operation? I can enter a text by typing or by pasting from the clipboard into an edit field and I swear to you it is not the same! Isn't this habit of taking detours exactly what turns an ordinary amateur "checker" into a professional software tester?

As a software tester you have to activate all your senses and over time you get a much better feeling where things can go wrong. No book can teach you that. There are interesting ones out there like those from James Whittaker but it's nothing like experiencing these tours on your own [whit]. And what about subject matter experts? They are like the elder storks. You would be dumb not to take their advice. They may not be the best testers, but they might lead you to very interesting places you had never been before.




Exploratory Software Testing by James Whittaker