O Functional Tester precisa ser programado para incluir suporte para diferentes estruturas de UI e controles para que os valores de testes funcionais apropriados possam ser fornecidos para os testadores.
A arquitetura do Functional Tester lida com as diferenças nas estruturas de UI através de uma classe TestDomainImplementation respectiva para estruturas de UI diferentes. Essas classes TestDomainImplementation manipulam as propriedades específicas de cada estrutura de UI que o Functional Tester suporta. As seguintes classes TestDomainImplementation estão disponíveis com o Functional Tester.
TestDomain contém um conjunto de controles fornecidos pela estrutura de UI respectiva. O Functional Tester entende e lida com as diferenças nos controles através das classes ProxyObject que são implementadas para cada controle ou grupo de controles semelhantes. Um ProxyObject pode ser visto como um objeto do wrapper para o controle e é implementado com as interfaces padrão que o Functional Tester define. Cada método de proxy tem um significado específico e o Functional Tester os chama em momentos específicos. O ProxyObject retorna os detalhes específicos para aquele controle. As classes ProxyObject lidam com as especificidades de cada controle ou grupo de controles semelhantes em um TestDomain suportado.
O Functional Tester oferece um conjunto de ProxyObjects agrupados hierarquicamente para cada TestDomain suportado como Java, .Net, Win32, Siebel, SAP e HTML. Uma hierarquia de herança de ProxyObject em cada TestDomain é designada para ser igual à hierarquia de herança do controle naquele TestDomain. O agrupamento de ProxyObjects hierarquicamente permite que você os estenda para criar novos ProxyObjects quando um novo controle for apresentado na estrutura de UI. Você pode localizar os detalhes sobre conjuntos disponíveis de ProxyObjects e controles para cada estrutura de UI suportada nas hierarquias de ProxyObject.