Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Ao escrever seus testes nós podemos saber se a execução das funcionalidades nos códigos testados estão realizando o que deveriam fazer corretamente.

...

Quando escrevemos nossos testes esperamos descobrir se as funcionalidades estão corretas ou não, porém, como saberemos que

...

eles estão percorrendo todas as linhas com código de nossos projetos?

Os testes passam por todos os caminhos

...

(felizes, infelizes, alternativos ou inesperados) ?

Como saberemos se em nosso código possuem códigos sem utilidade e/ou que são inalcançáveis?

...

Não há como saber apenas olhando para os resultados dos testes, será necessário utilizar os conceitos de Cobertura de Código para responder esses questionamentos.

A Cobertura de Código nos propicia a utilização de métricas claras para obtenção do percentual de cobertura, como também é possível analisar visualmente seu código-fonte e observar de forma simples quais linhas foram executadas e quais linhas deixaram de ser testadas.

Para responder todas as perguntas acima foi desenvolvido a Cobertura de Código do PROBAT, portanto ao ligar esse recurso ao final dos testes os resultados de cobertura estarão gravados no SQLite, além de no processo de exportação os valores serão gravados em um arquivo XML.

Há também a possibilidade de quebrar seus testes se determinados fontes não atingirem o percentual mínimo configurado de cobertura de código.

O PROBAT possui recursos suficientes para geração dos resultados de cobertura de código necessários para aprimorar a qualidade dos testes.

Ativando a Cobertura

Para acessá-los, é preciso primeiro ativar o recurso através da configuração do PROBAT, portanto

...

basta na INI modificar as seguintes chaves:

[PROBAT]

...


CODECOVERAGE=1

...

O valor da chave [CODECOVERAGE] deve ser numérico, sendo (0=desligado) e (1=ligado)

Essa chave irá informar ao

...

PROBAT

...

que agora ele deverá ativar e registrar a cobertura de código de cada Teste executado.

Vale lembrar que a captação da informação de cobertura de código em tempo de execução é responsabilidade do appserver e ao

...

PROBAT

...

cabe avisar o appserver para captar esses valores e após isso, quantificar os valores, registrar os dados, validar os testes e gerar as exportações conforme configurações da Cobertura.

Nota: a chave acima somente liga a Captação e registro dos resultados nas tabelas do SQLite

Validação

Além de se obter as linhas de códigos cobertas pelos testes e seus respectivos percentuais de cobertura, podemos validar se atingimos um percentual mínimo de cobertura, caso contrário, será gerado erro e o resultado dos testes invalidado.

Para ligar a validação, basta na INI modificar as seguintes chaves:

[PROBAT]
CODECOVERAGE=1
CODECOVERAGE_PERCENT=80

O valor da chave [CODECOVERAGE_PERCENT] deve ser numérico e entre 0 e 100
O valor 0 [zero] significa que

No exemplo acima, definimos que o percentual mínimo de cobertura a ser atingido é de 80%.

Importante saber que esse percentual será usado para validar todos os fontes de seu projeto, porém existem recursos para que possam tanto modificar o percentual por fonte ou indicar ao PROBAT quais módulos (folders) serão validados pelo % informado.

Modificando % por fonte

Podem existir casos em que o percentual aplicados para todos os fontes não faça sentido um ou outro fonte em específico.

Para isso o PROBAT tem um recurso específico para que possa ser alterado esse percentual por fonte, e iremos novamente recorrer ao arquivo-fonte de configuração com comando específico, sendo:

Bloco de código
languagec#
COVERAGE PERCENTAGE {%} NAMESPACE {"nome_namespace"} SOURCE {nome_fonte} TYPE {extensao_fonte}

COVERAGE PERCENTAGE {%} SOURCE {nome_fonte} TYPE {extensao_fonte}

O valor passado para o namespace deve estar obrigatoriamente entre aspas.

Exemplo 

Bloco de código
languagec#
titletest_config.tlpp
#include 'tlpp-probat.th'

// Aplica o Percentual em:
//    60%
// para o fonte:
//    calculos.tlpp
// Que utiliza o namespace:
//    prj.lib

  COVERAGE PERCENTAGE 50 NAMESPACE "prj.lib" SOURCE calculos TYPE tlpp

// Aplica o Percentual em:
//    20%
// para o fonte:
//    formulas.prw
  COVERAGE PERCENTAGE 20 SOURCE formulas TYPE prw

...

Recursos

Ao ativar, podemos ter acesso aos seguintes recursos:

  • Consolidação de Resultados

    • Persistência em SQLite

    • Valores sintéticos e analíticos

  • Exportação

    • XML

    • JSON

  • Validação

    • Percentual mínimo de cobertura

    • Filtro por módulo

    • Modificando % por fonte

  • Extensão VsCode

    • Visualização Cobertura por fonte

Filtro de módulos

É possível indicar ao PROBAT quais módulos (folder e sub-folders) devem ser validados pelo percentual indicado, caso não seja informado esse filtro a validação será aplicada a todos os fontes.

Bom, pode parecer um recurso inútil à primeira vista mas imagine um projeto grande de desenvolvimento onde já existam módulos maduros e que podem ir para a produção ou serem publicados, e ao contrário, módulos ainda em desenvolvimento e que ainda não estejam alinhados com a qualidade exigida e portanto não faz sentido quebrar toda uma expedição por módulos ainda em processo de amadurecimento.

Para informar quais módulos devem ser validados, é simples, basta seguir a configuração no INI abaixo:

[PROBAT]
CODECOVERAGE=1
CODECOVERAGE_FILTER_SRC=pasta_1,pasta_2,pasta_3

Os nomes das pastas (módulos) devem ser separadas por vírgula.

No exemplo acima, a validação de cobertura de código somente será aplicada aos fontes que pertençam hierarquicamente aos diretórios [pasta_1], [,pasta_2] e [pasta_3].

Exportação resultado Cobertura

Os resultados de cobertura de código apurada podem ser exportadas de duas maneiras:

  • XML no formato COBERTURA;
  • JSON para uso pela extensão do VsCode.

XML

O XML pode ser usado por qualquer ferramenta de mercado que entenda o formato padronizado pelo projeto COBERTURA.
Veja mais em (https://cobertura.github.io/cobertura/).

Para solicitar a exportação no formato COBERTURA, é simples, basta seguir a configuração no INI abaixo:

[PROBAT]
CODECOVERAGE=1
CODECOVERAGE_EXPORT_TFS=1

O valor da chave [CODECOVERAGE_EXPORT_TFS] devem ser (0=não exporta) ou (1=exporta)

JSON

Essa exportação será usada para a extensão do VsCode, pois com base nela o VsCode irá mostrar visualmente a cobertura no fonte aberto.

Nota: A extensão está em desenvolvimento e em breve disponibilizaremos para uso.

Porém, esse formato pode ser usado além do VsCode, pois json é um formato amplamente conhecido e de fácil utilização por qualquer ferramenta de mercado.

Para solicitar a exportação no formato COBERTURA, é simples, basta seguir a configuração no INI abaixo:

[PROBAT]
CODECOVERAGE=1
CODECOVERAGE_EXPORT_JSON=1

O valor da chave [CODECOVERAGE_EXPORT_JSON] devem ser (0=não exporta) ou (1=exporta)

Tabelas no SQLite

...