Eu sou muito novo na abordagem TDD e meus primeiros experimentos dizem que escrever 1 linha de código funcional significa escrever cerca de 2-3 linhas de código de teste. Portanto, no caso de escrever 1000 LOC, toda a base de código, incluindo testes, será algo como ~ 3500 LOC.
Isso é considerado normal? Qual é a proporção no código que você escreve?
testing
unit-testing
tdd
metrics
Andrey Agibalov
fonte
fonte
Respostas:
1: 3 é normal com TDD.
Da minha experiência, e também de outras citações, lembro.
fonte
Existem variações baseadas em diferentes estilos e idiomas de codificação. No entanto, independentemente do idioma usado, a maior variação é você.
Robert Martin disse uma vez:
Isso me fez pensar. Testes mais específicos significam mais código de teste. Um código de produção mais genérico significa menos código; portanto, as taxas de teste / código devem aumentar à medida que o código evolui.
Mas espere, isso também não é bom. Em alguns casos específicos, por exemplo, quando você define um determinado algoritmo, você pode ter apenas 6 a 10 linhas de código contendo alguns "se" s, um tempo e talvez 2-3 recursões. Posso dizer que esse código provavelmente terá mais 100 linhas de código de teste.
Em um projeto real, algo maior que apenas alguns algoritmos, a relação teste / código deve estar entre 1: 1 e 2: 1. Se ficar acima de 2: 1, é um cheiro que você tem testes que devem ser refatorados ou excluídos (ou talvez código difícil de testar). Você sempre deve investir a mesma quantidade de cuidado e refatoração em seus testes e em seu código de produção.
De qualquer forma, a melhor resposta para sua pergunta talvez seja "Complexidade Ciclomática" . Quanto maior a complexidade ciclomática do seu método, mais exponencialmente mais testes você precisa escrever para cobrir todos os casos.
fonte
A proporção varia de acordo com o tamanho dos seus métodos. O tamanho dos seus métodos varia de acordo com o estilo de programação, idioma e domínio do problema.
Se seus métodos são curtos, 3: 1 é razoável. Se seus métodos são longos, 3: 1 está no lado alto.
Então, para responder sua pergunta, isso depende. :-)
fonte
Para aplicações críticas de software, a proporção usual é de um dia de teste para cada 10 LoC funcional.
E isso não está contando TDD, que não é sobre teste, mas sobre especificação.
fonte
O tamanho do meu código de teste é aproximadamente metade do que o código 'real' é global. Fazer o contrário é indicativo de que seus testes são muito complexos e / ou seu código é muito difícil de testar e / ou seu código é muito denso / complexo.
Ou você está simplesmente testando demais e desperdiçando seu tempo com retornos decrescentes.
Veja também "quando o teste de unidade é inadequado ou desnecessário?"
fonte
Minha proporção é de 2-1 a 10-1 (código a ser testado). Verifique se o teste é sobre valor / comportamento e não sobre implementação.
fonte