segunda-feira, 27 de junho de 2016

Concordion

Tenho tentado melhorar minha prática como programador Java e partido para conhecer melhor o mundo da programação através de automação de testes. Tipicamente a primeira coisa que se vê pela frente, até pelas facilidades das IDE, é o JUnit. Mas existe um mundo de opções de teste para códigos Java e um me chamou muito a atenção, o Concordion.

Concordion é uma ferramenta que usa uma abordagem por exemplos de comportamento (examples of behavior). O mais interessante é que escrevendo a especificação em alto nível e inserindo exemplos que englobam o comportamento esperado do código em todas as suas possibilidades ou nas possibilidades permitidas/esperadas, já está se escrevendo o teste para o sistema. Isso é possível escrevendo a especificação com o script Markdown ou com HTML.

Por exemplo, imagine a seguinte especificação:

Quebrador de Nomes

Para tornar os emails para clientes algo mais personalizado, deseja-se saber o primeiro nome e o último nome do cliente. No entanto, ao se cadastrar, o cliente informa o nome inteiro apenas. 

O sistema, portanto, deve quebrar o nome em suas partes.

Exemplo

O nome Jane Smith deve ser quebrado no primeiro nome Jane e o último nome Smith.

Exemplo

O nome completo Sting deve ser quebrado apenas no primeiro nome Sting.

Exemplo

O nome completo Sir Bob Geldof deve ser quebrado em seu primeiro nome Bob e o último Geldof.

Exemplo

O nome Maria de los Santos deve ser quebrado em Maria e, como último nome, de los Santos.
O legal dessa especificação é que está bastante claro para o cliente e para o desenvolvedor, não deixando brechas para desentendimentos.

Por trás dessa especificação está um Markdown simples de escrever:



Através dos links no script, o código de teste:
cria o HTML e insere os resultados. No HTML gerado é possível ver se todos os testes foram executados, se houve erros e quando há, verificar o stack.

Para se divertir, esse é meu código para separador de nomes:
O projeto também pode ser baixado com o Git no seguinte repositório: https://leandro_stlima@bitbucket.org/leandro_stlima/concordion.git
No próximo post eu vou falar sobre as ferramentas de testes para banco de dados.