A challenge in functional testing is the variety of user interface (UI) frameworks that are available (for example, Java and HTML) and controls (for example, button and table) that testing must support. UI frameworks differ in architecture and programming models and the controls differ in their inheritance hierarchy, methods, properties data, and user actions.
Functional Tester needs to be programmed to add support for different UI frameworks and controls so that appropriate functional testing values can be provided to testers.
The Functional Tester architecture handles the differences in UI frameworks through a respective TestDomainImplementation class for different UI frameworks. These TestDomainImplementation classes handle the specific properties of each UI frameworks that Functional Tester supports. The following TestDomainImplementation classes are available with Functional Tester.
A TestDomain contains a set of controls that is provided by the respective UI framework. Functional Tester understands and handles the differences in controls through ProxyObject classes that are implemented for each control or a group of similar controls. A ProxyObject can be seen as wrapper object to the control and is implemented with the standard interfaces that Functional Tester defines. Each proxy method has a specific meaning and Functional Tester calls them at specific times. The ProxyObject returns the details specific to that control. ProxyObject classes handle specifics about each control or a group of similar controls in a supported TestDomain.
Functional Tester offers set of hierarchically grouped ProxyObjects for each supported TestDomains like Java, .Net, Win32, Siebel, SAP, and HTML. A ProxyObject's inheritance hierarchy in each TestDomain is designed to be the same as the inheritance hierarchy of the control in that TestDomain. Grouping ProxyObjects hierarchically enables you to extend them to create new ProxyObjects when new a control is introduced in the UI framework. You can find the details about available sets of ProxyObjects and controls for each supported UI framework in the ProxyObject hierarchies.
With the current Functional Tester Proxy SDK implementation, you cannot add support for a new UI framework. You can add support for new controls or enhance currently supported controls.
- Understanding proxies
A proxy object implements the prescribed Functional Tester interface for a UI control in the application under test (AUT). When you enable your application for testing, the proxy classes are loaded into the application and become part of it. A proxy object wraps around the actual control (the native object) in your application, making it testable in Functional Tester. It is a connection point between the TestObject and the real control (object) being tested at the AUT.
- Proxy development environment
Functional Tester proxies can be developed either in Java or C# programming languages based on the UI framework of the application under test (AUT).
- Set up proxy projects
ProxyObjects are deployed as either JAR files which are proxies written in Java, or as Assembly DLLs which are proxies written in C#, along with customization file with the .rftcust extension.
- Current level of proxy support that Functional Tester provides
To develop proxies for a control, understand the current level of support that Functional Tester provides for that control . Consider that you want to add testing support for the Java swing UI control, javax.swing.JFormattedTextField.
- Extending proxies
Functional Tester needs UI control-specific information to perform functional testing operations such as recording, playback, verification points, and data driving. It tries to map the closest proxy if it finds a new control for which it has no proxy.
- Developing proxies using the Proxy SDK wizard
Rational Functional Tester proxy SDK supports wizard driven development of proxies. Proxy development life cycle stages such as creating a proxy project, creating a proxy class, exporting the proxy packages and deploying these proxies is done using the proxy wizards.