Saturday, January 17, 2009

Understanding the EFF

When a person enters into the world of Software Testing, the first thing which he/she learns is about some general terminologies used in Software Testing like; ERROR, FAULT, FAILURE, BUG, DEFECT, MISTAKE, etc. More often, we mix-up all those terminologies and get confused. Here, I have tried to explain all those terms and their exact meaning and hope it would be helpful to everybody.

ERROR
A human action that produces an incorrect result.
FAULT
A manifestation of an error in software.
FAILURE
A deviation of the software from its expected devlivery or service.

Standard glossary of terms used in Software Testing
Version 2.0
ISTQB

All of the products of Software Development including Specifications, Source Codes, and Test documents are written by the human beings and we all human beings are prone to make MISTAKES. When we make MISTAKE while making a software or writing the codes in the computer program, then it is called as an ERROR. The word ERROR is a computer noun which is only used in the world of computer, infact I would say that the word ERROR itself is discovered when the computer was discovered. ERROR is somthing that a human does mistake while making/developing a Software.

When the ERROR made by human being comes in it's effect, then it is known as FAULT. The result of an ERROR being made is a FAULT. FAULTs are also known as a DEFECTs or BUGs. But in Software Testeting world, the word BUG is mostly used. The word FAULT, DEFECTS, and BUGS all these are having the same meaning. We most of the time, get affected by these tricky Synonyms.

When a system or piece of software does not perform as expected or performs somthing which is not expected, then it is called to be a FAILURE and it is caused when a software/product is having FAULT in it.

Lets suppose, we have a requirement in an application that we need add two numbers for a transaction.

This requirement is delivered to a developer to make it in effect. The developer writes the code for it but unknownly he/she has done a MISTAKE that he/she has placed a semi-colon alongside the addtion(+) sign in the program.

Now while debugging the source code he/she detects his/her own MISTAKE in the code, this is called to be an ERROR. Usually ERROR is detected at the developer's end because the ERROR resides only in the program that he/she can view. The MISTAKE done by a developer is detected by himself/herself in the development environment itself then it is called to be an ERROR. The ERROR is never detected by a TESTER because he/she doesn't view or aware of the source code, he/she simply test the functionality implemented in the application.

Now suppose, Developer has done the MISTAKE as mentioned above and he/she doesn't even check/test and simply delivers it to a TESTER for testing the functionality and the TESTER finds it in the Testing environment then, it is called to be a FAULT.

The MISTAKE done by a developer is detected by a TESTER/DEVELOPER/ANYBODY else in the Testing environment then it is called as FAULT. Usually the FAULT is detected by the TESTER in the Testing environment. In the Tester's eye the MISTAKE done by a Developer is called as FAULT. The FAULT usually occurs in the application if a Developer has done MISTAKEs in writing the codes. Due to the developer's MISTAKE, the FAULT arises in the application.

And due to the respective FAULT the application fails to achive the expected requirement and now it is called to be a FAILURE. FAILURE is somthing which makes sure about whether the actual requirement is achived or not !

From the above small discussion, we came to know that ERROR, FAULT, and FAILURE all these three terms are inter-related to each other. Therefore, I have Summarized the actual meaning of all these terminologies in a simple lines as;

ERROR is caused by the MISTAKE.
FAULT is caused by the ERROR.
FAILURE is caused by the FAULT.

Monday, January 5, 2009

All about the Globalization

Business Impact
Before going into the depth of Software Globalization, I would like to make a small round-up of the importance of Globalization Testing, why it is necessary and how it is useful for a software tester to know the concept of this particular type of testing. In just the last few years, the term Globalization has become a household word around the world. Most often, the term is associated with the globalization that periodically appears in the news stories. This is economic globalization. Economically and in other ways, the world is shrinking, becoming more interdependent. Apart from the economic spheres of Globalization, Globalization also assumes worldwide communication and the worldwide communication assumes the language. Just few years back, English was approved as a Global language. But now, it is not the same scene. Most of the speakers having English as a second language throughout the world are not able to use the language efficiently in their work-area. Generally, people avoid to use English in their Work area rather than using their own language or some know just enough English which is usually becomes dangerous. So, here we came to know that the importance of English is declining day-by-day. Then, how can we assume that a software application having only English as a language is going to become popular/appreciate by all the customers/users of the world?

