Testando agressivamente com Ruby

January 17th, 2008 § 0 comments

Um dos maiores problemas com o desenvolvimento guiado por testes é saber se você está testando o que realmente interessa. Muitas vezes, detalhes triviais de como um determinado trecho de código é implementando tornam os testes completamente inúteis sem que você perceba.

Um ferramenta cobertura, por melhor que seja, é inútil nesse momento porque ela pode dizer somente que o código foi executado mas não de que forma foi executado. Condições de inicialização e valores assumidos são especialmente perigosos no que tange a essa faceta de TDD.

Uma ferramenta que está se tornando essencial para mim nos últimos tempos é o Heclke. O Heckle é um testador de mutações. O que ele faz é modificar seu código de maneiras inusitadas e rodar os testes novamente para ver se os mesmos ainda estão passando. Não é uma ferramenta perfeita–há momentos em que as mutações realmente são inúteis ou em que os testes entram em um loop infinito–mas já faz um trabalho enorme em identificar potenciais caminhas não tratados no seu código.

A instalação é simples:

sudo gem install heckle

E o uso também é bem simples:

heckle class_name [method_name] -t [test_file]

É possível usá-lo também com RSpec:

spec spec_file --heckle class_name[#method_name]

O nome do método é opcional e se não for informado, todos os métodos da classe serão modificados. Os testes podem levar um tempo maior para rodar nesse caso mas os resultados são bem positivos.

Para um exemplo mais detalhado, leia o texto do anúncio original do Heckle. O programa atualmente é bem mais sofisticado mas o princípio é o mesmo.

Leave a Reply

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

What's this?

You are currently reading Testando agressivamente com Ruby at Superfície Reflexiva.

meta