Thursday, December 24, 2009

"Innovation for the sake of Innovation" - Does it really help?

Below is an yet another interesting remark in the book- "Inside steve's brain"

When asked by Rob Walker, a New York Times reporter, if he ever consciously thinks about innovation, Jobs responded "No. We consciously think about making great products. We don't think, 'Lets’ be innovative! Lets take a class! Here are the five rules of innovation, let’s put them up all over the company!" Jobs said trying to systemize innovation is "Like somebody who's not cool trying to be cool. It's painful to watch...Its like watching Michael Dell try to dance. Painful."
Image Source:

Well, i see pearls of wisdom existing in above statement about Innovation. In most of the organizations, the employees are "asked" to be innovative or are given training on how to be innovative. (To be clear, i have nothing against such trainings in general.) How many times have you heard the statements like-

"You should have found the creative solution"
"Why cant you think a bit more innovatively to solve the underlying problem ?"
"Lets think out of box"
"Please think of creative test ideas"
"Try and think beyond boundaries and solve the problem at hand"

After reading Steve Jobs' notion about Innovation, it really makes me wonder whether the above statements about "trying" to make an individual innovative really had a profound effect. Did it really change the world ? Hearing these statements- does it really raises one's Innovativeness quotient ?

Every time I think, the answer is more leaned towards a "No". While encouragement and motivation are required in any situation, but per my experience an individual does not really become creative by a constant push from someone or by some sort of weekly training. I believe at the root of every innovation or a discovery (no matter how small it may be) is a burning desire to do something or make a difference. In the case of Jobs' it is that inherent desire to make great products. If a deep passion is missing, no matter what anyone says- Innovative ideas will cease to exist or die after a short burst.

From my profession, a tester will be genuinely creative only if he desires to and takes immense pride in releasing products that the customers can use with ease and without issues. It is this desire (apart from necessary skills) that will drive him to regularly come up with test ideas that matter.
If for innovation sake, somebody gives a direction to tester to find creative test ideas- it will lead to directionless Innovation, which is often a waste of time and resources.

Citing another instance from the same book below.

Wanton Innovation is wasteful. There must be a direction, something to pull it all together. Some Silicon Valley companies develop new technologies and then go in search of problems for those technologies to solve. Take the Internet bubble of late 1990s. The bubble was defined by this kind of thinking. It was a carnival of worthless innovation- half-baked business ideas pumped into vast money-burning concerns in a misguided attempt to get big quick and beat the competition.

Do drop in your comments!

Tuesday, December 15, 2009

Enhancing your Reading Skills- Are you for it ?

While reading "Competition 360" magazine, i came across a very interesting piece of article by Prakash Iyer on the topic- "Leaders are readers. Are You ?"
The URL for online version of article is as under:

Some beautiful thoughts from this article-
- It has been rightly said that there is very little difference between an illiterate person- who cannot read- and a literate person who does not read. Time to ask yourself the question: are you one of those literate illiterates, too ?

- If you want to take a simple step towards expanding your mind and improving your life, start reading. A book can change your life.

- If you read for just half an hour everyday, you could finish a 250 page book in just two weeks' time. That's twenty six books a year. A hundred books in next four years.
Just think, what difference would that make to the quality of your mind, your career, your life ? Just thirty minutes a day can do the trick, so stop giving excuses about not having the time to read.

- It allows you to peep into some of the finest minds in the world. Reading a book is like having a conversation with the author, listening to his stories and learning from his experiences. You can get ideas, inspiration and thoughts- all from a book! Every book you read becomes a layer of knowledge you can stand on. And every book makes you grow taller, just a little bit. So, remember, in the supermarket of life, the best things are always stacked on the uppershelves. If you are not a reader, you may never be able to reach them.

- American comedian and film star Groucho Marx was right. He once remarked that he found television very educating. He said, 'Every time someone switches on the TV, I walk into another room and start reading a good book!" Get the Groucho habit. Pick up a book Today!

