Sunday, May 23, 2010

How did you respond to other's work today ?

Scenario# 1:
A test engineer working to test an application seemingly works hard to find an all important bug that is potentially a show stopper. He later takes care of all the possible details to log the defect. This defect goes into the series of confrontations with the Development team and after much of back and forth, the development team agrees to fix the defect. This makes the test engineer happy but he does not get to hear any words about his effort from his superior or for that matter none of his colleagues respond back on good skills that he displayed.

Sounds a familiar situation! It might be. I think most of us have gone through such an event or may be would have gone through it so many times that we have stopped caring that someone would respond.

Scenario# 2:
Reciting the above story again and this time say the end response is changed. The superior of the test engineer looses his temper on him when the confrontation with the Development team was happening without understanding the bigger picture of what he was trying to achieve. This definitely is an unreasonable response but not a unique one. Most of the people face the situation when they get reprimanded prematurely. I have faced it . You must have faced it too.

The question here is not how often you have faced outcomes in Scenario# 1 and 2 in your work life or how you responded when faced with this situation. But i think the bigger question seemingly is what are the prime factors that lead to such situations ? The prime factors not pertaining to the individual at the receiving end but largely why such situations arise.

Primarily, Why does an individual seek a response to any work done by him or her ?
Note that i have chosen the word "response" instead of "feedback" here. The prime reason for that is because the feedback can be positive or negative but the response to a particular situation may vary depending upon the context.

Any individual may seek a response to his or her work for myraid of reasons. One of the greatest reasons is Self esteem needs. If an individual feels he has done a good work,depending upon a kind of person he/she is- may seek approval from others to feel good himself. Self esteem needs are the most basic of the human needs and if it is not met, the individual will tend to be discouraged in a longer run. Every employee in true sense seeks that "feel good" factor from the job he is doing. It is one of the intangible benefits that an organization can provide in addition to all the incentives etc.
Other reason can be seeking the ways to improve his or her efforts. By giving right response, an Individual can enhance the work performance manifold.
One way a response to work can help is showing what is the "right" way to do a task in a given context.

Does the response needs to be given only by his superior ?
The answer to this question may be tricky as it largely depends upon the Organization or team culture as setup by the Group head. Going by the traditional model, the feedback of a certain task is given by one's superior only. But the avenues of an employee to improve does not end at the Superior's feedback given the fact that Superior may be working under several external forces when undertaking a feedback session. The employees truly looking to improve upon their work skills do not solely rely on feedback from superior and seek the improvement ideas from all possible quarters in a professional manner. I strongly beleive that for a success of team, followership is more important than leadership. One of the key responsibilities of a follower is to seek feedback and also give feedback. The practice of giving feedback may vary depending upon the organizational culture. Please note that the word "Follower" is generally looked down upon by certain section of employees. In my world, a follower is the most important element of a team and plays a crucial role to make the leader, the team and the organization successful.

Ken Blanchard's "response model":
I think it is apt to discuss the "response model" suggested by Ken Blanchard in his book- the little book of coaching

There are 4 ways in which a coach can respond when the team member does some work-
1. No response:
It means no acknowledgement what-so-ever of the work done.
2. Negative response:
It means that the coach is always on the look out for a mistake and blasts off, if it happens (how-so-ever minor).
3. Redirection response:
It means that the coach helps the employee understand the correct way and helps redirect the energies of the employee towards the goals when a mistake or failure happens.
4. Positive response:
It means that the coach makes an efforts to find the positive things and bestows a genuine appreciation for the good job done.

The responses# 1 and 2 above are quite common in today’s work place and infact these responses are easy in a way and for most people it do not require any effort at all. It is very easy for the Coaches to come up with these responses being in their comfort zones. In my experience, the no response is sometimes more dangerous than a negative response as it instills the doubt in an employee’s minds as to whether his work is worthwhile to the organization afterall.

Most coaches struggle to give responses# 3 and 4. Giving an heart-felt praise or an honest redirection requires guts and courage to leave that typical comfort zone- a skill that doesnt come naturally to many. But the fact of the matter is that a Redirection response or a Positive response goes a long way in ensuring that intent of response is internalized properly.

