Qualquer profissional que trabalhe no desenvolvimento de sistemas já deve ter ouvido falar que testes são, de fato, importantes para a qualidade de qualquer software. Mas, será que atividades de teste realmente fazem parte do ciclo de desenvolvimento da maioria dos projetos? Existem diversas razões para certo desinteresse de alguns desenvolvedores por este assunto, seja por desconhecimento de técnicas e ferramentas para este fim, seja pela falta de tempo alocado para esta atividade ou até mesmo em função de projetos mal conduzidos, que dificultam o planejamento e execução de testes. Desta forma, o desenvolvedor acaba lidando com linguagens e algoritmos complexos, mas não os testa suficientemente, de forma organizada e planejada. Neste contexto, este artigo abordará a ferramenta DBUnit, para testes automatizados em bases de dados, sendo uma das possíveis ferramentas a serem utilizadas para contribuir com a qualidade no desenvolvimento de aplicações.

Importância dos testes

Inicialmente os sistemas eram testados utilizando o conceito dos chamados testes de aceitação, que consiste na execução do software e inserção de dados através de suas interfaces com o objetivo de encontrar defeitos junto ao cliente. Esse tipo de teste, apesar de extremamente comum, não apresenta resultados muito confiáveis, a menos que sejam rigorosamente planejados e executados.

Um dos alicerces de qualquer sistema é onde os dados são persistidos, e o meio comumente utilizado para este feito é uma base de dados. Um software pode ser amplamente testado, mas, qualquer alteração em sua base de dados pode afetar o sistema, permitindo, inclusive, causar inconsistência de informações. Além do mais, uma modificação na estrutura dos dados poderia simplesmente comprometer a confiabilidade do sistema.

Com o objetivo de minimizar que modificações no sistema afetem sua funcionalidade, podem ser utilizados testes unitários executados de forma automatizada. Por ser um teste de caixa branca, o teste unitário necessita da estrutura interna da aplicação para a execução de testes em unidades. Unidades podem ser classes, métodos ou qualquer outra forma de agrupamento de funcionalidades que retorna uma resposta ou resultado.

A utilização de testes automatizados é útil, mas ineficaz se a base de dados não estiver consistente. Neste contexto, a ferramenta DBUnit, uma extensão do framework de testes JUnit para execução de testes unitários, é capaz de efetuar testes sobre resultados esperados, como, comparar o nome do atributo referente à chave primária de uma tabela com o resultado que é esperado.

De acordo com o que foi previamente planejado para ser testado, a execução de testes automatizados na estrutura de dados garante a detecção de quaisquer alterações na base de dados que possam causar impacto direto no software.

A DBUnit permite importar ou exportar as informações de uma base de dados para arquivos XML (eXtended Markup Language), possibilitando assim que testes possam efetuar um comparativo entre estas informações e a base de dados propriamente dita. Um tipo de teste que pode ser feito através da ferramenta é a verificação de alterações nos campos de uma determinada tabela, mudanças de tipos ou alterações de regras de integridade, como veremos em mais detalhes neste artigo.

Estudo de caso

O estudo de caso abordado neste artigo, com o intuito de apresentar a ferramenta DBUnit, considera um fragmento de um sistema de transportadora. Na Figura 1 pode-se observar o modelo entidade relacionamento do estudo de caso de forma a gerar o banco de dados no MySQL.

Tabelas do banco de dados Transportadora
Figura 1. Tabelas do banco de dados Transportadora.

Esta base de dados terá como finalidade a extração de suas informações para a criação dos arquivos XML que, por sua vez, servirá como referência para alguns casos de testes que serão desenvolvidos no decorrer deste artigo. Esse será o primeiro passo apresentado para a realização dos testes unitários.

Previamente à realização de quaisquer testes, será necessário traçar uma estratégia para realização dos mesmos. Serão verificados alguns pontos críticos que poderão ser encontrados em testes de bases de dados, de modo que se possa aplicar testes para mostrar a funcionalidade da ferramenta DBUnit.

Para instalar a ferramenta, primeiramente deve-se fazer o seu download (ver endereço na seção Links). O DBUnit é um arquivo de extensão jar (Java ARchive).

O estudo de caso apresentado neste artigo será desenvolvido através da IDE Eclipse e, para isso, deve-se adicionar o DBUnit ao projeto do estudo de caso. Para isso, seleciona-se a opção Properties, clicando com o botão direito do mouse no projeto em questão. Escolhe-se então a opção Java Build Path na parte esquerda da janela, clicando no botão Add External JARs, informando o jar do DBUnit.

Devem ainda ser adicionados outros arquivos jar importantes para o desenvolvimento dos casos de testes deste artigo, como o driver de conexão do MySql (ver endereço na seção Links) e o próprio JUnit que, no caso do Eclipse, já vem pré-instalado.

Utilização da DBUnit no teste de consistência de dados

A criação do arquivo XML realiza uma cópia do estado da base de dados, possibilitando assim, futuras comparações em relação ao seu estado atual, além de permitir o retorno da base de dados ao estado original.

A DBUnit permite gerar estes arquivos XML a partir de qualquer informação, sejam queries ou a base de dados completa, bastando selecionar a informação que se deseja extrair. Algumas das principais classes para esta tarefa estão descritas na Tabela 1.

Tabela 1. Principais classes utilizadas na geração de arquivos XML.
Classe Descrição
DriverManager Classe responsável pelo acesso a uma base de dados através de um driver JDBC
...
Quer ler esse conteúdo completo? Tenha acesso completo