Wednesday, April 1, 2009

Testing For Accessibility

Accessibility Testing focuses on the accessibility of a website, how a website is accessible to the end users. Today, most of the websites are non-accessible. Here, the word 'Accessibility' is probably quite confusing to us. I am pretty sure that you are having a lot of questions like; What the 'Accessibility' is exactly?, Why our website is not accessible to the end-users?, Are the users really not able to use our website and so on. This is not the matter at all, our website is used by the end-users and it is also accessible in the web too but it is only targeting the most potential user group who are normal (Fit in both physically and mentally).

There are various kinds of people living in this world. All the people in this world are not same in terms of their qualities. Each of the person is unique. Some of us are quite healthy, some of us are not so healthy, and some of us are not at all healthy in terms of both physically and mentally. A normal person can perform anything he/she wants but there are some people of disabilities those are not able to do what they exactly wanted to do even. Likewise a normal user can use a website properly but how can a blind person use the website, how can a physically handicapped person use the website, how can a mentally disabled person use the website.

While developing/Testing a website, we only target for the general user/people probably because they are having the majority. But you know, as I have said; There are some other people in this world itself who wants to use our product/application too. So, now we came to know that, we are loosing a special group of people who really wants to use our product/application. So, now here the word 'Accessibility' comes into the picture.

Attention Testers!!
Don't get so excited, this is not the time to test for accessibility because the product/website itself is not ready with having the accessibility feature. For performing the accessibility testing, first we need to develop a website having the accessibility feature embedded with it. As I have said, generally we only focus on the most potential customers who are fit and fine in terms of both physically and mentally. But now we need to also focus for the special group of people as well who are having disabilities. A website can be accessible to all the groups of customer by implemented some of the accessibility feature in the application/website. After the implementation of accessibility feature in the application/website everyone from a child to an old man can use the system effectively.

Importance of Accessibility
The obvious reason for accessibility is to increase the number of users to a website. Every visitor to a website is generally a potential customer. If there is a group of users that cannot access our website they may take their business to a competitor. Hence, we need to also embed Accessibility feature in our website/product too for targeting a large number of users.

The general user/people is anyway able to access and use the product/application but as I have said, one of the special group of people can take advantage out of the accessibility of a website are users with disabilities. Many of these users will have specific requirements in a website to allow them to successfully access the content and functionality.

These requirements may include:
  • Users with a visual disability may access a website via screen readers (software that reads out the content of a page)
  • People with a physical disability may utilize assisted technologies to navigate a site (e.g. head wands and mouth sticks instead of a mouse)
  • People with mental disabilities may require a different structure of content or navigation to assist in finding information in the website.
    A physically handicapped user using computer with head stick
In addition to losing potential customers, there are also legal reasons that require a website to comply with accessibility standards. The world wide consortium has recommended some guidelines in order to make the website accessible irrespective of various kinds of people/users. You can check it from http://www.w3.org/TR/WCAG10/.

Today, the WEB is one of the primary media by which people can interact with each other, they can share their emotions, various information, knowledge, and other various things. We all of us know that (Especially in the language of Hindi) ROTI, KAPDA aur MAKAAN are the three basic things which is needed for the livelihood of each of the person. But now-a-days, it is not the case. The WEB is becoming one of the most essential objective of living. There are some person who can't live without the WEB, and you are the one of them I guess. It could be a major priority in my opinion too. With accessible websites, people with disabilities can do ordinary things: children can learn, teenagers can flirt, adults can make a living, seniors can read about their grandchildren, and so on. With the Web, people with disabilities can do more things themselves, without having to rely on others. People who are blind can read the newspaper through screen readers that read aloud text from the computer.

However, this possibility is not a reality throughout the WEB. The problem is that most websites have accessibility barriers that make it difficult or impossible for many people with disabilities to use them. And most web software tools are not sufficiently accessible to people with disabilities, making it difficult or impossible for them to contribute to the Web. This is really a very big deal. Millions of people have disabilities that affect their use of the WEB.

Web accessibility basically means that people with disabilities can use the WEB. More specifically, Web accessibility means that people with disabilities can perceive, understand, navigate, and interact with the Web. Web accessibility encompasses all disabilities that affect access to the Web, including visual, auditory, physical, speech, and neurological disabilities.

There can be some of the examples:
  • Some people cannot use their arms or hands to type or move a mouse.
    They can use a mouth stick or head stick for operating the computer.
  • Some people cannot see at all.
    They can use a screen reader that reads aloud the information in the web page.
  • Some people have neurological condition that makes them hard to focus on the small text written in the web page.
    They can read the content of the web page by increasing the text size of the browser.

Alternative text or the alt text are a clear example of web accessibility. Web pages often include images, but some people cannot see images. People who cannot see images can get the information contained in the images when web developers include alternative text for images. An alternative text provides the same functional information in text as the image provides visually. The markup for image alt text looks like:

<img alt="mindfire solutions" src="http://www.blogger.com/mindfire.jpg" >

With equivalent alt text, the page is equally useful with or without images. Note that providing alt text improves accessibility without changing the visual appearance of the website.

Benefits by including alt text
  • Read by screen readers and voicing browsers
  • Displayed in text browsers
  • Displayed in graphical browsers when images are not downloaded
