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.

Saturday, August 8, 2009

Software Testing and the art of staying in present

When i first wrote an article on Soft skills that make a tester some years back, little did i capture the importance that power of concentration plays in our profession. As i grew more in the professional life, i am beginning to get more convinced that most of the inefficiencies while testing or even while dealing with regular work related stuff stems from the notorious ability of our mind to wander at will. While its quite bold of me to relate lack of concentration as one of the major reasons for quite a lot of inadequacies at the work place but a little introspection would reveal that lapses in concentration during the day actually keep us away from being at our best. Consider the following situations-

- A tester working to perform Exploratory testing in a well defined session often sees himself lost and with his mind miles away from task at hand. Does a 1 hour session mean that a tester get to spend entire one hour on testing ? Probably No even if a tester completely isolates himself/herself from the distractions around his work.
- How many times it happens that while performing one task you are either thinking of what happened before the current task or what is going to happen after the current task ?
- While working on something important, you tend to get distracted with an email arrival and tend to spend time there even though it may be as trivial as a joke from a friend.
- If you actually got to use a tool called Session Tester meant for assisting testers in performing Session based testing, it has an interesting feature called "Prime Me". On clicking this button, a tester is given some useful suggestions asking him/her to focus on the task at hand. Some suggestions such as "try touring in different ways", "Try something radical", "What do you see that you didnt see before", "What would Grandma do" etc. This feature is actually quite handy to bring the tester's mind back to where it should be. Why do you think such a feature would be needed ?

I feel that looking back at your day or even last one hour, you would quite appreciate the fact that our mind tend to be one of the most dynamic entities. At the same time, there is also a growing realization that at the very foundation of every success is an individual's power to focus on the goal till its driven to successful completion. In this context, the greater challenge is how can one tame or control one's mind to get the best out of it at will.

What is concentration ?
The Oxford dictionary definition of the word “concentration” is “the act or power of focusing one’s attention”.
One of the best definition of the word "concentration" comes from Geet Sethi (World record holder in Billiards) when he says concentration is simply remaining in the present. The longer you can remain in the present, the greater your span of concentration.
This definition quite beautifully sums up what concentration is all about.

Is it easy to concentrate and focus on something ?
I think Geet Sethi's definition of concentration really makes it seem quite simple. In reality, is it really simple ? I bet you would agree with me in answering this question as "No". Sachin Tendulkar in one of the recent interviews to Wisden stated "The toughest thing about batting is to clear your mind. The mind always wants to be in the past or in the future, it rarely wants to be in the present. My best batting comes when my mind is in the present but it doesn’t happen naturally, you have to take yourself there. I am not able to get into that zone as often as i would like but, when you are there, you don’t see anything expect bat and the ball."

Doesn’t the above text by Sachin proves that it is so human to have a mind cluttered with thoughts that either take you months ahead of current time or may be years behind ? This is a constant battle that every person faces irrespective of his/her stature and greatness is actually bestowed upon the people who are more consistently able to tame their mind to move in the direction they have set for their lives. That is what Sachin referred to above as being in "Zone".

As another cricketer- Aakash Chopra recently put it in his recent articles on the same topic- "The mind has the peculiar ability of wandering off at the first available moment, and it doesn't need any permission."

The Power of focus in Software testing:
For those who have experienced the job of Software testing, would agree with me when i say that its an intense job. To do the testing perfectly and to get the desired results requires a tester to have more than just the Technical skills required to do the job. Consider a scenario in which 2 testers with similar educational background joins an organization and undergo similar training but while at work- one tester gives absolutely wonderful results while the other remains average. There can be multiple factors leading to this situation but one major factor leading to greater performance of an individual has been the Power of focus or concentration that one exhibits while working on a task. For the people who are passionate about Software testing, would find their attention span on task at hand i.e. testing the software more than the average testers. Correlating that with Sachin's statement in previous section- when a tester is in the zone he/she always sees only the Software to be tested and works with it with full attention eliminating all other distractions. The more a skilled tester reaches such a zone, the better he/she will get at the craft of Software testing. I would really call this as "Zone of Accomplishment".

Is it possible for a tester to get in "Zone of Accomplishment" everytime he/she tests ?:
I won’t be forthcoming here and say that the answer to this is "Yes" just because we are humans and cannot always be perfect but one thing is true for a fact that the great testers get into this zone more often than others. In my experience, i have realized that often we try and fight with the thoughts in our mind to focus on task at hand. A mind in current state may have zillion thoughts such as any unfinished work, thoughts about the next day, thoughts about your personal life, thoughts about traffic, weather etc. One of my realization have been that instead of fighting with mind to get it to desired state- as a first step acknowledge that its natural for mind to wander and accept the status quo. Don’t really be hard on yourself, let the mind work with multitude of thoughts while you carve for maximum attention on the task you want to focus on.
Another idea i have found useful is to defocus and allow your mind to wander and then focus back again. The more we allow mind to work naturally, the more attention spans we would be able to get back in return.

I would really like to hear from you on your experiences towards staying in present and getting in to "Zone of Accomplishment" while testing. Do share your thoughts.

Credits:
The Inspiration of this post comes from a beautiful article written by Aakash Chopra . You can find the article here .