Thursday, December 1, 2011

First-Time Testing & Debugging Hints

The field of software testing and localization appeals to many translation agencies, but can also seem foreign and daunting. Hopefully, these tips will help to smooth out your venture into the testing and debugging game.

Recently, many translation companies have been moving into the field of software testing and localization. Although some software testing – localization/globalization in particular - is related to translation, there are a number of differences that can make this sort of job seem complicated and confusing. This article is designed to offer a few hints for newcomers to the field of software localization.

First off, software must be tested when it is localized. This is to make sure that the translated terms are linguistically correct, as well as to confirm that the software works properly in the target language and within the target locale and operating system. Testing usually focuses on solving the problems that can arise during the localization process, and ensuring that the localized software matches the source software in appearance, functionality, and compatibility.

There are a variety of methods used for globalization testing, and some of these methods can be implemented prior to software translation. This is known as “internationalization testing”, which is performed before localization in order to determine whether or not the software in question will function properly in the target language. With internationalization testing, the software is evaluated by running and using it while checking the correctness of user input in various character sets and verifying that the display of culturally specific information (time/date formats and monetary symbols, for example) is properly linked to the operating system locale settings.

Once software has been internationalized, it is now ready to be translated. Upon completion of translation, the process moves into the user interface testing phase. In this phase, there are a number of items to check for:

             Incomplete translations
             Character bugs
             Truncated strings
             Incorrect or inconsistent terminology
             Incorrect spelling or punctuation
             Duplicate or missing shortcut keys
             User interface layout inconsistencies

Linguistic testing is often performed alongside user interface testing, as the two are generally closely connected. The main difference is basically the focus of the testing, which is as follows:

             User interface testing: mainly user interface layout and general appearance
             Linguistic testing: mainly contextual correctness of the translation

Since user interface testing is technically-focused, usually it can be handled by a non-native speaker of the target language. Linguistic testing, on the other hand, focuses specifically on translation accuracy, requiring a native speaker of the target language for proper execution.

The native speaker handling the linguistic testing of a piece of software must check the following:

             Has all text been translated?
             Is the translation grammatically correct?
             Is the translation contextually correct?
             Are accented characters displayed correctly?
             Have all dialog boxes been properly resized/reshaped?
             Do all dialog boxes, status bar messages, and the various menu items fit on the screen properly – and in all resolutions?
             Are concatenated strings displayed correctly?
             Are icons, graphics, and/or sounds in the finished localized software relevant to the market of the specific target language?
             Have the correct formats and locale settings for this specific target language been used properly (e.g. date, time, number/currency formats, etc.)?
             Is the software free of inconsistencies in terminology throughout (including between software and help files)?

In some cases, the level of testing will be taken up a notch to what as known as “full functionality testing”. Full functionality testing uses test scripts that you have created to test the original source-language software. This ensures that the localized version functions correctly by actually examining the operation of the software against specific test cases provided to your localization vendor in the form of test scripts.

The tester must perform the following for full functionality testing:

             Comparison of functionality of the localized software with the source
             Check that all buttons jump to the correct screens
             Check that the software functions in exactly the same way as the source
             Check that no clipping on text or dialogs remain in the application
             Check whether the overall appearance matches the source software
             Test of installation and uninstallation programs of the localized software
             Check extended characters, long filenames, and international date/time formats

Finally, we come to what is known as “compatibility testing”. In the compatibility testing phase, the localized software is tested on additional types of hardware, using different operating systems, or in a wider variety of software environments. Software that has been localized is always tested using localized supporting applications and on target-language operating systems. Since a large number of strings are called from the operating system, it is imperative to use localized versions of operating systems in order to verify that no source-language text has been overlooked throughout the process of localization, as well as to ensure that character encoding and fonts interface correctly.

After deciding exactly what type of testing you need from your localization partner, be sure to remember to provide necessary information to said partner to ensure that the localization process goes smoothly. Here are some questions that come up often, which should probably be answered beforehand:

1.            What kind of testing will be necessary?
2.            Are there any available test scripts?
3.            Where will the testing take place - on-site at your location, on-site at your localization vendor, or through a remote staging server?
4.            On what specific platforms should the software be tested?
5.            What, if any, specific software or hardware will be necessary for testing the software?
6.            How much time does a user interface test cycle typically take on the source software?

Several test passes may be performed on the software before all bugs have been signed off by the testing team. Usually, testing will start with a full product test pass. Bugs are logged during this part of the process. A team of engineers and quality assurance specialists then correct and regress any bugs that have been tracked and finish the phase with one more final product test pass.

Methods used for the tracking of bugs vary, due to the fact that every software application is different and therefore requires a different testing approach. In most cases, approximately 80% of the bugs logged during testing are linguistic, while the remaining 20% tend to be functional. Looking at mid- and post-testing bug reports, you can see the division. Since functional errors usually need to be corrected by developers and/or programmers and require changes in code, these errors will usually be immediately brought to your attention in the bug reports. You should expect your localization partner to correct linguistic bugs and bugs and errors related to user interface layout.

One of the most important points to remember is that it is absolutely necessary to keep clear lines of communication open with your localization vendor regarding expectations in the testing process and procedures to ensure that your translated software operates correctly once it’s finally finished.