How often do you choose Redirection or Positive response in your coaching ?

Wednesday, May 12, 2010

Uncovering myths about Globalization testing- Approach to generate Localized test data

Myth 23: It is possibly the right strategy to randomly pick the test data specific to the localized language you are testing

While performing Internationalization testing, a tester largely deals with testing the product on the languages not known to him. Imagine a tester from India testing a product on Spanish Operating system. While it is largely possible to do the Internationalization testing without knowing the language
but there are certain traps related to this ignorance of the underlying language that a tester should be aware of. One of such trap is usage of test data.

Very often the lack of knowledge of language prompts the tester to just use a "few" input characters of the language under test while ignoring the rest. This is obviously a dangerous situation as it leads to some holes in the test coverage. The below example illustrates what i was mentioning here-

E.g. considering that a tester is testing Spanish langage, he is most likely to include Spanish specific input characters such as- á,é,í,ó,ú,ñ,ü and may be more investigative ones will use there above list in CAPS, or in combination with English characters, numbers etc. But the basic question that most of testers resist to ask is whether my test data is covering all the possible Input characters for the language under test ?
May be one reason this question is not asked is because of lack of complete knowledge of the language under test. Some may argue the validity of this question with an argument- Is it really necessary to test all the possible Input characters that a langauge offers ? This is a fair questionconsidering say while testing English language- if a tester uses "a" as a test data or if he uses "z" as a test data, wouldnt the result be the same all the time ?
May be Yes.
But when we are considering the test data generation of Localized characters, there are some more crucial points to be considered. This is what i intend to cover in the upcoming sections with a idea on how the test data of "foreign" languages can be better classified and used while testing.


How do i know which Input characters should be tested for a particular language ?
I have generally found this website quite good and informative. This has separate web pages for different languages and the tester can easily see which Input characters define each language. More on this in upcoming examples.

Is there a reasonable way to ensure that the localized test data gets appropriately covered ?
This website would not only allow you to know the characters used in a particular language but also the appropriate ways of classifying the same.

In my experience, dividing the Input characters of a particular language in to appropriate classes is always a better approach. Let me try and explain using an example.

Consider Spanish language for example-

Webpage listing all the chatacter inputs:
http://tlt.its.psu.edu/suggestions/international/bylanguage/spanish.htm

E.g. the below section represent Input character classes for Spanish language characters in a boarder sense. And while coming up with the test data for a particular field say- Password, depending on the rules and the length accepted one or more characters from each of these classes can be used as a test data.

Spanish Language Input characters classes:
Capitals:
Á, É, Í, Ó,Ú,Ñ,Ü (commas are only used as separators)

Lower case:
á,é,í,ó,ú,ñ,ü

Punctuation
¿,¡,º,ª,«,»,€:

Special Spanish representations:
HTML entity codes (HTML entity codes are the codes which allow browsers and screen readers to process data as the appropriate language) e.g. for the character á, the HTML entity code is á
The reason to include these codes as a separate class is because if these codes are used separately as the Test data in an input fields, the application might interpret this as a single letter. This possiblity is espacially true for web based applications.

English Lower case characters:
a-z

English Upper case characters:
A-Z

Numeric representations:
1,2,3,4....

Special characters (EN):
~`!@#$%^&*()_+-={}[]|\:;"'<,>.?/

Any Known problematic Spanish characters (not included above):

The reason to include English Input characters in Spanish test data is that users generally use English along side with Spanish characters with some commonality being there in characters usage.
Further in our example- say is password is accepted to be 20 or less character length, some of the test data can be (notice that test data has one or more characters from each identified class).

Less than 20 characters
Áñº«gz24@

=20 characters
Üó€»sH224&ÜÍ¿¡

Greater than 20 characters
Ó᪫»tyKL7845`!@º

Far Greater than 20 characters
(If there are no limits on the UI)

0 characters
(blank)

Important point to note that each test data above includes atleast one character from the Input data classes identified for Spanish language above. That is the key as this approach helps ensure that all the classes of data is utilized appropriately and no Input character is actually left to chance.

