Métrica simples e útil? Use RCT
Publicado por Ivan Sanchez em Sexta-feira, Maio 11, 2007
RCT, ou Relação Código-Teste (Code To Test Ratio) é uma métrica extremamente simples, que permite verificar como andam os testes durante o projeto:
RCT = Linhas de Teste / Linhas de Código
Normalmente o valor obtido varia entre 0, quando não existe nenhum teste, e 1,5, quando se escreve 50% de linhas de teste a mais do que linhas de código. Até hoje não vi muitos projetos passarem deste valor, mas já é bastante normal ver projetos nesta faixa. Veja alguns exemplos no Code to Test Ratio Showdown.
O interessante desta métrica é que ela pode servir para acompanhar a adoção de TDD e verificar se os testes não estão sendo deixados de lado. Por isso ela deve ser coletada periodicamente, e deve-se buscar um valor que varie muito pouco quando a utilização de testes estiver satisfatória.
Atualmente estou trabalhando num projeto onde a RCT é 1.3. Em projetos Ruby on Rails a RCT é facimente obtido via rake stats:
Code LOC: 549 Test LOC: 690 Code to Test Ratio: 1:1.3
O projeto ainda está no começo (pouco mais de 500 linhas de código), mas o meu objetivo é que minha RCT nunca baixe de 1.3, e se possível alcance 1.4 quando eu passar a fazer mais testes de integração
E no seu projeto, quantas linhas de teste você gera para cada linha de código? Se você obter a RCT do seu projeto, divulgue-a nos comentários!
Marcos Silva Pereira disse
Conhece alguma ferramenta Java para verificar, de maneira tão rapida, o RCT?
Ivan Sanchez disse
Cara, pra Java eu costumo usar o comando “wc -l” do Linux para contar as linhas dos meus arquivos .java. Não é muito amigável, mas funciona.
Dentro de IDE só conheço o plugin Metrics do Eclipse. Ele permite verificar LOC (Lines of Code), mas desconheço se é possível distinguir LOC de LOT (Lines of Test).
De qualquer forma a RCT é tão simples que escrever um programa para calculá-la deve levar pouquíssimo tempo.
Quem sabe, se houver mais gente interessada em usar esta métrica, eu posso ajudar a criar um plugin do Eclipse para calculá-la….
Rodrigo disse
Definição de rct e caracteristicas do mesmo