How to perform web Accessibility Testing
It is critical to know not only what to test in terms of accessibility, but also how to perform the Accessibility testing. But one thing, I'm sure that we every tester/developer do the Accessibility testing in a daily basis unknowingly. The one of the major Accessibility testing we do in a daily basis is 'Key board accessibility'. We often use the keyboard short-cuts for performing various tasks. It's all about the Accessibility testing.

1. Accessibility Testing using keyboard
Keyboard navigation is first thing to test in manual accessibility testing. We should just push our mouse to the side and navigate using only the keyboard by using the tab, arrows and enter keys. This is something which at least doesn't requires much effort to perform. We should measure, is the website working fine by using keyboard or not !

2. Browser Accessibility Testing
The browser testing could be one of the primary testing checklist while performing manual accessibility testing. Testing in several browsers is of course the most obvious way to test a site for it's accessibility. If 10% of the users can’t access the site because it doesn’t work in Firefox or in Internet Explorer, then it could be a problem. So, we need to test the site with some of the well known web browsers like; Internet Explorer, Firefox, Opera, Chrome, Safari, etc. and also test in text-based browser like; Lynx browser.

Under Browser Accessibility Testing, there are various checklists to perform in terms of accessibility of a website. We will discuss each of the checklists in detail.

Accessibility Testing by zooming the texts and window
Text zoom is one of the primary things we should try while testing for web accessibility. The browser always displays the contents of the web page in the default font size and window size. And some end-users like old man can not view the contents of the web page unless it is not enlarged. Also while performing this test, we have to ensure some specific browser's options and behavior like Internet Explorer 6 and 7 relies on only enlarging the text, and not the whole window but the Firefox 3 offers to enlarge both text and the whole window size.

For performing Text Zoom testing, we can use our browser option.


Firefox: View Menu > Zoom

Internet Explorer: View Menu > Text Size

Accessibility Testing by enabling/disabling the Style Sheets
The "Accessibility" button in Internet Explorer allows to switch off style sheets, once done then the page colors can be changed from the color button and font style and fond size can be changed from the font button from the browser. This is good for testing if pages work with style sheets switched off, clarity of images of text and clarity of text in drop down menus.

To perform this in Firefox:
Tool Menu > Options > Content > Fonts & Color section > Advanced/Color

By performing these steps, a user can change/customize the font size, font type, font colors, etc.


To perform this in Internet Explorer:
i) Tool Menu > Internet Options > General > Accessibility > Ignore colors specified on web pages
ii) Tool Menu > Internet Options > General > Accessibility > Ignore font styles specified on web pages
iii) Tool Menu > Internet Options > General > Accessibility > Ignore font sizes specified on web pages


Accessibility Testing by enabling/disabling the Java scripts
Java script is the most popular and useful client side validation scripts used in the web today. Most of the website uses the Javascript for various validations in their web page. Javascript can be used to validate input data in HTML forms before sending the content to a server.

Form data that typically are checked by a Javascript could be:
  • Has the user left required fields empty?
  • Has the user entered a valid e-mail address?
  • Has the user entered a valid date?
  • Has the user entered text in a numeric field?

Javascript helps to interact with the end-users in user friendly manner. But more often Javascript is disabled by most of the people. There are unfortunately quite a number of Internet sites which abuse Javascript, for example; generating unwanted pop-ups and irritating animations. There are also a number of Javascript-related security holes in browsers and as a result a lot of readers switch Javascript off. Therefore it is important to check a website still functions with Javascript disabled. A good website should function with having Javascript whether on or off, the basic functionality of the website should function properly anyway.

Testing with Javascript switch off enables to see if page content and functionality can be accessed with no Javascript. This is useful for testing form submission and validation, drop down menus, search functionality, pop-up window links, etc.


To turn on/off Javascript in the Firefox, perform the following steps.
Tool Menu > Option > Content > Enable Javascript


To turn on/off Javascript in the Internet Explorer, perform the following steps.
Tool Menu > Security > Custom Level > Scripting


Accessibility Testing by enabling/disabling the image
As we have already discussed how useful an alternate text by including in an image in the web page. Alt text testing can be done when images are turned off by the browser. When images are turned off, a user is still able to view and understand the content by the alternate text used for the images in the website.

As we have already discussed how useful an alternate text by including in an image in the web page. Alt text testing can be done when images are turned off by the browser. When images are turned off, a user is still able to view and understand the content by the alternate text used for the images in the website. For performing this test, we can use our browser option.

In Firefox:
Tool Menu > Options > Content > Load images automatically


In Internet Explorer
Tool Menu > Internet Options > Advanced > Multimedia > Show Pictures


On the above I have discussed the testing techniques which can be done only manually. Apart from the manual techniques, there are also some automated tools available for testing accessibility of a website. The automated tools such as; Mark up validation service by (W3C) World Wide Web Consortium which check for HTML or XHTML syntax used in a web page, it can be embedded with the browser or can be simply check on line by entering the web URL. There is another tool for checking CSS validation. Likewise there can be many more tools available which ensures for web accessibility for a website. We can test a website by assessing the thoughts of the people of disabilities how easily they can use the site but we can not succeed completely because it will have still some exception, I mean a website can not be tested properly until a real user tests the website. Because ultimately the website is used by the people of disabilities, they know well what they wanted from the website. Therefore the real users (People of disabilities) can test the website having the accessibility feature in a better way.

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?