Você está na página 1de 5

UNIVERSIDADE

UNIVERSIDADEDE DE SÃO PAULO


SÃO PAULO
Instituto de Ciências Matemáticas e de Computação
Instituto de Ciências Matemáticas e de Computação
SSC0501e–Teste
Validação de Software
Introdução à Ciência -da2020
Computação I - 2013
Profa Simone
Profa SimoneSenger
Senger Souza
Souza

Teste Funcional, Teste Estrutural e Teste baseado em Defeitos

O objetivo deste projeto é aplicar os conceitos de teste funcional, teste estrutural e teste
baseado em defeitos, utilizando ferramentas que automatizam/apoiam essas técnicas de
teste. Para este projeto serão utilizados o framework de testes Junit, a ferramenta de teste
estrutural Eclemma e a ferramenta de teste de mutação PIT Na página da disciplina foi
disponibilizado material de apoio sobre as ferramentas citadas. O projeto pode ser
desenvolvido em até 2 pessoas.

O trabalho envolve a implementação e a aplicação da atividade de testes no Jogo do


Aquário.

Especificação do Programa Jogo do Aquário

Considere um aquário representado por uma matriz bidimensional MxN. Nesse aquário
existem dois tipos de peixes, os do tipo A, que comem plâncton, e os do tipo B que
comem os peixes do tipo A. Os peixes seguem as seguintes regras:

Regras dos peixes do tipo A


1. Se houver uma célula livre à sua volta, movimentam-se para a célula livre.
2. Se se movimentarem durante RA vezes seguidas e se a sua volta houver uma
célula livre, reproduzem-se ficando na mesma célula e o filho na célula livre.
3. Se não se movimentarem durante MA vezes seguidas, morrem de fome.

Regras dos peixes do tipo B


1. Se houver a sua volta algum peixe do tipo A, movimenta-se para lá e come-o.
Senão, movimenta-se para uma célula livre.
2. Quando tiver comido RB peixes do tipo A e a sua volta não existir nenhum peixe do
seu tipo e houver uma célula livre, reproduz-se ficando na mesma célula e o filho
na célula livre.
3. Se durante MB vezes não comer nenhum peixe do tipo A, morre de fome.

Detalhes de Implementação

O jogo deverá ser inicializado com as seguintes entradas: (1) uma matriz bidimensional
MxN com X peixes do tipo A e Y peixes do tipo B; e (2) os valores das variáveis RA, MA,
RB, MB. X, Y, RA, MA, RB, MB representam valores inteiros e positivos.

O jogador poderá ver o resultado de cada iteração e ir avançando para ver os resultados.
Entende-se por uma iteração, uma movimentação de todos os peixes possíveis. A cada
iteração, mostrar na tela o resultado e dar a opção de continuar ou encerrar o jogo.

Ao final, o jogo deverá informar a pontuação obtida para um dado conjunto de entrada. A
pontuação do jogo será o número de iterações ocorridas do início ao término do jogo. O
jogo termina quando não houver peixes do tipo B ou o jogador encerrar o jogo. Com
parâmetros corretos o jogo pode nunca acabar, o que dá um ecossistema sustentável.
Desenvolvimento da atividade de teste

1ª Parte: Aplicação do Teste Funcional

O programa a ser testado será o Jogo do Aquário. Com base na especificação do


programa, gere casos de teste baseado nos critérios de teste funcionais (Particionamento
em Classes Equivalência e Análise dos Valores Limite).
Com base na especificação aplique os critérios funcionais e gere os casos de teste.
Preparar um documento com as informações da tabela de equivalência gerada e da
aplicação dos dois critérios. Escrever os casos de teste gerados neste documento, os
quais correspondem ao conjunto de teste TestSet-Func.

2ª Parte: Programa a ser testado

Implemente uma versão em Java deste programa no Eclipse IDE. Nosso objetivo é
realizar a atividade de teste nas funcionalidades do Jogo, então não se preocupe com
interface do mesmo. A saída pode ser na forma de uma matriz na tela ou em arquivo.

3ª Parte: Automatização do Teste Funcional

Implementar os casos de testes gerados pelo teste funcional (TestSet-Func) utilizando a


