PAOLO heuristic for iPad

This heuristic can be used for all devices which makes use of orientation modes.

Do you know PAOLO? He is a nice guy, as long as you don’t interfere with his expectations:

(Update: Also have a look at his brother: PACO)

Portrait, Audio, Objects , Landscape, Overlay


Does it support different display modes? How does the app (application) handle them?

“The trick is to keep the experience consistent in each view, allowing for a seamless user experience when switching views.” (Quote)

Look at the example given at the website, the color palette looks okay in landscape, but in portrait it takes up a lot of the available space.

Some apps explicitly decide on one kind of mode.

*This has benefits for the developer:

– UI elements are created for one mode, e.g. “Open” is always at the same place.

– The arrangement, field size, font and order of elements don’t need to be checked as how they look in the other mode. Less developing and/or design time is needed.

–    Better overview (“guiding”) of how the user will use the program (paths).

Let’s assume there is a user story which consists of only four action buttons: >>> Open, Change, Save, Close <<<

A)    For one mode (p=portrait), there is one path (regular use, no tester mind involved).

Open (p), Change (p), Save (p), Close (p)

B)    With two modes (p=portrait, l=landscape), there are 16 paths:

Path Open Change Save Close
1 p p p p
2 p p p l
3 p p l p
4 p p l l
5 p l p p
6 p l p l
7 p l l p
8 p l l l
9 l p p p
10 l p p l
11 l p l p
12 l p l l
13 l l p p
14 l l p l
15 l l l p
16 l l l l

– Each single action can be executed while the device is either in landscape or in portrait mode.

– The combination of actions can be done in either mode: “Open” in portrait, turn to landscape, then “Change”, turn back to portrait and “Save”, last turning and “Close”.

*This also has disadvantages:
–    It takes away from the user experience.

Users use the device in any orientation they like. The majority (?) of apps enable this specific user experience, which is a unique selling point of the device.

–    Inefficiency, wasting of potential: Sticking to the “wrong” orientation (depending on the app and its purpose). Example: Sticking to portrait mode might not make use of the “wider” landscape screen.


Does it support audio? Can it be muted? Can it be adjusted? Can it be adjusted with the device volume sliders? Does it bring its own volume control? If yes, can both be used together? Using the device volume slider moves the app volume slider? Can it be automatically adjusted? E.G. when phone calls come in? When overlays happen? Can it handle headsets or other jacked in audio devices (stereo set, car jack?)


This is at the moment a kind of placeholder for me. I am thinking of the developed structure, the code, the files it installs on the device, but also new ideas which might come up.

This is an interesting read, where shaped flowerpots are used to draw corresponding leaves on an iPad: Article Video


Same as in Portrait, needed the “L” letter to make a nice heuristic word


What is overlay? Overlay is the message pop up of one app, while the user is in another app.

Does it support overlay? What other common apps use overlay, that will *most likely* pop up? Skype? Facebook? Other chat tools?

How does it handle the overlay? Could there be data loss for the user, when the overlay happens? Is there a choice for the user to ignore the overlay? Is there a timeout for the overlay? What happens, when the timeout comes? Will the overlay disappear? Or come back in x minutes?

Hint: How to make a iPad if you don’t own one: iPad Testing Ideas

Origin: The idea started on twitter (24th September 2010) with a question from @Siggeb: “I am testing a new cool Twitter client for the ipad;) give me some test heuristics .” At time i quickly sketched PAOLO and now i found the time to fill it with some life.

Overview about Weekend Testing chapter and their timings

JPG image with sorted chapters by activity status

For me, who is always easy to confuse with “global” times, I need an overview in a sorted way. So I created this Excel table for myself and share it here; maybe it could be useful for others as well.

The information are not complete yet, need some time to ask Ajay or Pradeep for more information. OR I take the info from any comment here and incorporate them.

Mental note: Find out how to insert tables properly. Current attempts failed miserable. 🙁

Mental Note: Forget tables for now. Screenshot should be “good enough” for my context. 🙂 Still need to make the text searchable.. at least thats what I like to do.

Todo: Add links to facilitator blogs and twitter IDs. etc.pp => cleanup!

Update 12.01: Added WNT and Activity for WTANZ

50th Weekend Testing session and „Pairing“

As one of my intentions for 2011, I want to restart with Weekend Testing.
Summer 2010 was not a good time for being indoors at the weekend, so I stopped participating.

I prefer the “Original” WT, which conveniently is around 9.30 AM local German time. Often I am just back from walking the dog and my coffee is fresh and hot. My wife normally is still in bed, so the house is quiet and the daily „busy-ness” hasn’t started.

Coincidentally the “50th WT Session” was coming up.

50 sessions mean 50 weeks of voluntarily testing passion on a weekend day.
Consider some Saturdays, where it doesn’t happen, and we are talking about more than a year of continuous passion and effort on the organizers and participants as well.

The participant list in the Skype chat conference was also impressive by sheer numbers alone. It seems to have grown to a steady core base of testers. I saw some familiar names, but also new starters (or at least new names to me).

Congratulation to the organizers and to us, the participants!

