Summary: In the present software industry, ‘Globalization’ is one of the most important steps in ensuring the product is ready for the international markets. Thus, the International Quality Engineering becomes a crucial part of the entire engineering cycle. This article tries to shed some light on quality engineering as applicable in different Globalization phases, as well as discuss some good practices that could be utilized to engineer a high quality international software.
There was a time when software packages were happily monolingual and successful, but the new age ones need to be developed to serve the global customers as they start to expect not just adaptation, but personalization. As these products cater to customers and workflows across the world, it really becomes important to ensure their quality, keeping in mind the lingual and cultural aspects of the region that the product is intended to address.
The question lies in identifying what makes a high quality internationalized software? What aspects should be covered as a part of localization testing? Let’s look at the different testing practices adopted in this validation, and how cultural aspects or the text contents play an important role in ensuring the quality.
What is G11N, I18N, L10N?
Before we jump to understand the Localization Testing, let’s go through a few terms such as ‘Internalization’, ‘Localization’ ‘Globalization’, which are often used interchangeably, but are different in meaning altogether.
Globalization(G11N) is the process by which businesses or other organizations develop international influence or start operating on an international scale. It is the overarching superset of ‘Internationalization’ and ‘Localization’ activities in the product, and encompasses the other business level activities such as Marketing, Legal, sales etc. to enable the appropriate end-user experiences worldwide.
Internationalization(I18N) is an engineering exercise focused on generalizing a product architecture such that it can handle multiple languages, scripts and regional conventions (currency, sorting rules, number and dates formats…) without the need for specific handling in the code.
Localization(L10N), on the other hand, is the process of adapting user interface of the product or service to a particular language, culture (Culturalization), and desired local “look-and-feel”. Translating the product’s user interface is just one step of the localization process. Resizing dialogs, buttons and palette tabs to accommodate longer translated strings is also part of localization.
The following illustration should help the reader develop a visual understanding of the correlation between these different terms:
As the name states, this activity includes the verification and validation of the localization done for a software application. However, is it enough to test whether the text appears in the respective locales and translation? Does it ensure that the users of that language in that region will execute seamless workflows with your software? You got it right, the answer to these is a simple ‘No’, and there’s more to it.
There are many aspects of localization testing such as look and feel of the application, the language norms being followed, date/time, currency, use of greetings. One of the important ones is the context of the message being conveyed. Translations out of the context lead to inappropriate customer experiences. To cite an example, common words such as ‘book’ may have different meanings in different contexts, as in a ‘book’ to read or ‘book’ a table, or ‘book’ profits. Therefore, the localization quality engineer needs to be very sure to get the translations validated ‘in-context’ by a native of the respective region. Another important one is the regional norms and the evolving usage patterns of the local languages and the culture of the target market, which are covered as a part of Linguistic testing.
Let us try to understand the different types of testing that should be carried out during the Globalization phases.
- Enablement Testing – This covers the aspect of handling the foreign text and data within the program, sorting according to the respective locale, importing and exporting text and data, correct handling of currency and date and time formats, fonts, string parsing, text search, upper and lower-case handling. This also covers the tests to validate the support for single byte/double-byte characters, implementation of different encodings (UTF8, UTF16, UNICODE, etc.). As the string (complete sentence) lengths differ in all the languages, therefore it is of utmost importance, that the UI framework is flexible enough to accommodate strings of variable, and often large lengths. For e.g. German is one language in which the string lengths are almost thrice of that of the English string. Defects are caught in such cases if the UI framework is hard coded and the text gets truncated. This testing should be performed early in the cycle, may be soon after the code gets freezed. This testing is important as it ensures that the product is ‘Locale Neutral’ and can be adapted in any regional form without any subsequent code changes in the core application.
- Localizability Testing – This is done to identify potential issues that could hamper the localization of an application, may be a hard-coded string, UI issues. This may be done after or along with the enablement testing where testing is done on a pseudo/mock build. This is a specifically instrumented build that appends an identifier string with every string, using which all the hard-coded strings can be uncovered. When launching this instrumented build, the strings appear mocked such as shown in below image:
As shown in the illustration, above, characters are appended at the starting of the string – so if any string that has not been externalized, it wouldn’t appear mocked and can be caught from the user interface by testers.
- Localization Functional Testing – As the name suggests it covers the functional tests in a localized environment. This unearths complications posed by differences in operating system handling across languages, and other dependencies with respect to directionality of text (RTL/LTR/Vertical) character sets, keyboards, IMEs, I/O operations, etc.
- Linguistic Testing –As discussed earlier it covers the tests that validate the text in the user interface to be appearing correctly and completely, with no truncation, mistranslation, or misapplication. Overall language of the text should be tested with the context so that it conveys the right message. Cultural aspects should also be considered while performing such testing.
- One may ask that why the culture is so important. Let us take an example of a Chinese restaurant, what a customer expects, is to have noodles served with chili sauce and chop sticks, right? But if it is served with olive oil and garlic bread, instead, would the customer be happy? No, that’s exactly the case with the localized software, the software companies need to be sensitive about the cultural expectations of the customers. Similarly, if the marketing content is being localized, companies need to be sensitive about the attire the models (if any) are wearing in images, or words referring to some religious beliefs, may be while targeting the Middle Eastern market, for example. Therefore, images, content, colors, themes should be validated accordingly.
- Keyboard input Testing – Apart from the above types of testing, this is another important testing that should be performed while the enablement testing and the functional testing phase. I’m calling out this testing separately as it is often missed out. During the enablement testing, input of single byte/double byte characters are tested while during the Functional testing phase, keyboard shortcuts are covered. Several customer defects may be reported, if such testing is skipped. The application cannot be just tested with copy-paste of different text in the input fields, but input data should be fed in through the actual keyboards. There is a plethora of keyboards available in the market and the interesting fact is that different regions have different key layouts. For e.g. The keys like ’?’, ‘.’, ‘/’, ‘@’, ‘Alt’, ‘ctrl’ may be placed differently on different keyboards. While these are used to input the text, gives rise to incorrect display, if they are not implemented as well as tested properly.
Another important consideration that keeps pinging the internationalization quality engineer is the appropriate time, these testing should be done so that to make testing productive as well as cost effective. A step-by-step approach should be taken to monitor, control and assure the international quality of the products in an agile development environment. As discussed above Enablement as well as Localizability testing should be performed early in the cycle, during the I11N phase of Globalization and functional as well as the Linguistic Testing may be performed during the L10N phase. The cost of fixing the bug goes higher if found later in the cycle, as shown in the below illustration.
To conclude, here are some best practices for delivering high quality internationalized software applications:
- Onboard a team that understands all, functionality, language & culture
- Plan testing such as to cover enablement along with keyboard input testing & localizability testing early in the cycle to uncover linguistic bugs to minimize the overall cost.
- Make sure to cover the culturalization aspects along with the functionality.
In today’s world, a product may be made Global but ensuring its quality is critical for its success, therefore, following the right approach and methodologies is important. The testing practices discussed above, form the backbone of the internationalization testing and quality.
About the author: Nidhi is a software quality professional with over 11 years of experience in the software industry and most recently has been working in the Globalization space at Adobe. She has been instrumental in managing the International quality of various Adobe products ranging from Creative Cloud to Adobe Elements. Not only is she an avid technology enthusiast and explorer, but also an active innovation evangelist.