O que é uma cobertura de código razoável % para testes unitários (e porquê)? [fechado]

se mandatasse uma percentagem mínima de cobertura de código para testes unitários, talvez mesmo como um requisito para se comprometer com um repositório, qual seria?

por favor, explique como chegou à sua resposta (uma vez que se tudo o que fez foi escolher um número, então eu poderia ter feito tudo isso sozinho;)

Author: Martin G, 2008-09-18

30 answers

Esta prosa de Alberto Savoia responde precisamente a essa pergunta.):

Http://www.artima.com/forums/flat.jsp?forum=106&thread=204677

Testivus Sobre A Cobertura Do Ensaio

Uma manhã cedo, um programador perguntou o Grande Mestre: "Estou pronto para fazer alguns testes de unidade. Que Cobertura de código devo procurar para?" O Grande Mestre respondeu: Não te preocupes. cobertura, apenas faça alguns bons testes." O programador sorriu, curvou-se e ... esquerda.

...

Mais tarde naquele dia, um segundo programador fiz a mesma pergunta. O grande mestre apontou para um pote de água fervente e disse: Quantos grãos de arroz devo pôr no pote?" O programador está intrigado., replied: Como posso dizer-te? Depende de quantas pessoas precisas. alimentação, como famintos são, que outros comida que estás a servir, quanto arroz você tem disponível, e assim por diante." "Exatamente", disse o grande mestre. O segundo programador sorriu, curvou-se, esquerdar.

...

No fim do dia, um terceiro o programador veio e perguntou o mesmo pergunta sobre cobertura de código. "Oitenta por cento e nada menos!"Respondeu o mestre com uma voz severa, a bater o punho na mesa.

O terceiro o programador sorriu, curvou-se, esquerdar.

...

Após esta última Resposta, Um jovem o aprendiz aproximou-se do grande mestre: "Grande mestre, hoje ouvi-o responder à mesma pergunta sobre code coverage with three different resposta. Por quê?" O grande mestre levantou-se da sua Presidente: "Vem tomar um chá fresco comigo e vamos falar sobre isso." Depois de encherem os copos com chá verde e fumegante, o grande o mestre começou a responder: "O primeiro programador é novo e está a começar a testar. Neste momento ele tem um monte de código e não teste. Ele tem um longo caminho a percorrer; foco na cobertura de código neste momento seria deprimente e inútil. É melhor que se habitue. a escrever e a fazer alguns testes. Ele pode. preocupa-te com a cobertura mais tarde."

" o segundo programador, por outro lado, é bastante experiência tanto na programação e teste. Quando respondeu perguntando - lhe quantos grãos de arroz eu deveria colocar em um pote, eu ajudou-a a perceber que a quantidade de os testes necessários dependem de um número de factores, e ela sabe disso. factores melhores do que eu. é ela. código, afinal. Não existe um único, simples, responde, e ela é esperta o suficiente para lidar com a verdade e trabalhar com que."

"Estou a ver", disse o jovem aprendiz., "mas se não houver um simples responde, Então porque respondeste ao ... terceira programador ' 80% e nada menos?" O grande mestre riu-se tanto e ... alto que sua barriga, prova que ele bebia mais do que apenas chá verde, a saltar para cima e para baixo. "O terceiro programador só quer respostas simples, mesmo quando há sem respostas simples ... e depois não segue-os na mesma." O jovem aprendiz e o grisalho o grande mestre acabou de beber os seus chá em silêncio contemplativo.
 1132
Author: Jon Limjap, 2016-12-22 17:51:14

Cobertura de código é uma métrica enganosa se 100% cobertura é o seu objetivo (em vez de 100% teste de todas as características).

    Podes ganhar 100% se acertares em todas as linhas uma vez. No entanto, você ainda pode perder o teste de uma determinada sequência (caminho lógico) em que essas linhas são atingidas.
  • Você não conseguiu um 100%, mas ainda assim testou todos os seus 80%/freq usado código-caminhos. Ter testes que testam todos os "throw ExceptionTypeX" ou guarda de programação defensiva semelhante que você colocou é um "bom ter" não um "deve ter"
