TESTES AUTOMATIZADOS COM JUNITE MOCKITO



Documentos relacionados
O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Melhoria no Desenvolvimento Ágil com Implantação de Processo de Integração Contínua Multiplataforma para Java e.net. Hudson

Como melhorar a Qualidade de Software através s de testes e nua. Cláudio Antônio de Araújo 22/11/2008

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA

EMISSÃO DE CERTIFICADOS ELETRÔNICOS NOS EVENTOS DO INSTITUTO FEDERAL CATARINENSE CÂMPUS VIDEIRA

INTRODUÇÃO E CONFIGURAÇÃO DO PRIMEFACES MOBILE EM APLICAÇÕES JSF

A Grande Importância da Mineração de Dados nas Organizações

Integração de sistemas utilizando Web Services do tipo REST

FACULDADE SENAC-RS PELOTAS RODRIGO ALMEIDA PEREIRA. Sistemas de Informação

Desenvolvimento Guiado por Testes

4/5/2009 CONTROLSOFT CONTROLGAS CONTROLE DE VALE GÁS. Manual de Operação

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

Construção de Wiki para a MISTOOL, uma Ferramenta de Aplicação do Método de Inspeção Semiótica

3 Dicas MATADORAS Para Escrever s Que VENDEM Imóveis

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Projeto de Sistemas I

MANUAL DO USUÁRIO SORE Sistema Online de Reservas de Equipamento. Toledo PR. Versão Atualização 26/01/2009 Depto de TI - FASUL Página 1

Fundamentos em Teste de Software. Vinicius V. Pessoni

Testes de Software. Andrew Diniz da Costa

A VERDADE SOBRE OS SOFTWARES ROBÔS DE LICITAÇÃO

Guia. PDA e SmartPhones. Windows Mobile, Pocket PC e CE.

GARANTIA DA QUALIDADE DE SOFTWARE

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

2 Diagrama de Caso de Uso

Manual AGENDA DE BACKUP

Software. Gerenciamento de Manutenção

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Engenharia de Requisitos Estudo de Caso

ESTUDO COMPARATIVO ENTRE AS PLATAFORMAS ARDUINO E PIC

1 Sumário O Easy Chat Conceitos Perfil Categoria Instalação O Aplicativo HTML...

DESENVOLVIMENTO WEB DENTRO DOS PARADIGMAS DO HTML5 E CSS3

Gestão de Relacionamento com o Cliente CRM

NETBEANS IDE UTILIZAÇAO DE RECURSOS PARA DESENVOLVIMENTO DE PROJETO JAVA WEB

Tópicos de Ambiente Web. Modulo 2 Processo de desenvolvimento de um site Professora: Sheila Cáceres

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

Especial Online RESUMO DOS TRABALHOS DE CONCLUSÃO DE CURSO. Sistemas de Informação ISSN

Personalizações do mysuite

Módulo 4. Construindo uma solução OLAP

Disciplina: Unidade III: Prof.: Período:

Felipe Denis M. de Oliveira. Fonte: Alice e Carlos Rodrigo (Internet)

Alarme Automotivo com mensagem para móvel utilizando Arduino

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Análise de Dados do Financeiro

E-books. Guia para Facebook Ads. Sebrae

USANDO O IZCODE PARA GERAR SOFTWARE RAPIDAMENTE

Questionário. A ferramenta auxilia na alocação de Não (0) x x x. Satisfatório (5) complexidade de um caso de uso? de uso (72) Sim (10)

Gerenciamento de software como ativo de automação industrial

DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID

Registro e Acompanhamento de Chamados

Desenvolvimento de um software de gerenciamento de projetos para utilização na Web

OneDrive: saiba como usar a nuvem da Microsoft

Manual do Contribuidor. Portal de Internet. Projeto: Novo Portal de internet

Gestão inteligente de documentos eletrônicos

Este documento visa facilitar e viabilizar a introdução ao módulo de Manufatura no Sistema

5. Métodos ágeis de desenvolvimento de software

INFORMAÇÕES ADICIONAIS

Utilizando o correio eletrônico da UFJF com Thunderbird e IMAP

Qualidade de Software

Java com Banco de Dados Posgree

Programação de Computadores - I. Profª Beatriz Profº Israel

SIE - SISTEMA DE INFORMAÇÕES PARA O ENSINO OCORRÊNCIA GERAL

TESTE DE SOFTWARE COM XP. Isac Aguiar isacaguiar.com.br

Distribuidor de Mobilidade GUIA OUTSOURCING

O que é o Marca Lá?... 3 Nossa Missão... 3 Visão... 3 Valores... 3 Objetivos... 3

Aplicação Prática de Lua para Web