- Leaders are readers. If you look around, you will find that most successful people are reading. Visit their officies, and you will find books strewn around. Visit their homes, and you will find a well stocked book shelf. Take a leaf out of their books. Start reading.

These thoughts are something that i completely resonate with. In this fast paced world, when every human being is trying to differentiate from the person next to him by all means possible, it is apt to realize that the real differentiation happens within mind. And Reading is one of the activities that helps one give an edge and helps one grow.

Irrespective of the profession one is in, Reading appropriately only helps one move in one direction. Upwards!

Wednesday, December 9, 2009

Uncovering Myths about Globalization Testing- Knowledge of Native Language

Myth 20: If i dont know German at all, i can still effectively test a German application

Referring to Globalization Testing Myth# 4 i talked about why "A person who doesn't know French cannot test the French version of the Software" is a myth.
There is one relevant thought as i was going through Bj Rollison’s interesting blog on Localization testing.
In one of my past experiences, while testing a consumer application- there was a very critical bug that got overlooked resulting in a lot of noise generated by the customers. Basically, the team was involved in testing an update to an existing version for different languages. As none in the team was an expert in the language ,the pure focus of this update testing was to test the changed areas (and none of the changed areas included UI specific changes) with least focus on UI regression as nothing had changed.
After a while the update was released, it caused immense confusion to the customers based out of Germany. The prime reason for confusion was that they were now seeing the User Interface in a "different" language than German, which needless to say offended many customers. And as this was a consumer application, it did affect many home users. The corrective update with right language pack was soon delivered to the customers.
The Root cause analysis of this issue result in crucial learning for all the teams involved. While this issue was mostly because of wrong resource file being referenced for German build, which could ideally have been caught during unit testing. From Testing team's perspective, this issue could have been found earlier by some sort of a checklist that would have been in place which could help a test engineer distinguish between languages by means of checking the presence of language reserved characters etc. This would be highly effective while testing "similar" looking languages.

So, even though one is not a language expert, it does add value to know the nuances of languages enough so as to help test engineers make more informed decision on what he/she is testing.

Saturday, November 28, 2009

Embrace CEO like thinking in your testing

What is the first thought that cross your mind when you hear the word "CEO" ? Chief Executive Officer, a person who is at the helm of all the affairs in the organization, a person who drives the organization through its growth, basically a person who is visionary.
All these are right inferences given the context of a CEO. A CEO may not be an expert in all the diverse areas that constitute his/her organization but does possess a certain kind of unique thinking patterns (in addition to the vast knowledge and experience, of course) that enables him to take most complex decisions.
That really makes me wonder often- Is there any takeaway for test engineers from the CEO mindset that can assist in testing a product effectively ?
To explore the answer to above curiosity, I came across some of the beautiful instances in my recent experience.
The book "Inside Steve's brain" provides an wonderful insight into Steve Jobs' thinking and how it helped transform Apple over the years. There is a significant mention of Steve Jobs being a perfectionist and a stickler for details. The book talks about how Jobs sat with designers and virtually tested the prototypes and gave valuable feedback for every seemingly minor detail. His involvement is touted as one of the major reason why Apple products have a good focus on User friendliness aspect. Consider the below instances from the book-
Instance #1
Incredibly, Ratzlaff's team (He was in charge of look and feel of Apple's Operating Systems) spent six months refining the scrollbars to Jobs's satisfaction. Scrollbars are an important part of any Operating System but are hardly most visible element of the user interface. Nonetheless, Jobs insisted the scrollbars look just so, and Ratzlaff's team had to design version after version.

Instance #2
While working on the new interface, Jobs would sometimes suggest what at first seemed to be crazy ideas, but later turned out to be the good ones. At one meeting, he was scrutinizing three tiny buttons at the top left of every window. The three buttons were for closing, shrinking, and expanding the window, respectively. The designers had made all the buttons the same muted gray, to prevent them from distracting the user, but it was difficult to tell what the buttons were for. It was suggested that their function should be illustrated by animation that was triggered when mouse cursor hovered over them.
But then Jobs made when seemed like an odd suggestion: that the buttons should be colored like traffic stoplights: red to close the window, yellow to shrink it, and green to expand it. When we heard that, we felt that was a strange thing to associate with a computer, "Ratzlaff said. But we worked on it for a little while and he was right." The color of button implicitly suggested the consequence of clicking it, especially the red button, which suggested "danger" if the user clicked it and didn’t mean to close the window.

