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:

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.
Após criar a classe de testes, execute os seguintes passos:
  • 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()];
Após executar os passos anteriores, a nossa classe ficará assim:
codedUiTestCriadoEstruturaBasica.jpg

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:
janelaDeGravacaoDeTestes.jpg

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).

salvandoGravacaoRealizada.jpg

Na janela que se abre, nomeie a gravação do cenário realizada e salve.

Em seguida, no Visual Studio, teremos este código:
codigoGeradoAposGravacaoDosTestes.jpg

Por fim, ordene que o Visual Studio execute o seu teste. O teste deverá ser executado com sucesso.

Regravando um Teste

A regravação de um teste é até parte do processo idêntica. A diferença é que, quando finalizar a gravação, ao invés de gerar um novo método, temos que substituir um existente. Veja:
salvandoRegravacaoRealizada.jpg

Ambientação

Caso tenha dúvidas ou pouca experiência com testes no Visual Studio, siga os links abaixo, eles podem lhe ensinar algo:
  • Visual Studio para Teste de Software:
  • Introdução ao Lab Management:

Dúvidas?

Faça em par com alguém mais ou menos experiente, isto pode lhe ajudar!

Colabore

Tem algo novo para acrescentar neste guia? Por favor, faça! Será de grande ajuda, tanto para você, quanto para quem precisar deste guia no futuro.