Hence, now-a-days most of the software applications are being made up with multi language in order to successful in global market. Globalization is the Key to International Success. For being world-enabled, a software application must be globalized first. The short answer of Software Globalization is making software products run anywhere. Globalization is all about choices: it gives the user the choice to use the original US English version of the product, or in fact, any of the other supported languages.

Globalization refers to increasing global connectivity, integration and interdependence in the economic, social, technological, cultural, political, and ecological spheres. With most businesses across the world following the Globalization trend. The business models for almost all the successful Software products and services have its basis in Globalization i.e. the products are developed and delivered for International markets. With more and more Software products going global, the Globalization testing has assumed a mammoth (large) importance. It has been in the Project Life cycle of all the top notch product organizations.

Consider this- Windows XP is available for 90 plus locales all across the globe. This proves the kind of geographies, market, millions of customers and the immense (huge) business impact that is dealt with when the Globalization testing is done.

What is Software Globalization?
Software Globalization= Software Internationalization + Software Localization.
Software Globalization (abbreviated as G11n), is simply a combination of 2 activities- Internationalization and Localization. Simply explained, the term “Globalization” relates to all the activities that are required to conceptualize, design, develop, test, maintain and probably sell and market the product in supported International geographies. Globalization is a superset term which constitutes Software Internationalization and Software Localization.

What is Software Internationalization?
As we now know, one of the activities that come under Software Globalization umbrella is “Internationalization”. Internationalization is planning and implementing products and services so that they can easily be localized for specific languages and cultures. So for any product to be successfully localized in to different languages, it is imperative that it has to be internationalized properly. Internationalization is abbreviated as I18n. Selling the Software in International market, broadly two types of requirements are taken in to consideration.

A) The features and functionalities that the base language product offers should be available in International version of the Software (there can of course be some exception).
Example-German market does not need a feature that may be a demand in US market.


B) International requirements i.e. requirements pertaining to the locale in which the Software is being sold. For better understanding of this term, please consider the following examples.
  • For a software being developed for Arabic market, it should provide a provision to write in a Right to Left fashion (as against English- Left to Right).
  • Traditional Chinese is written from Top to bottom, so the Software product being sold in that particular market should have UI supporting text from Top to bottom.
  • For a software being sold in International market, one of the primary requirements is that it should support the character sets for that particular language e.g. German, Japanese text etc. If the product does not support the local character sets, it cannot be sold in those markets as the consumers will invariably reject the Software whose UI is translated but it does not support data entry in translated language.

Requisites of an Internationalization Tester
As G11n testing is a separate form of testing altogether, there is a lot of scope of learning new and specific technologies. Organizations which are serious about developing and selling the products for an International market usually have a separate group which takes care of the Globalization aspects of the product. A person testing internationalized version of the Software needs to be detailed in his knowledge in the following areas.

  • An I18N tester needs to have to have an in-depth knowledge of features and functionalities of the application under test. He/she needs to understand the product under test as well as should know what the Functional tester does.
  • An I18N tester needs to be well versed with the technical concepts of Internationalization such as Single base binary, Unicode, Multi-lingual support, different encoding systems, code-pages, Locale awareness etc. Without the knowledge of these concepts, a tester will never be able to find good I18N bugs.
  • An I18N tester needs to have a fair bit of knowledge about the Technical architecture of the product under test. Without this knowledge, he/she will not be able to accurately assess the impact of any change in the software product would have from the Internationalization perspective.
  • An I18N tester is usually an interface to the Translation experts. It is very likely that the Translation experts because of the nature of their job may not be technically proficient. Usually, I18N test teams help the Translation experts in their unit testing involving complex product setups.