These are interesting quotations that emphasizes many things one of which is the attention to detail required to make a real difference to the product. Jobs’s Attention to details is exemplary and something which is a direct takeaway for the Test engineers.

One another appealing aspect is his CEO like thinking. CEO is the real "owner" of each and every aspect of organization and product design is definitely one of them. Taking ownership of something is easier said than done. To think about ownership, think about the project that you are currently working as the one in which you have personally invested and the stakes of the project depended upon how well you do your part. If you don’t do your part well, you lose all your investment. Imbibing ownership in testing opens door for several initiatives and innovations, which would otherwise stay dormant.

I feel another aspect of Jobs's personality that is exhibited in above quotations is his passion, a burning desire to succeed and make a difference to the user experience.
The aspect of ownership and passion are a lesson for any aspiring as well as Experienced tester. After all being "Experienced" in something doesn’t ideally mean that one is "Passionate" about that very thing. Ownership and Passion indeed supersede any other skill an employee need to create a space for himself/herself in their sphere of work.
Here’s to a CEO who tests!

Any thoughts/comments ? Please do share.

Friday, November 13, 2009

Consider testing the "box" for "Out of box" testing!

The opening lines from the book- "Inside Steve's Brain" by Leander Kahney goes something like this-
Steve Jobs gives almost as much thought to the cardboard boxes his gadgets come in as the products themselves. This is not for the reasons of taste or elegance- though that’s part of it. To Jobs, the act of pulling a product from its box is an important part of the user experience, and like everything else he does, its very carefully thought out.
Jobs sees product packaging as a helpful way to introduce new, unfamiliar technology to consumers. Take the original Mac, which was shipped in 1984. Nobody at the time had seen anything like it. It was controlled by this weird pointing thing- not a keyboard like other early PCs. To familiarize new users with the mouse, Jobs made sure it was packaged separately in its own compartment. Forcing the user to unpack the mouse- to pick it up and plug it in- would make it little less alien when they had to use it for the first time. In the years since, Jobs has carefully designed this "unpacking routine" for each and every Apple product. The iMac packaging was designed to make it obvious how to get the machine on the Internet, and included a polystrene insert specifically designed to double as a prop for the slim instruction manual.

Image Source:

To me that’s a very distinctive insight. In majority of the literature that i have gone through in addition to having experienced testing Software, the user experience has invariably been associated with how the inherent Software design make it easier for the user to learn and use the Software. User experience of a product is something that starts with Installation of software to all the actions user can do till a software is uninstalled. Here we have- Steve Jobs- recently voted as the CEO of the decade - giving a refreshing dimension to User experience. User experience is certainly something that starts taking shape as soon as the user visualizes or sees the product. User can either see the product physically in the Store, on websites or other visual mechanisms such as TV advertisements, newspapers etc.

Another inference i gained- From Software testing point of view- Do we as a testers generally consider testing the Software packaging ? Many traditionalists tend to believe that this would be out of scope of testing department in a typical organization. Why would they think so ? May be because there is a lot of emphasis given in the organizations to bind the roles with specific terms e.g. a set of people do "Manual testing", a set of people do "Automation", a set of people do "Performance testing" and on and on. So who owns the things that do not come under the high level umbrella of these terms. The above illustration suggests that a person as influential as Steve Jobs consider Product packaging as important as Product itself. No wonder Apple products are so far ahead on usability. But again, for traditionalists- there is no term called as "Software Packaging testing" so wont it come under scope of anyone ?
Well, i consider an employee's role in an organization to be as elaborate or small as he or she makes out to be. There is a general tendency to limit our learning and contribution while living under the so called influence of terminology. It may have a dependency on organization's culture as well but generally limiting ourselves to certain role doesn’t help an employee grow, whereas it might only help to just do the roles for which one is hired.

