Escolar Documentos
Profissional Documentos
Cultura Documentos
AMAZONAS
1 INTRODUÇÃO.........................................................................................................1
1.1 PROBLEMATIZAÇÃO.................................................................................3
1.2 JUSTIFICATIVA............................................................................................3
1.3 OBJETIVOS...................................................................................................3
1.3.1 Objetivo geral..............................................................................................3
1.3.2 Objetivos específicos...................................................................................3
1.4 ESTRUTURA DO TRABALHO....................................................................4
2 FUNDAMENTAÇÃO TEÓRICA.............................................................................5
2.1 TESTE DE SOFTWARE................................................................................5
2.1.1 CLASSIFICAÇÃO DOS TESTES DE SOFTWARE.................................5
2.2 TECNOLOGIAS E PADRÕES UTILIZADOS...........................................13
2.2.1 SCRUM.....................................................................................................13
2.2.2 UML - Unified Modeling Language........................................................14
2.2.3 Linguagem de Programação Java..............................................................15
2.2.4 JSF – Java Server Faces............................................................................15
2.2.5 PrimeFaces................................................................................................16
2.2.6 Hibernate/JPA............................................................................................16
2.2.7 MySQL......................................................................................................17
2.2.8 MVC – Model View Controller................................................................17
2.3 TRABALHOS RELACIONADOS...............................................................18
2.3.1 ProgTest.....................................................................................................18
2.3.2 BugHunt....................................................................................................19
2.3.3 Under Attack.............................................................................................19
3 PROPOSTA DO SISTEMA....................................................................................22
4 ANÁLISE E ESPECIFICAÇÃO DO SISTEMA....................................................23
4.1 REQUISITOS DO SISTEMA.......................................................................23
4.2 MODELAGEM DO SISTEMA....................................................................24
4.2.1 Diagrama de Casos de Uso........................................................................24
4.2.2 Diagrama de Classes..................................................................................25
4.2.3 Diagrama de Sequência.............................................................................28
4.2.4 Diagrama de Atividades............................................................................30
4.2.5 Modelo do Banco de Dados......................................................................31
5 IMPLEMENTAÇÃO...............................................................................................32
5.1 DETALHES DO DESENVOLVIMENTO DA FERRAMENTA................32
5.2 APRESENTAÇÃO DO SISTEMA..............................................................33
6 CONCLUSÕES E TRABALHOS FUTUROS........................................................45
6.1 CONCLUSÕES.............................................................................................45
6.2 TRABALHOS FUTUROS............................................................................45
APÊNDICE A – DESCRIÇÃO DOS CASOS DE USO.............................................49
APÊNDICE B – IMPLEMENTAÇÃO DA FERRAMENTA....................................55
1
1 INTRODUÇÃO
De uma forma geral, os testes de software podem ser aplicados utilizando dois
tipos de técnicas: a funcional e a estrutural. A técnica funcional, também conhecida
como técnica caixa preta, tem como foco a validação do comportamento externo da
funcionalidade que está sendo testada. O nome caixa preta vem do sentido de que nesse
tipo de teste, não é necessário saber a estrutura interna de como o código foi
implementado ou a tecnologia que foi utilizada. Nesse tipo de análise, essas questões
são transparentes para os analistas de teste. O objetivo dessa técnica é validar no
software implementado se os requisitos presentes na documentação foram devidamente
atendidos. A técnica estrutural, também conhecida como técnica caixa branca, foca no
comportamento interno do item que está sendo testado. Seu objetivo é testar o código-
fonte explorando todos os fluxos possíveis. O foco deste trabalho está no processo
ensino-aprendizagem da aplicação da técnica funcional.
2
1.1 PROBLEMATIZAÇÃO
1.2 JUSTIFICATIVA
1.3 OBJETIVOS
Este trabalho tem como objetivo desenvolver uma ferramenta web que apoie o
processo de ensino-aprendizagem de conteúdos referentes ao ensino de Testes de
Software, explorando inicialmente de forma específica o ensino das técnicas de partição
de equivalência e de análise do valor limite de forma dinâmica, prática, interativa e
intuitiva, visando a construção de casos de teste de qualidade.
2 FUNDAMENTAÇÃO TEÓRICA
Teste de unidade: são testes na maioria das vezes feitos pelo programador. Tem
como objetivo testar a menor unidade do código (componente ou módulo do
software).
Teste de integração: testa as interações entre os componentes construídos. É
realizado ao final de cada iteração com o objetivo de validar as funcionalidades
referentes aos casos de uso do sistema.
Teste de sistema: executa o sistema inteiro incluindo interfaces. Serve para
validar as funcionalidades por meio de casos de teste elaborados por um analista
de teste em um ambiente de teste.
Teste de aceitação: é um teste de responsabilidade do cliente, que ocorre antes
da implantação do software. Verifica se o software atende aos requisitos de
especificação. O objetivo desse teste é verificar se o sistema está pronto para ser
usado pelos usuários finais.
1
Disponível em: <http://www.inf.ufsc.br/~fabiane.benitti/byebug/#> Acesso em ago. 2017.
9
4. Condição Lógica: se uma condição de entrada for booleana são definidas uma
classe válida e uma classe inválida.
2
Disponível em: <http://www.inf.ufsc.br/~fabiane.benitti/byebug/#> Acesso em ago. 2017.
3
Disponível em: <http://www.inf.ufsc.br/~fabiane.benitti/byebug/#> Acesso em ago. 2017.
10
Molinari (2003) conceitua a Análise de Valor Limite como uma técnica que tem
a atenção voltada para os limites de cada classe de equivalência. Essa técnica foi
desenvolvida levando em consideração que o limite de uma partição de equivalência é o
ponto com a maior probabilidade de apresentar falhas (PRESSMAN, 2011).
Na Figura 6 está sendo apresentado um exemplo de aplicação da técnica de
Análise de valor limite em um intervalo de valores.
4
Disponível em: <http://www.inf.ufsc.br/~fabiane.benitti/byebug/#> Acesso em ago. 2017.
11
5
Disponível em: <http://www.inf.ufsc.br/~fabiane.benitti/byebug/#> Acesso em ago. 2017.
12
3.
13
2.2.1 SCRUM
2.2.5 PrimeFaces
Optou-se por usar o PrimeFaces pelo fato de possuir código aberto, por
disponibilizar uma boa documentação com exemplos de código, além de apresentar uma
boa usabilidade.
2.2.6 Hibernate/JPA
2.2.7 MySQL
Optou-se pela utilização do MySQL neste trabalho pelo fato de ser um SGBD
gratuito, além de possuir todas as outras características mencionadas no parágrafo
acima.
2.3.1 ProgTest
iniciar a resolução da questão. Esse tutorial exibe dicas, regras e exemplos de acordo
com a interação do aluno.
2.3.2 BugHunt
3 PROPOSTA DO SISTEMA
Para que o objetivo proposto seja alcançado, o aluno responderá às questões com
a ajuda de um tutorial que será exibido nas telas do ambiente, mostrando para ele dicas
de preenchimento e quais passos devem ser seguidas para resolver a questão. Ao final
do processo de resolução da questão, o aluno poderá automatizar os casos de teste
criados a partir do sistema por meio de uma funcionalidade que utilizará como base o
framework JUnit.
5.
Código Descrição
Acesso ao sistema. Após um usuário válido efetuar
RF01 Controle de acesso login terá acesso às questões disponibilizadas pelo
ambiente.
O usuário terá a visualização das questões
RF02 Acesso às questões disponíveis. O usuário terá a opção de iniciar
resolução de uma questão por vez.
O sistema deverá disponibilizar um passo a passo
Apresentação de
RF03 e dicas para ajudar os estudantes durante a
tutorial de resolução
resolução das questões.
O tutor terá a visualização das respostas dos
RF04 Acessar respostas alunos. Ele terá a opção de acompanhar o
progresso de cada aluno.
Após a resolução das questões com o auxílio do
Gerar tabela com tutorial, o sistema deverá gerar uma tabela com os
RF05
casos de teste casos de teste que foram criados através do
ambiente.
Gerar casos de teste automatizados. O usuário
Gerar casos de teste poderá automatizar os casos de teste criados no
RF06
automatizados ambiente por meio de uma funcionalidade do
sistema que fará uso do framework JUnit.
Códig
o Descrição
RNF01 O sistema deverá utilizar tecnologias open source e multiplataforma.
RNF02 O sistema deverá usar tecnologia web.
Dicionário de classes
Classe Função
Classe responsável por manter
informações dos professores que
Tutor utilizarão o ambiente. O tutor é a pessoa
responsável por manter as questões
disponíveis no TEACHING-TEST
A classe turma contém a lista de alunos
Turma que compõem aquela turma, além de ter
um vínculo com o tutor
Os alunos poderão fazer parte de uma
Aluno turma ou utilizar o ambiente como aluno
avulso, caso queira estudar sozinho.
Classe responsável pelo banco de
Questao questões compostas por enunciado e
classe de referência
A classe resposta é a responsável por
Resposta comparar as respostas do aluno com as
respostas do professor
Responsável por exibir o dicas úteis para
PassosTutorial
a resolução da questão
A resolução da questão se inicia nessa
classe. Os tipos de condição de entradas
TipoCondicaoEntrada serão exibidos para o aluno com regras e
exemplos para ajudar no processo de
resolução.
Classe responsável por guardar as
condições de entrada presente na questão
CondicaoEntrada
e que informadas pelo aluno durante a
elaboração da sua resposta.
Classe responsável por guardar as classes
ClasseEquivalencia de equivalência informadas pelo aluno
durante a elaboração da sua resposta.
Essa classe é usada para preencher os
casos de teste com os valores fornecidos
ValoresCasosTeste
pelo aluno assim que ele estiver
finalizando a resolução da questão
Fonte: Própria autora
28
A Figura 14mostra uma visão geral do banco de dados do sistema, foi utilizado o
modelo ER para o mapeamento das entidades e seus relacionamentos.
5 IMPLEMENTAÇÃO
Após a finalização desta tarefa, iniciou-se a implementação das telas que usam o
tutorial dinâmico: Selecionar tipo de condição de entrada, Identificar condição de
entrada e Criar classes de equivalência.
dela que os métodos da classe de teste serão executados. Cada questão deve possuir a
sua própria classe de equivalência.
O resultado da execução é lido e passado para a tela onde deve ser exibido. O
resultado exibe dados como: tempo de execução, quantidade de testes passando,
quantidade de testes falhando e log das falhas.
A tela do ambiente onde o aluno irá ter acesso às questões é mostrada na Figura
17, essa tela exibe ao usuário uma lista de questões disponíveis para resolução. Além
disso, exibe o enunciado de cada questão selecionada na lista e disponibiliza a opção de
visualizar a Classe de Referência usada como base para a criação os casos de teste
automatizados. Cada questão deve possuir uma classe de referência composta por
atributos e métodos. É com base nessa classe que será possível criar uma classe de teste
JUnit para validar os casos de teste criados pelos alunos. A classe JUnit será
complementada à medida em que o aluno informar os dados necessários para concluir a
questão.
Nas telas mostradas na Figura 18 e Figura 19, um tutorial composto por passos,
dicas, e regras é exibido ao aluno para auxiliá-lo durante o processo de resolução da
questão.
A próxima tela, representada pela Figura 26, exibe uma tabela com tudo o que
foi informado pelo usuário até o momento tipo de condição de entrada, condição de
entrada, classe válida e classe inválida. A tela também exibe as opções de adicionar um
novo tipo de condição de entrada, adicionar uma nova condição de entras e preencher os
casos de teste.
A próxima tela, representada pela Figura 27, exibe uma tabela baseada na Figura
26, porém exibe alguns campos para que o usuário possa informar o valor que deseja
usar nas classes válidas e inválidas. Os valores informados serão usados na classe JUnit,
serão adicionados nos métodos padrões existentes na classe. Após informar esses
valores o usuário poderá gerar os casos de teste.
42
A tela exibida na Figura 30, mostra para o aluno a classe de teste JUnit gerada a
partir das respostas fornecidas por ele durante a resolução da questão.
6.1 CONCLUSÕES
A ferramenta encontra-se na versão inicial e está apta para ser expandida. Como
melhorias e trabalhos futuros são propostas as seguintes ideias.
REFERÊNCIAS
BASTOS, A. et. al. Base de conhecimento em teste de software. 3. ed. Rio de Janeiro:
Martins, 2012. 263p.
Boston, 2002.
BYEBUG – Aprendendo Teste de Software., 2014 Disponível em: <
http://www.inf.ufsc.br/~fabiane.benitti/byebug/#> Acesso em: 11/09/2017.
DEITEL, P. J.; Java : como programar / Paul Deitel e Harvey Deitel ; tradução Edson
Furmankiewicz ; revisão técnica Fábio Luis Picelli Lucchini. -- 8. ed. -- São Paulo :
Pearson Prentice Hall, 2010.
ELBAUM, S., PERSON, S., DOKULIL, J., and JORDE, M. (2007). Bug hunt: Making
early software testing lessons engaging and affordable. In Proceedings of the 29th
international conference on Software Engineering, pages 688–697. IEEE Computer
Society.
MYERS, G. J. The Art of Software Testing. Hoboken: John Wiley & Sons, Inc, 2004.
SCHALK, Chris; BURNS, Ed; HOLMES, James. JavaServer Faces: The complete
reference. 1.ed. McGraw-Hill Osborne. 2006.
TONIN, N. A. and BEZ, J. L. (2013). Uri online judge: A new interactive learning
approach. Computer Technology and Application, 4(1).
.
50
Figura 33 – Estórias
Fonte: Plataforma IceScrum do projeto da própria autora.
Na figura 35, são mostradas as tarefas da estória “Criar tela visualizar questão”,
sendo elas Listar questões cadastradas no banco, exibir enunciado da questão
selecionada e exibir classe de referência da questão.
A Figura 36 mostra que para a estória “Criar tela escolher tipo de condição de
entrada”, as tarefas criadas foram exibir passos do tutorial, exibir dicas do tutorial, listar
tipos de condição de entrada e exibir exemplos do tipo de condição de entrada.
Figura 37- Estória criar telas identificar condição de entrada e classes de equivalência
Fonte: Plataforma IceScrum do projeto da própria autora.
A estória “Criar tela montar casos de teste” é mostrada na Figura 39, juntamente
com as tarefas montar tabela de casos de teste adicionando campos de entrada e saída,
criar classe JUnit, executar classe JUnit, exibir classe JUnit gerada e exibir resultado da
execução da classe JUnit.
A Figura 40 mostra uma estória criada apenas para ajustes e correções, dentro
dessa estória foi criada a tarefa correção e atualização da ferramenta após avaliação do
orientador.
62
Para a feature Escrita TCCII foi criada apenas a estória Revisão do projeto,
contendo como tarefas, revisar documento TCCII, revisar diagramas e fazer correção
após avaliação do orientador. A Figura 41 mostra uma melhor organização das tarefas.