Procedimentos para Reinstalação do Sisloc

Daruma NFCe Conheça todos os passos para testar a NFCe Daruma

Em 2012, a Prosoft planejou o lançamento da Versão 5 dos seus produtos.

MANUAL DA ÁREA DO CONDÔMINO

Se observarmos nos diferentes livros. Planejamento de Testes a partir de Casos de Uso

Gerenciamento de Problemas

Planejando o aplicativo

Editor de Questões E24H

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Engenharia de Software III

O Excel é um programa de computador desenvolvido para gerenciar dados na forma de planilhas.

TECNOLOGIAS E FRAMEWORKS PARA O DESENVOLMENTO DE INTERFACES WEB

Microsoft Access XP Módulo Um

Engenharia de Software

DESENVOLVIMENTO EM DISPOSITIVOS MÓVEIS UTILIZANDO BANCO DE DADOS

MOVIMENTAÇÕES PELO SITE UNIODONTO

Virtualização de Sistemas Operacionais

Celebre este natal e ano novo junto aos seus amigos e familiares distantes.

Sistemas ERP. Profa. Reane Franco Goulart

Processos Técnicos - Aulas 4 e 5

Manual AGENDA DE BACKUP

SAIBA MAIS SOBRE O LINUX E DESCUBRA QUAL DISTRIBUIÇÃO É MELHOR PARA VOCÊ! CURSO

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

SISTEMA DE MONITORAMENTO DE CONDIÇÕES CLIMÁTICAS

Transcrição:

TESTES AUTOMATIZADOS COM JUNITE MOCKITO Jaime William Dias 12, Dener Barranco 1, Douglas Delapria 1 1 Universidade Paranaense (Unipar) 2 Universidade Estadual de Maringá (UEM) Paranavaí PR Brasil dener_barranco@hotmail.com, delapria@hotmail.com, jaime@unipar.br Resumo. Testes é um dos métodos utilizados no desenvolvimento para se obter qualidade ao software. A automação de testes que veio para agilizar processos, com eficiência na criação e execução do mesmo. O artigo apresenta uma introdução sobre testes automatizados, e qual é a sua importância, com foco em teste unitário, onde abordamos os principais tópicos. Descrevemos sobre os frameworks JUnit e Mockito utilizados em uma aplicação web, para executar o teste de unidade, mostrando todo o processo de execução do teste e resultado que chegamos diante desse experimento aplicando teste unitário com JUnit e Mokito. 1. Introdução Testes automatizados podem ser considerados pequenos programas ou script de testes, partes de código que com o auxílio de frameworks fazem verificação automáticas sem a necessidade de intervenção humana nas verificações. Normalmente utilizado em casos em que o software tem uma longa vida útil sofrendo mudança constante de versões e até mesmo implementando novas funcionalidades, neste caso de novas funções no software precisa ser testado em conjunto com as demais existente no sistema, para ver se a nova funcionalidade aplicada, não afetou as outras estavam funcionando. A automação se torna primordial para casos onde os testes se repetem, podendo ser executado quantas vezes for preciso de forma pratica e rápida verificando todas as funcionalidades em conjunto, dando grande confiabilidade ao software. Neste contexto vemos o quanto a automação de testes se torna favorável ao desenvolvimento de software, trazendo benefícios e oferecendo uma maior cobertura a testes de software. Abrangendo teste de unidade que é considerado o teste mais importante a ser realizado no início de um projeto. Executamos este teste em uma aplicação onde vemos sua atuação na prática e vantagens de ser utilizado, com duas frameworks diferentes para testes automatizados, o JUnit exclusiva para testes unitários e Mockito para que o teste se torne eficaz. 2.Teste de Unidade Teste de unidade ou também chamado de Teste Unitário, testa a menor parte do sistema como classes, métodos, interfaces por isso é aplicado na primeira fase de desenvolvimento de um software, sua principal função é reduzir esforços encontrando defeitos mais cedo que o esperado, para que o software depois de pronto possua o mínimo de erros possíveis, consequentemente o custos vai ser bem menor com a

