Cobertura de testes unitários

Script para visualizar a cobertura de testes unitários em HTML

Testes unitários são incrivelmente importantes, mesmo para uma linguagem compilada como Golang eles são fundamentais.

Felizmente hoje em dia a maioria das linguagens de programação tem uma bela variedade de ferramentas para teste unitário. Golang vem com algumas ferramentas surpreendentes não apenas para fazer os testes mas também para analisar o código em busca de falhas na cobertura, etc.

E no lugar de simplesmente ler um relatório é muito mais interessante ter uma forma visual e rápida para analisar a cobertura de testes. Com go tool cover e um pequeno script que pode ser colocado na carga do zsh ou no bash é muito simples fazer essa inspeção do código.

gocover () {
	t="/tmp/go-cover.$$.tmp"
	go test -coverprofile=$t $@ && \
	go tool cover -html=$t && \
    rm $t
}

Eu uso gocover como nome para esse script mas idealmente deveria ser um comando com duas letras no máximo, rápido de digitar para que você use a todo momento.

Alem de analisar meu próprio código esse pequeno script ajuda muito no code review, para dar uma passada de olhos e ver o que esta com e sem cobertura.

Claro em uma linguagem como Golang você não precisa de 100% de cobertura de testes unitários, o compilador já garante que seu código no mínimo compila.

O importante mesmo não é a cobertura dos testes mas sim garantir que todas as funcionalidades estão cobertas. Tem muito código mentiroso que esta com 100% de cobertura de testes mas não testa as funcionalidades nem os casos de erro, a cobertura de testes mostra apenas que o sistema passou por ali quando estava fazendo os testes e por isso mesmo essa porcentagem não é um bom referencial da qualidade do código, serve apenas como um guia, uma dica do que esta acontecendo.

Também é importante lembrar que testes unitários é a forma mais barata validar seu código, vale a pena abusar um pouco e fazer todos os testes que você conseguir imaginar mesmo que pareçam redundantes ou improváveis.

Cesar Gimenes


Compartilhe esse post:

 
comments powered by Disqus