Ok. Before i sound like moving farther away from original point i intended to make. Testing the product packaging is testing the first impression a customer might have when in contact with the product. It will not require high degree of technical skills. What is more evident in Steve Jobs' thinking about Packaging is simplicity of thoughts or common sense, which unfortunately is so uncommon. I think one of the key Soft skills that a Software tester should possess is common sense that generally help reason and find many bugs that may "commonly" get unnoticed. One of the example of testing customer's first impression would be testing the way products are represented in the websites.

So, key learnings from this excerpt has been-
- User experience goes beyond the internal workings of the product.
- Do not limit the role you play in organization. There is always scope to do more.
- Testing the product packaging is more complex that it looks and more important than it sound.
- Common sense is one of the key Soft skills for Software testers.

So would you consider testing the "box" for "Out of box" testing ? Do Share your experiences and thoughts.

Wednesday, November 11, 2009

Thinking opposite- turning flops to successes

Here is one of the interesting story from the book- "Whatever you think think the opposite" by Paul Arden-
Until the Mexico Olympics of 1968 the customary way for a high jumper to cross the bar was with his body parallel to it, in a technique known as the Western Roll. But that was about to change.
A little-known athlete approached the bar, which was set at a world record height of 7 ft 4.25 inches. He took off, but instead of turning his body towards the bar, he turned his back on it.
He brought his legs up and flipped over the bar backwards.
His name was Dick Fosbury, and his method of jumping became known as Fosbury Flop. It is still used today.
He jumped higher than any man before, by thinking opposite from everyone else.
This example is just a technique for thinking, but here the technique for thinking became a technique for jumping, turning a flop into success.

Image Source:

This is an insightful story with a true focus on what it takes to stand out from the crowd and embrace success.
Would Dick Fosbury be remembered as he is now had he thought as rest of the world did i.e. thinking straight ?
Would he have broken the world record by using the conventional thinking ?
Would the new technique have evolved had he thought traditionally ?

The answer to each of the above questions is a certain "No". Often, the difference between being ordinary and extra-ordinary is a simple drift from conventional thinking.
Is it easy ? May be not, because most people prefer their lives to follow a certain routine and go in predictable fashion. Any deviation from the set pattern of the life causes discomfort and this is what happens when people try to move beyond conventional thinking. Those who manage to counter this discomfort begin their journey towards being extra-ordinary.

Till the time Fosbury flipped over the bar backwards, none of the coaching techniques for High jumping preached this. He caused the coaching manuals to be rewritten and future generations, even till now follow his technique. This is an interesting insight. In Sports and in life broadly, correct coaching help us distinguish right from wrong and in the process of doing so, sometimes restricts our thinking. It again takes the courage to think on your feet and imbibe Independent err... Opposite thinking. It may not guarantee success the first time you do it but it definitely kicks off the process required to succeed.

When was the last you thought opposite of norm ?

Do share your ideas and experiences.

Sunday, November 8, 2009

Uncovering Myths about Globalization Testing- Websites with localized addresses

Myth 19: There is no need to include localized web addresses as a part of your test data as Web addresses are always in English

This was a truth till a little while back. The news is that Internet Corporation for Assigned Names and Numbers (ICANN) has given a go ahead to International domain names.
As per the news details- Currently, domain names can only be displayed using the Latin alphabet letters A-Z, the digits 0-9 and the hyphen, but in future countries will be able to display country-code Top Level Domains (cc TLDs) in their native language. ccTLDs are those that have a two-letter country designation at the end of a domain name.


So, Globalization testers- get those fancy web addresses with localized characters added to your test data. There are more bugs waiting to be found.

Saturday, November 7, 2009

Does your testing catch Cockroaches ?

