Criando Testes em C Utilizando o Libtap

23 Apr 2011 . category: article . Comments
#c #cpp #testes #libtap

A criação de testes para nossas aplicações é de fundamental importância. Metodologias como a do TDD, quando aplicadas corretamente diminuem em muito os bugs gerados, principalmente em manutenção do código, e tempo de debugger, além de garantir as funcionalidades de nosso código. Há algum tempo estava procurando algo para mim aplicar o TDD no desenvolvimento utilizando C, encontrei o libtap e como iniciei o desenvolvimento do meu trabalho de TCC(que se Deus quiser irá se tornar um mestrado) resolvi escrever um post sobre o TAP.

O que é TAP?

TAP (Test Anything Protocol) é um protocolo que permite a comunicação entre os testes unitários e os testes de aceitação. Ele foi desenvolvido originalmente para uso na linguagem Perl. Há diversas lib para várias linguagens que produzem o resultados dos testes no formato TAP. E também há diversos parses para o TAP.

Neste post quero focar na criação de testes em C utilizando a libtap. Por quê utilizar o TAP? Na aplicação que estou desenvolvendo é necessário o uso de três linguagens(C/C++ e Python), e quero manter um padrão para os meus testes. Além disso conheço bem a criação de testes em Perl e o libtap tenta se parecer muito com os Test::More do Perl.

Por exemplo:

Testes simples utilizando o Perl::More

use Test::More tests => 2;

$s = "uma string";

ok(2*3 eq 6,'2*3 = 6');
ok($s eq "uma string",'test string');

Testes simples utilizando o libtap

# include "tap.h"

int main(void) {

  char s[] = "uma string";
  
  plan_tests(2);
  ok1(2*3 == 6);
  ok1(!strcmp(s,"uma string"));
  
  return exit_status();
}

A versão inicial do libtap para C foi descontinuada, porém há desenvolvedores mantendo um fork no seguinte endereço: http://www.shlomifish.org/open-source/projects/libtap/.

Para utiliza-lo é só copiar os arquivos tap.c e tap.h no diretório onde estão os testes e para compilar é o padrão de sempre:

gcc -c tap.c
gcc arquivo_com_testes.c -o executavel tap.o

Mais Informações

Site Oficial do TAP - Wiki com informações importantes sobre TAP


Me

Tenho estudado esse mundo mágico da programação desde 2005. Já consegui sustentar minha família usando Ruby, Java, Python, C++ e Javascript. O resto tenho usado para diversão ou aprendizado.