When I test software I love to test for the quirky details stuff. I know, why bother, but I guess I’m just one of those people for whom the devil is in the detail.
And one of my favorite tests for multi-lingual applications is to test for consistency by changing the language to either Simplified Chinese or Japanese – languages I absolutely do not speak. The reason? Well for one it has a different character set, flushing out non-translated items right away (even if they sound the same the different characters will make it look different).
(‘share’ is clearly not being translated here)
But secondly it also means you are suddenly stuck in a piece of software with no textual hints, forcing you to rely on logic and common sense to find your way.
Now, you shouldn’t do this if you are absolutely new to the software. You need to have a basic familiarity with the functionalities first, otherwise you’ll just get lost. But when you do have that basic knowledge, turning yourself into a temporary illiterate by trying to navigate the application in Japanese is a great way of seeing whether the logic of the application still holds up. Doing this has often helped me find inconsistencies you would otherwise easily overlook. Issues for instance with changing button or menu orders, when on one screen the order of buttons is [Ok] – [Cancel] and on another [Cancel] – [ Ok].
Now why is that important? Surely most won’t bother about that?!? Well, yes. Most won’t, but then there is this thing called repetition… We are creatures of habit and when we use software we often start anticipating moves, almost clicking automatically without looking. Like flipping through a photo album where you always flip through the pages from left to right, expecting the chronological order to follow that. How annoying is it if half way through you find the chronological order has suddenly changed, forcing you to go the other way?
So try it. It’s a great way of finding things you would otherwise overlook and it can be kind of funny to see how good your own understanding of the application really is…
Last Friday I was working at a customer where I had to Copy & Paste some person document’s into a secondary address book. Every time I attempted to do it the process would hang and simply wouldn’t stop unless I manually broke it off (CTRL + BREAK). Now I had to paste about 600 records so this was not good news. After some investigation I found the culprit in the “(RenamePastedAccounts)” agent that had an infinite loop in it.
Now this agent is really, really simple. It loops through all the pasted documents and simply checks for a specific value in a field. If found it does something to that field and goes to the next document…..
Right, so do you see the mistake there?
If the value is NOT in the field it will never go to the next document, effectively doing the same check on the same document over and over again.
While Not doc Is Nothing
If ‘value in field’ Then
Set doc = dc.getnextdocument(doc)
It was easy to solve (just move the line that sets the document outside of the If clause) but I just couldn’t help but chuckle. I think it demonstrates a fundamental flaw in development when it comes to testing. We’ve probably all done it. The difficult work you test and have tested but that simple procedure, that so easy to code action…… You know what it needs to do, you know how to do it and you are so confident about what you’re doing that you forget to test it…. thoroughly.
So even at Big Blue, with all it’s checks and testing this can happen it seems. Just glad it’s not my name in that agent, knowing it will be distributed in hundreds of thousands of Domino environments, inevitable found and blogged about on sites around the globe and causing SPR’s to be opened and Technotes to be published…… It’s there for the world to see and there’s nothing you can do but pray everybody upgrades before they ever run into it. And until it is corrected in a new version that honestly simple, stupid mistake will haunt you forever.
Ana……I feel for you.
Coming from someone that only last week managed to literally bring down a (test) server with a similarly simple and obvious coding mistake.