Pex + TDD

Olá, pessoal!

Na última edição da .NET Magazine (nº 90), saiu meu artigo falando sobre a ferramenta Pex e seu uso dentro do TDD.

imageO Pex (http://research.microsoft.com/en-us/projects/pex/) é uma ferramenta de geração de código de testes automatizada, ou seja, ela gera as unit tests para você a partir do código-fonte já desenvolvido. Em um primeiro momento não vemos como isso pode se relacionar com TDD, já que a idéia desta técnica é escrever testes antes do código do programa que estamos desenvolvendo. Realmente ferramentas como o Pex não têm utilidade neste cenário quando utilizado o conceito de testes baseado em exemplos. Testes baseados em exemplos são aqueles nos quais nós temos uma entrada de dados e um resultado conhecido, e testamos o nosso código para garantir que o processamento produza a saída esperada.

Para fazer sentido o uso de ferramentas de geração de testes automatizada, precisamos de um conceito de testes de unidade diferente. Precisamos pensar nossos testes como teorias.

Podemos considerar que uma teoria é falsa se encontrarmos alguma condição que a invalide. Por exemplo, se tivermos uma teoria que “a cor dos olhos de uma pessoa é sempre igual para ambos os olhos”, basta que encontremos uma pessoa com heterocromia para rejeitarmos a idéia. É baseado neste conceito que o Pex pode ser utilizado numa abordagem TDD. Ao criarmos um teste de unidade parametrizável (ou seja, que receba dados de entrada), o Pex pode explorar o código em busca de situações de entrada que façam nosso programa falhar (encontrar furos no código que levem a bugs), e assim podemos refatorá-lo (da maneira que o TDD dita).

É claro que no artigo (http://www.devmedia.com.br/post-22581-Geracao-automatica-de-testes-numa-abordagem-TDD.html) eu explico isso melhor e com mais detalhes, não vou fazê-lo aqui para que os editores da revista fiquem bravos comigo, rs. Mas segue um link onde essa idéia de testes com teorias é explorado: http://shareandenjoy.saff.net/tdd-specifications.pdf.

[]’s e até a próxima!

Comentários

Postagens mais visitadas deste blog

Trocando configurações padrão do Live TIM

Uma proposta de Clean Architecure com Modelo de Atores

Testes automatizados em sistemas autenticados com certificados digitais, usando Selenium e PhantomJS