Histórico da Página
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.
...
...
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 | ||
---|---|---|
| ||
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 | ||||
---|---|---|---|---|
| ||||
#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
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
...