The year 2009 saw one of the potentially worst recessions in the history often (at the earlier stages) getting compared with Great Depression era post World war-II. Luckily for the current generation, the impact of current recession hasnt been as strong as Great depression but for sure this time has been one involving stupendous learning for the world economies. While most of the organizations and individuals remain cautious in their economic outlook, there has been a far reaching impetus laid on creativity, innovation to come up with cost effective and efficient ways of doing things. This period has also given birth to many interesting theories pointing to the cause of current situation to many similar topics. One such theory is Cockroach Theory.

What Does Cockroach Theory Mean?
A market theory that suggests that when a company reveals bad news to the public, there may be many more related negative events that have yet to be revealed. The term comes from the common belief that seeing one cockroach is usually evidence that there are many more that remain hidden.

Investopedia explains Cockroach Theory
For example, in February 2007, subprime lender New Century Financial Corporation faced liquidity concerns as losses arising from bad loans to defaulting subprime borrowers started to emerge. This company was the first of many other subprime lenders that faced financial problems, contributing to the subprime mortgage meltdown.
In other words, the fact that one subprime lender (one cockroach) faced financial problems indicated that many other similar businesses were likely to face the same issues.

Source for above text in Italics:

After reading the above information, it made me think- Is there any similarity this theory has with Software testing ?
Can the negative events referred to in above description be equated to bugs ? Negative events are also referred to as cockroaches i.e. even if you manage to slay one cockroach in your house, be assured there are quite a few hiding in the vicinity. Does this sound like a similar situation for us testers ? Even if you find one good bug, there are always more hiding in the closet.
This is especially true whenever the changes are introduced in the Software product be it as huge a change as an architectural change or as small a change as a minor UI bug fix. Each change introduces cockroaches in the Software code and it is left up to the skill of a Software tester to find it as soon as possible. I have normally seen the tendency of developers to come and defend any change done saying only a minimal testing is enough. Testers should be wary about such statements and plan their testing only after a thorough analysis of the introduced change. For example, Every bug fix introduces a change in Software product. More often, the tendency of testers is to only execute the steps mentioned in the bug report to verify the bug fix. While this may be good to make sure that the mentioned behavior in the bug report is fixed but this approach in no way ensures that the “change” introduced by the bug fix is tested properly. This “change” often gives birth to new cockroaches which because of lack of good planning to test “change” gets found quite late.

Often during the project, testers tend to give up or relax after a major bug is found. When you are feeling like relaxing next time, just think of the Cockroach theory!

I would like to hear your experiences around cockroaches in Software testing. Did you come across any ?

Inspiration of this post comes from this article by Tathagat Verma

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

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.

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 ?
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 ?
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 ?
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 ?
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.
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 ?
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 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.

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

Friday, July 31, 2009

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

This myth has a little bit of background in the Globalization testing Myth# 12 . This post is rather an extension to the before-mentioned post.
While performing the Globalization testing, one of the key test environment specific decisions is whether to use native language Operating system or make use of MUI packs as Microsoft provides both the options for its users. The previous post does touch upon this aspect. As i delved more into this topic, i had a realization that MUI packs do not actually behave the same as the different flavors of Windows Operating systems. With a bit of research, i was able to arrive at the below table listing the differences between the way MUI technology works in Windows XP and Windows Vista. This information has largely been derived from the below mentioned sources.



CategoryWin XP Win Vista


MUI architectureSome part of Win XP code is language dependent (e.g. country specific device drivers)Separates the language resources for the user interface completely from the binary code of the operating system.
All installations of Windows Vista contain at least one language pack and the language neutral binaries that make up the operating system.


Mode of InstallationMUI Packs can be installed over English version of OS only.Language Packs can be installed on any language version of Windows Vista. E.g. a user having Spanish Vista Ultimate can install German Language packs and switch between these 2 languages on the same system.


Maintenance updatesWindows XP usually releases one Service pack per languageBeing completely built o language neutral code base, Windows Vista can be updated by a single software update anywhere in the world


UpgradesThe Multilingual User Interface Pack only supports upgrades from English versions in case of Windows XP.All upgrades must be performed in the same language in case of Windows Vista.
Vista Home Basic (EN)-> Vista Ultimate (JA) not allowed.


