Depurando o Código de Proxy
A depuração do código de proxy é uma parte essencial do processo de desenvolvimento do proxy para a determinação de problemas. O código de proxy que contém o arquivo JAR ou o arquivo de montagem .Net com a extensão .dll é carregado no processo AUT (aplicativo em teste). Para depurar o código de proxy, conecte o respectivo depurador ao processo AUT depois que os arquivos binários do proxy forem carregados no AUT.
- Implementando Logs para Depuração de Código do Proxy
O Functional Tester fornece uma infra-estrutura de log
que você pode usar enquanto depura o código de proxy desenvolvido.
A classe FTDebug está disponível nas estruturas de desenvolvimento de proxy Java e .Net.
Você pode instanciar um objeto da classe FTDebug para cada classe de proxy e registrar qualquer informação, aviso ou mensagem de erro categoricamente.
Preparando o Ambiente de Depuração
Por Que e Quando Desempenhar Esta Tarefa
Antes de depurar o código de proxy, desempenhe as seguintes tarefas:
Configurando o Tempo Limite de Chamada
A depuração de proxies é sensível a tempo e a chamada atinge o tempo limite depois de dois minutos, por padrão. Para ajustar o tempo limite para a depuração, inclua o valor DWORD, InvocationTimeout, em milissegundos em HKEY_LOCAL_MACHINE\SOFTWARE\Rational
Software\RationalTest\8\Options no registro do Windows. Um tempo limite durante a depuração lança um exceção SpyMemory MutexTimeout.
Depurando Registro
O método getChildAtPoint() é o ponto de entrada para a depuração do proxy para gravação. Qualquer ação do usuário chama o método processMouseEvent(), mesmo antes que o AUT veja o evento. O Functional Tester processa as ações do usuário, por exemplo, a ação é um clique ou arrastar e, de acordo com a especificação do método, os argumentos são gerados. Para melhores resultados, use esses métodos para iniciar a inserção de pontos de interrupção.
Depurando Reproduções
O método getMappableChildren() é o ponto de entrada para a depuração do proxy para reprodução. Durante o desenvolvimento do proxy, a maioria dos problemas ObjectNotFound que ocorrem resulta de uma incompatibilidade entre a hierarquia de objeto que a gravação produz e a hierarquia produzida durante a reprodução. Certifique-se de que os métodos getMappableParent() e getMappableChildren() sejam simétricos.