refatoração de código em busca de erros, com um ganho significativo de tempo e aumento de qualidade, tendo assim um produto final estável e confiável. 3. Frameworks JUnit E Mockito Embora o intuito de todos os frameworks para testes automatizados seja o mesmo, de aprimorar os testes com mais eficiência, velocidade no tempo de execução, flexibilidade para poder executar os testes a qualquer hora, independente um dos outros, o processo de automação quando bem aplicado pode trazer resultados surpreendentes e muito significantes ao desenvolvimento de software. 3.1 Mockito O Mockito gera mocks que permitem testar a comunicação com as dependências de uma classe em teste, através de representações de comportamentos diferentes em diversos ambientes. Indicado pra quem está começando com testes unitários, é uma ferramenta fácil de ser utilizada, possui suporte simples para a criação de mocks, deixando sua escrita de teste limpa e legível, se tornando um framework fácil de lidar. Entre tanto, podemos utiliza-la como complemento do JUnit para testar a mesma funcionalidade de classes e métodos, através de simulações de ambientes e comportamento diferentes com a criação de mocks, que pode ser gerado por um framework especifico como o Mockito. 3.2 JUnit JUnit é um framework para a automação de testes unitários, onde a sua linguagem de programação é exclusiva para Java. Possui uma API completa para a criação e execução dos testes através do console das IDE s, programamos os testes para cada funcionalidade do software que será executado de forma automática pelo JUnit, muito rápido, que por sua vez apresenta um relatório, se o teste passou ou falhou e caso falhe ele aponta onde está o erro. O JUnit que inclusive já vem por padrão em algumas IDE s como NetBeans, Eclipse entre outras. Mas caso utilize outra IDE que não possua o JUnit, é uma ferramenta free, ou seja gratuito, que pode ser baixado pelo site: www.junit.org. 4. Estudo de Caso Visando validar os métodos e ferramentas de testes automatizados, foi realizado um estudo de caso com as framewoks JUnit e Mockito. 4.1 Implementando Teste com JUnit Para podermos ver na prática como é o real funcionamento do teste e seu benefício para o software, garantindo que se sofrer alguma alteração no futuro que seja testada por

estes métodos de teste, vamos primeiramente demonstrar um exemplo utilizando o famework JUnit. O senário que vamos demonstrar para exemplificar o teste com JUnit está sendo mostrado na figura 1, o exemplo será de um sistema que calcula folha de pagamento dos funcionários, onde possuem as classes (BaseCalculoFP, CalculoDeFolhaDePagamento, DemonstrativoFP, EstrategiaCalculoFP,EstrategiaCalculoPadrao, EstrategiaDeCalculoSoFixo e a classe Pessoa). O foco do teste ficará em cima da classe "CalculoDeFolhaDePagamento.Java" onde encontra-se o principal método a ser testado que é o "calcular()", que recebe como parâmetro uma base de cálculo e faz o cálculo pagamento chamando a estratégia de cálculo selecionada. Figura 1: Classe cálculo de folha de pagamento, Trabalho em aula: Arthur Zavadski. No primeiro teste Figura 2, estamos testando o método de cálculo de folha de pagamento sem base de cálculo apenas para testar valores vazios, a validação com o "assertequals" está validando apenas se o resultado da folha armazenada no DemonstrativoFP está com o valor zero, que é a condição pra que este teste possa passar. Figura 2: Teste sem base de cálculo 1, Trabalho em aula: Arthur Zavadski. Neste segundo exemplo Figura 3, teste da classe de cálculo de folha de pagamento vamos mostrar um teste utilizando todos os recursos da classe, onde o método "testarfolhacombasedecalculoa", passo 1 está criando o objeto da classe "CalculoDeFolhaDePagamento", no passo 2 cria também todas as variáveis de valores que serão passados para os métodos, passo 3 cria base de cálculo com os valores calculados passando uma nova pessoa que seria o funcionário da folha de pagamento. No passo 4 já começa a ser feitas as validações do teste pelo método assertequals que

valida os valores passados se são iguais caso não seja ele quebra o teste resultando a mensagem passada no método. Figura 3: Teste sem base de cálculo 2, Trabalho em aula: Arthur Zavadski. 4.2 Implementando Teste com Mockito Para demonstrar um teste desenvolvido utilizando mocks, vamos utilizar uma classe Pedido de Venda, onde possui uma interface PedidoVendaDao para obter o código do pedido. Além da interface o que vamos testar utilizando mock será a classe que faz a troca do pedido aonde se o pedido estiver com status Cancelado ele vai validar a mensagem de aviso se está apresentando corretamente. Primeiramente, para utilizarmos o mockito precisa ser feito na classe, imports da biblioteca. Para este exemplo a declaração na classe ficou desta maneira "importstaticorg.mockito.mockito.*", vamos testar a classe TrocaPedidoVenda onde recebe um pedido e tenta fazer a troca do mesmo. No teste implementado na Figura 4 vemos o método "testartrocarpedidocancelado" identidicado pela annotation @Test que identifica um método de teste. Neste método vamos mockara interface de "PedidoVendaDao", criar um objeto do tipo PedidoVenda que seria o pedido da venda criado, seta o status deste pedido para cancelado, após isso dizer para o mockito que quando chamar o método obter e passar um atributo do tipo long e retorne o meu pedido. Assim podemos criar o atributo da classe de TrocarPedidoVenda passando minha interface mockada chamar o método trocar passando o atributo long como o código do pedido, dentro da classe trocar quando for chamar o método obter "pedidovendadao.obter(codigopedido);", passando o código do pedido ele me retornará o pedido passado pelo mockito que no caso é um pedido com status cancelado, ao validar nosso assertequals verificamos se a mensagem de pedido cancelado está correta finalizando o teste utilizando o Mockito.

