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 ?