Some questions related to this that i would be working to address in upcoming posts-
- The strategy to divide the Input characters into classes seems good for the languages which has limited set of characters like European lanaguages. Can this approach be used for Asian languages like which Japanese, Chinese, Korean etc. which deals with multiple writing scripts as well as thousands of characters ?
- In larger context, what could be the test straregy totest Unicode feature ? Unicode being one of the key Globalization features that is built in the product and should be tested comprehensively from the point of view of Globalization testing.

For a complete list of Globalization testing myths uncovered in the past, please visit here .

Thursday, May 6, 2010

Did you eat that frog today ?

Recently during a workshop on Exploratory testing Pradeep gave an exercise to the participants to test an application. After around 15 minutes of testing, different participants came up with different types and numbers of defects. The question that got asked next was obvious- Why do different testers find different types, numbers of bugs given the same amount of time ?
Interesting question, isn’t it ? What got demonstrated in 15 minutes is the story of every organization involving testing teams i.e. some testers find important bugs faster than the others. There can be several reasons one can think of for such a phenomenon but i feel at the core it has something to do with the ability of a tester to prioritize and execute the most relevant and important test at a given time. The skill of a tester including the testing skills, technical skills, product knowledge, soft skills etc. all help the testers to build this all important ability.
Generally, in work life this concept is of utmost importance i.e. one's ability to select the most important task at each moment and then executing it to perfection will have the greatest impact on one's ability to deliver on results. And thinking on an even larger frame, this ability is the basis of managing time better.
So, what stops a person from selecting and executing a person from doing the most important task for a moment. Again, a common thought process can lead to many responses but largely it has something to do with inherent habit of human beings to procrastinate or delay the uncomfortable tasks, how-so-ever important they may be to any given context.
Consider some situations-
- A person who is more of an introvert will often delay going to a large gatherings, even though it may be important and required.
- Coming into office, one might often delay doing the tasks involving confrontations.
- While testing some application, general tendency is to delay working of the areas where one has less knowledge.
- If one has to choose between two tasks of more or less equal importance, the general tendency is it choose one that sounds easy.
There can be many such examples in our day-to-day life where we procrastinate. I once read somewhere that Procrastination is a Thief of time. Quite true it is!

I recently completed reading a book called - Eat that Frog by Brian Tracy. To be honest, i picked it up from a book store because i just needed something to read but when i reached the end, i found it to be one of the more profound practical book on the subject of Time Management. So, this blog is dedicated to my learnings from this book.

Does this title of this blog sounds strange ?
It might and if someone thinks about it literally, it might sound disgusting also. This is based on what Mark Twain once said- "If the first thing you do each morning is to eat a live frog, you can go through the day with satisfaction of knowing that that is probably the worst thing that is going to happen to you all day long." So "Frog" here is a metaphor for the task you find ugly but it needs to be done.
The idea of managing time in a better way is to create time for yourself in a day so that one can get more done in less time. We often hear proponents of Time management say that we all have 24 hours, yet some get more work done and some get lesser done. This illustration is quite true, without doubt.

Rules in Frog eating:
Now that we know what a frog means, Yes, it is that ugly task that you hate to do i.e. given a choice in normal situations, you will never choose to do it. But at the same time, it will be most critical to your success in a given endeavor.

The first rule in Frog eating states something like-
If you have to eat two frogs, eat the ugly one first.

In other words, if you have two important and not-so-pleasant tasks to do, always choose the unpleasant of the two first. I think we as a human beings forms certain preferences as we move ahead in the life and these preferences always act as the filters to our thoughts. E.g. if a person has to eat 2 medicines to treat an ailment, one tastes sour and the other sweet, if a person has a preference for sweet he will tend to stay away from the sour medicine as much as possible. But the fact of the matter is that to treat an ailment, he might be required to eat both in right proportions.
Another situation- a creative person working to test an application, will invariably prefer to do an Exploratory test rather than a time consuming and repetitive task of verifying a single functionality for a long time. Suppose, the same tester is in a situation when the development team needs an urgent information on a bug, which requires him to run a same test 100 times to gather necessary data, what will this person do ? That’s the essence of the first rule of frog eating. Do the difficult task first, it will set the tone for the rest of the day.
The outcome of each day is based on the choices we make. Suppose if a person chooses to do easy tasks in his most productive hours of the day, it will mean that he has left the monstrous tasks towards the time when his mind is wavering, one can imagine what the outcome will be.