JUnit. Avaliar a cobertura do conjunto TestSet-Func para o programa implementado em
relação aos critérios estruturais disponíveis na ferramenta de teste Eclemma. Se defeitos
forem identificados, apresentar no relatório. Corrigir os defeitos e retestar o programa.
Importante: Nesta fase, não adicionar outros casos de teste, somente aqueles gerados
pelo teste funcional.

3ª Parte: Aplicação do Teste Estrutural

Por meio do uso da ferramenta de teste estrutural EclEmma, execute os casos de teste
gerados anteriormente (casos de teste adequados ao teste funcional) e avalie a cobertura
para os critérios disponíveis na ferramenta (ver slides com informações sobre EclEmma).
A seguir, adicione novos casos de teste de modo a melhorar a cobertura do teste
estrutural, gerando o conjunto de teste TestSet-Estr. O objetivo é definir casos de teste
para conseguir atingir 100% de cobertura para os critérios estruturais. Gerar relatório da
EclEmma com os resultados obtidos para entregar junto com a atividade. Se defeitos
forem identificados nesta fase, apresentar no relatório. Corrigir os defeitos e retestar o
programa, considerando todos os testes inseridos.

4ª Parte: Relatório da execução dos testes

Desenvolver um relatório contendo os resultados da aplicação de cada técnica de teste


(funcional e estrutural), incluindo coberturas de teste obtidas, relatórios gerados e outras
informações que forem relevantes. Incluir uma análise pessoal sobre a eficiência das
técnicas para encontrar defeitos no programa. Respondam: Ao fazer o programa, vocês
sentiram que foram influenciados por terem criados os casos de teste funcionais primeiro?
Se sim, como isso refletiu no código?

5ª Parte: Avaliação da qualidade do conjunto de casos de teste

Utilizando os casos de teste gerados na 3ª e 4ª partes (adequados ao teste funcional e


estrutural), faça o seguinte:
1. Execute o programa na ferramenta PIT com o conjunto de casos de teste,
aplicando todos os operadores de mutação (Full Mutation).
2. Gere relatório sobre a qualidade desse conjunto de casos de teste: escore de
mutação e quantos mutantes permaneceram vivos (Mutation Coverage).
3. Se defeitos forem identificados nesta fase, apresentar no relatório. Corrigir os
defeitos e retestar o programa, considerando todos os casos de testes inseridos

6ª Parte: Aplicação do teste de mutação

Com base nas informações anteriores, aplique o processo de execução do teste de


mutação, criando novos casos de teste e analisando os mutantes que permaneceram
vivos. Aplicar todos os operadores de mutação.
1. Novos casos de teste devem ser adicionados até todos os mutantes estarem
mortos ou só restarem mutantes equivalentes.
2. Anotar no relatório a quantidade final de casos de teste e o total de mutantes
equivalentes gerados.
3. Escolher três mutantes equivalentes e explicar no relatório a razão pelas quais eles
são considerados equivalentes.
4. Se defeitos forem identificados nesta fase, apresentar no relatório. Corrigir os
defeitos e retestar o programa, considerando todos os testes inseridos.
5. Gerar relatório da PIT com os resultados obtidos para entregar junto com a
atividade

7ª Parte: Continuação do relatório da execução dos testes

Completar o relatório da 4ª parte com os resultados da aplicação do teste de mutação,


incluindo o escore de mutação antes e final, relatórios gerados e outras informações que
forem relevantes. Incluir uma análise pessoal sobre a eficiência da técnica para encontrar
defeitos no programa. Respondam: Se os mutantes que têm comportamento diferente do
programa original são mortos, como eu sei que o mutante que morreu não é a versão
correta do programa? Como resolver isso?

Sobre a Entrega:
O relatório deve ser desenvolvido no google drive. O link deste documento deve ser
disponibilizado na entrega da atividade. Lembrar de deixar permissão para que os
professores possam ter acesso ao relatório no drive (permissão para João e Simone).

A entrega deverá ser realizada pelo e-disciplinas num arquivo compactado (.zip).

Neste arquivo deverão estar contidos o Projeto do Java/Eclipse, o Relatório gerado pela
Eclemma para cada parte do Projeto, o Relatório gerado pela PIT (screenshots da Eclipse
View - PIT Summary) e Relatório Final do Projeto (conforme descritos nas 4ª e 7ª partes).

Apenas uma pessoa do grupo deve realizar o envio. Colocar o nome dos integrantes do
projeto.

Você também pode gostar