Figura 4: Teste utilizando Mockito, Artigo: Douglas Delapria. 5. Resultados Com foco no estudo aplicado nas duas metodologias de teste, uma utilizando o framework JUnit e a outra utilizando Mockito, tendo como base a comparação de complexidade podemos afirmar que dependendo do método ou classe que vai ser testado apenas utilizando JUnit fica mais dificil, já utilizando o Mockito ele acaba facilitando mais alguns testes, claro que cada caso de teste é único e deve ser tratado da melhor maneira possível cobrindo todas as possibilidades de teste que uma método a ser testado vá proporcionar. Já o Mockito podemos destacar alguns benefícios ao teste como por exemplo: Teste mais rápidos - como o mockito acaba escondendo algumas classes, o teste acaba ficando mais leve por não estar integrado a nada. Teste sem dependência de dados, neste caso não foi preciso cadastrar nenhum pedido para o teste da troca ser executado apenar utilizar mock na classe para a simulação dos pedidos. 6. Considerações Finais A implementação dos testes automatizados no software contribui para melhorar a quantidade do código e o mais importante, a garantia de entrega de qualidade no produto final para o cliente, que é o foco principal das empresas de hoje, garantir qualidade para ter um sistema confiável. Neste artigo vimos o desenvolvimento de um teste no framework JUnit e outro utilizando Mockito, ambos garantem que a classe ou método testado vai estar funcionando, caso sofrer alguma alteração no método testado que cause impacto no resultado o teste bem implementado irá detectar e informar ao usuário que aquela funcionalidade parou de funcionar. Falamos também das vantagens de usar teste com Mockito, com sua escrita simples e intuitiva, pode nos auxiliar a produzir códigos de testes mais limpos e

legíveis. Para melhorar e garantir que tudo funcionara corretamente o ideal é criar teste utilizando a prática de TDD, que garante um código de mais qualidade e testável. 7. Referências Barranco, D.S. Tecnologias e técnicas de testes automatizados. 2012. 58f. Monografia (Graduação) UNIPAR, Paranavaí, 2012. Medeiros, M.P. JUnit Implementando testes unitários em java Parte 1. DevMedia, nov. 2009. Disponivel em: <http://www.devmedia.com.br/junitimplementando-testes-unitarios-em-java-parte-i/1432> Acesso em: 14/05/2014. Negrini, C. Desafios e benefícios da automação de testes. Revista Engenharia de Software Magazine 58, mai. 2013. Disponivel em: <http://www.devmedia.com.br/desafios-e-beneficios-da-automacao-de-testesengenharia-de-software-magazine-58/28051#ixzz2zzxmlggm> Acesso em: 12/05/2014. Pierin, F. Testes unitários avançados. Revista Java Magazine 110, dez. 2012. Disponivel em: <http://www.devmedia.com.br/testes-unitarios-avancados-revista-javamagazine-110/26552> Acesso em: 15/05/2014. Rocha, F.G. Introdução à garantia de qualidade do software e ferramentas para testes. DevMedia, mai. 2013. Disponivel em: <http://www.devmedia.com.br/introducao-a-garantia-de-qualidade-de-software-eferramentas-para-teste/28027> Acesso em: 19/05/2014. Rocha, F.G. Introdução ao desenvolvimento guiado por teste (TDD) com JUnit. DevMedia, dez. 2012. Disponivel em: <http://www.devmedia.com.br/introducao-aodesenvolvimento-guiado-por-teste-tdd-com-junit/26559> Acesso em: 14/05/2014. Silva, B.F. Introdução aos testes funcionais automatizados com JUnit e Selenium WebDriver. DevMedia, mai. 2013. Disponivel em: <http://www.devmedia.com.br/introducao-aos-testes-funcionais-automatizados-comjunit-e-selenium-webdriver/28037> Acesso em: 14/05/2014. Trovão, J.C.; Dias-Neto, A.C. Automação de testes funcionais para aplicações da plataforma android. Revista Engenharia de Software Magazine 63, out. 2013. Disponivel em: <http://www.devmedia.com.br/automacao-de-testes-funcionais-paraaplicacoes-da-plataforma-android/29380#ixzz2zzwj95gp> Acesso em: 12/05/2014.