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

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

Uma proposta de Clean Architecure com Modelo de Atores