The mission for the 50th session seemed easy enough:
For a given program (FireShot) , go to the website, where the users have posted their problems and bugs and help the programmers by enhancing the “bug reports“ with new information.

We also got a question if we want to pair or work alone.

At my office I work alone, so I never had the question (and option) arise as „to pair or not to pair“.  I heard positive experience reports about it, so I said to myself: „Okay, let’s do this. “

(I am quite shy with “strangers” and that includes online contacts as well).
Luckily Jassi was participating as well and also wanted to try it out.

We went into a separate Skype chat and started.
Very soon we decided to go for a Skype call, since we were too busy reading the other WT chat, downloading the program, opening web links etc.

Lesson 1: Talking keeps both hands free for other stuff (really? what a surprise..)

We established our test environment: Jassi had Chrome and Firefox and Windows XP. I had a Vista x64 bit and FireFox ( I assume we both had IE, but that was a “it-who-must-not-be-named”). This little initial talk also helped with the pacing; at least on my side I needed a few minutes to synchronise myself with the other voice and my hearing.

Lesson 2: Always take some time to establish some groundwork and “Pacing”

With talking enabled, we started to have a lot of questions as we jumped right into the mission.
The mission was shaped in a layered question (“Can you find the root cause and help the fix the issues faster?”). We asked a few questions ourselves; mostly concerning the „find the root cause“.