The second rule in frog eating is-
If you have to eat a live frog at all, it doesn’t pay to sit and look at it for very long.

Generally the way people show the dislike towards a certain task is by keeping it their list and dont do anything on it. Follow-up on tasks is a very common phenomenon at the work place. And the situation of following-up arises when one delays the task. The irony in this situation is that even after the delay, you tend to do the task because it was required. Knowing this, the better sense would demand - why delay in the first place!
Keeping an unpleasant task till the end of the day or even beyond makes one feel stressed and it is one of the reasons of people suffering from low self esteem, which then affects many other aspects of work and life in general.

So what are your waiting for ? Pick up yourself and do that unpleasent task thats sitting on your mind and blocking you from thinking clearly. There is nothing as exhasuting as an unpleasant, uncompleted task.
Try starting your day by going through this short video and acting upon what is being said.

Will be sharing more learnings in upcoming posts. Do share your thoughts around this ?

Monday, April 19, 2010

Is the concept of Innovation culture dependent ?

The thoughts presented in this blog are as a result of an interesting question by one of the readers- Vittal, in my earlier post- Key Lessons from the life and times of Steve Jobs
Thanks for sharing your learning. The ideas are thought provoking.
I am not challenging the purity and the effectiveness of the ideas, but would definitely like to know, how they can be applied and be effective in our work models and culture.
Its different worlds when we look at western corporate and eastern corporate culture.
Do share your thoughts.

Certainly some interesting thoughts above and in this post i would like to share some of my thoughts around this topic. In all honesty, i understand that the complete answer to the question as vital as the title of this post cannot be answered in a source as abstract as one blog post.

First question that comes to my mind is, Are the cultures really different fundamentally ?

There is something i learned earlier on, it is that when we talk about cultures, there is nothing right or wrong. Each culture is right in its own way and has to be accepted for what it is. This understanding came from one of my earlier managers and over the years i have begin to realize that this is quite right. It also indicates that cultures are fundamentally different and that difference can vary from many unique factors such as one's religion, Geography, upbringing etc. I have not seen the concept of culture being so simplisticallly described as done by Yang Liu . Consider some of the below pictures designed by Yang Liu-

In the images below-
Blue= Western culture
Red= Eastern culture
The Boss



Anger



Punctuality



Me



See more of these here
So, cultures are different. No doubt about that and these differences at the grass roots level do influence our thinking to a larger extent. Our cultural background has a lot of relevance in explaining what we do, how we take decisions and what thinking patterns do we apply to solve problems.
Having said the above, in my experience one of the things that i have observed is that we cannot generalize any culture e.g. if as indicated in above example- for eastern cultures the boss is treated above all the employees, it does not necessarily mean that all the bosses in eastern culture consider themselves superior to the rest. There will always be exceptions which defies the norm.

Is Western thinking really different from Eastern thinking ?
When we talk about the subject of thinking, any mention would be incomplete without the mention of work done by Edward de Bono . In his book- Six Thinking hats , de Bono provides a very interesting perspective on these Western and Japanese cultures.

Argument or No Argument:
Western thinking is more driven by argument. Japanese thinking does not value argument much. An attacking conversation by means of argument is considered impolite and harsh.

Conduct of meetings:
A Western type of meeting is usually the one which is more based on discussions and arguments. The meeting participants gives their ideas/thoughts and these are discussed, criticized and reasoned upon. And the idea thats usually "wins" is the one that stands all the criticism and questions.
A Japanese meeting usually has many people actually listening. Active Listening is a key virtue. Once after listening, they gather all the inputs and present their thoughts in a neutral manner, rather than pinpointing or criticizing anyone's ideas.No one tends to hammer the ideas by criticizing. So, the personal attack is not considered good.

The role of ego:
Western thinking is usually considered as more ego based with argument occupying the central space. Japanese culture is not ego based.

