Wednesday, October 21, 2009

Conquering the demon called “Change”

"Only thing constant in this world in Change.",
"Nothing is permanent except change"

Here goes some of the ageless quotes about often dreaded phenomenon called as Change. Time and again- Professionals or Home makers, Kids or Adults, Males or Females have found dealing with any sort of changes in their lives, day-to-day routines a challenge, some times as stiff as a mountain to climb.
While going through an article on Embracing Change , the author gives useful insights into typical types of change. Read this-

The reason we may fear change is between what we might call “familiar” and “unfamiliar” types of change. Familiar change is the type we all can, more-or-less, expect and anticipate: we grow older, we learn new things, we expect to get a flu in winter, our favorite (mostly winning) team goes on a (mostly) losing streak, etc.
It is, however, normal to feel disoriented in the midst of unfamiliar, or unexpected, change and cues. In our rapid-fire, rapidly changing world, our schedules, plans and routines become disrupted in a totally unexpected way. The recent mortgage crisis, the stock market crash, and the global economic turmoil are all unexpected, profound, changes that most people simply did not expect to happen.


This is one unique way of looking at change. Before i read this, Change for me meant something that leads to a messy situation and makes the thinking cluttered. This above provide a different perspective. Not all change is messy after all. It also makes me believe that the age-old wisdom of "solving a big problem by decomposing into smaller manageable parts" still holds good in today's times when (unlike in the past) no two days are same in any sense. It is this wisdom that probably prompted the author to break-up and classify the phenomenon of change, which if considered as a single entity is quite hard to fathom.
When describing with what author believes can be a potential solution of dealing with massive changes in life, the article says-

In the midst of change most of us get off of our center because we are creatures of habit. We normally gravitate to sameness and routine unless we work really hard at doing different things. For example, we take the same route to work, eat in the same restaurants on the same day of the week, eat the same cereal for breakfast every day, wear the same style clothes all the time, watch the same TV shows, etc.
The first step to coping with change is to break some of these simple habits. If we can change in some small ways, we can get accustomed to dealing with change and the bigger, less familiar changes will be easier to deal with.

This is quite an useful step. How often do we as an individual’s often opt to break the routine ? I tried to explore this concept in one of my earlier posts- Wake up, Shake up and then test... . But i didn’t quite cover how breaking the normal routines can help us prepare for bigger changes in life- be it personal or professional. Its quite a fact that most human beings by nature prefer thier lives/events to get predictable as much as possible so that they can avoid being out of their self-inflicted boundaries. Being in a predictable mode has its advantages but in a longer run it really hinder our preparedness for unexpected events in life. I think the key here is to enhance the "Preparedness levels" for a change. The reason most of the change events in our lives drains us mentally is majorly attributed to Preparedness Levels. There are many a times life prepares you to deal with changes and at other times when things tend to get predictable, it is apt push further break normal routines.
Being on this topic, i could relate very well with an beautiful article- Where is the Shark in your cubicle ? . Here is an Excerpt from this article-

Quite often, we underestimate the power of ‘positive pressure’ (some might prefer to call it a negative pressure, though) dismissing it as a constraining force rather than an enabling one. However, there might be situations where such tactics might actually be a good, rather better, way to get things done.
Don’t run away from the shark in your cubicle, and if you have none, start by putting a shark in your cubicle first.

"Shark" in this write-up is a metaphor that is used to equate with day-to-day situations that are unpleasant and make our thinking to stutter. Unless we consciously put Sharks in our work, we wont feel challenged enough to take ourselves to a greater heights. There is a mention of term- "Positive pressure" and the very mention of this term actually changes the perception one has about Pressure. The traditional version of Pressure is that something that causes discomfort and slows us down. Positive pressure indicates pressure helping to gain positive results. So, don’t scare the Sharks away, they might help you achieve greater heights and also help you prepare for the change.

Do you share your experiences and ideas on how you manage change in your lives!

Sunday, October 4, 2009

Using Six thinking Hats for creative writing