Por isso, confie em si ou nos seus programadores para serem minuciosos e cobrirem todos os caminhos através do seu código. Seja pragmático e não persiga a cobertura mágica 100%. Se você TDD seu código você deve obter uma cobertura de 90% + como um Bônus. Use code-coverage para destacar pedaços de código que você falhou (não deve acontecer se você TDD embora.. desde que você escreve código apenas para fazer um teste passar. Nenhum código pode existir sem o teste do parceiro. )
 73
Author: Gishu, 2011-10-04 08:38:52

A cobertura do Código é óptima, mas a cobertura da funcionalidade é ainda melhor. Não acredito em cobrir todas as linhas que escrevo. Mas eu acredito em escrever 100% Cobertura de teste de toda a funcionalidade que eu quero fornecer (mesmo para as características extra legal que eu vim comigo e que não foram discutidos durante as reuniões).

Não me interessa se teria um código que não esteja coberto em testes, mas importaria-me se reformulasse o meu código e acabasse por ter um comportamento diferente. Portanto, 100% de cobertura de funcionalidade é o meu único alvo.
 45
Author: tofi9, 2009-04-27 22:56:46

A resposta aceite faz um bom ponto - não há um único número que faça sentido como um padrão para cada projecto. Há projetos que simplesmente não precisam de tal padrão. Quando a resposta aceite fica aquém, em minha opinião, é descrever como se pode tomar essa decisão para um determinado projecto.

Vou tentar fazê-lo. Não sou especialista em Engenharia de testes e gostaria de ver uma resposta mais informada.

Quando definir a cobertura do Código requisitos

Primeiro, porque quer impor tal norma? Em geral, quando você quer introduzir confiança empírica em seu processo. O que quero dizer com "confiança empírica"? Bem, o verdadeiro objectivo correcção . Para a maioria dos softwares, não podemos saber isso através de todas as entradas, então nos contentamos em dizer que o código é bem testado . Isto é mais conhecido, mas continua a ser um padrão subjectivo: estará sempre aberto ao debate sobre se o Senhor Presidente em exercício do conselho está ou não de acordo. já o conheci. Esses debates são úteis e devem ocorrer, mas também expõem a incerteza.

A cobertura do Código é uma medição objetiva: uma vez que você veja o seu relatório de cobertura, não há ambiguidade sobre se as normas foram cumpridas são úteis. Prova a correcção? De modo algum, mas tem uma relação clara com o quão bem testado o código é, o que, por sua vez, é a nossa melhor maneira de aumentar a confiança na sua correcção. Code code coverage é uma aproximação mensurável de imensurável qualidades que nos interessam.

Alguns casos específicos em que uma norma empírica pode acrescentar valor:

  • satisfazer as partes interessadas. para muitos projectos, existem vários actores que têm interesse na qualidade do software que podem não estar envolvidos no desenvolvimento quotidiano do software (gestores, pistas técnicas, etc.) Dizer "nós vamos escrever todos os testes que realmente precisamos" não é convincente: eles ou precisam confiar inteiramente, ou verificar com o fechamento contínuo supervisão (assumindo que têm o entendimento técnico para o fazer.) Fornecer padrões mensuráveis e explicar como eles razoavelmente aproximar os objetivos reais é melhor.
  • Para normalizar o comportamento da equipa.Para além das partes interessadas, se estiver a trabalhar numa equipa onde várias pessoas estão a escrever códigos e testes, há margem para ambiguidades para o que se qualifica como "bem testado"."Será que todos os seus colegas têm a mesma ideia de que nível de teste é bom o suficiente? Provavelmente não. Comer reconciliaste isto? Encontre uma métrica em que todos possam concordar e aceitá-la como uma aproximação razoável. Isto é especialmente (mas não exclusivamente) útil em grandes equipes, onde as pistas podem não ter supervisão direta sobre Desenvolvedores Júnior, por exemplo. Redes de confiança também importam, mas sem medidas objetivas, é fácil para o comportamento de grupo se tornar inconsistente, mesmo que todos estejam agindo de boa fé.
  • Para te manteres honesto.Mesmo que sejas o único desenvolvedor e apenas stakeholder para o seu projeto, você pode ter certas qualidades em mente para o software. Em vez de fazer avaliações subjetivas sobre o quão bem testado o software é (o que requer trabalho), você pode usar a cobertura de código como uma aproximação razoável, e deixar as máquinas medi-lo para você.

Quais as métricas a utilizar

A cobertura do código não é uma única métrica; existem várias maneiras diferentes de medir a cobertura. Qual deles você pode definir um padrão depende do que estás a usar esse padrão para satisfazer.

Usarei duas métricas comuns como exemplos de quando poderá usá-las para estabelecer padrões:

  • cobertura da Declaração: que percentagem de declarações foram executadas durante os testes? Útil para ter uma noção da cobertura física do seu código: quanto do código que escrevi eu realmente testei?
    • Este tipo de cobertura suporta um argumento de correcção mais fraco, mas também é mais fácil de conseguir. Se você está apenas usando a cobertura de código para garantir que as coisas são testadas (e não como um indicador de qualidade de teste além disso) então a cobertura de declaração é provavelmente suficiente.
  • cobertura do ramo : quando existe uma lógica de ramificação (por exemplo, um if), ambos os ramos foram avaliados? Isto dá um melhor sentido da cobertura lógica do seu código: quantos dos possíveis caminhos que o meu código pode percorrer já testei?
      Este tipo de cobertura é ... um indicador muito melhor de que um programa foi testado através de um conjunto abrangente de entradas. Se você está usando a cobertura de código como sua melhor aproximação empírica para a confiança na correção, você deve definir padrões baseados na cobertura de branch ou similar.

Existem muitas outras métricas (a cobertura das linhas é semelhante à cobertura das declarações, mas produz diferentes resultados numéricos para as declarações multi-linhas, por exemplo; a cobertura condicional e a cobertura do canal é semelhante à cobertura do ramo cobertura, mas refletir uma visão mais detalhada das possíveis permutações de execução do programa que você pode encontrar.)

Qual a percentagem a exigir

Finalmente, voltando à questão original: se você definir padrões de cobertura de código, qual deve ser esse número? Espero que esteja claro neste momento que estamos a falar de uma aproximação para começar, por isso qualquer número que escolhermos será inerentemente aproximado. Alguns números que alguém pode ter escolha:
  • 100%. Você pode escolher isso porque você quer ter certeza de que tudo é testado. Isso não lhe dá nenhuma visão sobre a qualidade do teste, mas lhe diz que algum teste de alguma qualidade tocou todas as declarações (ou branch, etc.) Mais uma vez, isto volta ao grau de confiança: se a sua cobertura é inferior a 100%, você sabe algum subconjunto do seu código não é testado.
      Alguns podem argumentar que isto é uma tolice, e você só deve testar as partes do seu corpo. código que são realmente importantes. Eu diria que você também deve manter apenas as partes do seu código que são realmente importantes. A cobertura do código pode ser melhorada removendo o código não testado, também.
  • 99% (ou 95%, outros números nos anos 90.) Apropriado nos casos em que pretende transmitir um nível de confiança semelhante a 100%, mas deixar alguma margem para não se preocupar com o canto ocasional difícil de testar de codigo.
  • 80%. Eu vi este número em uso algumas vezes, e não sei inteiramente onde ele se origina. EU acho que pode ser um desvio estranho da regra 80-20; geralmente, a intenção aqui é mostrar que a maioria do seu código é testada. (Sim, 51% também seria "a maioria", mas 80% é mais reflexivo do que a maioria das pessoas significa por maioria.) Isto é apropriado para casos de Meio-campo onde "bem testado" não é uma alta prioridade (você não quer esforço de desperdício em testes de baixo valor), mas é suficiente de uma prioridade que você ainda gostaria de ter algum padrão no lugar.
  • Ainda não vi números abaixo dos 80% na prática, e custa-me imaginar um caso em que se possa defini-los. O papel destes padrões é aumentar a confiança na correção, e números abaixo de 80% não são particularmente inspiradores de confiança. (Sim, isto é subjetivo, mas novamente, a idéia é fazer a escolha subjetiva uma vez quando você define o padrão, e então use uma medição objetiva indo para a frente.)

    Outras notas

    O acima assume que a correcção é o objectivo. Cobertura de código é apenas informação; pode ser relevante para outros objetivos. Por exemplo, se você está preocupado com a manutenção, você provavelmente se preocupa com o acoplamento solto, o que pode ser demonstrado pela testabilidade, que por sua vez pode ser medido (em certas modas) pela cobertura de código. Assim, o seu padrão de cobertura de código fornece uma base empírica para aproximar a qualidade de "manutenção" também.

     30
    Author: killscreen, 2016-01-09 20:44:34
    A minha cobertura de código favorita é 100% com um asterisco. O asterisco vem porque eu prefiro usar ferramentas que me permitem marcar certas linhas como linhas que "não contam". Se eu cobri 100% das linhas que "contam", estou feito.

    O processo subjacente é:

    1. Eu escrevo os meus testes para exercitar todas as funcionalidades e casos de ponta que eu possa pensar (normalmente trabalhando a partir da documentação).
    2. Eu corro as ferramentas de cobertura de código
    3. eu examino quaisquer linhas ou caminhos não coberto e qualquer que eu considere Não importante ou inalcançável (devido à programação defensiva) eu marco como não contando
    4. escrevo novos testes para cobrir as linhas em falta e melhorar a documentação se esses casos não forem mencionados.
    Assim, se eu e os meus colaboradores acrescentarmos um novo código ou alterarmos os testes no futuro, há uma linha brilhante para nos dizer se perdemos algo importante - a cobertura caiu abaixo dos 100%. No entanto, proporciona também a flexibilidade necessária para lidar com diferentes prioridades de teste.
     21
    Author: Eponymous, 2016-04-13 20:01:57
    Eu teria outro anectode na cobertura de testes que gostaria de partilhar. [[1]} Temos um projeto enorme em que, através do twitter, eu notei que, com 700 testes de unidade, só temos cobertura de código de 20% .

    Scott Hanselman respondeu com palavras sábias.:

    São os 20% certos? São os 20% isso representa o código de seus usuários mais? Você poderia adicionar mais 50 testes e adicionar apenas 2%.
    Mais uma vez, volta para o meu ... Testivus na cobertura do Código Resposta. Quanto arroz deve pôr na panela? Depende.
     18
    Author: Jon Limjap, 2017-05-23 12:34:44
    85% seria um bom ponto de partida para os critérios de checkin. Eu provavelmente escolheria uma variedade de barras mais altas para critérios de transporte - dependendo da criticidade dos subsistemas/componentes que estão sendo testados.
     7
    Author: stephbu, 2008-09-18 04:27:43
    Se este fosse um mundo perfeito, 100% do código seria coberto por testes unitários. No entanto, uma vez que este não é um mundo perfeito, é uma questão do que você tem tempo para. Como resultado, eu recomendo focar menos em uma porcentagem específica, e focar mais nas áreas críticas. Se o seu código for bem escrito (ou pelo menos um fac-símile razoável) deve haver vários pontos-chave onde as APIs estão expostas a outro código. Concentrem os vossos esforços de teste nestas APIs. Certifique-se de que o As APIs são 1) bem documentadas e 2) têm casos de teste escritos que correspondem à documentação. Se os resultados esperados não coincidem com os docs, então você tem um bug em seus casos de código, documentação ou teste. Tudo isso é bom para verificar. Boa sorte!
     7
    Author: 64BitBob, 2008-09-18 04:30:24
    Para um sistema bem concebido, onde os testes unitários conduziram o desenvolvimento desde o início, diria que 85% é um número bastante baixo. As pequenas classes concebidas para serem testáveis não devem ser difíceis de cobrir melhor do que isso. É fácil descartar esta questão com algo como:
    • as linhas Cobertas não são iguais à lógica testada e não se deve ler demasiado na percentagem.
    É verdade, mas há alguns pontos importantes a fazer sobre a cobertura do Código. No meu experimente esta métrica é realmente bastante útil, quando usado corretamente. Dito isto, eu não vi todos os sistemas e tenho certeza que há toneladas deles onde é difícil ver a análise de cobertura de código adicionando qualquer valor real. O código pode parecer tão diferente e o escopo do framework de teste disponível pode variar. Além disso, o meu raciocínio diz respeito principalmente a pequenos ciclos de feedback dos testes. Para o produto que estou desenvolvendo o loop de feedback mais curto é bastante flexível, cobrindo tudo a partir da classe ensaios para sinalização entre processos. Testar um subproduto entregável normalmente leva 5 minutos e para um loop de feedback tão curto é realmente possível usar os resultados do teste (e especificamente a métrica de cobertura de código que estamos olhando aqui) para rejeitar ou aceitar commits no repositório.

    Ao usar a métrica de cobertura de código você não deve ter apenas uma porcentagem fixa (arbitrária) que deve ser cumprida.Fazer isto não lhe dá os benefícios reais da cobertura de código. análise na minha opinião. Em vez disso, defina as seguintes métricas:

    • Marca de água baixa( LWM), o menor número de linhas não descobertas alguma vez vistas no sistema em ensaio
    • Marca de água elevada( HWM), a percentagem de cobertura de código mais elevada alguma vez observada para o sistema em ensaio

    O novo código só pode ser adicionado se não subirmos o LWM e não subirmos o HWM. Por outras palavras, a cobertura do código é proibida de diminuir , devendo ser abrangido um novo código. Repare como eu dizer deve e não deve (explicado abaixo).

    Mas isto não significa que será impossível limpar o lixo antigo e bem testado que já não tem utilidade para si? Sim, e é por isso que tens de ser pragmática nestas coisas. Há situações em que as regras têm de ser quebradas, mas para a vossa típica integração diária, a minha experiência é que estas métricas são bastante úteis. Eles dão as duas implicações seguintes.
    • O código testável é promovido. Adicionar novo código você realmente tem que fazer um esforço para tornar o código testável, porque você terá que tentar cobrir tudo isso com seus casos de teste. O código testável normalmente é uma coisa boa.

    • A cobertura do teste para o código legado está aumentando ao longo do tempo. Ao adicionar um novo código e não ser capaz de cobri-lo com um caso de teste, pode-se tentar cobrir algum código legado em vez de contornar a regra LWM. Isto às vezes necessária batota pelo menos dá o efeito colateral positivo que a cobertura de o código legado irá aumentar com o tempo, tornando a aplicação aparentemente rigorosa destas regras bastante pragmática na prática.

    E mais uma vez, se o ciclo de feedback for demasiado longo, pode ser completamente impraticável configurar algo como isto no processo de integração.

    Também gostaria de mencionar dois benefícios gerais da métrica de cobertura do Código.
    • A análise de cobertura de código é parte da análise dinâmica de código (em oposição à estática, ou seja, a fieira). Problemas encontrados durante a análise dinâmica do código (por ferramentas como a família purify, http://www-03.ibm.com/software/products/en/rational-purify-family ) são coisas como leituras de memória não inicializadas( UMR), vazamentos de memória, etc. estes problemas só podem ser encontrados se o código for coberto por um caso de teste executado. O código que é o mais difícil de cobrir em um caso de teste é geralmente os casos anormais no sistema, mas se você quiser que o sistema falhe graciosamente (ou seja, rastreamento de erro em vez disso de crash) você pode querer colocar algum esforço para cobrir os casos anormais na análise de código dinâmico também. Com um pouco de azar, um UMR pode levar a uma segfault ou pior.

    • As pessoas se orgulham em manter 100% para o novo código, e as pessoas discutem problemas de teste com uma paixão semelhante a outros problemas de implementação. Como esta função pode ser escrita de forma mais testável? Como é que tentarias cobrir este caso anormal?, etc.

    E um negativo, para completar.

      Num grande projecto com muitos programadores envolvidos, nem todos vão ser um génio dos testes, com certeza. algumas pessoas tendem a usar a métrica de cobertura de código como prova de que o código é testado e isto está muito longe da verdade, como mencionado em muitas das outras respostas a esta pergunta. É uma métrica que pode dar-lhe alguns benefícios agradáveis se usado corretamente, mas se for mal utilizado ele pode, de fato, levar a maus testes. Além dos efeitos secundários muito valiosos mencionados acima, uma linha coberta apenas mostra que o sistema sob teste pode alcançar essa linha para alguns dados de entrada e que pode executar sem pendurar ou bater.
     7
    Author: Martin G, 2015-02-10 07:21:57

    Muitas lojas não valorizam os testes, por isso, se você está acima de zero, pelo menos há alguma apreciação do valor - então, indiscutivelmente não-zero não é mau, como muitos ainda são zero.

    No mundo da Rede, as pessoas frequentemente citam 80% como razoável. Mas dizem isso ao nível da solução. Eu prefiro medir ao nível do projeto: 30% pode ser bom para o projeto UI se você tem selênio, etc ou testes manuais, 20% para o projeto camada de dados pode ser bom, mas 95%+ pode ser bastante alcançável para a camada de regras de Negócio, se não for totalmente necessário. Assim, a cobertura global pode ser, digamos, 60%, mas a lógica crítica de negócios pode ser muito maior. Também ouvi isto: aspire a 100% e atingirá 80%, mas aspire a 80% e atingirá 40%.

    Conclusão: aplica a regra 80:20, e deixa a contagem de erros da tua aplicação guiar-te.

     5
    Author: Greg Trevellick, 2016-07-29 23:50:06
    Eu uso a cobertura, e qualquer que seja a percentagem, recomendo manter os valores na tarefa de verificação da cobertura atualizados. No mínimo, continue a aumentar a taxa global e a taxa total para um pouco abaixo da sua cobertura actual, mas Nunca Baixe esses valores. Também ligar a propriedade de construção de formiga para esta tarefa. Se a construção falhar por causa da falta de cobertura, você sabe que alguém adicionou código, mas não testou. Exemplo:
    <cobertura-check linerate="0"
                     branchrate="0"
                     totallinerate="70"
                     totalbranchrate="90"
                     failureproperty="build.failed" />
    
     4
    Author: Gary Kephart, 2009-04-27 23:29:07
    Quando penso que o meu código não é testado o suficiente, e não sei o que testar a seguir, uso a cobertura para me ajudar a decidir o que testar a seguir. Se aumentar a cobertura num teste de unidade, sei que este teste de unidade vale alguma coisa. Isto aplica-se ao código que não está coberto, 50% coberto ou 97% coberto.
     4
    Author: brickner, 2010-05-19 15:34:10

    Se tens feito testes unitários durante um tempo decente, não vejo razão para não estar perto de 95%+. No entanto, no mínimo, eu sempre trabalhei com 80%, mesmo quando novo para testes.

    Este número só deve incluir o código escrito no projecto (exclui quadros, plugins, etc.) e talvez até excluir certas classes compostas inteiramente de código escrito de chamadas para código exterior. Este tipo de chamada deve ser ridicularizada.

     3
    Author: Tony Pitale, 2008-09-18 04:35:32
    De um modo geral, a partir dos vários trabalhos de excelência em Engenharia de melhores práticas que li, 80% para o novo código em testes unitários é o ponto que dá o melhor retorno. Indo acima desse CC% produz uma menor quantidade de defeitos para a quantidade de esforço exercido. Esta é uma melhor prática que é usada por muitas grandes corporações. Infelizmente, a maioria destes resultados são internos às empresas, por isso não há Literaturas públicas para as quais vos possa apontar.
     3
    Author: user17222, 2008-09-18 04:53:45

    A cobertura do Código é grande, mas apenas desde que os benefícios que você obtém dele superem o custo/esforço para alcançá-lo.

    Temos trabalhado com um padrão de 80% há algum tempo, no entanto, acabamos de tomar a decisão de abandonar isto e, em vez disso, estar mais focados nos nossos testes. Concentração na complexa lógica empresarial, etc., Esta decisão foi tomada devido ao tempo cada vez maior que passámos a perseguir a cobertura do código e a manter os testes unitários existentes. Nós sentimos tinha chegado ao ponto em que o benefício que estávamos recebendo de nossa cobertura de código foi considerado menor do que o esforço que tivemos que colocar para alcançá-lo.
     3
    Author: Simon Keep, 2008-09-19 15:23:34

    Check out Crap4j . É uma abordagem um pouco mais sofisticada do que uma cobertura de código simples. Ele combina medidas de cobertura de código com medidas de complexidade, e então mostra que código complexo não é testado atualmente.

     2
    Author: Don Kirkby, 2008-09-18 20:00:52

    A minha resposta a este enigma é ter uma cobertura de linha de 100% do código que pode testar e uma cobertura de linha de 0% do código que não pode testar.

    Minha prática atual em Python é dividir o meu .py módulos em duas pastas: app1/ e app2/ e quando executar testes de unidade calcular a cobertura desses dois pastas e verificar visualmente (I tem automatizar isso um dia) que app1 tem 100% de cobertura e app2 tem 0% de cobertura.

    Quando / se eu descobrir que estes números diferem da norma Investigo e altero o desenho do código para que a cobertura esteja de acordo com o padrão.

    Isto significa que posso recomendar a obtenção de cobertura de 100% do Código da biblioteca.

    Eu também revejo ocasionalmente o app2/ para ver se posso testar qualquer código lá, e se posso transferi-lo para o app1/

    Agora eu não estou muito preocupado com a cobertura agregada porque isso pode variar muito dependendo do tamanho do projeto, mas geralmente eu vi 70% a mais de 90%.

    Com python, eu deveria ser capaz de criar um teste de fumaça que poderia executar automaticamente o meu aplicativo ao medir a cobertura e, espero, ganhar uma aggreagate de 100% ao combinar o teste de fumaça com figuras mais inadequadas.

     2
    Author: quamrana, 2008-09-19 10:11:17

    Ver a cobertura de outra perspectiva: código bem escrito com um fluxo claro de controle é o mais fácil de cobrir, o mais fácil de ler, e geralmente o código menos buggy. Ao escrever código com clareza e cobertura em mente, e ao escrever os testes da unidade em paralelo com o código, você obtém os melhores resultados IMHO.

     2
    Author: , 2009-01-31 11:16:42
    Na minha opinião, a resposta é "depende do tempo que tiveres". Tento alcançar 100%, mas não faço alarido se não o conseguir com o tempo que tenho. Quando faço testes de unidade, uso um chapéu diferente do que uso ao desenvolver o código de produção. Eu penso sobre o que o código testado afirma fazer e quais são as situações que podem quebrá-lo.

    Normalmente sigo os seguintes critérios ou Regras:

    1. Que o teste de unidade deve ser uma forma de documentação sobre o comportamento esperado dos meus códigos, ou seja. a saída esperada dada uma determinada entrada e as exceções que pode lançar que os clientes podem querer pegar (o que os usuários do meu código devem saber?)

    2. Que o teste de unidade deve ajudar-me a descobrir e se as condições que eu ainda não pensei. (Como tornar meu código estável e robusto?)

    Se estas duas regras não produzem 100% de cobertura, que assim seja. Mas uma vez, eu tenho o tempo, analiso os blocos e linhas descobertos e determino se ainda existem casos de teste sem testes unitários ou se o código precisa ser refeito para eliminar os códigos não necessários.
     2
    Author: Mark Menchavez, 2011-08-14 15:13:36
    Eu prefiro fazer BDD, que usa uma combinação de testes de aceitação automatizados, possivelmente outros testes de integração e testes de unidade. Para mim, a questão é Qual deve ser a cobertura alvo do conjunto automatizado de testes. Tirando isso, a resposta depende da sua metodologia, linguagem, testes e ferramentas de cobertura. Ao fazer TDD em Ruby ou Python não é difícil manter uma cobertura de 100%, e vale a pena fazê-lo. É muito mais fácil gerir uma cobertura de 100% do que 90% de cobertura.Ou seja, é muito mais fácil preencher lacunas de cobertura à medida que elas aparecem (e ao fazer lacunas de cobertura TDD bem são raras e geralmente valem o seu tempo) do que gerir uma lista de lacunas de cobertura que você ainda não conseguiu e perder regressões de cobertura devido ao seu fundo constante de código descoberto.

    A resposta também depende da história do seu projecto. Eu só achei o acima para ser prático em projetos gerenciados dessa forma desde o início. Eu ... melhorou muito a cobertura de grandes projetos legados, e valeu a pena fazê-lo, mas eu nunca achei prático voltar atrás e preencher todas as lacunas de cobertura, porque o código antigo não testado não é bem entendido o suficiente para fazê-lo corretamente e rapidamente.

     2
    Author: Dave Schweisguth, 2017-01-03 07:23:09

    Depende muito da sua aplicação. Por exemplo, algumas aplicações consistem principalmente de código GUI que não pode ser testado unit.

     1
    Author: Thomas, 2008-09-18 04:29:23
    Acho que não pode haver tal regra.
    O código deve ser revisto, com especial atenção aos pormenores críticos.
    No entanto, se ele não foi testado, ele tem um bug!
     1
    Author: Nescio, 2008-09-18 04:30:42

    Resposta Curta: 60-80%

    Resposta longa: Acho que depende totalmente da natureza do teu projecto. Eu normalmente começo um projeto por unidade testando cada peça prática. No primeiro" lançamento " do projeto você deve ter uma boa porcentagem de base com base no tipo de programação que você está fazendo. Nesse ponto você pode começar a "impor" uma cobertura mínima de código.

     1
    Author: user11087, 2008-09-18 04:31:14

    Dependendo da criticidade do Código, qualquer lugar de 75% -85% é uma boa regra de ouro. Código de envio deve definitivamente ser testado mais completamente do que em utilitários da casa, etc.

     1
    Author: William Keller, 2008-09-18 04:31:39
    Isto tem de depender da fase do ciclo de vida do desenvolvimento da sua aplicação em que se encontra.

    Se você já esteve em desenvolvimento por um tempo e tem um monte de código implementadas já e só agora percebendo que você precisa pensar sobre a cobertura de código, em seguida, você tem que verificar sua cobertura atual (se ele existir) e, em seguida, usar essa linha de base para definir os marcos de cada sprint (ou uma subida média ao longo de um período de sprints), o que significa tomar sobre o código de dívida, enquanto continua a fornecer valor de usuário final (pelo menos na minha experiência o usuário final não se importa um pouco se você aumentou a cobertura de teste se eles não vêem novos recursos).

    Dependendo do seu domínio, não é irracional disparar a 95%, mas devo dizer que, em média, vai ter um caso de 85% a 90%.
     1
    Author: codeLes, 2008-09-18 04:33:11
    Acho que o melhor sintoma da cobertura correcta do código é que a quantidade de problemas concretos que os testes unitários ajudam a corrigir corresponde razoavelmente ao tamanho do código de testes unitários que criou.
     1
    Author: dimarzionist, 2008-09-18 04:34:09
    Acho que o que mais importa é saber qual é a tendência de cobertura ao longo do tempo e compreender as razões para as mudanças na tendência. Se você vê as mudanças na tendência como boas ou más dependerá de sua análise da razão.
     1
    Author: Rob Scott, 2009-04-27 22:49:59

    Tínhamos como alvo > 80% até alguns dias atrás, mas depois que usamos um monte de código gerado, não nos importamos com a idade%, mas sim fazer o revisor tomar uma chamada sobre a cobertura necessária.

     0
    Author: reva, 2008-09-18 04:32:14
    Da publicação Testivus, acho que o contexto da resposta deve ser o segundo programador. Dito isto de um ponto de vista prático, precisamos de parâmetros / metas para nos esforçarmos. Considero que isso pode ser "testado" em um processo ágil, analisando o código que temos a arquitetura, funcionalidade (histórias de usuário), e então chegar a um número. Com base na minha experiência na área das telecomunicações, diria que 60% é um bom valor a verificar.
     0
    Author: D Lovece, 2013-03-13 17:28:57