Globalization is key for modern web applications. This requires you to use internationalization and localization. Here, we show how Functionize Architect helps you test these.
Globalization of a product, which is the combination of internationalizing and localizing, is rapidly becoming a requirement of new software products. It opens the door to new markets, new customers, and new revenue streams. However, globalizing a product adds to the scope and complexity of testing. Internationalization and localization testing require large sets of test scripts and even larger databases. Data-driven testing, if done right, significantly reduces the time and cost to globalize a product. Functionize Architect uses machine learning to facilitate data-driven testing for internationalization and localization testing.
Globalization, Internationalization, and Localization
Sites like Google and Facebook illustrate the scale of the globalization challenge. Facebook, for instance, is available in over 100 languages. Before we can explore the concept of globalization, we must first define some terms. Then, we will be able to look at the common methods used for testing software that is delivered across national and cultural lines. Porting a software product or service between counties happens in two steps. First, the product must be internationalized, and second, it must be localized. Globalization is the combination of these two steps. Globalization results in a software product that is available to foreign users in their own native language.
Naturally, globalization is long, and often tedious, task that necessitates a large volume of testing. A new international market, with its own language and culture, will require a lengthy list of tests. These same tests must be repeated, over and over, for each additional language and culture. Therefore, globalization requires a large volume of region-specific data.
Let’s look into the details of internationalization and localization before discussing globalization.
Internationalization is the first step in creating a global product. The internationalization process takes place early in the design phase of a product or service. Requirements writers and software designers need to decide up-front if they what their product to work internationally. For a global product, the core product code must be designed for internationalization. Designers must create a core framework/architecture flexible enough to adapt to new languages and cultures with minimal expense.
At a top-level view, internationalization does not seem too daunting a task. In fact, products like websites seem like they would only need translating between languages. However, upon further consideration, designers have to take into concern a huge number of both minor and major details. For instance, internationalization needs you to consider:
- Date and time format (mm/dd/yyyy or dd/mm/yyyy or day of month, year, to name a few).
- Currency symbols and exchange rates
- Color schemes, symbols, and icons
- Cultural concerns (are some images considered taboo in one culture and not another, as an example).
- Legal concerns
Localization is the second step in creating a global product. It takes place during the final stages of product development, right before release. Internationalization creates a product that can be translated between nations. Then, localization allows us to further adapt the product to fit one specific nation. This process involves adding new, region-dependent, components, and translations. Internationalization is making a product that can work in other countries. By contrast, localization is making a product optimized that does work in one country. Localization takes an internationalized product and modifies/adds to its features.
Globalization is the combination of the two steps above. First, internationalization creates a product that can work in multiple counties. Second, localization creates a product that can work in a specific county. More and more software products are being globalized, either by design or by after-release upgrades, and for good reason. The many benefits of an international product include:
- Increased revenue by entering new, less crowded markets.
- Discovering new markets.
- Enhanced brand awareness, product exposure, and customer engagement.
- Building prestige for a company and product.
This overview of globalization hammers home the point – internationalization and localization testing need lots of tests and lots of data. More tests and more data mean more development time, more testing, and more DevOps. Which brings up the question, how do I perform internationalization and localization testing without adding time and cost to product development? The answer is data-driven testing.
What is Data-Driven Testing
Data-driven testing is a form of testing that allows DevOps to create a single data source for software testing. They then create a single set of test scripts to operate on these data. Data-driven testing improves the efficiency and accuracy of repetitive testing and differs slightly from automated testing. Standard tests have data included in the tests themselves, while data-driven tests pull data in from an external data repository.
Unfortunately, data-driven testing does not work well for every application. It is not the right choice for certain test scenarios. For instance, if the test isn't run often, it's not worth investing the time to create data driven tests. For another example, it does not work well for tests with complex results, such as design testing. Data-driven testing typically tests for a binary pass/fail outcome.
In general, you should consider using data-driven testing if:
- Your tests are repetitive and reuse the same steps for multiple tests.
- You repeat tests using multiple variations of the same data.
- The tests output binary pass / fail test outcomes.
- Changing the data leads to differing outcomes.
Based on these criteria, data-driven testing is exactly ideal for one part of globalization testing: localization testing. Let us move on to internationalization and localization testing to learn the role data-driven testing plays in globalization.
Internationalization and Localization Testing
Internationalization testing, often called i18n testing, involves design testing, rather than functional testing. The goal is to determine whether a product is suitable for localization. Internationalization testing involves testing basic components of a product’s design and architecture. The goal is to determine a product’s ability to properly render characters from different alphabets, installation capabilities, and user interface validation. As with most design testing, internationalization testing is complex.
Localization testing, often referred to as l10n testing, is functional testing. The goal is to determine if the features developed during internationalization work for a given locale. This functional testing checks to ensure the features, components, and translations added to the internationalized product work correctly in a specific region. It tests basic features and capabilities, like language translation and formatting, image rendering, file transferring, and database access. Like all functional testing, localization testing is extremely repetitive, and it uses the same tests across all locations’ data.
When Data-Driven Testing is Right for Globalization Testing
Data-driven testing is not suitable for internationalization testing, due to this testing’s complexity. However, data-driven testing is perfect for localization testing. Localization testing uses the same set of tests with data sets specific to each locale. Standard testing would require an entire set of new tests for each new locale. On the other hand, data-driven testing allows testers to write one set of tests and a testing architecture capable of accessing multiple data sources.
However, a potential “gotcha” in data-driven localization testing exists – assessing the results. The tests will have a pass/fail result, but determining pass or fail requires checking against several cases. Determining which tests to use for localization testing and what their associated data should be is also time-consuming. This is especially true if tests need to be added or removed from the test plan. Data-driven testing needs an additional feature to truly unlock its full benefit to product development.
Automation and Machine Learning for Data-Driven Testing
A major roadblock to performing effective and economical data-driven testing for any application is the sheer volume of data necessary. Globalization testing clearly illustrates this roadblock. Data-driven testing requires a significant amount of up-front time investment to determine the test set and compile the test data. Likewise, globalization requires a huge amount of data for each locale, across several locations.
Data-driven localization tests can assess the functional localization of a program once a base set of tests and databases are available. However, there are two potential pitfalls to testing this way. One, some regions may require more data than others, and finding the gaps in data requires human intervention. Two, once an error enters the testing, it can linger for long stretches of time while going unnoticed.
To address these concerns, Functionize Architect uses machine learning (ML) to intelligently automate data-driven testing. Specifically, Architect uses ML techniques to create a powerful test automation tool that can intelligently monitor localization testing.
Architect is an intelligent test recorder that learns how your application works. As a test recorder, it addresses the two concerns mentioned above. First, through careful test monitoring and using ML, Architect can detect trends in input data and find gaps in the data across nations. Second, by learning test results over time, Architect can also detect anomalies in test results. This self-healing capability finds errors in test scripts and/or data before they can negatively affect localization testing.
Functionize takes ML and uses it to make time and cost-efficient data-driven globalization testing possible. With Architect, you will have access to the tools necessary to globalize your products, without adding more DevOps or time to your project. For a demo of Architect, visit https://www.functionize.com/demo today.