The process of ideation:
In his book- a fine line , Hartmut Esslinger talks about Japanese notion of ideation. It says that Japanese don't believe that they "have" ideas but ideas actually "come to them". Such selfless approach towards ideas certainly makes the whole ideation process ego-free with no one involved in the process having to worry about who owns the idea.

The handling of mistakes:
In the same book, Hartmut Esslinger also talks about the Japanese notion of handling mistakes. True to Japanese culture, the notion is that- "people don't make mistakes" but "mistakes are something that develop over time". This very notion really takes away all the focus from personal blame games. This may be exactly or somewhat opposite to Western culture.

Perfectionism:
I would like to narrate a story here, adapted from this source. Here it goes-

The Japanese have a great liking for fresh fish. But the waters close to Japan have not held many fish for decades. So, to feed the Japanese population, fishing boats got bigger and went farther than ever. The farther the fishermen went, the longer it took to bring back the fish. The longer it took them to bring back the fish, the staler they grew. The fish were not fresh and the Japanese did not like the taste. To solve this problem, fishing companies installed freezers on their boats. They would catch the fish and freeze them at sea. Freezers allowed the boats to go farther and stay longer. However, the Japanese could taste the difference between fresh and frozen fish. And they did not like the taste of frozen fish. The frozen fish brought a lower price. So, fishing companies installed fish tanks. They would catch the fish and stuff them in the tanks, fin to fin. After a little hashing around, the fish stopped moving. They were tired and dull, but alive.
Unfortunately, the Japanese could still taste the difference. Because the fish did not move for days, they lost their fresh-fish taste. The Japanese preferred the lively taste of fresh fish, not sluggish fish. The fishing industry faced an impending crisis! But today, it has got over that crisis and has emerged as one of the most important trades in that country! How did Japanese fishing companies solve this problem? How do they get fresh-tasting fish to Japan?
To keep the fish tasting fresh, the Japanese fishing companies still put the fish in the tanks. But now they add a small shark to each tank. The shark eats a few fish, but most of the fish arrive in a very lively state. The fish are challenged and hence are constantly on the move. And they survive and arrive in a healthy state! They command a higher price and are most sought-after. The challenge they face keeps them fresh!
Humans are no different. L. Ron Hubbard observed in the early 1950’s: “Man thrives, oddly enough, only in the presence of a challenging environment.” George Bernard Shaw said: “Satisfaction is death!”
If you are steadily conquering challenges, you are happy. Your challenges keep you energized. You are excited to try new solutions. You have fun. You are alive! Instead of avoiding challenges, jump into them. Do not postpone a task, simply because its challenging. Catch these challenges by their horns and vanquish them. Enjoy the game. If your challenges are too large or too numerous, do not give up. Giving up makes you tired. Instead, reorganize. Find more determination, more knowledge, more help. Don’t create success and revel in it in a state of inertia. You have the resources, skills and abilities to make a difference.

Moral of the story: Put a shark in your tank and see how far you can really go!


There are some real life learnings from this story as this article talks about. But it also reflects one very unique aspect of Japanese culture which is that Japanese tend to imbibe perfectionism in everything they do. In the case of this story, its the taste of fish and there can be numerous instances in day-to-day, work life of such perfectionism. That is one trait that has really helped Japan during its formative years. Possibly no other culture comes closer in this aspect.

Repeating myself here again by saying that though the above may give a very high level distinctions between the cultures but it may be naive to consider the people in a certain culture behave the same way. So there will be exceptions and many at that.

