Este documento apresenta como usar a ferramenta Jabuti para realizar teste estrutural de código Java. Ele explica como criar um projeto de teste na ferramenta, visualizar o código fonte e o gráfico de dependência de uso-definição, e executar testes usando JUnit.
1. Universidade Federal de Goiás
Instituto de Informática
Engenharia de Software
Geovane Pazine Filho
Inael Rodrigues de Oliveira Neto
Jackeline Neves de Almeida
Teste Estrutural usando a
ferramenta Jabuti
Esse trabalho pretende apresentar o teste
estrutural usando a ferramenta JaBUTI,
nesse tutorial será abordado como criar um
projeto, e como visualizálo na ferramenta,
assim como, como interpretar o resultado.
Com a ferramenta é possível visualizar o
gráfico DefUso e como executar testes na
ferramenta.
Goiânia, maio de 2011
2. 1. Introdução
Jabuti é uma ferramenta de suporte ao teste estrutural para programas Java,
desenvolvida pelo grupo de Engenharia de Software da USPSão Carlos. Nela estão
implementados critérios de testes de software baseados em fluxo de controle e critérios
baseados em fluxo de dados.
Uma das características que diferencia a JaBUTi da outras ferramentas de teste é o fato
que toda a análise estática necessária para a realização do teste é feita sobre o programa
objeto, ou seja, sobre o bytecode Java e não sobre o programa fonte.
2. Criar um Projeto de Teste na Jabuti
Na ferramenta Jabuti, para realizar um teste estrutural, primeiramente devese criar um
projeto de teste. Um projeto de teste contem um conjunto de arquivos .class e informações
adicionais como o CLASSPATH.
Para criar um novo projeto, vá no menu principal File ⇒ Open Class. Em seguida será
exibido um dialogo para selecionar os .class que serão testados (vide figura 1). Deve ser
observado se os .java está na mesma pasta dos .class para que seja possível visualizar o
código fonte na própria ferramenta.
Figura 1
3. Ao clicar no botão Abrir, será exibido para gerenciar as classes que serão testadas (vide
Figura 2).
Figura 2
Basta escolher as classes, digitar no Classpath o caractere “.” e clicar no botão Ok para
criar um novo projeto .jbt.
3. Como realizar teste estrutural
A ferramenta, inicialmente, exibirá o código compilado, mas é possível mudar a
visualização para o modo de código fonte se ele estiver disponível no classpath. Para isso vá no
menu Visualization → Current Source File (vide Figura 3).
Figura 3
4. Observe que a ferramenta usa várias cores sobre as linhas do código de acordo com o
nó que está cada instrução de código, o que indica a complexidade ciclomática.
Cada cor diferente, indica um nó diferente. Na barra superior ao código é possível
visualizar quantos nós o projeto inserido possui e a coloração facilita a identificação de qual
bloco pertence a qual nó (vide Figura 4).
Figura 4
5. A JaBUTI possui integração com ferramentas para visualização do gráfico. O grafo, é a
representação dos nós do código. Para exibir o gráfico devese acessar a seção e escolher a
opção Def Use Graph (vide Figura 5).
Figura 5
Nessa tela, a maioria dos nós estão coloridos com vermelho. Observe também que o
vermelho tem peso 7, isso significa que se for realizado um teste que cubra o nó vermelho, pelo
menos 7 nós serão cobertos.
A ferramenta tem seis critérios de testes. De acordo com o critério selecionado, o código
é colorido de forma diferente.
Para realizar os testes vá em Test Case > Executing JUnit Test Set..., abrirá uma
janela onde deverá ser selecionado (vide Figura 6):
● O caminho para o código fonte da suite de teste JUnit.
● O caminho para o código binário da suite de teste JUnit.
6. ● Dar um nome Qualificado.
● O caminho para a biblioteca do Jabuti.
● Caminho para outras bibliotecas que possam ser úteis para a realização dos
testes.
● Caminho para o javac
Figura 6
Após setar esses parâmetros você poderá executar os testes.
4. Conclusão
Com a elaboração desse tutorial, nosso grupo conheceu e praticou a técnica estrutural
com uso de técnicas baseadas em complexidade(MacCabe), em fluxo de controle e em fluxo de
dados. Também conhecemos uma ótima ferramenta para realização de testes.