# Patent

## Title
Method for automating an internationalization test in a multilingual web application

## Abstract

A method and system for automatically executing an internationalization test of web applications by recording and utilizing HTTP transmitted and received data in the internationalization test in a multilingual web application. By processing and storing recorded HTTP transmitted and received data in a base language to prepare an HTTP request corresponding to a user specified test object language to a web server, a test is automatically executed while emulating user operations on the web browser in the test object language. This generates corresponding HTTP transmitted and received data in the test object language. By comparing and analyzing the HTTP transmitted and received data in the base language and test object language, a required verification for an internationalization test is automatically conducted and the verification results are stored or recorded for later use in subsequent operations.

## Background
BACKGROUND
1. Technical Field
The present invention relates to web applications. More particularly, it relates an internationalization test in multilingual web applications.
2. Description of the Related Art
Methods of detecting garbled characters exist where visual inspection for a user is facilitated by figuring out a good way to handle the pseudo translation resource. Other methods and devices for internationalizing software or managing message resources of the software are also known. However, no know prior methods or systems related to automating the internationalization of software applications and the testing required for the same.
SUMMARY
According to one embodiment, the method for testing web application Internationalization, includes setting a base language at a web browser in communication with a web server, obtaining and storing HTTP (Hypertext Transfer Protocol) transmitted and received data between the web browser and the web server in the base language, analyzing the transmitted and received data in the base language and preparing an HTTP request corresponding to a user specified test object language to be sent to the web server to emulate user operations on the webs browser in the test object language to produce HTTP transmitted and received data in the test object language, comparing the HTTP transmitted and received data in the base language with the HTTP transmitted and received data in the test object language, verifying whether the web application is correctly internationalized based on said comparing, and storing the verified results when the web application is correctly internationalized.
These and other features and advantages will become apparent from the following detailed description of illustrative embodiments thereof, which is to be read in connection with the accompanying drawings.



BRIEF DESCRIPTION OF DRAWINGS
The disclosure will provide details in the following description of preferred embodiments with reference to the following figures wherein:
FIG. 1 is a schematic diagram of an embodiment of the mechanism of the present invention; and
FIG. 2 is an exemplary flow diagram of an embodiment of the method of the present invention.



DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS
According to one embodiment, Internationalization testing is performed automatically without user intervention to check various strings of code for errors or abnormalities or other errors. According to other embodiments the testing analyzes transmitted and received data in a base language and prepares a corresponding transmitted and received data in a user designated test object language to emulate the user's action at a web browser. The prepared corresponding transmitted and received data in the test object language is compared with the base language representation of the same and it is verified whether the application is correctly internationalized.
Embodiments of the present invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment including both hardware and software elements. In a preferred embodiment, the present invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that may include, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and DVD.
A data processing system suitable for storing and/or executing program code may include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code to reduce the number of times code is retrieved from bulk storage during execution. Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) may be coupled to the system either directly or through intervening I/O controllers.
Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
In general, when developing a multilingual web application, character strings displayed on a web browser screen of the client are provided as a language resource by being collected into a file called a resource bundle and a program code body is prepared to be independent of languages. Usually, these language resources are prepared by a base language (typically English) at first. Next, based on that, they are translated into other multiple languages and language resources for each language are prepared.
In a multilingual web application, users select a desired language using a language setting function of the web browser to transmit it to a server. In a web application on a server, a screen is prepared for the specified language by taking out and utilizing character strings from the language resource corresponding to the language specified by the user.
In order to verify whether software is correctly internationalized, a test can be performed under multiple language environments. This test is referred to as an internationalization test. Examples of verification items are: whether no abnormality (e.g., garbled characters) is observed on the display through a conversion of character codes and handling of fonts; whether language resources are correctly separated from a program code and not hard-coded therein; whether there is no translation omission in the language resource; and whether data of character strings expressed by the test object language can be inputted and outputted without problems.
When checking hard codes and translation omission, a method is adopted, in which the screen is displayed in a language other than the base language and a tester seeks a part where character strings of the base language are displayed as they are visually observing the screen. However, there are problems with this visual inspection method.
Since the character strings displayed by the base language are visually checked, the character strings can be overlooked.
As a result of this visual inspection, things such as the menu and panel have to be manually displayed in order. This increases user workload such that when tested again after correcting problems, the same procedure has to be executed.
Furthermore, at the stage of performing an internationalization test, since, in most cases, translation is not completed yet, there is no language resource whose translation into each language is completed. Therefore, in many cases, visual inspection is conducted using a pseudo translation resource, which is automatically generated from a language resource of the base language.
Referring now in detail to the figures in which like numerals represent the same or similar elements and initially to FIG. 1.
User (101) operations are recorded by hooking and obtaining communication content between the web browser 102 and web server 104. Since user operations are recorded in a data storage device 106 with the language setting of the web browser 102 being the base language (for example, English), the menu and panel that include the character strings of the base language are also recorded. When recording user operations, comprehensive operations are performed that display the menu and panel to be checked. As for the method of hooking communication content (HTTP transmitted (i.e., HTTP request 108) and received (i.e., HTTP response 110) data) between the web browser 102 and web server 104 in operation, some methods are conceivable such as obtaining it from the client (i.e., web browser 102), from the proxy server (not shown), and from the web server 104, however, no limitation is imposed here.
In order to obtain the same screen display by the test object language (For example, Japanese) as that of when recording the user operation, user operations are reproduced by interacting with the web server 104 using an automatic execution program 112 in place of the web browser 102. Thereby, an HTTF request 109 transmitted to the web server 104 is automatically prepared by processing and converting communication data by the recorded base language. When there is a portion that cannot be automatically prepared through the analysis and generation 114, the automatic execution program 112 is temporarily stopped and the user's indication is asked for. Then, indication results are recorded as confirmation information 116 and utilized in the following reproduction.
After completing user operations reproduction by the test object language, problems are detected on internationalization problem detector (118) by comparing and analyzing 120, 122 the recorded content in the case of the base language and those of the test object language. The comparison and analysis 120,122 and detection are conducted on a DOM level by converting HTML data included in an HTML response into a DOM format. Character string data included in such as a text node and attribute node situated in a corresponding position on a DOM tree are compared 122 in order and when a completely compatible character string is found, it is presented to the user as “a part whose hard code is in question” or “a part in which translation omission is suspected.” In the first place, since there is a case (for example, the “OK” button) in which the same text is displayed both in English and in Japanese, a final determination whether it is a “translation omission” or not is conducted by the user. The user confirms presented content to determine whether it is problematic. Confirmation results by the user are recorded (124) and by utilizing them at the time of detection thereafter in order to suppress detection of useless problematic parts, it becomes possible to improve detection precision of the problematic part.
While referring to final verification results, the user modifies the language resource and program code of the web application, deploys the modification results to the web server 104, performs the automatic test again, and confirms that problems are corrected. The operation is continued until no problem is found on the internationalization.
In general, as the development of web applications to be the test object advances, builds for the test are successively released. Each time, the automatic test can be performed, the burden in the internationalization test can be greatly reduced.
As a further explanation on the automatic execution program 112, in order to emulate user operations by the test object language, an HTTP request 109 transmitted to the web server is prepared using information as follows:
HTTP request by the base language when recording user operations (transmitted data such as GET and POST);
HTTP response by the base language when recording user operations (contents displayed on the screen); and
HTTP response (111) obtained during reproducing user operations by the test object language (contents displayed on the screen).
Firstly, the HTTP request by the base language is taken out and information (Accept-Language and Accept-Charset, etc.) on the language included in an HTTP header is re-written so that the test object language is specified. Using information transmitted from the web server at the time of the automatic execution, the content of a cookie header used for a session management is re-written as well.
Next, among the content of the form data included in the HTTP request, that which is necessary to change from the description in the base language to those in the test object language are rewritten. This is conducted by comparing and analyzing form definitions included in the HTTP response by the base language and those by the test object language.
An example in a WebSphere® Application Server management console is shown below. WebSphere® is a registered trademark of International Business Systems for computer software for website development.
When extracting and comparing a form definition of the HTTP response in the base language (English) of (A) and that in the test object language (Japanese) of (B), it is confirmed that values of an attribute or an element differ by languages. In this example, while it is “New” in the base language, it is changed into “Shinki-sakusei” (Translated in Japanese) in the test object language. Therefore, it is found that when the submit button of the form is pressed the content of the HTTP request transmitted to the web server has to be changed as well.
(A) Form definitions (excerpt) of the HTTP response in the base language (English) obtained when recording user operations:















  :



<form name =



”com.ibm.ws.console.enviroment.VirtualHostCollectionForm”



method=”post”...



  :



<input type=”submit” name=”button.new”value=”New” class=



”buttons” id=”functions”/>



  :










(B) Form definitions (excerpt) of the HTTP response in the text object language (Japanese) obtained at the time of automatic execution:















  :



<form name =



”com.ibm.ws.console.enviroment.VirtualHostCollectionForm”



method=”post”...



  :



<input type=”submit” name=”button.new”value=”□□□□” class=



”buttons” id=”functions”/>



  :










Based on such comparison and analysis results and the HTTP request in the base language (English) of (C), it is possible to prepare the HTTP request in the test object language (Japanese) like (D) as shown below. In this example, by changing values (character strings of “Shinki-sakusei” are encoded) set by a button.new included in an Accept-Language header, Content-Length header, and query string, it is possible to emulate user operations in the test object language.
(C) HTTP request in the base language (English)












