Orientation is one of the big features of the current device generation.

Portrait, portrait upside-down, landscape left and landscape right are “strongly recommended”:

Important: It is strongly recommended that your application support all orientations. This includes portrait, portrait upside-down, landscape left and landscape right. iPad apps that require an orientation must support both variants of that orientation.

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.

Audio:

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?).

Communication:

The communication part of the heuristic is from Tobias Geyer (@the_qa_guy); he mentioned it in a comment, but it is definitely worth to be included; kudos to him.

– How does your application behave if the network connectivity suddenly drops? Will the user loose data; will the app crash or hang?

– Will the app recommend a user to download a 5 MB feature pack when they’ve only got GPRS coverage or will it wait until they’re logged into Wi-Fi?

– What about the server side of things? Will it cause problems if the IP address of your device changes between requests?

– How does the app behave in airplane mode?

– Does the communication have to be secure – and if yes: is it? Think of network sniffers, proxies …

– Is the app using the network connectivity economically? Does it cache data locally or is it requesting everything from the server? Not everybody has unlimited network traffic.

– Is it possible to make your app work with a test system or are all requests hardcoded to your production system? This will affect testability a lot…

Overlay:

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?

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 that time I quickly sketched PAOLO and now I found the time to fill it with some life.

In 2010 I read a blog post about it takes like 10.000 hours of practice in a profession to become a master in it. This quote seems to be taken from the Book „Outliers“ from Malcom Gladwell.

This instigated me to form a special kind of New Year resolution for 2011; that is to track my hours which I spent with testing. I also wanted to cover all aspects, which seem related to testing to me.

So in mid January 2011 I started my spreadsheet program and did a post mortem for the last weeks.
Quickly I found a pattern for myself and started to make rows by week and category.

The categories I saw were Reading, Speaking, Writing, Participating.
From that time I tried to find some activity in each of them per week.

Life distracted me quite good since then and I am still not back on track, but that is a personal story.

Recently I found a topic on STC „Self-Education: where to start from which reminded me of the resolution I had (ironic enough, it went the way a lot of New Year resolutions seem to go), which in return motivated me to make a little blog post out of it.

By actively focusing on these categories and trying to find an activity a tester can benefit on many levels.

I believe each tester should extend his skills and abilities; in that sense I am more a Generalist, then a Specialist.

For some that might be a suitable way, others prefer to get good in a few areas.
„Speaking“, especially in public, is probably difficult to get used to and get a „routine“.
But by speaking and actively interacting with people one can hone how to encounter arguments and advocate for his topic.

Since it was fun to jumble the PABLO heuristic together last time, I made a new heuristic for this.

I call it the „R.S.W.P.“ heuristic in the style of „R.S.V.P. = répondez s’il vous plaît / Please respond“.

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.

Audio

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?)

Objects

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: ArticleVideo

Landscape

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

Overlay

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?

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.

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 “www.google.com” 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” http://www.google.de/search?q=et+tester&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a ).

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.

HINT:
– 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.