Trabalho feito para apresentação do curso de pos-graduação Senac, foi feito baseado no artigo.
2013 IEEE Sixth International Conference on Software Testing, Verification and Validation
Generating Effective Integration Test Cases from Unit Ones
Mauro Pezz`e
University of Lugano, Switzerland and
University of Milano Bicocca, Italy
mauro.pezze@usi.ch
Konstantin Rubinov
Faculty of Informatics
University of Lugano, Switzerland
konstantin.rubinov@usi.ch
Jochen Wuttke
Computer Science & Engineering
University of Washington, Seattle, USA
wuttke@cs.washington.edu
Casos teste integração efetiva de algumas unidades
1. Geração de Casos de
Teste de Integração
Efetiva de algumas
unidades
Pós – Graduação Senac
Engenharia de Software com JEE
2. Introdução
O teste de integração tem como objetivo
descobrir defeitos que são devidos a
interações incorretas entre diferentes
módulos de software
Os casos de teste de integração são
geralmente mais complicados de
desenvolver, e mais difíceis de gerar e
manter do que os casos de teste de
unidade.
3. Continuação...
Propormos uma técnica automática para
gerar casos de teste de integração que
aproveita suítes de teste de unidade
existentes para conduzir geração de
teste para a interação de módulos
complexos.
4. a. Qual é o problema sendo
abordado no artigo e porque
ele é importante.
O teste de unidade tem como objetivo
garantir que os métodos implementados
a pós- condição, pré-especificadas e
implícita.
O teste de integração assegura que os
métodos segui corretamente protocolos
de interação.
5. Continuação...
É importante por que utiliza uma nova
técnica para gerar casos de testes de
integração que aproveita os casos de
testes de unidade existente.
E mostra que o caso de teste gerado
podem encontrar falhas interessantes,
em comparação de testes gerados .
6. Exemplo:
Uma estrutura leve para a criação de
aplicações baseadas no padrão Model
View Controller (MVC). Mostra-se que a
falha depende da interação entre dois
módulos, e como tal podem ser
dificilmente detectados com casos de
teste simples que conferem o
comportamento de unidades individuais.
7. b.Qual a solução ou abordagem
que os autores tiveram para
lidar com o problema.
Gerar casos de teste de integração
complexos a partir de outras unidades
simples que exige o código fonte do
sistema e um conjunto de casos de teste
como entrada e funciona em 3 fases:
1. identificar as dependências de classe
dentro do sistema sob a forma de um
diagrama de relação de objeto;
8. Continua...
2. Calcular as informações de fluxo de
dados dentro dos casos de teste de
entrada, e usar essa informação para
segmentar os casos de teste em
blocos(inicialização e execução);
3. Gerar casos de teste de novos e mais
complexos dos blocos extraídos de casos
de teste de unidade usando a dependência
da classe e informação do fluxo de dados.
9. c. Quais os resultados eles
encontraram
Detectar defeitos que não são detectados pelos
processos de teste de entrada originais.
1. Gerar novos casos de teste a partir da
informação disponível no código e os casos de
teste existentes.
Tabela II
Casos de teste gerado com a fusão e tempo de execução da configuração do ambiente de trabalho
Programas Nº de casos de teste
gerados
Tempo de execução
(min.)
Explorer 420 1
JGraphT 375 1
Apache Ant 540 6
JFreeChart 1350 24
10. Continua...
2. Os casos de teste gerados são uteis,
podem revelar falhas que não são
detectados pelos casos de teste originais.
Tabela III
DEFEITOS ENCONTRADOS COM FUSION, RANDOOP E PALUS rf: falhas de reais; f.p .: falsos positivos
Programas Randoop Palus Fusion
r.f. / f.p. r.f. / f.p. r.f. / f.p.
Explorer 2 / 2 0 / 80 3 / 2
JGraphT 5 / 9 2 / 1 3 / 4
Apache Ant 9 / 128 0 / 94 1 / 7
JFreeChart 23 / 17 2 / 34 3 / 48
Total 39 / 156 4 / 209 10 / 61
11. Continua...
3. Uma abordagem mais eficaz do que
as abordagens existentes para gerar
automaticamente casos de teste, ou
seja, os casos de teste gerados detecta
falhas não reveladas pelos casos de
teste gerados com outras técnicas.
12. d. Quais conclusões os
autores chegaram.
Para gerar casos(integração) de teste
complexos de (unidade) casos de teste
simples, requer apenas código fonte, e utiliza
técnicas clássica para extrair as informações,
para construir casos de teste complexos.
A ideia de combinar sequencias de
inicialização e execução de casos de teste
simples para gerar novos.
Quatro estudos de casos podem encontrar
falhas relevantes em aplicações bem
testadas.
13. e. Quais as criticas dos alunos
ao trabalho.
Difícil entendimento das tabelas e
figuras.
Artigo todo em inglês, tivemos que
traduzir para melhor entendimento.
14. Agradecimentos
Componentes:
Adriana Telles – Analista de Sistema
telles19@gmail.com
Vania Santos – Programadora Java
vniadefranca@gmail.com