Licensing requirementsFor non Win Vista Ultimate, Vista Enterprise installations: Only single language installation.
For these editions, Windows will automatically remove all non-default languages from the computer after the end user completes the Windows Welcome.


File and folder names created at setupIn case of Windows XP, the files and folder names created at setup such as "Program Files", "Documents and Settings" etc. remain in English language.In case of Windows Vista, the corresponding Files and Folder names created during setup changes to the language of the MUI pack.


Multiple Languages on same InstallationWindows XP allows having multiple languages on the same computer system provided the original language of OS is English.Available with any language


Languages support4297



Saturday, July 11, 2009

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

This myth has a little bit of background in the Globalization testing Myth# 3 i.e. Globalization testing actually should start much before the International product is translated i.e. the User Interface, Documents etc. start showing up localized. The question here is how is the Internationalization testing done when the translated product is not available. I will just attempt to explain this in various points below-

Does English version of product and International version of product gets released for testing at the same time ?
In a more matured Software development life cycles, the code complete specific to English version of the product and the International version of product gets submitted at the same time i.e. one single English build have the code changes specific to International version as well.
In some Software development life cycles, the Internationalization specific changes gets introduced only after English build is released.

Can translation of product happen before English product's User Interface is frozen ?
Also, it is a well known fact that the in an ideal scenario, the Translation of product User interface into supported Localized languages happens only after English product's User Interface is Frozen.
* English product's User Interface is Frozen only after some cycles of testing in which entire User Interface is tested in different setups (OS, browsers etc.) to ensure that there all the User Interface specific issues are found and fixed before the different texts are translated. And even after User Interface freeze, the translation activity acually takes quite a bit of time because it is usually a manual process and has its own cycles of reviews before translation gets finalized.
* It is quite evident that since the time first build with Internationalization specific code changes is introduced to User Interface Freeze milestone to actual Translation of the product, there is a lot of time that gets elapsed. If Internationalization testing does not start when the first build (usually English build) is received, then many of the Internationalization specific changes will not get found until the Test team receives the translated build.

How can Internationalization testing happen when there is no translated software available ?
* The answer to this question is testing English version of the product on Localized setup e.g. Say a product is supporting German and Japanese languages and supports Windows XP, Windows Vista, Mac 10.5 OS- Internationalization testing in this case would involve testing English product on German Windows XP with German Internet Explorer 7.0, testing English product on Japanese Windows Vista with Japanese Firefox etc.

What kind of bugs is this type of testing (Testing English product on Localized Operating systems) helping to find ?
One may always argue that testing English product on a Localized version of the Operating system will always result in English specific issues because what we are essentially testing is the English product. This may be true to some extent but not entirely. Consider the below situations-
* The Product installation works fine when English product is installed on English Operating system. The Product installation fails when English product is installed on Spanish language. The reason- the Install Path name is hard coded in the product. The product usually gets installed in "Program Files" folder in Windows. "Program Files" folder is called as "Archivos de programa" in Spanish language.
* The data input using English characters e.g. Writing the name as "Anuj" works fine in English Operation system. When using the same build on Japanese Operating system and using the name as "廃れる" fails. The reason- the product does not recognize the Japanese language data.
These are just a few basic examples and there can be many such instances of unique bugs that can be found (i will cover this aspect in more details in upcoming blogs)

Keep testing passionately and do provide your feedback to me!

Friday, July 3, 2009

Uncovering Myths...."Security Testing is from Mars and Globalization Testing is from Venus"

This post is a continuation of my previous post based on the real time myths about Globalization testing as i have experienced.

Myth 14- Security Testing is from Mars and Globalization testing is from Venus

One of the intriguing areas in the sphere of Software Globalization testing is planning/performing testing of the international application from the security perspective. One of the popular myths or rather assumptions when talking about Globalization testing is that the software applications usually do not have any impact as far as Software Security is concerned and thus the Security testing is not required to be done on an International application. While this may be true in certain contexts but there is also a large possibility that system security gets compromised with incorrect assumptions about the topic. Security related bugs usually have a high business impact and are (in most cases) costlier to fix than the related functional bugs.
Without doubt this is a much broader topic to be reasonably covered in one article alone, this article is primarily an attempt to put together a "perspective" of how different security related aspects may have impact on International Software applications.

