Extensibilidade de GXtestPontos muito importantes em uma ferramenta são a possibilidade de estender suas funcionalidades e a possibilidade de interoperar com seus componentes. Isto possibilita aos usuários adicionar novas funcionalidades ou simplesmente contemplar particularidades específicas de cada realidade.
GXtest permite hoje em dia dois mecanismos de extensão, um é adicionando Custom Commands e outro é por meio de invocações a procedimentos GeneXus, para adicionar validações e/ou ações sobre a aplicação sob teste.
GXtest chama de
comandos à forma de descrever as ações que um usuário pode realizar no navegador. Existem então uma série de comandos que permitem descrever (virtualmente) todas as ações que o usuário pode realizar com uma aplicação GeneXus.
Entretanto há vezes que se desenvolvem algumas seções da aplicação fora do GeneXus, adicionando algum JavaScript particular ou algo similar. Nessas situações pode acontecer que os comandos padrão não prestem, e terá que desenvolver um Custom Command. Estes são entrados pelo GXtest ingressando o nome que quer lhe dar, o tipo (ação, evento ou validação), uma descrição para os parâmetros e o código JavaScript que implemente a ação do usuário. Depois, este comando aparece listado como se fosse um comando padrão (o usuário não diferencia entre um comando padrão e outro desenvolvido através deste mecanismo).
Outro mecanismo é a possibilidade de se adicionar invocações a procedimentos GeneXus. Por exemplo, se quiser validar algum estado da aplicação em nível dos dados depois de uma série de ações interativas, o melhor é adicionar um procedimento GeneXus ao qual repassar os parâmetros necessários (por exemplo, n° de cliente, n° de nota fiscal, etc) e que devolva se o estado é correto ou não. Também podem se utilizar para carregar dados que vão se fornecer como entrada no caso de teste.
Outra possibilidade que oferecem estes proc é para usá-los como funções que são interessantes de ter em uma ferramenta de teste, como por exemplo, gerar um número randômico, gerar uma string randômica, concatenar string, etc. Se algum processamento não se pode realizar por meio do GXtest, pode-se implementar um proc GX que solucione essa feature.
Para poder realizar uma invocação a um procedimento GeneXus, o mesmo deve estar acessível via WebServices da máquina que roda GXtest. Para dar entrada a um procedimento. ingressa-se o nome, tipo (ação ou validação), descrição e uRL ao WSDL (isto permite ler os parâmetros de entrada e saída do procedimento). Depois que se dá entrada fica acessível de maneira transparente (ao igual que os custom commands) para o usuário.
No próximo post falaremos da interoperabilidade, tentaremos abrir a possibilidade de gerar casos de teste de "fora", ou expor serviços no IDE do GeneXus.
Que outros mecanismos vocês acham interessante considerar?