What's Innovation got to do with culture ?
In think our cultural orientation definitely has a great impact on our basic thinking patterns as the numerous of the above examples state. I feel that Eastern cultures are more bent towards cumulative form of Innovativeness in which the ideas get matured going through the various stages and then eventually we have a big solution. And may be the breakthrough Innovation is more associated with Western culture. One example that i can think of is the advent of break-through products like Windows Operating systems, Office Applications, Apple Macs- all big inventions of our times happened in Western culture. They are no less than the breakthrough innovation but on the Eastern parts we had successful business models built up on the Computer services side (Infosys, Wipro, TCS etc.), and largely thinking, these business models had in its foundation, the success of core computing driven by the Western organizations. I think both these forms certainly compliment each other and it would not be right to treat one greater than the other.
Another culture aspect is that True Innovation has its basis in more free form of thinking and it generally does not breed in an hierarchical form of organization in which each idea would need to go through certain approval and each failure would be blamed.
From my personal observation, some organizations take Innovation as another “task” given that this is something that is “needed” for survival. And in doing so the very essence of Innovation is lost. As an example, I have seen many organizations reward the employees on getting through with Patents. And with a good monetary reward system in place, the talented engineers are definitely encouraged to get the patents and they get successful too. But i guess, this definition of success turns out to be a bit loose in overall scheme of things, for example when we glance at the data on how many patents filed actually get into the products or even turn to blockbuster product ideas. Though I don’t have a real time data but just common sense analysis of comparing number of patents granted to organization as against number of products it has in its rank, the whole story becomes clear.

Have you observed this trend ? Does it have any cultural basis ?

Do share your thoughts.

Saturday, April 10, 2010

Wonder how your website looks on an iPad...

The recent iPad launch has for sure caused a lot of buzz in the market. With the sales figures topping 300,000 numbers in a single day, this is certainly a dream start for any upcoming product.
It may not even require a prediction to judge that the Software Testing community will soon be embracing iPad and testing their products on the same.

Just came across a tool that can help you simulate your websites look and feel on iPad. All about it at the URL below-

How Does your Website Look on an iPad?

A good tool atleast till you get your hands on a real iPad.

Sunday, April 4, 2010

Key lessons from the life and times of Richard Branson

When i wrote this article on managing multiple passions, i had not really read through about the Life of Richard Branson . His life definitely adds a great dimension to article. To me, he is one the rare people who not only managed unrelated interests with great zest for life but also got a considerable success and fulfillment in doing so.
For starters, Richard Branson is the owner of Virgin brand which started modestly as a record shop company but the brand is humongous now with more than 400 companies around the world. Apart from managing such a huge business conglomerate, Richard has a certain flair for Adventure. He has made several world record breaking attempts like fastest to be Atlantic ocean crossing to travelling around the world in Hot air balloons.He do plans to take his Airlines- Virgin Atlantic to space. Apart from this, he is very much involved in social work covering diverse areas.
I got to know him better through one the book- Screw it, Let's Do it: Lessons in Life written by Richard Branson himself. The book presents a lot of learnings from his life capturing the key events and i have tried to capture the snippets in his own words) in this post. As usual, i have captured important learnings right from this book. Read on and Enjoy!
The personal pronoun "I" in the upcoming text represents the words said by Richard Branson himself.

Have goals but be practical about them:
I believe in goals. Its never a bad thing to have a dream, but I'm practical about it. I don't sit day dreaming about things that are impossible. I set goals and then work on how to achieve them. Anything i want to do in life, I want to do well and not half- heartedly.

Just do it:
The best lesson i learned was to Just do it. It doesn't matter what it is, or how hard it might seem, as the ancient Greek, Plato said- "The beginning is most important part of any work." A journey of a thousand miles start with that first step. If you look ahead to the end, and all the weary miles between, with all the dangers you might face, you might never take that first step. So, take that first step. There will be many challenges. You might get knocked back- but in the end you will make it.

Getting things done:
The staff at Virgin have a name for me. It is "Dr yes". They call me this because i wont say no. I will find more reasons to do things that not to do. My motto really is: "Screw it- let's do it!". I will never say, "I can;t do this because i don't know how to." I wont let silly rules stop me.

Never say "Can't":
I don't believe in that that little word "can't" should stop you. If you don't have the right experience to reach your goal, look for another way i. If you want to fly, get down the airfield at the age of sixteen and make the tea. Keep your eyes open. Look and learn. You don't have to go to art school to be a fashion designer. Join a fashion company and push the broom. Work your way up.