Apart from the purely technical knowledge needed by an I18N tester, it is imperative for a person to have knowledge about the cultural considerations for different countries including understanding the date/time formats, number formats, preferred printing options, currencies etc. This makes the job of an I18N tester even more interesting and challenging.

What is Software Localization?
As mentioned earlier- Software Localization is one of the activities of Software Globalization. In simple terms, Localization deals with presentation aspects of International Software. Localization is the aspect of development and testing relating to the translation of software and its presentation to the end user. Localization is abbreviated as L10n. One of the prime tasks of Software Localization is translation of various User Interface elements in target language.

The extent and the quality of Internationalization and Localization are tested by means of Globalization (G11n) testing. G11n testing is a specialized field in itself and it requires specific skills and expertise to be successful at this form of testing.

G11n testing is all about testing the UI
There is no doubt to the fact that whenever an application gets localized (translated) to any other languages, the UI changes are the most prominent in the product. All the text/labels that were originally displayed in the base language (which are usually English), now gets shown in the translated language. Though UI changes are prominent but technically these are only one of the changes that get done as a part of Globalizing the Software. A few examples of activities involved in internationalizing the software include.

  • Externalizing the UI.
  • Design UI so that strings can expand.
  • Ensuring that the product can support international character sets.
  • Ensuring that Regional settings are read from OS.
  • Support for bidirectional text.

A typical G11n testing cycle might have more UI issues logged than the actual functional issues depending upon the quality of Globalization but that doesn’t mean that majority of testing efforts are spend to find UI issues as there is a considerable testing effort spend to verify the other aspects of Internationalization as well.

Who can do the Globalization Testing?
The fact here is that except for the testing required to do the Language verification on the User Interface and the documents, every other aspect of Globalization testing can be done by a tester who is not well versed with the language under test. Internationalization testing can be done even by people who are not language experts. Here are some of the scenarios.

1. The User Interface of localized Software products is generally consistent with the English language User Interface. A tester first gets trained on the English version of the Software product and then switches to testing on a language specific version of Software. This way the tester is acquainted of the entire User Interface map in English language and thus knows what options is he/she clicking on a language specific build. It’s probably same as using English language say Windows XP as against German language Windows XP. The entire look and feel is the same, so a person who doesn’t know the target language still knows what actions he/she is doing.

2. The language part of testing is best done by the native speakers of that language. There is a difference between native speakers and the person who has learnt a foreign language with his/her's native language being something else. It is generally very difficult to find a person who is technically sound, an Expert in Software testing and a native language expert as well. If at all one manages to find one such person for one supported language, it may not be equally feasible to find such a person for all the supported languages. In such a scenario, the language part of Globalization testing, usually referred to as Localization testing is the responsibility of native language expert and the Functional part of Globalization testing, referred as Internationalization testing is done by testing Experts.

3. It must be understood that there will still be some situations in which a person unaware of language and testing the same may get struck especially while troubleshooting things or upon coming up with some sort of error message that requires translation. In such a scenario, the help of language experts or sometimes the freely available text translation tools is required.

Test is Best

Hi All,
I'm Bajrang, my AGE is about to be 23 years and I'm a software tester like you, working in a IT farm from last 1 year. I have 23 years of testing experience. I've been connnected with testing since last 23 years. Now, You all must have a question that how can it be possible to have 23 years of testing experience?? As he's/I'm mentioned just before that he's/I'm only 23 years old.

But my dear friends, that's the only truth. Yes, I have the 23 years of testing experience and I do testing in my daily life.

Is it really amazing..!!

You know, every object/product needs to be tested before they're given to use. In my childhood, I usually ask my father to bring various toys to play with. When he brings for me, I just check them whether they're working fine or not. If I get something wrong in it's functionality, I simply reject them and ask for new and better one. In this way, I was a unknown tester since my childhood. Everybody is a tester who use/consume a object/product. So, now you must have understood that how I have got the 23 years of testing experience.

From the above little discussion, we knew that; for the success of any object/product, the testing has it's mammoth importance. Testing is a integral part of any product whether for a Software or any daily used products. Hence, I usually call as TEST IS BEST.

What do you think?