A background in possible Security considerations for International applications:
Unicode provides a unique number for every character, no matter what the platform, no matter what the program, no matter what the language. In many ways the emergence of Unicode standard has changed the way Software Internationalization has been perceived and carried out in product design. It has been one of the significant advancement over the past encoding systems. Unicode 5.1.0 contains over 100,000 characters and encompasses of large number of different writing systems of the world, the faulty usage of the same may result in potential security attacks. Unicode consortium defines the major security threats related to International applications in 2 major categories-
1) Visual security issues
2) Non Visual security issues

Visual security threats:
The threats under this category are nothing but the Visual spoofs. Since Unicode consists of myriad of characters, there is a good probability of a layman user coming across visually confusing strings. There are no hard-and-fast rules for visual confusability- many characters look like others when used with sufficiently small sizes, in different font, considering different sequences of characters e.g. In some cases sequences of characters can be used to spoof: for example, "rn" ("r" followed by "n") is visually confusable with "m" in many sans-serif fonts.
As security expert Eric Johanson mentions in an advisory, a security weakness in a standard for handling special character sets in domain names could let an attacker spoof Web sites. There are now many ways to display any domain name on a browser, as there are a huge number of character sets which look very similar to Latin characters. The advisory demonstrates the attack using the domain for PayPal, but using an alternate Unicode character for the first "a." That gives an address that looks like "http://www.pà," but with a "à". This can enable an attacker to create a fake Web site for a phishing scam.

Non Visual security threats:
Non Visual security threats primarily deal with how the Unicode data is interpreted by the system. There are different security flaws that can be exposed by indifferent use of Unicode data by the system. Some of such attacks include-
UTF-8 Exploits, Text Comparison, Buffer Overflows, SQL Injection Vulnerabilities, Cross-Site scripting, Format String vulnerabilities etc.

Potential Security tests on International applications:
For the sake of simplifying the usage of the tests, the Security tests on the International applications can be divided as-

1) Security tests based on Functional requirements
2) Security tests based on Non-Functional requirements

Security tests based on Functional requirements:
These tests validates the Security sensitive functional portion of the system. The tests that would primarily come under these categories would pertain to applications'-
a) Authentication
b) Authorization

Authentication and Authorization tests usually go hand in hand.

If the application is going to be used in International markets, then the relevant Security tests here would be-
- To use the International characters in the supported languages. From the Security perspective, depending upon the reach of the product - the test characters can be of languages not supported by product but are supported by Unicode.
- If the product authorization is dependent upon presence or absence of an dependenant application, for an international application it will make sense to use Localized version of the applications.

Security tests based on Non-Functional requirements
Non-functional security requirement can be something like “System should not be compromised.” As is clear from the wordings, this requirement is not associated with a specific feature and it’s a very generic but an important requirement. In order to look at the Security aspects of an application accurately, it is necessary to have a holistic view of the situation. The most predominant challenge is that if the requirement is as vague as the one mentioned above, there is no one simple test be performed to make sure that the security requirement is met.
One of the possible approach that can be used to find such vulnerabilities is to generate the Flaw specific test ideas. The obvious question is which flaws to consider. Below listing has a mention of few flaws that can potentially have an impact on Internationalized applications and some ideas on how the tests can unveil these. This, by no means is the complete list of Security tests for International applications.

a) Buffer Overflow vulnerability:
o About the Buffer overflow vulnerability-
Buffer overflows occur in the software written in programming languages that do no strictly enforce bounds checking on arrays. The basic concept of a buffer overflow is that we provide an application with more data to be stored in a particular variable than the programmer setup the space for. When this happens, it is likely that the application writes past the bounds of the variable buffer, allowing an attacker to change the value of other data stored in memory and even execute the malicious commands. It is easiest for the attacker to perform buffer overflow attacks on the stack. These attacks can happen over heap but considering the dynamic nature of heap, these are usually difficult to simulate.