Brilliant ideas come when you least expect them:
Here's an anecdote from the book which proves the heading-
Our plan was to travel on to Puerto Rico- but when we got to Airport, the flight was cancelled. People were roaming about, looking lost. No one was doing anything. So I did- someone had to. I chartered a plane for $2,000. I divided that by number of people. It came to $39 per head. I borrowed a blackboard and wrote on it: VIRGIN AIRWAYS. $39 SINGLE FLIGHT TO PUERTO RICO. The idea of Virgin Airways was born, right in the middle of a holiday.

Don't moan a bad boss but Love your work instead:
If you do still have to work for a boss at a job you don't like as almost everyone does at some point, don't moan about it. Have a positive outlook on life and just get on with it. Work hard and earn your pay. Enjoy the people you come into contact with through your job. And if you are still unhappy, make it instead your goal to divide your private life from your work life. Have fun in your own time, you will feel happier and you'll enjoy your life and your job more.

Have dreams and never give up on them:
It's easy to give up when things are hard but i believe we have to keep chasing our dreams and our goals. And once we decide to do something, we should never look back, never regret it.

Keeping your words:
One thing i always try to do is to keep my word. I set my goals and stick to them. Success is more than luck. You have to believe in yourself and make it happen. That way others also believe in you.

Embrace challenges:
As the writer and mountain climber James Ullman once said- Challenge is the core and mainspring of all human action. If there's an ocean, we cross it. If there's a disease, we cure it. If there's wrong, we right it. If there's a record, we break it. And if theres a mountain, we climb it.

Self belief:
I believe in myself. I believe in the hands that work, in the brains that think, and in the hearts that love.

Have no regrets:
I believe the one thing that helps you capture the moment is to have no regrets. Regrets weigh you down. They hold you back in the past when you should move on.

Live in the moment:
Always living in the future can slow us down as much as always looking behind. Many people are always looking ahead and they never seem content. They look for quick fixes like winning a lottery. I know that goals are important. Money is important. But the bottom line is that money is just a means to an end, not an end in itself. And what is going on now is just as important as what you're planning for the future. So, even though my diary is full for months ahead, I have learned to live for the moment.

Compartmentalize life:
The man who started IKEA divides his day into ten minute sections. He says, "Ten minutes, once gone, are gone for good. Divide your life into ten-minute units, don't waste even a minute.

My final thoughts:
I think this blog has gotten far longer than i had thought but i really couldn't help it. I still ended up omitting a lot of what i thought i would put across after i read the book but the above represents the best of my learnings from the life of Richard Branson. Going by the precept- "Best is yet to come", i am sharing one more key learning as below-

One of the great things that i found impressive in Richard Brason's life is ability to overcome odds. In his school days, the teachers not realizing he has dyslexic tendencies considered him quite slow in reading and writing. To overcome this, he taught himself to memorize things and became good at his perceived weakness and went on to even win a School level Essay contest, which is indeed an achievement for a guy written off almost at the early age. Certainly, he showed flashes of greatness even at a early age!

Friday, March 19, 2010

Uncovering myths about Globalization Testing- Testing MUI feature

Myth 22 : A tester testing Globalization features need not pay any special attention towards testing MUI feature.

I had touched up the nuances of Multilingual user interface (MUI) feature in this post as well as this one in the past. These posts primarily focused on how MUI technology is implemented in Windows Operating systems and spoke about the differences in MUI technology in different versions of Windows OS. What these posts did not cover specifically about MUI was- if the software application you are testing supports Multilingual user Interface, then what are the aspects that you can look at from testing perspective to ensure that MUI is tested properly. In my experience, this is an often neglected area of Globalization testing. May be because supporting MUI is one of the basic features and it is often "expected" to be working fine just because few common user cases work. The purpose of this post is to correct this myth and look at the finer details of a typical MUI implementation and the areas the could be generally tested.

MUI at a basic level:
What does it actually mean why you stare at a requirement that says- the application you are testing supports MUI ?
At a very basic level, it means that-
1. In the application under test, the strings are separated from the source code. What does "Strings" include in an application ? Strings may include any text on User Interface (or even sometimes Command Line interface) such as Menu names, Text labels,Control names etc. All these are generally static texts, which are usually the candidates for translation into any given language. These strings are separated from the source code and included in the resource files.
2. The second part- at a higher level, of being an MUI supported application is that the application has the ability (built programatically) to load the separated resource files dynamically at the run time.

