Introdução
Este documento tem o intuito de instruir o Analista/Desenvolvedor a efetuar a criação de testes de interface (CodedUI Tests).Escopo
Os testes de interface visam garantir que processos complexos não quebrem sem que percebamos. Estes processos normalmente são processos não testáveis via Testes Unitários, por isto é necessário realizar os testes simulando um usuário e suas operações corriqueiras.Informações Úteis
- Testes de Interface são gravados através do Visual Studio 2013 e Internet Explorer;
- Testes de Interface são lentos e devem ser executados uma vez ao dia (normalmente de madrugada);
- Testes de Interface são frágeis, pois, qualquer alteração técnica na interface no sistema pode impossibilitar a execução de vários testes;
O Projeto que Contém os Testes
Para uma melhor organização criamos uma solução separada da solução do Cbanet. Esta solução pode ser encontrada no seu TFS através deste endereço: $/Cbanet/Desenvolvimento/UITests/Cbanet.UITests/Build Automático
Os testes de interface serão executados automaticamente todos os dias pela manhã (madrugada) para termos um feedback assim que iniciarmos o expediente.Estrutura para Build Automático
O Build automático buscará a última versão da branch Sprint para a compilação. Isto porque é a branch que sofre alterações diariamente, logo, deve ser testada diariamente.A estrutura de build desta branch ficou um tanto complexa neste cenário. Isto porque a estrutura de pastas e de builds no servidor de build é descentralizada. O IIS do CBA-TFS1 possui um aplicativo chamado Cbanet. Este aplicativo aponta para [C:\Builds\4\Cbanet\UITest\src\Sprint\Cbanet.Server\Cbanet.Server.Web.UI].
Toda vez que o servidor de build buscar a última versão, ela será depositada nesta pasta, logo, o IIS terá sempre a última versão on-line.
Acessando o Cbanet do Servidor de Builds
O Cbanet que se encontra no servidor de builds pode ser encontrado através dos seguintes endereços:- http://localhost/cbanet/: Quando acessando de dentro do próprio servidor, no caso, quando os testes forem executados eles buscarão por este endereço.
- http://cba-tfs1/cbanet/: Quando acessado externamente.
Usuário e Senha do Cbanet para Testes de Interface
Para que possamos manter um cenário estático para testes, foi criado um usuário específico para a gravação de testes. Segue dados para acesso:- Usuário: codedui
- Senha: codedui
Endereço do Frame para Gravação e Execução de Testes
Devido às dificuldades com o Modal presente na execução do Cbanet, foi necessário criar um frame específico para a gravação e execução dos testes.Para acessar o Cbanet e gravar os testes utilize o seguinte endereço:
Este frame é diferente do [frames2.aspx]. Isto porque ele faz com que a interface do Cbanet utilize todo o espaço disponível da janela, permitindo uma melhor iteração entre Usuário X Cbanet.
Dados para Testes
Os dados que serão utilizados nos testes (estabelecimentos, clientes, itens, contas financeiras, etc.) deverão ser diferentes dos dados utilizados no ambiente de desenvolvimento.Isto é necessário para não quebrar os testes já gravados e funcionando por motivos de alteração de dados durante o desenvolvimento.
Os dados utilizados nos testes têm que ser obrigatoriamente o mais estático possível. Temos sempre que pensar numa rotina diária, ou seja, o mesmo teste tem que ser executado todos os dias com os mesmos dados.
Quando um Teste Deverá Falhar
Os testes de interface somente deverão falhar quando houverem alterações técnicas que tenham alterado algum comportamento (para mal ou para bem) que era testado.Por isto temos a preocupação com os dados de nossos testes, pois, nenhum dado poderá ser alterado, visto que poderá quebrar os testes.
O que é Necessário para Gravar Testes de Interface?
Para gravar este tipo de testes é necessário ter as seguintes ferramentas/complementos:- Visual Studio 2013;
- Internet Explorer (versão atualizada);
- Microsoft Web Test Recorder 12.0 Helper (complemento para Internet Explorer);
- Um Cbanet online através do endereço [http://localhost/cbanet/framesuitest.aspx];
- A possibilidade de abrir SmartClients;
- Ter lido e entendido plenamente todos os passos anteriores e posteriores à este tópico (é sério);
Onde Devo Guardar os Testes que Crio?
Os testes deverão seguir a nossa lógica de estrutura de projetos. Assim, utilize a pasta segundo a estrutura Sistemas/Módulo da mesma forma como fazemos no Cbanet e nos Testes Unitários do Cbanet.Gravando Testes
Vamos supor que tenhamos que construir um teste que audite um orçamento específico. Logo, vamos criar um novo teste dentro de [Sistemas/Faturamento/Varejo/]. À classe de testes podemos dar o nome de [AuditoriaDeOrçamentos].Para criar tal classe de testes, siga os seguintes passos:
- Já dentro da pasta onde devemos criar este teste, clique com o botão direito na pasta> Add> Coded UI Test;
- Permita o Check-out do UIMap;
- Na próxima tela onde é perguntado sobre a gravação, cancele.
- Renomeie a classe;
- Renomeie o arquivo da classe;
- Limpe os Namespaces não utilizados através do Resharper (CTRL + Alt + F);
- Elimine todo o código, deixando a classe crua (vale também para comentários.
- Crie um método de testes. Neste caso, vamos criar o método [public void ExecutaAuditoriaDeUmOrçamento()];
Agora que temos a classe criada, é hora de gravar nosso teste. Para isto, [clique com o botão direito sobre o método [ExecutaAuditoriaDeUmOrçamento]> Generate Code for Coded UI Test> Use Coded UI Test Builder];
Quando isto for feito, será aberta uma pequena janela. Veja:
Nesta janela, clique em Gravar (ícone vermelho) e inicie a navegação/operação. Realize as navegações normalmente e ao finalizar, feche o IE normalmente (através do X).
Ao finalizar a navegação (construção do cenário testado), pare a gravação através do botão Parar (ícone Azul).
Na janela que se abre, nomeie a gravação do cenário realizada e salve.
Em seguida, no Visual Studio, teremos este código:
Por fim, ordene que o Visual Studio execute o seu teste. O teste deverá ser executado com sucesso.