POST/admin/virtualHostCollection.do HTTP/1.0


Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,


application/x-shockwave-flash, application/vnd.ms-excel,


application/vnd.ms-powerpoint, application/msword, */*


Referer: http://localhost/admin/navigatorCmd.do?forwardName=


VirtualHost.content.main


Accept-Language: en


Content-Type: application/x-www-form-urlencoded


User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;


SV1; .NET CLR 1.1.4322)


Host: localhost


Content-Length: 66


Connection: Keep-Alive


Prgama: no-cache


Cookie: JSESSIONID=0000mbSHI6qihHPwFFuWzr6CbNi:-1


button.new=New&definitionName=VirtualHost.collection.buttons.panel









(D) HTTP request in the test object language (Japanese)












POST/admin/virtualHostCollection.do HTTP/1.0


Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,


application/x-shockwave-flash, application/vnd.ms-excel,


application/vnd.ms-powerpoint, application/msword, */*


Referer: http://localhost/admin/navigatorCmd.do?forwardName=


VirtualHost.content.main


Accept-Language: ja


Content-Type: application/x-www-form-urlencoded


User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;


Windows NT 5.1; SV1; .NET CLR 1.1.4322)


Host: localhost


Content-Length: 66


Connection: Keep-Alive


Prgama: no-cache


Cookie: JSESSIONID=0000mbSHI6qihHPwFFuWzr6CbNi:-1


button.new=


%E6%96%B0%E8%A6%8F%E4%BD%9C%E6%88%90&definitionName=


Virtual Host.collection.buttons.panel









Referring to FIG. 2, there is shown an exemplary configuration method 200 according to an embodiment. As mentioned above, the user 101 through web browser 102 sets the base language and also the test object language. In step 202, the HTTP request and HTTP response transmitted and received (data) between the web browser 102 and the web server 104 are automatically obtained and stored in a transmitted and received data storing part 106. As mentioned with respect to FIG. 1, this function is implemented, for example, on the web browser, web server, or a proxy server (not shown).
Step 204 includes the function of analyzing the data and preparing an HTTP request. At this step, recorded and transmitted HTTP data is analyzed and the necessary HTTP requests are prepared for the automatic test in the test object language specified by the user. When there are parts that cannot be prepared by the program, the automatic execution is temporarily stopped and user indication is requested via the UI function 212. Then, the user's input confirmation information is stored in a confirmation information storing part 116 and utilized after the following data analysis and at the time of preparing the HTTP request (109). The automatic reproduction function 210 automatically interacts with the server 104 in place of the web browser to emulate the user operation. The transmitted and received data in the text object language obtained is then stored in the transmitted and received data storing part 205.
In step 206, the function of analyzing data and detecting problems (214) is performed. Here, the transmitted and received data in the base language (from storage 106) and transmitted and received data in the test object language (from storage 205) are compared and analyzed and it is verified whether the web application is correctly internationalized.
Verification results are stored in the verification results storing part 218. The verification results are presented to the user using a UI function 216, where it is confirmed and indicated by the user whether there are problems on the internationalization such a hard codes and translation omission. Confirmation results by the user are stored in the determination information storing part 124 and utilized after the following comparison and analysis.
Having described preferred embodiments of a system and method (which are intended to be illustrative and not limiting), it is noted that modifications and variations can be made by persons skilled in the art in light of the above teachings. It is therefore to be understood that changes may be made in the particular embodiments disclosed which are within the scope and spirit of the invention as outlined by the appended claims. Having thus described aspects of the invention, with the details and particularity required by the patent laws, what is claimed and desired protected by Letters Patent is set forth in the appended claims.

## Claims

1. A method for testing a web application internationalization, the method comprising the steps of:
setting a base language at a web browser in communication with a web server;
obtaining and storing raw HTTP (Hypertext Transfer Protocol) transmitted and received data between the web browser and the web server in the base language;
analyzing the raw HTTP transmitted and received data in the base language and preparing an HTTP request corresponding to a user specified test object language to be sent to the web server to emulate user operations on the web browser in the user specified test object language to produce HTTP transmitted and received data in the user specified test object language, wherein the preparation of the HTTP request includes prompting a user for input in response to an encountered problem with the preparation of the HTTP request;
comparing, without user intervention, the raw HTTP transmitted and received data in the base language with the raw HTTP transmitted and received data in the user specified test object language on a DOM (Document Object Model) level by converting the raw HTTP transmitted and received data in the base language and the raw HTTP transmitted and received data in the user specified test object language into a DOM format;
verifying, without user intervention, whether the web application is correctly internationalized based on said comparing; and
storing results from said verifying when the web application is correctly internationalized.