o How can this vulnerability impact Localized applications-
One of the possible ways this vulnerability can impact Localized applications is that the application may have typical checks built-in regarding ASCII text but the entering the Unicode data may expose the buffer overflow vulnerability.

o Possible tests on Localized applications to unveil Buffer overflow vulnerability-
1. Identify the areas of the application that are potentially vulnerable. Majorly, it would all the areas where the application accepts user inputs and particularly the areas that are exposed to wider audience. Potential candidates for this type of vulnerability would be any text fields within application that do not have any input validation check.

2. The Localized application might have done the Input validation on the text fields by virtue of number of characters supported e.g. Say, an Input field is programmed to accept maximum of 45 characters for the name field. If the character input is in English, the 45 characters will amount to 45 bytes in case of UTF-8 encoding. But if the character input is in Japanese, then depending upon the character input one character might take 3 bytes- which will amount to 45*3= 135 bytes of "acceptable" data input. Such an application is potential candidate for buffer overflow vulnerability attacks, as this gives an opportunity for the attacker to input malicious code along with the input text.

3. Depending upon the underlying encoding system in use, number of bytes a character occupies varies e.g. the character "は" occupies 2 bytes in UTF-16, 3 bytes in UTF-8 and 5 bytes in UTF-7. Thus, by using character driven Fuzz techniques the test data can be generated to simulate a situation when the character data exceeds the available buffer space.

4. Converting strings between different character encodings (such as SBCS, MBCS, Unicode, UTF-8, and UTF-16) may produce a buffer size mismatch. Being aware of the areas where such conversion is happening in application may aid the test team to focus to find this vulnerability.

5. If the application reads certain text or data embedded in the communications protocol, this source can be populated with localized text to simulate the buffer overflow attacks. e.g. by some internal operation of the program, the string may expand- which will result in enlargement of the buffer. Strings may expand in casing: Fluß → FLUSS

b) SQL Injection vulnerability:
o About the SQL Injection vulnerability-
SQL injection is an attack in which malicious code is inserted into strings that are later passed to an instance of database server for parsing and execution. The primary form of SQL injection consists of direct insertion of code into user-input variables that are concatenated with SQL commands and executed.

o How can this vulnerability impact Localized applications-
This vulnerability can be tested in the applications with an interface to the database. In case the localized applications are using the database with localized schema, then this vulnerability (if existing) might be exposed by entering alternate encodings for the potentially problematic characters such as Apostrophe, Quotation mark, Comma, Bracket etc.

o Possible tests on Localized applications to unveil SQL Injection vulnerability-
1. Make a note of all the user input fields that commit the data to the database.
2. Generate the test data that includes the data changing or even schema changing commands. There are a lot of publically available SQL vulnerability cheat sheets available that can help generate the relevant test data depending upon the database being used.
3. One of the key changes that could be made to the test data is to use the equivalent characters in the different supported languages.

c) Other Security vulnerabilities:
One of the more methodical ways while considering the Security testing for International applications is to commence with the creation of appropriate threat model. A threat model is a description of a set of security aspects; that is, when looking at a piece of software (or any computer system), one can define a threat model by defining a set of possible attacks to consider.
There are other notable Security vulnerabilities that can have potential impact on the security of International applications (and can be considered in threat modeling) such as Format String vulnerability, canonicalization exploit and with more Software vulnerabilities being found with each passing day, the list of vulnerabilities having impact on International applications can never be fixed but would always be ever growing.
Local governments may have their own specific security requirements. For example, any product that either uses or implements cryptography for confidentiality must obtain necessary approvals from the French government prior to shipping to France.

It is quite evident that the International application does bring out the unique challenges from Security perspective. There is a certain intersection between Security testing and Globalization testing, something that cannot be ignored. The adage "Security testing is from Mars and Globalization testing is from Venus" is possibly not quite right! and this is certainly one area that is waiting to be explored further and researched.