Participação da MATERA Systems no JavaOne 2011

Pelo segundo ano consecutivo a MATERA Systems marcou presença na maior conferência de desenvolvedores Java do mundo, o JavaOne . Na edição deste ano o colaborador Danival Calegari, em conjunto com Alberto “Dr. Spock” Lemos, apresentaram técnicas para melhoria da automação de testes de processos batch usando linguagens específicas de domínio, as DSL (Domain Specific Languages).

O tema apresentado foi proposto com base em dois trabalhos desenvolvidos para um cliente da MATERA Systems, onde foi feita a automação de testes em um produto já existente do próprio cliente e foi feito o desenvolvimento de uma aplicação nova com uma boa cobertura de testes automatizados. Estas duas aplicações foram utilizadas como estudos de caso na apresentação. O envolvimento do Dr. Spock veio agregar os conhecimentos de um grande conhecedor do assunto, trazendo assim maior riqueza na descrição das técnicas e na análise dos estudos de caso.

O primeiro ponto estabelecido na apresentação foram critérios para uma boa automação de testes. Os critérios utilizados foram estes:

  • Testes automáticos devem ser fáceis de escrever.
    • Quando os testes são difíceis ou trabalhosos de serem escritos, são deixados de lado em momentos de maior pressão (momentos estes onde seriam mais úteis).
  • Testes automáticos devem ser fáceis de executar.
    • Os testes precisam ser executados com um trabalho mínimo de configuração de ambiente, uma vez que se houver um grande trabalho envolvido para isto acabam sendo executados raramente e muitas das vantagens da automação se perdem.
  • Testes automáticos devem ser autocontidos.
    • Não deve haver compartilhamento de recursos para a execução dos testes entre os desenvolvedores. Cada desenvolvedor deve ser capaz de executar os testes sempre que julgar necessário, independente se outro desenvolvedor estiver ou não executando testes simultaneamente.
  • Testes automáticos devem executar de forma rápida.
    • Quando os testes demoram para executar, a tendência é que eles sejam executados poucas vezes durante o desenvolvimento e em momentos críticos são negligenciados.
  • Testes automáticos devem ser mantidos sempre atualizados.
    • Alterações nos requisitos ou refatorações de código sempre devem ser refletidas nos testes. Quando um teste falha, deve ser devido a um erro. Quando há testes desatualizados que estão falhando mas a aplicação está correta, os testes perdem toda sua utilizade e tornam-se um investimento disperdiçado.

Também foram levantados alguns desafios característicos para a automação de testes em processo batch:

  • Como os testes automatizados irão controlar o início e o término do processo?
  • Como evitar que processos periódicos executem de forma concorrente com os testes e provoquem resultados incorretos?

Foram então estabelecidas algumas tecnicas que permitem a construção de uma boa infraestrutura de automação de testes. Esta infraestrutura visa tanto tornar possível atingir parte dos critérios para uma boa automação de testes quanto a solução dos problemas relacionados a aplicações em batch. As técnicas apresentadas serão descritas a seguir:

Utilize uma DSL para tornar os testes fáceis de escrever e de serem mantidos atualizados.

As DSL (linguagens específicas para um domínio) permitem que os testes sejam escritos na linguagem do negócio, mais afastada da linguagem técnica. Isto permite que pessoas com conhecimentos básicos de programação possam escrever testes automatizados. Nos dois estudos de caso conduzidos na MATERA Systems, os desenvolvedores criavam testes automáticos básicos para as funcionalidades desenvolvidas e os analistas de testes enriqueciam os testes com um grande número de cenários.

Uma coisa importante na aplicação desta técnica é a extensão da DSL para cada funcionalidade implementada. Assim, sempre que uma nova funcionalidade for desenvolvida, a DSL deve ser alterada para que os conceitos novos sejam incorporados, para só então os testes automatizados serem implementados. As etapas (implementação, extensão da DSL e escrita dos testes) devem ser incluídas no planejamento, o que deixa a equipe confortável em realizá-las.

Nos estudos de caso realizados, houve um engajamento muito grande da equipe nesta forma de trabalho de tal forma que ninguém mais queria fazer os testes executando diretamente a aplicação, uma vez que era mais fácil escrever o caso de testes com a DSL .

Crie uma infraestrutura com base em scripts e DSL interna para tornar os testes fáceis de executar.

A escolha de DSL interna, criada como uma biblioteca (API) de uma linguagem de programação, permite que sejam usadas as ferramentas disponíveis para aquela linguagem de programação. Esta característica, associada com um framework de testes de mercado, permitem uma execução fácil dos testes através das próprias ferramentas de desenvolvimento, com um simples clique de botão.

Para a montagem dos ambientes, recomenda-se o investimento em scripts ao invés de roteiros para a configuração dos recursos necessários para a execução da aplicação e dos testes.

Use máquinas virtuais (VM) para tornar os testes autocontidos.

Procure criar máquinas virtuais com os recursos que a aplicação precisa, como bancos de dados e servidores de filas. Se possível, prefira máquinas virtuais com softwares gratuitos, como Linux e Oracle Express, uma vez que não há problemas de licenças na replicação destas máquinas virtuais entre os desenvolvedores.

A apresentação feita no JavaOne 2011 está disponível para consulta no site Slideshare. Basta acessá-la pela URL:

Por DANIVAL CALEGARI

Postado em: 30 de novembro de 2011

Confira outros artigos do nosso blog

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

Three laws that enable agile software development

09 de março de 2017

Celso Gonçalves Junior

Medindo performance de uma API REST

21 de fevereiro de 2017

Monise Costa

Deixe seu comentário