This seemed to me an obvious trap, since this seems not easy to do (if at all) by a tester. Even considering we would have coding skills, the appearance of a bug can’t be safely linked to a root cause (maybe for typos, but even there it might be just a different (valid) spelling:
US English = „color“                versus                   UK English= „colour“

We decided to ignore that piece of information and stick to the remaining part of the mission:
Improve existing bug reports from the users to help programmers to solve the bug.

We were given a website called, which seem to enable simultaneous typing in a kind of document; where each writer gets a different colour to separate them.

Jassi and I ended up the only one using it with our findings. When someone started a sentence and went on to the second sentence, the first could already extend the initial sentence and rewrite or enhance it. Very nice tool.

We went to the web site and had a look at the “bug report”. I put bug report in parenthesis, since in my understanding, it wasn’t, what I would consider a bug report.

I assume mostly regular users entered their problems in this forum. So it is understandable and totally okay, that it is not up to my expectation.

What made it hard for us to get a understanding of the problem reported, was, that often there were answers and new question or new information in a thread based discussion.

It was also not visible (to me) what the status of the bug was. Was it closed? Solved? In progress?

A lot of time was spent just reading the discussion and trying to figure out important (to us) information.
What version were they are using? What operating system, what browser? What was the exact problem, aka with what function or feature?

We thought, maybe we were just unlucky with the chosen bug, so we took another one.
This time we discovered after reading, that indeed the programmer deemed the case solved and the bug fixed.
We couldn’t reproduce the bug either; since we didn’t know the *exact* circumstances.
Even if we try to approximate, it is just that: An approximation.

We gave it another shot and tried a third bug from the forum, but that went a similar way.

At that moment we decided to de-focus and talk about, what we feel and think.
Both of us were at unease, if proceeding according to the given mission was useful to us or if we would go off charter, define our own mission and help the programmers in a different way.

Lesson 3: If feeling or experience suggest, that the mission is “weird”, follow it up and try to change it, if possible.

We decided to gather information, how the bug reporting system as such could be improved.

If the current bug forum still needs to be used, at least a moderator should gather relevant information from all the posts in a timely manner and write / update them in the initial report.
That way, the newest information would be immediately visible.
Also a better status overview could be incorporated, so that “solved” cases should be closed, hidden or otherwise visible marked as “done.

Of course, we had the freedom in this weekend testing session to decide on our own to change the mission.
This might be not possible in real life work environment.
But it should be possible to inform the stakeholder (who has given the mission) a fast and early feedback, that the time invested in his original mission is not well spent.
And one can make a suggestion, what better benefit can be provided, with a change of mission.

Lesson 4: Even when changing mission, still keep the focus on providing good information to your stakeholders.

For Jassi and me the pairing option worked out quite well.
I learned that there is no need to be shy, if both have the same goal (learning & testing).

Next sessions I want to try it out even more and with diverse people.

QR Code – Blink heuristic

I was talking with a friend of mine after a little Selenium introduction session and we came to the topic of QR codes and how they use it in his company.

Basically an encoded image is created, which allows you to download something.
My friend pointed his HTC mobile with the “Barcoo” app to my screen and it recognised the QR code and downloaded the image immediately to his phone.

The curious guy inside me was hopping up and down (who said “tester” right now?).

I was intrigued as how an (QR code) image could transfer this information.
And I was already thinking ahead as how this could be misused.

So we went online and looked for an QR generator (its incredible, but you nearly always can find a “generator” for anything..). Sure enough we found one.

First session: Skimming what this generator is about and what it can do.
One can encode a lot of different information and channels, there are SMS, URL or business cards (vCard).

Second session: Is it working?
We tried the obvious (to us) choice; we inserted “” into the URL code.
First observation: As soon as the first character is inserted, the QR image is created. While entering more characters, the QR image changes.

HINT: The usage text says “..keep below 300 char for less complex QR code..”. Nice try.
So it should be possible to post as many characters as I like into it?
We used the QR image for google on my friends mobile and *tata* it opened the browser and showed the google site.
We didn’t get into it to try out to embed a full query in the URL (for example: open google result list for “ET tester” ).

While I was messing around with the “Text” field and just randomly (really? mh) entering text, i thought i saw some pattern, which i wasn’t aware of before.

Some of my synapses were working overtime and “Pop! goes the weasel” a mental lightbulb blinded me!

(BTW. I like “pop goes the weasel” and always wanted to use it. It is just as lovely as “anyhoodles” (thx to RaspberryX for hooking me up on that term).
Both have no real meaning for Germans, which makes it even more cute to use.. you have to love the English every now and then 😉

Anyhoodles.. where was I? Ach ja, pop goes the weasel: BLINK heuristic!
Thats what my synapses were leading me to, when i saw some pattern in the QR image.

I heard and saw the BLINK heuristic in Michael Boltons RST session in Berlin, 2010.
Here is the article about it for further reading.

Third session: Applying the BLINK heuristic consciously
I hacked in some characters into the text field, c&ped them (sidenote: I thought I made *that* one up, but sure enough .. I googled it and it had like 11000 hits) and begin to insert more and more and see how the pattern evolves.
Observations: It always has a kind of “black” square in three corners. Second, depending on the amount of characters inserted, a kind of “white” square showed up in the remaining corner. After many more characters more white squares showed up.
The size of the squares seem fix: 6×6 for the black and 3×3 for the white square.

Amount of characters in “SMS Text” field:
0 = no QR image (needs at least one char and the area code)
1-7 = no white square at bottom right corner
8-118 = white square(s) are beginning to show up, starting with one in bottom right corner
119+ = full white square pattern show up.

– Area code entry is also required, otherwise no image is created; so the QR code has / can have mandatory fields.
– The finer the black/white filling of image, the more clearer the squares can be seen.

Last session: Reflecting what we had learned.
– Without researching the functionality of QR codes and this specific generator we gained insight and knowledge.
– We found some boundaries, as in mandatory fields, which are required to create an image.
– Unknown, if this boundaries are artifical by the developers or by the QR technology.
– We saw some visible behaviour and pattern.
– Unknown is, if the white pattern already there from the first entered character and could be visible when certain data is entered? I used like 1234567890.. maybe if I use abcde… etc. the white square would be visible?

All in all, what began as a chat about a certain technology turned out to an impromptu learning session.

The “Imposing” Mentality

While I read and commented about Pradeeps latest post I recognised that my comment became very long and turned in another direction, so I decided to write the whole story here (I am sure, there are similar stories out there, but I will add my 2 cents anyway).

A few years ago I was working Bahrain (Middle East, 1 hour north of Dubai).
Once a year there is a fasting period called “Ramadan”.
During that time it was legally not allowed to drink, eat, smoke or what-ever-stimulates the body (yes, *that* included) and mind.
This law applied to all inhabitants; Muslims and non-Muslims alike.

Out of courtesy I respected that law in public and when I was at other working collegues offices.
Luckily for me, I had my own office, so I would have a drink and snacks stashed (no food places open, mind you) in my drawer; hidden when others were around (the law had fines attached of course.)

Our office boy Ali still brought me my coffee and when I asked him why he is so calm about me not fasting or even drinking during the day, he just said: “It is my faith and I need to have a strong will and not be tempted by others.”

This made me speechless, cause it was such a beautyful and insightful statement.

Why should something which I decide to follow for *myself* be imposed to *others*?

I personally don’t eat tuna and will never travel to the USA; but I would (hopefully) never force others to follow my lead (regardless if I would have the power to make them so or not).

I also quit smoking in 1997 at a KISS concert in Hamburg, but I am okay with people smoking in my vicinity and even enjoy a cigar or shisha every now and then.
==> “It is my decision and I need to have a strong will and not be tempted by others.” (Ali, Bahrain)

I think, there are many, many examples for this:
– Vegetarians versus carnivores
– Non-smokers vs. smokers (even more extreme: ex-smokers vs. smokers)
– Religion A vs. religion B
– Metrics vs. non-metrics
– Tuna eaters vs. non-tuna eaters
– etc.pp.

I like to end with a quote, which I never understood when we had that topic in school, but as I grow older, I respect it more day by day:

“Die Freiheit des Einzelnen hört da auf, wo die Freiheit des Anderen beginnt.”
(The freedom of the individual stops where the freedom of others begins.)
Loosely taken from Immanuel Kant.

If I had to make a wish for the new year (and any new year to come), it would be that humankind would learn step by step to live with each other and try to accept the other as much as possible.

(It might be sociological not possible, since human tend (and need) to define themselves in “groups/peers”, but it is nevertheless my wish:
“.. Characteristics shared by members of a group may include interests, values, representations, ethnic or social background, and kinship ties..” Wikipedia