L'architecture de Functional Tester permet aux développeurs d'écrire un proxy pour un contrôle d'interface utilisateur particulier. Les développeurs peuvent autoriser Functional Tester à traiter les caractéristiques d'un contrôle en écrivant des proxys. Des fonctions de test fonctionnel adaptées peuvent également être mises à disposition.
Un proxy fournit à Functional Tester des détails sur le contrôle pour lequel il a été écrit. Functional Tester possède un ensemble prédéfini de méthodes pour chaque proxy et appelle chaque méthode pour obtenir des détails précis. Pour chaque proxy écrit pour un contrôle, ces méthodes prédéfinies sont implémentées spécifiquement pour le contrôle.
Pour chaque contrôle, Functional Tester fournit un ensemble de propriétés et de types de données en vue de la vérification. Si l'ensemble de propriétés et de types de données fourni n'est pas suffisant pour le test du contrôle, vous pouvez créer un autre proxy ; en remplaçant certaines méthodes, vous pouvez inclure un nombre plus élevé de propriétés ou de types de données. Vous pouvez également changer le comportement d'enregistrement de Functional Tester en créant d'autres proxys.