16

Testing International Software

I have several friends who are STEs (Software Test Engineers) who will take exception to the placement of this chapter at the end, wondering why I am choosing to send testers to the "back of the bus," as it were. There are two very good reasons for this:


This chapter, therefore, will serve as a central place that someone who is a tester but who has never had to handle i18N issues before might not want to skip. If you are a developer, you should also take a look, just in case your testers decide to buy this book and you want to keep down your bug count!

The best place to start is in deciding what to test.

Planning Out What to Test?

My first bullet point up above is a little glib because testing does not have to wait until the product is done; it starts at the beginning as the tester reviews specifications and makes estimates as to how long it will take to test the product that is being described. This is a crucial factor in determining what features should be cut and perhaps entertained for future versions when there is more time. This section discusses the issues to keep in mind.

There are many different configurations that tests can be run under, and I have tried to summarize them in Table 16.1.

Table 16.1 The Test Environments to Consider

Category

Operating System

Settings

Hardware

1

NT/Win2K

Regional Settings set to other locales

U.S./Any

2

NT/Win2K

Category 1 plus locale keyboard installed

U.S./Any

3

Win2K

Category 2 plus changed default system language

U.S./Any

4

All

Fully localized OS (on Win2K, swap language via MUI)

U.S./Any

5

All

Fully localized OS

Locale specific


Obviously, testing with the Category 5 in Table 16.1 will find the largest number of bugs related to i18N, but it is often not practical to have to install multiple language versions of the operating systems to do this. There are three points you will want to keep in mind:


With these points made, I will now look at each category individually. The decision for how much to cover is often not up to a tester directly, but the tester's input on how much work will be required to cover the product can be vital, so the information must be carefully considered and balanced in relation to other factors such as market requirements.

Category 1: Regional Settings

The most important bugs that will be found here relate to the basic i18N issues in Part I of the book: Can data be correctly input and is the data that is input subsequently handled and output correctly? Does this apply to the various problems and issues with date/time values, numeric values, and currencies? What happens when calendar settings change?

This testing should center on the control panel. Often, the best way to test your application is to have unique and bizarre language choices for your regional settings-perhaps even customizing formats at times. When you report bugs, make sure to accurately describe the settings you used because they can be very difficult to remember when you change them often. There is nothing more frustrating to a tester to have found a bug and then not be able to find it again!

In addition to the general testing of different settings, choosing to focus some of your time on the actual configurations that you know your users will have is also valuable. But do not think that the general testing is a waste of time; the best place to find such bugs is in locales that neither developer nor tester was really thinking about. It will also give you more confidence when new markets are considered.

Category 2: Input Locales and Data Storage

All the bugs in Category 1 are, of course, possible to find; in addition, you will be looking for bugs related to the input of native characters and their persistent storage. Generally speaking, the amount of work to do Category 2 is already being expended for Category 1, so it makes sense to consider fuller coverage for roughly the same cost in terms of planning.

Of course, the scenarios multiply as soon as you agree to cover more, so you want to make sure that you have people in your test organization who are ready and able to change their settings constantly-in possibly more disruptive ways than Category 1 would ever be.

Category 3: Default System Language

All the bugs in Categories 1 and 2 are possible to find, and a whole new array of bugs is possible as you look for bugs related to native characters on other code pages and how the application under test (AUT) behaves on these locales.

It makes sense to plan on testing specific families of languages, such as the following. (Each item in this list will include the types of bugs found in other families.)


Obviously, you do not necessarily need to pick all these categories. For example, unless you plan to invest a great deal of time in Part II of this book and in support for multinational applications, you need to spend as much time on the Unicode-only languages.(You can assume that they will simply not work!)

Category 4: Faux-Localized Operating System

This category can, of course, find all the bugs in Categories 1, 2, and 3 (although how much of Category 3 is covered depends on your language choices). Generally, the additional types of bugs that you will find relate to components (including common dialogs and localized components such as Internet Explorer or Microsoft Office) provided by the operating system, which can vary across languages.

Windows 2000 Multilangauge User Interface (MUI) and Office 2000 Language Packs are the ideal (and, in fact, only) way to test this category, but it is worth considering whether you have strong dependencies on such components in your AUT.

Category 5: Truly Localized Operating System

This category is the ultimate level of testing which can find bugs in all the other categories (how many Category 2 bugs are covered depends on your language choices). The resources required to test this scenario are often too large to realistically consider, although if you have a large enough product and are planning to automate the testing of it.

An MSDN Universal or Professional subscription is required here because it can get you localized versions of all the operating systems. Spending the time to learn how automated setups work is a good idea for languages that you do not know because you will not have to spend as much time worrying about error messages that you do not understand during setup (something I know from personal experience!).

Choosing Which Category from Table 16.1 to Support

The choice of which categories to support can be a complex one, and you will seldom find a more complex problem in need of cost/benefit analysis. Generally, doing the majority of testing in Category 2 with spot-checking in Category 3 provides the best balance. As you become more experienced with the developers and testers in your organization, you will not only become more sophisticated in testing the product, but your developers will better understand the issues and they will produce fewer i18N bugs.

Installation of the Application Under Test (AUT)

Although this step seems trite, I can assure you that it is not. It is important to install on a localized operating system and deal with situations such as the fact that common directories (for example, Program Files) might have localized names. This can underscore two different types of problems:


These are the sorts of issues that you can test with every install.

For your test environment when setting up applications that use SQL Server, your test server should be case sensitive because this can often discover problems such as those with the Turkish I that I discuss in Chapter 4, "User Interface Issues," and Chapter 12, " Jet, SQL Server, and Other Databases." Choosing different sorts for the server can find problems as well. Proper set up of your test SQL Server can avoid many problems that would otherwise be found by your customers. Regularly reinstalling SQL Server with different sorts is also a good way to find bugs that would otherwise be missed.

Execution of Your International Test Cases

The subject of doing breakouts that list all the important scenarios to test (also known as a test breakout, which contains test cases) is obviously beyond the scope of this book. However, I will list many of the issues to keep in mind as you create the test cases for the AUT.

Things to Keep in Mind for i18N

For globalized applications, here is a sample of the types of issues you will want to consider:


Things to Keep in Mind for L10N

In a localized application, there is a whole range of test cases that must also be considered, such as the following:


Things to Keep in Mind for Complex Scripts in General


Where We Just Were...

This chapter discusses many of the issues that come up in testing international applications, issues that must be carefully considered if you are expanding into global markets. It is important for a tester to keep in mind that he or she is, in many ways, the most important person in a company that is expanding its market. Testers are the ones who can help realistically assess the markets that can be covered, and the success or failure in global markets will depend largely on how good a job the testers do in making sure that the developer did a good job.

This makes a great note on which to close the book-with a product that the tester signs off on and development is proud of, and that is embraced by customers around the world! Although the reality can sometimes fall short, by achieving a global perspective, you can guarantee that you will produce products that come much closer to your goal.