BIGtheme.net http://bigtheme.net/ecommerce/opencart OpenCart Templates

APRENDA A CATEGORIZAR TESTES COM JUNIT (Autor: Elias Nogueira)

É comum ter dúvidas de como organizar os nossos testes para execução. Quem utiliza o JUnit como apoio a automação de teste (com Selenium e Appium, por exemplo ou com qualquer outra ferramenta) pode usar um recurso do próprio JUnit para isso.

O que são as Categorias no JUnit

É uma anotação no JUnit que categoriza e organiza um teste. Isso nos dá o poder de escolher quais testes serão ou não serão executados dado uma categoria.

Esta funcionalidade foi incluída no JUnit 4.8, consistindo em 4 anotações

Anotação Descrição
@Category Identifica uma categoria em um teste. Obrigatoriamente deve ser adicionado aos métodos de teste, ou seja, aqueles que tem o @Test
@IncludeCategory Inclui uma ou mais categorias em uma suíte de teste
@ExcludeCategory Exclui uma ou mas categorias em uma suíte de teste
@RunWith(Categories.class) Informa a uma suíte de teste que a execução será feita através de Categorias

Como criar uma Categoria?

A criação da Categoria é simples, mas primeiros temos uma pré condição: ela só pode ser adicionada nos métodos de teste (os que possuem a anotação @Test)

A Categoria é uma Interface em Java, logo para criar uma categoria temos que criar uma interface com o nome que desejarmos. Este nome da interface será o identificador da Categoria.

Nota: uma interface em Java é criada através da palavra-chave interface (veja a imagem abaixo)

No exemplo abaixo temos três interfaces, que compõem as seguintes categorias (com o intuito de aprendizado):

  • SmokeTests: testes prioritários (sem estes testes sabemos que a aplicação não está funcionando como deveria)
  • TestesPositivos: testes que sempre refletem a utilização correta do requisito/funcionalidade. São os casos de sucesso.
  • TestesNegativos: testes que sempre refletem a utilização negativa do requisito/funcionalidade. São os casos de erro (mas erros esperados).

Como categorizar meu teste (aplicar uma categoria criada)?

Depois de ter criado a(s) Categoria(s) precisamos inseri-la nos testes que desejarmos. Há duas formas de fazer esta inserção como mostra a tabela abaixo.

Forma Descrição Exemplo
Inserir apenas uma Categoria Adicionar o nome da Categoria entre parênteses, seguida pelo .class @Category(TestesPositivos.class)
Inserir mais de uma Categoria Adicionar dentro do parênteses um abrir e fechar chaves ( { } ) e, dentro da chaves colocar o nome da Categoria. Para adicionar a próxima é necessário adicionar uma vírula @Category( { SmokeTests.class, TestesPositivos.class } )

Lembre-se que a Categoria será adicionada logo depois do @Test. Abaixo estão os exemplos com apenas uma Categoria e com mais de uma categoria.

Como executar uma (ou mais) Categorias?

Para executar especificamente na categoria é necessário criar uma Suíte de Teste no JUnit. A explicação abaixo da criação da Suíte de Teste serve apenas para a execução de Categorias.

Será necessário adicionar três informações a nossa Suíte de Teste (que será uma classe sem nenhum conteúdo):

  • Anotação @RunWith informando que executaremos apenas Categorias
  • Anotação @IncludeCategory para incluir as Categorias ou @ExcludeCategory para excluir as Categorias da execução (explicação logo abaixo)
  • Anotação @SuiteClasses com as classes/scripts que serão executados
@RunWith

Esta anotação informará à suíte como/por quem ela será executada. Como estamos falando de Categorias colocaremos como parâmetro a classeCategories.class

@IncludeCategory

Sempre que desejarmos incluir uma categoria na execução usaremos esta anotação. A suíte passa a executar somente a(s) Categoria(s) que estiver(em) informada(s).

Se incluirmos apenas uma Categoria basta colocar o nome da Categoria como parâmetro. Se incluirmos mais de uma Categoria, devemos coloca-las separadas por vírgula, dentro de chaves.

Assim a suíte irá executar somente os testes que possuírem aquelas Categorias identificadas.

@ExcludeCategory

Sempre que desejarmos excluir uma categoria na execução usaremos esta anotação. A suíte passa a executar somente a(s) Categoria(s) que não estiver(em) informada(s).

Se desejarmos excluir apenas uma Categoria basta colocar o nome da Categoria como parâmetro. Se desejarmos excluir mais de uma Categoria, devemos coloca-las separadas por vírgula, dentro de chaves.

Assim a suíte irá executar somente os testes que possuírem aquelas Categorias identificadas.

@SuiteClasses

Informamos a suíte quais classes/scripts serão executados. Os testes destas classes/suítes serão executados de acordo com o @IncludeCategory ou@ExcludeCategory.

Se desejarmos incluir apenas uma classe/script basta colocar o nome dele como parâmetro. Se desejarmos incluir mais de uma classe/script, devemos coloca-las separadas por vírgula, dentro de chaves.

Exemplo

Abaixo temos um exemplo a suíte Smoke_Tests que incluiu as classes TesteLogin e TesteProduto na execução para a categoria SmokeTest

Agora dê uma olhada nas classes TesteLogin e TesteProduto

Notem que o resultado de cada teste é escrever o nome da método dele próprio.

O que será escrito na execução desta suíte? Dê uma olhada na imagem abaixo:

Como a suíte incluiu apenas a Categoria SmokeTests apenas o teste loginComSucesso da classe TesteLogin e pesquisarProduto da classe TesteProdutoforam executadas.

Como posso aplicar a Categoria nos meus testes do dia a dia?

Se você utiliza o JUnit como apoio a criação de scripts de testes desenvolvidos em Java você pode utilizá-lo com qualquer ferramenta/api de desenvolvimento de testes em qualquer nível. Por exemplo:

  • Na utilização do RestAssured para categorizar as execuções dos testes para uma API Rest
  • Na utilização do Selenium WebDriver para categorizar as execuções dos testes para uma página web
  • Na utilização do próprio JUnit para categorizar as execuções de testes unitários
  • Na utilização do Appium para categorizar as execuções de testes para dispositivos móveis

Projeto no GitHub

No GitHub da Qualister há um projeto de exemplo. Este projeto serve como exemplo e referência pra você 🙂

https://github.com/qualister-consultoria/categoria…

Desafio

Crie um projeto ou mesmo analise as classes de teste e responda como será a execução destas suítes de teste:

  • Suite_TestesNegativos: inclui as classes TesteLogin e TesteProdutos e possui um @IncludeCategory para a categoria TestesNegativos
  • Suite TestesPositivos: inclui as classes TesteLogin e TesteProdutos e possui um @IncludeCategory para a categoria TestesPositivos e um@ExcludeCategory para a categoria SmokeTests

Estas mesmas suítes já estão prontas no GitHub do projeto.

Até a próxima!

Autor: Elias Nogueira
Fonte: http://www.qualister.com.br/blog/aprenda-a-categorizar-testes-com-junit

About Luiz Lohn

Avatar
Luiz Lohn trabalha como QA Engineer em uma multinacional, além de realizar palestras e consultorias em empresas. Atua como um dos coordenadores do GUTS-SC (Grupo de usuário de teste de software), membro ativo na comunidade de qualidade e teste de software, ministra palestras e cursos. Especializando-se em segurança web e mobile.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Page Reader Press Enter to Read Page Content Out Loud Press Enter to Pause or Restart Reading Page Content Out Loud Press Enter to Stop Reading Page Content Out Loud Screen Reader Support