So MUI software application is the one which is language neutral, has the translatable strings available separately in the resource files and finally has the ability to load the resource files dynamically.

Lets further look into some questions that might come into mind at this time-

What is the need to separate the strings from the source code ?
If the strings are not separated from the source code, then it will reside in the source code. What that means is- the language experts who translate the strings to the target language wont have access to those strings as they usually get the strings in separate files (called resource files) to carry out the translation. In this situation, when the strings are still in source code- it will result in that text being shown in the base language even when the application is localized. e.g. suppose the application's original language is English and there is a requirement to translate in German. So, the strings residing in source code will not get translated in German and we will have part English and part German text because of some English strings still being "hard-coded".

The second question that might arise is-

What is the need to dynamically load the resource file ?
Few examples here-
- Suppose an application supports 3 languages- English, German and French. If user installs the application on German OS, then at the time of installation, the application should recognize the Germaan OS and load the German resource files. If it does not then the German customer may end up seeing English or French text.
- Suppose the organization has a support group in Germany and they deal with English customers. The German support engineer might prefer the User interface to be in German and as he is dealing with English customer, there may be a need for him to switch between German and English User interfaces. This is where dynamically loading the resources and hence, the MUI features comes in real handy.

What are the questions i should ask before testing MUI feature ?
Asking questions helps! and it does always help to ask quite a lot before testing and of course, while testing. Some questions below might help understanding the scope of MUI testing-

- Is the Installer of my application support MUI i.e. does the application Installer installs different supported languages' resource files as a part of Installation ? i.e. if product supports English, German and French languages- does the respective resource files gets into the system during installation ?
- Does the installer recognize the OS locale settings and installs appropriate resources files as per locale settings ?
- Does the application installer provides an option to select the language before proceeding with Installation ?
- Is the Fallback logic implemented ? i.e. say if supported language is German and the application is installed on Dutch OS, does the application falls back to a common language say English ?
- After the application is installed, does it provide the option to the user to switch language at a run time ? i.e.
- If the computer has 2 users with different languages (its possible in Windows OS!) i.e. say English and German and the user logs on to German user settings, does the application desplays the German UI ? This should be taken care of by the application's dynamic resource loading logic.
- If the application happens to be a web application, then too all the above questions will hold good. One additional question to ask, though can be- What is user's browser language ? This is a typical case- when OS language is different from the browser language. In this case, what is the fallback logic ? How should it behave ? It can become more complex say in a situation when the web application runs on French OS with French Canadian browser settings and at the application logon page, the user selects English language as his preferred language. In this case, what language should be shown to the user ?
- How does the MUi logic works in Mac, Linux, Firefox, Mozilla etc. ? Are there any implementation differences that i need to be aware of ?

These questions (and may be more) can help clarify MUI requirement in detail and accordingly testing strategy can be formed. Asking questions is required because Test engineers may never get the requirements in as much detail as might be required for them to test effectively.

Why is testing MUI feature important ?
For an International application, MUI is one of the key features. It is a feature that has helped Microsoft add the required scalability to scale their products across the world. The reason i used Microsoft's example here is because probably Microsoft is the most Global software organization in the entire world. Consider this- Windows 98 supported 30 languages, Windows XP supported 42 languages and Windows Vista- a whopping 97 languages. One of the prime reasons, Microsoft has been able to scale up so much in Windows Vista is because of advancement in MUI technology during the Vista release and this technology is further used in Windows 7 too. So, for an application to be truly global, it has to have a core global arhitecture in place which is what MUI helps achieve.

What are typical Test ideas of Testing MUI feature in the application ?
At the core level, testing MUI means-
- Testing for Language neutral core binary
- Testing for single MUI Installation
- Testing for switching language without Reinstallation
- Testing for the logic of dynamically loading resources
- Testing for language Fallback mechanism
- Testing for Single base binary

Depending upon the answer to the questions asked in the section above, the right testing strategy can be formed.
I think with this information, i will be good to continue the discussion further on what parts of MUI can be specifically tested in your applications.

Please do share your ideas!