Posts tagged resource bundles


Java resource bundle modification to identify hardcoded strings

In Java, Internationalization of applications is supported through the ResourceBundle class. The strings which need to be translated are packaged in individual resource bundles and each language will have its own resource bundle which is loaded by the ResourceBundle Class based on the application logic.

I was involved in the modification of the Java ResourceBundle class to make it optionally decorate all the strings coming from any specific resource bundle with certain special characters like {{ or [[ so that it will be possible to visually identify any hard coded strings in the application. My role in this project was to specifically hack the XliffResourceBundle class which decorates the strings from Xliff resource bundle files. The decoration process had to be turned off or on by the user and had to obey certain rules/filters which allows the user to decorate specific strings (exclude any numbers/dates etc).
As all strings which support internationalization typically use the resource bundle class to fetch the translated strings, modifying the class itself at the root level will help one to indentify the ones which are not using this class (and hence hardcoded).
But one might ask “why not write a tool to scan through hardcoded strings using regex”. Yes , you could do this, but there are cases where this method wont be sufficient. The strings could still be following your regex pattern and might not be using the resourcebundle class to fetch the translated strings. Only modifying resource nundle class can provide a foolproof way to identify them.

Why ?
Identifying hardcoded strings is very much necessary for any software application which has to be internationalized. Especially when the software is used all over the world. Typically Arab speaking and Chinese users contribute to a major percentage of profits and they prefer localized versions of the user interface. Localizing the UI after a software has become successful will take minimal effort and the results of such a move are quite astounding.

But usually during inital phases of development, no developer will give much importance to externalizing string and coding in a way that makes localization of each UI easier. The tendency is to concentrate on the functionality of the software and make things work well. The problem comes when the functionality breaks during the localiztion process. Also from the profits point of view, localizing the software becomes important. But to the developer, who feels that putting additional efforts to just make the software work under different locales and obey the rules of different regions in showing the dates/currency and timezone implications , it is something of least interest. They are the developers who just copy past code samples from the internet and never give importance to how things work. Such negligence gives rise to performance issues too. But internationalizing existing programs also become difficult is this is the case.

Incoming search terms:


PHP-Selenium Framework for UI Automation

UI Automation is a must for testing any application to ensure that new added features dont break the old functionality..

I developed a PHP framework on top of PHPUnit framework for Selenium UI automation. The framework will help in automation by defining test parameters in xml files, capturing screenshots on any errors, generating HTML test report and emailing them after execution and also reading strings from XLIFF resource bundles for automating internationalized applications.

Here’s a quick comparison of QTP, Selenium and Openscript I had done before I chose Selenium. I hope this will be useful to you.

Feature Open script Selenium QTP
Browser support IE and firefox IE,Firefox,Safari,Chrome IE & Firefox
OS support Windows & Unix based Windows , Mac and UNIX based Windows only
Scripting language support Java only HTML, Java, C#, Perl, PHP, Python, Ruby VBscript only
Automatable Applications EBS/Forms applications, Fusion ADF applications and generic web apps. Any web based applications which do not use activeX/Java applets Any application (Generic web based/Java applets/ActiveX/Desktop app)
Data driven testing (Parameterization) Inbuilt support using Databanks(CSV files) and provides inbuilt support for iterating the runs through the databanks. But the data in CSV files must be managed outside Open script. No built-in support. Use the scripting  language to read through parameter files Very good Built in support using Datatables(XLS files) and also supports iterating runs.
Simulation method Simulates browser actions, hence browser can be run in background Simulates browser actions, hence browser can be run in background Simulates end user actions, hence the browser must be visible and running in foreground.
Validation/checkpoint support Text matching,Object matching, Server response matching, Database query match, Table match checkpoints supported with wildcard and regex based checks. Provides ‘verify’ and ‘assertion’ checkpoint for the accessors various properties of an identified HTML element These accessors have to made use of through the scripting language to create custom checkpoints. Hence text matching,object match, table matching and database can be implemented Standard Text, Text Area, Image, Xml, Database checkpoints available by default. Apart from these, Bitmap checkpoint is also supported, which is not supported by Openscript,selenium
Types of code views Tree view and code view present Tree view is only present if HTML scripting is used. Otherwise only code view is present. Keyword view and expert view(code view) are present.
ADF support Provides Native support to recognize ADF components Does not provide ADF support Does not provide ADF support
Screenshots and HTML capture Automatically captures screenshots and HTML during recording & playback Does not capture by default. The command captureEntirePageScreenshot() must be used wherever screenshot is required. Automatically captures screenshots and HTML during recording & playback
HTML report Automatically generates HTML reports for each step group Does not generate HTML report. But can generate XML,JSON log files which can be parsed and converted to HTML reports. Automatically generates HTML reports for each step
Object library/repository Provides inbuilt object library in the form of *.properties files. Also provides a tool to merge repositories. Does not provide in built object library. Provides object repository and tools to compare and merge repositories.
Execution of the test Can  be run from within the IDE or from command line and this feature can be used for DTE integration. Only HTML scripts can be run from IDE. All other type of scripts can only be run from command line. Can  be run from within the IDE of from command line
MBC character support Supports MBC characters in Databanks and object library Support of MBC characters will depend on the scripting language used Supports MBC characters in Datatables and object repository
License Oracle owned product. Free and open source license Not free. HP Proprietary product.

Incoming search terms: