Se 100% de cobertura de teste for possível

4

Ao pensar em técnicas formais de verificação, você também precisa ter cobertura de teste . Mas, como mostra esse artigo, você pode facilmente dizer que tem "100% de cobertura de teste", mas todos os testes não têm nenhuma afirmação. Esse é o extremo. Mas eu estou querendo saber se existe alguma situação em que você possa dizer que você tem 100% de cobertura de teste de alguma forma. Semelhante a como um verificador de modelo pode verificar todos os caminhos e estados possíveis em seu aplicativo, imaginando se uma ferramenta de teste pode ser usada para cobrir o mesmo nível de perfeição que um verificador de modelo. Basicamente perguntando se existe uma maneira de ser completo o suficiente com seus testes para saber que você tem 100% de cobertura, sem escrever explicitamente todas as combinações possíveis.

    
por Lance Pollard 29.06.2018 / 05:43
fonte

5 respostas

11

Existem estratégias que podem produzir métricas de cobertura de código profundo. Teste de mutação é um exemplo. Grosso modo, o teste de mutação garante que qualquer alteração lógica no programa resulte em um teste com falha, executando de fato os testes em cada permutação lógica de um programa. Se uma alteração lógica não produzir um teste com falha, ela representa um intervalo de cobertura de teste significativo .

Meu aviso: Eu nunca fiz testes de mutação. Eu não posso falar com quão viável ou valioso é realmente . Mas, em teoria, parece muito escorregadio. Na prática, no entanto, a maioria das empresas pode sobreviver (e prosperar) em contratar bons desenvolvedores que estão engajados, interessados e insistem em seguir boas práticas de desenvolvimento

    
por 29.06.2018 / 07:07
fonte
8

100% de cobertura de teste é possível e, apesar de 100% de cobertura, seu programa ainda pode ter erros. Veja as deficiências da cobertura de teste em " A cobertura de caminho garante a descoberta todos os bugs? "

Similar to how a model checker can check every possible path and state in your application, wondering if a testing tool can be said to cover the same level of thoroughness as a model checker.

A idéia básica é que a cobertura de teste só medirá se você passou por uma instrução / caminho particular, etc. ou não, pelo menos em um estado (em contraste com a verificação de modelo que fornece garantias para todos os estados possíveis). / p>

Portanto, a resposta é não, a menos que você tenha casos de teste para cada par de entradas / saídas possíveis (número exponencialmente grande de casos de teste no caso geral)

    
por 29.06.2018 / 07:05
fonte
2

Você pode ter 100% de cobertura, mas a pergunta é: isso significa alguma coisa? Pessoalmente, eu preferiria ter uma cobertura de 60% dos métodos importantes e seus cenários, do que 100% de cobertura de cenários não relevantes.

    
por 09.07.2018 / 12:57
fonte
1

Depende da minha complexidade do que você está testando. Quando meu aplicativo só imprime o Hello World, só tenho que executar uma declaração para verificar se o resultado impresso é "Hello World". Quando problemas de desempenho em tempo real, limitações de hardware estão envolvidos ou há interações muito complexas, imagino que alguns casos de teste que ninguém poderia esperar podem ocorrer.

    
por 29.06.2018 / 06:38
fonte
-1

Sim, 100% de cobertura de teste é possível. Ele sempre varia de aplicativo para aplicativo, os principais fatores que garantem a cobertura do teste são o tamanho do aplicativo, a complexidade do código e a largura de banda do projeto. Pequeno o tamanho do aplicativo e mais a cobertura é alcançável.

    
por 06.07.2018 / 14:02
fonte