I had written about Six Thinking Hats and its association with Software testing a while back. I had been sporadically using this concept in my day-to-day life. In my quest to further explore its usage, i gave a shot to use this amazing concept for creative writing.
In this post, i would further like to share my experiences, successes and failures on the topic. When i ventured into writing one of my recent articles on Enhancing your Learning skills through the Development continuum , it occurred to me that like for any thinking activity- the Six thinking Hats can be applied appropriately in creative writing as well. With this started my journey to explore this aspect further.
While i explain this in the upcoming sections, i would be dissecting my earlier article into pieces and narrate the usage of various hats and the sequence in which i used the thinking hats. Here we go-
[At some places in the upcoming text, i would be quoting (in Italics) the description of hats from Edward de bono's book- Six Thinking hats , the credit for which lies with the great author.

The usage of Hats in creative writing


Blue Hat Thinking
Blue Hat is for thinking about Thinking. The Blue hat is for organization of thinking. This hat lays out what is to be achieved. Going by a wonderful analogy with Computers- Computers follow their programs, which tell them what to do giving instructions. In a similar way, one of the function of blue hat is to design software for thinking about a particular matter.
Creative writing in itself is an engrossing activity involving extensive thinking. Going by the description of the Blue hat, i considered it ideal to commence this article though Blue Hat. Blue hat deals primarily with Organization of thinking. I started the article wearing (not literally!) a Blue thinking hat basically helping me to organize my thinking on the contents and also arrive at the Agenda. The text mentioned in the "Prologue" section is all listed while wearing a Blue thinking hat. This section of article basically covered initial thoughts that setup the tone for the entire article.
To compliment the actual use of Blue hat, this was not the only time i used the Blue hat while writing this article. As Blue hat basically "controls" the thinking, i practically used this hat in the later sections as a check-point.

White Hat Thinking
White hat thinking is a convenient way of asking for the facts and figures to be put forward in a neutral and objective manner.
Since this article primarily revolves around a new concept (new to me atleast!), it was apt to cover the facts that describe the concept of "The Development continuum". Unless i spent the time and energy explaining this concept, the rest of the article would not have made sense. This is where White hat thinking comes in handy as it focuses just on facts and facts only. The sections "What is Development Continuum ?", "What are the Stages involved in Development Continuum ?", "What does the Development Continuum suggests an individual to do if he/she is at "Enthusiastic Beginner", "Disillusioned Learner" or "Capable but Cautious Performer" stage ?" covers the facts describing this concepts. These were written with White hat thinking on.

Red Hat Thinking
Wearing the red hat allows the thinker to say: "This is how i feel about the matter". The red hat legitimizes the emotions and feelings as an important part of thinking.
As an unwritten norm in professional world, it is usually considered not good to express emotions and feelings. But the truth of the matter is that any subject cannot be explored in its entirety without considering an individual's passion, feeling and emotions. Human beings cannot always operate on plain logic while suppressing emotions and feelings, if it were then there would be no difference between Computers and humans. Well, that’s definitely not the case. No matter how much an individual pretend to be logical, there is always a tinge of emotions, feelings in any decision a person takes. Any creative write-up would be incomplete if it does not take into account the passion, emotion, feeling of the author and in my experience, these are usually brought forward in the first impression that an individual gets after going through the new concept. So, the section "My first Impressions" of this article was written wearing the Red hat.

Yellow Hat Thinking
Yellow Hat thinking is positive and constructive and this type of thinking is concerned with positive assessment of the situation. It focuses on benefit and Optimism.
While exploring a new concept, it is quite viable to look at it and find out whether is it solving the problems that it was intended to, how much beneficial is it going to be for an individual. I wrote the following sections of the article wearing the Yellow thinking hat-
"At what stage of learning do the learners tend to give up ?"
"Can an individual use this model for Self assessment ?"

Black Hat Thinking
Black Hat is concerned with caution. This hat helps the learner extend his thinking to look at the possible dangers and risks in the current context.
It would be only foolish to not consider risks and potential disadvantages in the topic under exploration. Its a given fact that some human beings always tend to look at negative aspect of any situation. If risks and dangers are looked at in a reasonable and appropriate manner then it adds value to the entire process. I did look at this aspect while writing my article as represented in the section "Are there any limitations this model has ?"

Green Hat Thinking
Green Hat is for creative thinking. The search for alternatives is an fundamental aspect of Green hat thinking.
Thinking above and beyond the current topic and exploring its possible alternative applications is a desired motive when writing. The write-up can always be based on the facts, figures, related emotions, benefits and risks but it would really be incomplete unless the author thinks to look beyond and presents the readers with alternative approaches. This is what actually tests author's grip on the subject and overall imagination. This is what i covered in the topic- "What are the opportunities available with this model ? "

Some more thoughts:
- One inference that i am realizing that anyone can draw after reading the above text is that anyone would think that even without using the Hats, i would have thought the same. I agree it may be true and also realize that such an inference may be because i have not explicitly mentioned in my write-up above is that the usage of each individual hat calls for a focused thinking i.e. while wearing a White hat, i am thinking only about facts and figure and not about emotion, passion, negativity etc. Uncluttered mind tend to give best results and this is what Six thinking hats help us achieve. Working in a time box and wearing certain hat gives more output and clarity in thoughts and hence in overall writing.
- One more thing is that the sequences of using these hats differ in different contexts.

Overall, working through this article has been an unique experience for me. I would love to hear from you, your thoughts, ideas and experiences.

Saturday, October 3, 2009

Enhancing your Learning skills through the Development continuum

Prologue:
We live in the era of virtual information explosion. There is unimaginable content that is available on any topic just at a stroke of a keyboard or click of a mouse. Individuals working in the Software arena have been rightly referred as Knowledge workers. There are many competencies and skills that help define the success or failure of a Software professional. One of the prime competency for Knowledge worker is one's Learning ability. With the knowledge workers virtually needing to deal with tons of information, assimilate it, sniff it and intelligently absorb or reject the information- One's Learning ability has definitely taken a center stage. Learning "How to "Learn" is going to become a buzzword if it is not already. The entire activity of learning can be easy or difficult depending upon one's talent, flair for understanding new things, technical know how and many more related factors. In my experience, i have felt that there are a lot of challenges associated with learning something new-
- How often have you started learning something new and left without completing it ?
- What are the ways can you enhance your technical know how ?
- Is it right to start learning something and leave mid-way ?
- How often did your mind wander to pick up something else to learn instead of what you are learning currently ?
- Though you have worked to understand the basics and intricate details of the subject yet you are very cautious to stand up to questions ?
- How many people feign something that didn’t know ?
The list can go on further but i better stop and arrive at a point.

Of late, I had been reading a book- "Self Leadership and the One minute manager" by Ken Blanchard, Susan Fowler an Laurence Hawkins. This book introduces several interesting concepts about Self leadership and one of the part that i found very relevant is "The Development continuum". I will spend some time in the next section to represent how i understood the Development continuum and how it can be beneficial to deal with the multiple challenges associated with Learning or mastering something new.

What is Development Continuum ?
Simply put, the Development Continuum defines a staged approach to learn or master something. This continuum defines four phases that are involved when an individual takes up learning something new till he/she becomes a master.

What are the Stages involved in Development Continuum ?
I have listed the entire phases in the Development Continuum in the URL below-
The Development Continuum

Please note that this is my representation of the Development continuum as i understood when i learned from the above mentioned book. Just a note that all the credit of coming up with this fabulous approach rests with author(s) of the book "Self Leadership and the One minute manager".

To Summarize, the Development continuum defines 4 different stages of learning in correlation with 2 important aspects-
"Competence"- Competence can be equated with possession of required skill.
"Commitment"- Commitment is ability of an individual to give best effort towards the goal in question.
- When an individual intends to learn something new, he/starts as "Enthusiastic Beginner" that is when the Competence is Low, Commitment is High.
- The next stage in learning is- "Disillusioned Learner" that is when Competence is Low and Commitment is Low. Commitment becomes Low primarily because the learner comes across unforeseen problems in quest for learning something new and doesn’t get answers.
- This stage is followed by "Capable but Cautious Performer" that is when Competence is Fairly High and Commitment is variable.
- The Last and Final stage is "High Achiever" stage which is characterized by High Competence and High Commitment. This is a stage where the learner reaches a level of expertise.
After going through the stages, the next question that comes to mind is-

What does the Development Continuum suggests an individual to do if he/she is at "Enthusiastic Beginner", "Disillusioned Learner" or "Capable but Cautious Performer" stage ?
Each of the earlier phases of Learning is characterized by either Low Competence or Low Commitment. The Development Continuum says "When your Competence is Low, you need DIRECTION; When your Commitment is low, you need SUPPORT."
If your Competence is low, someone can help you provide Direction by Setting a goal, provide deadlines, help you with Technical concepts, track your progress and provide feedback etc.
If your Commitment is low, someone can help your provide Support by Empathizing with you, Listen to your concerns, Provide encouragement, Share their experiences, help you focus on task etc.

My First Impressions:
I believe the above sections would have set the right context of what this model is all about. After learning through this, i was definitely excited to know that a model of this sort is exciting. This model not only helps to understand where we are at while learning anything but also provides an yard stick to measure the entire learning activity. At any given instance, one can know which stage of learning an individual is in and what needs to be done to move to this next level. Coming back to some of the questions that i touched upon during the Introduction section-

At what stage of learning do the learners tend to give up ?
In my experience, the learners generally tend to give up during the stage of "Disillusioned learner". It is at this stage, with Competence and Commitment being low, the Confidence of an individual also takes a beating. People tend to give up at this stage unless they are provided with the right kind of Direction and Support. In this situation, an individual needs to take a call if it is actually worthwhile spending his/her time in the activity. I know in many work related situations, we do not have a choice but in those situations also a discussion is warranted with higher-ups. To me, a situation where an individual slogs meaninglessly on an activity which he/she is not naturally inclined or talented to do results in lot of unproductive situations.
It is in the situations like these; this model can help and proactively find alternatives. So, giving up Learning something new is not always bad.

Can an individual use this model for Self assessment ?
Definitely Yes. If applied honestly, this model can help in some extent to eliminate Blind spots. Blind spots are the unproductive behavior patterns that an individual might have in his/her personality but for some reason, he/she refuses to acknowledge. This model can help provide an fairly reasonable assessment of learning abilities and even help strike a meaningful discussion with superiors.

What are the other Advantages of using this model ?
In my experience in using this model so far, the greatest benefit i have noticed is knowing when to ask for help. Learning is becoming an increasing complex activity and more often than we believe, we require help and assistance of people who has already gone through the similar knowledge enhancing activity. More often it is the case of Individual's ego coming in between asking someone for help for something even though it means delay. People sometimes refrain from asking for help not realizing the consequences it may have on project. This model enables the self leadership in a way that it enables the Individual's thinking to ask for necessary Direction and Support from others and also helping an individual decide what Leadership style is apt for leading self in a given situation.

Are there any limitations this model has ?
Based on my limited experience, i am not sure if this model for Learning is applicable to diverse situations. I am really keen to apply this on situations which require quick learning i.e. when the deliverables are short termed and the learner is expected to perform/give deliverables in a short span. In this situation, the learner will need to be self reliant. It would be interesting to see how Direction and Support can be leveraged in this situation.

What are the opportunities available with this model ?
In principle, this is a Self leadership model which can be applied aptly in many situations other than learning. One of the key areas (other than learning) where this model can be applied is assessing the gaps between Individual's current and future role in the organization. The development areas can be identified in the stages described by this model and with necessary direction and support, the skills gaps can be reduced. The greatest benefit of course, is knowing the status quo and gaining the understanding of what needs to be done to move to next stage.

These were some of my thoughts on learning about this unique model of staged learning. Please do share your thoughts and also experiences related to any learning strategies you have adopted to master something new.

Friday, October 2, 2009

Uncovering myths about Globalization testing- Context driven planning

Myth 18: There is one standard way of Test Planning the Globalization testing, which is applicable to all the contexts.

I have been looking at the alternate approaches on how different Software Organizations are planning for Globalization testing. Its quite an intriguing topic because the way different Software product organizations go for strategizing Globalization testing is quite unique and yet yield successful results within their own sphere of influence. In the quest to gain knowledge in this area, i came across an interesting presentation at the below URL.

www.localisation.ie/resources/conferences/2007/presentations/TCallanan/Risk-based-L10N.pps

I had an interesting conversation with the Author of this PPT- Mr. Tim Callanan and below is the excerpt of the conversation i had with him-
[Please ensure to go through the above PPT to appreciate the questions and responses below]

A question regarding Test case prioritization and Test Prioritization-
1. The High Risk=1 category shows the Risk as "New Product Feature" and this feature is also on High Importance category (=1). Suppose the Core team has defined 1000 test cases to test this new feature-

a. Will Globalization (G11N) team pick up all 1000 test cases in its execution ?
[Tim]
At the start of a project, we will define a number of core modules that we must test. These core modules again will be based on importance. So, for
example, Product A, would have Feature A and Feature B as critical functions, this will be reflected in the importance value that will be associated with this function. Then say if 1000 test cases was associated with this function, G11N team will quickly review all 1000 test cases and will then sample some of those test cases from an G11N view point to ensure that the most critical of these, based on importance and risk to determine priority will be covered.


b. If at all G11N team decides to not use all 1000 test cases (as execution would be costly), what factors would be considered to cut down on number of test cases here ?
[Tim]
Again, this will be based upon importance and risk using historical bug analysis, newly written areas of code, potential customer impact etc. We reviewed all core test cases for all products and found a lot of them did not directly effect G11N, the reason being that core testing involves a lot of performance, compatibility, hardware etc. testing that may not effect the Globalized product.

c. What kind of test cases other than these 1000 or subset of 1000 (depends on approach a. or b. above) would be created from G11N perspective to test the particular feature ?
[Tim]
The main areas we would need to look at would be tests that would effect G11N but would not be covered by core. This would involve particular 3rd party applications that would only be available in the regions e.g. Japan use a lot of e-mail clients that are just not sold outside Japan, compatibility with these 3rd party apps would be critical for L10N. Also some type of I18N testing i.e scanning a DBSC or extended character directory for example or compatibility with a particular piece of hardware that is only sold in the regions. Also the insertion of non EN characters and lots of UI issues such as char. corruption, clipped strings, etc.

The approach defined in your presentation seems to be very effective. What kind of deliverables are expected of Core development team to ensure that Risk based L10N testing works ?
[Tim]
The most important deliverables is that core team adhere to what was agreed at the milestones of the Software Development Lifecycle. By including G11N criteria at each stage of SDLC and ensuring that the Core team deliver these will ensure that nothing is overlooked that could potentially make any piece of software 'unlocalisable' or that would resulting major L10N or I18N defects being found at a very late stage in a process that would cause delay in the I18N releases.

Deliverables like-
The code base is same for all Single byte languages.
The code base is same for all double byte languages.
etc.
[Tim]
Yea, there must be only one code based for all language versions. So here I18N considerations are critical. For this reason i18N testing is included as a critical functional of either the core or L10N teams (depending on what can be agreed between the two groups) to be execute as early as possible in SDLC. I have seen in the past, in other companies, how the code base was split and a separate code based used to address i18N defects that was found late in the project to ensure that the En-US version could ship on time. It turned out to be a real nightmare trying to maintain to separate code bases and merge code later in the project. This is definitely something to be avoided if at all possible.
The key I think to ensure a good Localised and Internationally enabled product is to ensure that there is 'Functionality parity'; between software products running on EN OS and all other Localised OSs. In other words the EN product on En-US OS becomes your base line and all Languages version of software running on any non-En-OS will functional in exactly the same way as the English product. If we don't have this we have big problems.

Its a well known fact that most of the tests that Globalization team does are derived from English test cases. Another fact is that it is not efficient to run all test cases on all the languages.
Is there a standard that you know or a norm that you follow in testing that defines-
- How much %age of English test cases should be run on the localized languages ?
[Tim]
To answer your question, we usual base this upon risk and importance, this was the focus of the LRC paper that I wrote a couple of years back
http://www.localisation.ie/resources/conferences/2007/programme.htm. It is hard to sat exactly the percentage of test cases we would cover as this would be based upon product maturity, feature set, degree of internationalization testing already conducted, the level of pseudo translation testing already undertaken etc. etc.
Based on projects that we have done in the past, L10N would involve testing roughly 30% of the cases that are conducted by the core team but this is a very general estimate and we would use the risk based testing method to ensure that all necessary tests are carried out. If this comes out at 30% then that would be our coverage but it will depend on the risk that is assessed.


Saturday, September 26, 2009

All Globalization Testing myths uncovered so far....many more to come

Its been a while that i have been writing about uncovering various myths associated with Globalization testing. While there is a lot of relevant information on Globalization testing already listed in this blog, i am inclined to think about and work towards consolidating this information and much more in the form of an ebook in the time to come. Though i dont have definitive timelines in mind at the moment, this is something i have started working towards already. For the benefits of the readers, while i work to uncover more myths around Globalization testing, i have consolidated all the previous posts on this topic below.
[Just to remind that all these myths are the real time myths that i have experienced while working on Globalization testing]

Uncovering Myths about Globalization testing -1
Myth 1: G11n testing is not technical enough
Myth 2: G11n testing is majorly about testing the UI
Myth 3: G11n Testing can start only after the base product is translated

Uncovering Myths about Globalization testing -2
Myth 4: A person who doesn't know French cannot test the French version of the Software
Myth 5: A tester only needs to follow the test cases executed for Base language in order to thoroughly test the internationalized applications
Myth 6: There is no scope of exploratory testing while testing internationalized applications
Myth 7: The language verification of User Interface can be done by comparing the text on screen with translation outputs of any freely available Online translator.

Uncovering Myths about Globalization testing -3
Myth 8: If a test case works fine in French language, it will work fine in German language as well
Myth 9: If the Foreign text input in application text fields work fine by using the Soft keys, then it means the data input through respective Foreign language key board would also work fine.
Myth 10: Globalization testing doesn't require the same test setup as is required to do the Base language testing. Globalization testing can be done with a minimum test setup.

Uncovering Myths about Globalization testing -4
Myth 11: Localization - means Localized product on a localized Operating System, Internationalization- means Localized product on English Operating System

Uncovering Myths about Globalization testing- Demystifying MUI Packs
Myth 12: Testing International applications using "Microsoft's MUI Pack" or "Localized OS installation" means one and the same thing

Uncovering Myths about Globalization testing- Input validation testing
Uncovering Myths about Globalization testing- Input validation testing 2
Myth 13- A tester can perform tests specific to text inputs for Localized applications using the similar approaches as the English language testing

Uncovering Myths...."Security Testing is from Mars and Globalization Testing is from Venus"
Myth 14- Security Testing is from Mars and Globalization testing is from Venus

Uncovering Myths about Globalization testing- English version on Localized setup
Myth 15: There is no use testing the English version of a product on Localized Operating systems

Uncovering Myths about Globalization testing- MUI Packs in Win XP and Win Vista
Myth 16: There is no difference between MUI technology being used in Win XP and Win Vista

Uncovering myths about Globalization Testing- Reusing Test Automation
Myth 17: The test scripts meant for English language automated tests cannot be reused for Internationalization testing

Hope you enjoyed going over these again. Would appreciate your comments, suggestions!

Thursday, September 17, 2009

Key professional lessons from a Long distance run

The title of this blog may sound intriguing for a blog focused primarily on Software testing. I hope that by the time i reach the end of this post, i would have justified the inclusion of it here. For close to around 2 years now, i have quite actively taken up running. The prime reason that attracted me towards running was experiencing the feeling of reaching the finish line after persevering a long distance run. Before i started running, i used to think of it as quite a magical feeling but after crossing the finish line close to a dozen times now, it only substantiate my original perception of crossing a finish line. Its not just magical, its simply unbelievable.
I participated in Kaveri Trail Marathon last weekend. It was a 10 Km run on a day of sweltering heat and very rough, uneven terrain. While the run was pretty challenging and as i crossed various milestones, there were quite a few valuable life lessons that i learnt. Please read ahead to know more (the points below are not necessarily in order of importance)-

When your body says "Give up"- Just don’t give up. When a random thought in your mind says "You can’t do it", Just laugh it off.
The start of every run is always full of energy and optimism. The initial moments of a long distance run pass on with ease as legs and mind are fresh and usually (if it starts early in morning) the weather is favorable. It’s only after one has travelled a few kilometers especially near the half way point, the mind start playing games. It is often surrounded with casual thoughts that tend to discourage the runner from competing further. It is at this time, the body starts getting tired as well and tends to listen more to easy thoughts that prevent you from completing the run. The key here lies in being mentally strong and laugh off the negative energies and persevere till you reach the end. Infact, in my experience, one cannot reach the finish line carrying negative, confused thoughts.
Quite similarly, in the professional world, there are often the difficult projects/situations that bring an individual out of his/her comfort zone. There is always such time in these projects/situations when one starts doubting their abilities. The key here like in a marathon is to believe in yourself and shun all the negative thoughts and keep moving forward. Just remember- "When your body says "Give up"- Just don’t give up. When a random thought in your mind says "You cant do it", Just laugh it off."

Every small step towards the goal counts
The key principle in running a long distance run is that Each and every single step adds up in you completing the run successfully. Long distance runs cannot be completed in one step. Likewise in professional life, each project decomposes in to various steps that need to done right to attain the success. One cannot achieve the end goal without performing the smaller goals to perfection. Irrespective of conditions, Always put your best foot forward.

Key to success lies in staying in present
Our mind's ways are never static and even the well trained Long distance runners often face this dilemma i.e. while on the run, the mind tend to always think ahead i.e. picture of the runner reaching the Finish line starts framing up and all this makes the runner believe that he/she has already achieved the goal whereas the runner would not have even reached the half way mark. Or it may even happen that mind takes you back to thinking about ease and freshness at the start of a run. These are the biggest distractions for a runner and has a potential to distract the runner from reaching the summit. What is important in given context is to think only about the next step and not worry about the Finish line because if the next step is taken in the right direction in a right way, you are going to reach the finish line sooner or later. So, the key lies training your mind to stay in present and be there only. In the professional life, there is a great deal of importance in Staying in present. I have tried to capture the essence of it in my post- Software Testing and art of Staying in present .

If you fall down, thats not the end of the race- there is always a better option to get up and run
It happened in the most recent long distance run i took part in. It can happen in any long distance run that gets organized. People stop either because of minor accidents or because they suffer from cramps or they get tired or any other reason. Whatever may be the reason, Falling down is the part of the game. Its not an ideal world that we live in, things usually do not always go as we plan or as intended and Failures are a part of life. The idea here is to treat failures as a minor speed bumps that slow you down but not knock you off completely. Failures should be treated as learning opportunities and not the reasons to drift away from your goals. Any one who faces failure, ideally has 2 choices- either quit or continue. The ones who have strong conviction in their goals never quit. Failing faster holds the key. Remember- If you fall down, that’s not the end of the race- there is always a better option to get up and run.

Cheering your peers gives you momentum
Long distance running usually constitute of people from different backgrounds, age groups, gender etc. There can be a 70 year old participating as against a 14 year old boy or 25 year old female or anyone running alongside you. The diversity of participation makes the run even more wonderful. It happened in my recent run also. The fun lies in treating the running participants as your peers and continually cheering and encouraging them. In the entire run, there will be many phases where you face difficult time and the thought of giving up starts to play around. If in this situation, your fellow runner comes, pats your back and says "Good job", it just helps one defeat the negative emotions and just helps you regain back the momentum. In the real life also, professionally there are tough situations which may pull you down mentally and when someone acknowledge your efforts, it does gives a great sense of assurance to move forward. This act just spreads positive energy.

Taking a break and rethinking your strategy helps more than you expect
Well organized Long distance running events have the break points where in the participants can take very short water, energy breaks to refresh the participants. The refreshment time is very vital for the participants to successfully complete the run. This not only give the opportunity to the participants to hydrate themselves but also rethink strategy to complete the remaining part (thinking about speed, moving with long steps or short steps etc.). Without these breaks, it would really be hard to complete the run. Similar analogy in our professional lives- Generally people who work very hard to attain their and organization's objectives forget about the importance of taking sufficient breaks and this leaves them at a risk of a burnout leading to shortage of problem solving ideas. This situation neither helps them nor their organizations. The key here lies in realizing that you are getting in a rut and need to slow down. The focus and overall output after a well thought out break is far enriched.

I think being out of your comfort zone helps one learn quite a bit and the above write-up is a result of many such running experiences. Do share what you think and share your experiences!

Monday, September 7, 2009

Uncovering myths about Globalization Testing- Reusing Test Automation

Myth 17: The test scripts meant for English language automated tests cannot be reused for Internationalization testing

The idea of making a Software test Software without any human intervention is something that is the basis of automated testing. In my experience, i have seen fewer things that catch the fancy of management other than a well crafted Test automation strategy. I was recently studying one of the Surveys listing the success of Software projects across different Software development models. While it is interesting to notice how the project success ratio varies from different Software development methodologies but one important point to note here is that irrespective of the Software development methodology used, the success ratio is far less than maximum. Before i sound like deviating further in this post, the idea here is not to compare how different Software development methodologies fare in the real projects but certainly to draw an analogy that like the success ratio of Software projects, the success rate of Test automation projects (the lifecycle of which is quite similar to Software development projects, though on a smaller scale) is also quite far from ideal. I don’t have a real data to quote here and this inference is quite based on my observations and experience.

While the reasons of Test automation projects' failure can be plenty and its not my intention to dive deeper into those here but in this post i would be focusing on one of the main reasons automation efforts fail to scale up for International languages' testing.
To start with, It’s actually a colossal myth that the test scripts meant for English language automated tests cannot be reused for testing with International languages. I call it "colossal" because the root cause of the automated test scripts for any projects not working on International platform is no less than a design flaw or a lack of forethought at the time of scripts’ design. In my belief, the Software organizations (which went global quite late) have spent sizable costs due to rework relating to introduction of Internationalization quite late in the overall life cycle. On the similar lines as this, Test automation projects have also suffered great deal of rework because the test automation scripts were not Internationalized upfront. Let me try and elaborate what i mean here-

- For a Software product to be properly Internationalized i.e. ready to be sold in International markets- the product design should-
• be Unicode enabled i.e. the product should be able to process and display data in any language
• have all the strings externalized i.e. none of the strings that show up on User Interface should be hard coded.
• have the capability to know under what language OS is it running on i.e. if the product is installed in Japanese, the product logic should recognize that.
• Should be able to read locale specific details from underlying OS
• be robust enough so that the same code base can be used across all the languages that the product support.


- On the similar lines, for Test automation script to be fully internationalized i.e. working successfully on different languages,
• The Test tool should have a capability of being installed and running on different language OS.
• The Test tool and hence, the automated test scripts should have the capability to process the Unicode i.e. any language text and characters. This is because any testing that's done on International test environments makes use of International character sets(which is what the customers would do)
• The Test scripts should have a capability to understand under what language OS is it running.
• The Test data is not hard coded in the Test automation scripts and is Externalized to a file or any database. This helps because, once the Test scripts detects the language of the OS, the "right" language Test data files can be loaded.
• There should not be separate Test scripts per supported language but a single version of Test scripts should be capable to run on multiple languages.

I must admit the above is not a comprehensive list of features required for enablement of Internationalization in automated scripts but i feel it is good enough list to give an idea on things that need to be kept in mind while designing automation scripts which are scalable in multiple languages. Traditionally, the automated scripts are designed keeping in mind that they have to be run on English environments only. To me, that is a sort of cardinal sin because it robs the Software organizations of reaping multi-fold benefits from automation efforts. Consider this- if by automating the English language Build verification tests, the team handling English testing saves 1 man month of effort, it is just a simple mathematics to judge the benefits the same automated scripts will reap if they are designed to run on 10 languages.

In today's global market place, if your product currently doesn’t support International markets that does not mean that it would not in future also. If it is not already, Globalization of Software products would eventually be required for survival of organizations. In such a dynamic scenario, it is imperative that like smart individuals- we think of future possibilities upfront and include Internationalization in our Test automation design right from the word go.

I would be exploring this area further in detail in the upcoming posts and I am keen to hear your views and experiences around Test automation in general and specifically on leveraging Test automation scripts in International environment.