Novas Ferramentas de Teste na plataforma Java Jorge Diz Workshop de testes para aplicativos web Slide 1



Documentos relacionados
Estratégias para testes: a metáfora da pirâmide alimentar

Requisitos Executáveis: O modelo FIT / FitNesse

Testes de Software. Por quê testar? 3/28/2011. Andrew Diniz da Costa. Manter alta qualidade. Prevenir e encontrar defeitos

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB. Anne Caroline O. Rocha Tester Certified BSTQB NTI UFPB

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

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

Teste e Depuração de Sistemas Web. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br)

Integração Contínua com Rational Team Concert, Jenkins e SonarQube

Evolução do Design através de Testes e o TDD

Desenvolvimento Guiado por Testes

SELENIUM 28/03/2011. Márcio Delamaro Harry Trinta

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

Curso de Aprendizado Industrial Desenvolvedor WEB

Oportunidades 30/05/2014

Java Programação para Fábrica de Software. Fernando Lozano Consultor 4Linux

Anexo I Formulário para Proposta

MOCKITO - - Alexandre Gazola (alexandregazola@gmail.com /

O evento não fará uso do vídeo (webcam), somente slides e áudio. Se necessário, ajuste o idioma da sala na barra de ferramentas superior

Oportunidades em SP. Experiência no mercado financeiro / instituições bancárias / produtos de tesouraria.

Breve introdução. Uma breve introdução. Simplicidade e Poder. Rápido Dinâmico Robusto

Projeto Demoiselle. Para perguntas e respostas, utilizem a lista de discussões de usuários da comunidade: demoiselle-users@lists.sourceforge.

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

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

Um Processo para Desenvolvimento de Aplicações Web Baseado em Serviços. Autores: Fábio Zaupa, Itana Gimenes, Don Cowan, Paulo Alencar e Carlos Lucena

MAGREGISTER 1.0: GERADOR DE INTERFACES DE COLETAS DE DADOS PARA PDA S. Acadêmico: Gilson Chequeto Orientador: Adilson Vahldick

Adobe Flex. Cainã Fuck dos Santos Thiago Vieira Puluceno Jonathan Kuntz Fornari Gustavo Nascimento Costa

Analista de Negócio Pleno

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Universidade da Beira Interior

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

4 Desenvolvimento da ferramenta

Introdução à Plataforma Eclipse. Leandro Daflon

A Tecnologia Java e o Maior Provedor do Brasil. Daniel Rodrigues Ambrósio

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Análise e Projeto Orientados a Objetos Aula IV Requisitos. Prof.: Bruno E. G. Gomes IFRN

INTEGRE Diversas fontes de informações em uma interface intuitiva que exibe exatamente o que você precisa

CoMDD: uma abordagem colaborativa para auxiliar o desenvolvimento orientado a modelos. David Fernandes Neto

Ensino Superior Completo em Sistemas da Informação, Ciência da Computação, Análise de Sistemas e/ou correlatas.

OPORTUNIDADES CWI: Analista de Sistemas Sênior

Fundação Universidade Estadual de Maringá

Engenharia de software para desenvolvimento com LabVIEW: Validação

OPORTUNIDADES DE CRESCIMENTO PROFISSIONAL

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Introdução aos Testes Automatizados

Introdução a Métodos Ágeis de Desenvolvimento de Software

TESTANDO ARQUITETURAS DE MICRO-SERVIÇOS

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

Plataforma Open Source de Desenvolvimento e Sustentação de Sistemas. Daniel Darlen Lucius Curado Ridai Pombo

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)

RESULTADOS PRÁTICOS DO USO DE INTEGRAÇÃO CONTÍNUA COM O JENKINS. Emerson Cordeiro Vieira. emerson@7comm.com.br

Fundamentos em Teste de Software. Vinicius V. Pessoni

Aspectos técnicos do desenvolvimento baseado em componentes

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Autores/Grupo: TULIO, LUIS, FRANCISCO e JULIANO. Curso: Gestão da Tecnologia da Informação. Professor: ITAIR PEREIRA DA SILVA GESTÃO DE PESSOAS

Aplicativo web para definição do modelo lógico no projeto de banco de dados relacional

GERADOR DE CÓDIGO JSP BASEADO EM PROJETO DE SGBD. Acadêmico: Maicon Klug Orientadora: Joyce Martins

Fixture-Factory. Criando objetos para seus testes. Como criar objetos através de templates para serem utilizados como massa de dados em seus testes.

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

O que é o Virto ERP? Onde sua empresa quer chegar? Apresentação. Modelo de funcionamento

Alexandre Malveira, Wolflan Camilo

UFG - Instituto de Informática

WebApps em Java com uso de Frameworks

Engenharia de Software I: Análise e Projeto de Software Usando UML

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração

Ricardo R. Lecheta. Novatec

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

FERRAMENTA WEB PARA MODELAGEM LÓGICA EM PROJETOS DE BANCOS DE DADOS RELACIONAIS

Feature-Driven Development

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Introdução ao Android

5. Métodos ágeis de desenvolvimento de software

ANEXO 09 PERFIS PROFISSIONAIS MÍNIMOS

Me. Eng. JOÃO ALVAREZ PEIXOTO. Sistemas Multi-agentes em Java utilizando a plataforma JADE

Testar: impossível. Jorge Diz Globalcode. Agile Brazil 2010 Slide 1

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

SISTEMA PARA AUTOMATIZAR O MONITORAMENTO DE ROTEADORES DE UM PROVEDOR DE ACESSO

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Universidade Federal de Campina Grande Departamento de Sistemas e Computação Ciência da Computação. alyssonfm@lcc.ufcg.edu.br

Java Web/UI. Maven3 Redmine CVS. Áreas de conhecimento: Web o Aplicativos Web o Portal de conteúdo o REST Services Web Site Performance

Aplicações Desktop: Swing/SubMacroForms. Carlos Renato Alves Gouveia Novembro/2008

EXPRESSO LIVRE 3º Encontro Técnico de Desenvolvedores

ABORDAGEM DE FRAMEWORKS PARA JSF QUE AUXILIAM O DESENVOLVIMENTO DE SOFTWARE

Tipos de teste de software

Invocação de Métodos Remotos

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Guilherme Augusto de Assis

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

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

1/26/2009. Baseadas em Experiência pessoal/profissional/acadêmica

PROJETO DE FÁBRICA DE SOFTWARE

Processos de Desenvolvimento de Software

Partner Network.

Adriano Reine Bueno Rafael Barros Silva

Apex Desenvolvendo Aplicações Web

ENGENHARIA DE SOFTWARE I

Transcrição:

Just Java 2009 Novas Ferramentas de Teste na plataforma Java Jorge Diz Workshop de testes para aplicativos web Slide 1

Quem sou eu? Jorge Alberto Diz ( 95 Mestre em Eng. Elétrica (UNICAMP ( 89 Bach. em Ciência da Computação (UNICAMP Programando desde 84, em Java desde 99 Automação de testes desde 94 Ensinando desde 01, na Globalcode desde 06 Consultoria em testes e métodos ágeis Certificado SCJP, SCWCD, CSM Workshop de testes para aplicativos web Slide 2

Apresentação da agenda Novos modelos de testes: pirâmides e quadrantes Apoio ao desenvolvimento: unitários/dublês Apoio à comunicação: prosa/planilhas/convergência Teste de interface usuário Testes difíceis Futuro Workshop de testes para aplicativos web Slide 3

Ssuporte ao time Scrítica crítica ao produto Quadrantes de Marick voltados ao Negócio Q2: GUI, regras de negócio Q3: Exploratório, usabilidade, aceitação funcional Testes Q1: Unitários, componentes Q4: Desempenho / segurança voltados à Tecnologia Workshop de testes para aplicativos web Slide 4

Pirâmide de testes: frágil Interface Usuário Regras de Negócio Unidades Workshop de testes para aplicativos web Slide 5

Pirâmide de testes: ágil (Mike Cohn) Interface Usuário Regras de Negócio Unidades Workshop de testes para aplicativos web Slide 6

(* Huggins ) A pirâmide de testes (*) Jason Huggins, autor do Selenium Workshop de testes para aplicativos web Slide 7

A pirâmide alimentar Workshop de testes para aplicativos web Slide 8

( poucos ) Consensos Não é possível testar tudo Quem testa deve ter atitude crítica Testes têm custo Testes informam sobre riscos Áreas concentram defeitos (bug clusters): se uma técnica de teste encontra problemas, outra técnica encontrará problemas na mesma área. Workshop de testes para aplicativos web Slide 9

Testes Unitários (Q1) Voltados à tecnologia, apoiam a equipe O problema: isolamento das partes sendo testadas A solução: projetar para o teste (testabilidade) projetar através dos testes (TDD) dublés de teste técnicas ninja para legados Workshop de testes para aplicativos web Slide 10

Teste Unitário: premissas (teste unitário centrado no desenvolvedor) Resultado independente da ordem de execução Independência entre métodos de teste A suite executa em alguns segundos Todo recurso está sob controle do programador Não é testada a integração Testes na mesma linguagem que o código sob teste Resultado não sujeito a interpretação ( output (Guru checks Workshop de testes para aplicativos web Slide 11

Testar estado X testar interação Modalidade Ciclo da lógica de teste comportamento Ferramentas Estado setup play verify Verifica o estado da classe-alvo depois de exercitar uma funcionalidade JUnit Interação (comporta ( mento setup ( record ) play ( verify ) Verifica se as interações da classe-alvo com seus colaboradores seguem um roteiro JUnit + dublês de teste Workshop de testes para aplicativos web Slide 12

( Meszaros Dublês de teste (s. Papel Substitui Variantes O que ele faz Dummy ( laranja ) Objeto Está ai apenas para cumprir tabela Stub ( eletrônica (sec. Método Responder, Saboteur Retorna uma resposta pré-definida Mock ( impostor ) Objeto Nice, Strict, Partial Define previamente o comportamento esperado das interações da classealvo com o colaborador Fake ( brinquedo ) Serviço, Objeto Substitui um serviço por uma implementação mais apropriada para o teste. Spy ( grampo ) Método, Objeto Registra comportamento para verificação posterior Workshop de testes para aplicativos web Slide 13

Dublês de teste Colaboradores: objetos/classes/serviços dos quais o código sendo testado depende. Dublês de Teste == Colaboradores substitutos para efeito de teste Verificam o comportamento da classe-alvo: teste ( spies baseado em interação (mocks, Amenizam efeitos da dependência no teste (fakes, ( dummies stubs, ( saboteurs ) Injetam falhas a serem detectadas Adicionam funcionalidades específicas para teste Workshop de testes para aplicativos web Slide 14

Dublês de teste Ferramentas genéricas: Jmock EasyMock Mockito PowerMock JMockit Específicas de APIs Mockrunner EJBMock SpringUnit Fakes Web containers leves, BDs / ORMs em memória, HTMLUnit Workshop de testes para aplicativos web Slide 15

Teste de interação: Spy X Mock Tipo de dublê Especificação do comportamento esperado Verificação do comportamento Vantagens Spy ( grampo ) Depois do teste Depois do teste Simplicidade de especificação / implementação Mock ( impostor ) Antes do teste Durante o teste Falhas são detectadas ( fail-fast ) antes Pilha de execução é preservada Workshop de testes para aplicativos web Slide 16

Teste Contínuo Testes são executados automaticamente toda vez que o fonte é alterado Infinitest JUnitMax (comercial) Autotest (JRuby) Workshop de testes para aplicativos web Slide 17

Testes de Interface Usuário Ferramentas: Selenium WebDriver Selenium 2 Canoo WebTest Interaction Design: CubicTest Workshop de testes para aplicativos web Slide 18

Família Selenium CubicTest plugin CubicTest StoryTest IQ Selenium On Rails Eclipse IDE Selenium RC Client ( Java ) API Selenium RC Client ( Ruby ) API * Selenium RC Server Java Selenium Core JavaScript DOM (X)HTML Browser: IE, Firefox, Safari,... Selenium IDE ( Firefox (só Workshop de testes para aplicativos web Slide 19

Selenium IDE Workshop de testes para aplicativos web Slide 20

Selenium IDE TestRunner Workshop de testes para aplicativos web Slide 21

Story Test IQ Workshop de testes para aplicativos web Slide 22

Cubic Test Workshop de testes para aplicativos web Slide 23

Teste de regras de negócio Não passa pela interface usuário Mais rápido Entendível por especialistas no domínio Ferramenta FitNesse (planilha) > ferramenta Wiki que pode ser utilizada por analistas de teste e de negócios > especificação de requisitos em planilhas > codificação de fixtures pode ser feita por programadores > Base para outros tipos de teste (GUI, unitários, banco de dados) Outras Ferramentas: > GreenPepper, Robot framework Workshop de testes para aplicativos web Slide 24

Fitnesse - arquitetura diagrama extraído do site http://fitnesse.org Workshop de testes para aplicativos web Slide 25

Fit planilha original Workshop de testes para aplicativos web Slide 26

FitNesse tabela Wiki Workshop de testes para aplicativos web Slide 27

FitNesse fixture package br.com.globalcode.aceitacao; import fit.columnfixture; import br.com.globalcode.impostos.rendanafonte; public class ImpostoDeRendaNaFonteFixture extends ColumnFixture{ public double salariobruto; public int dependentes; public double impostoretido() { return RendaNaFonte.desconto(salarioBruto); } public double salarioliquido() { return RendaNaFonte.liquido(salarioBruto); } } Workshop de testes para aplicativos web Slide 28

FitNesse classe de negócio package br.com.globalcode.impostos; public class RendaNaFonte { public static double desconto(double bruto) { return bruto * 0.2; } public static double liquido(double bruto) { return bruto * 0.8; } } Workshop de testes para aplicativos web Slide 29

FitNesse resultado Workshop de testes para aplicativos web Slide 30

DSLs em planilhas FIT DSL = domain-specific language Linguagens específicas para um determinado domínio de aplicação. Ex: teste de GUI, seguro de automóvel Criadas caso-a-caso, aproveitam o motor do FIT Podem ser implementadas utilizando fixtures customizadas ( DoFixture ) Workshop de testes para aplicativos web Slide 31

Behavior Driven Development Especificação das funcionalidades em prosa. Sendo um <role> Eu Quero: <funcionalidade> Para que: <benefício> Workshop de testes para aplicativos web Slide 32

Behavior Driven Development Detalhamento da funcionalidade: Dado que: <precondições> Quando: <ação> Então: <verificação> Workshop de testes para aplicativos web Slide 33

Behavior Driven Development Ferramentas: JBehave EasyB (Groovy) Cucumber + JRuby Fitnesse DoFixture Workshop de testes para aplicativos web Slide 34

Teste de componentes JavaEE Fora do container utilizando objetos que simulam os componentes gerenciados (mock ( objects Não é necessário executar o servidor de aplicações Não é testada a interação do componente com o servidor no qual ele será instalado Dentro do container são necessárias ferramentas específicas configuração mais complexa os ambientes são testados num ambiente mais próximo do real Workshop de testes para aplicativos web Slide 35

Cactus - arquitetura 1:beginX 1b <<new> > () setup :2 () testx :3 () teardown :4 MeuTestCase 5: endx <<Servlet>> MeuTestCase beginxyz Proxy setup* testxyz* setup teardown* testxyz endxyz teardown Container JEE (Ex: Jetty Web ( Container (*) no servidor A classe de caso de teste é instanciada duas vezes pelo test runner Os métodos setup, testx e teardown executam dentro do container Workshop de testes para aplicativos web Slide 36

Testes difíceis Banco de dados Bungee-jump Pequenas massas de dados com DB Fit Especificar dados esperados interceptando chamadas ao banco com Mockrunner JDBC Geração de massa com Benerator Web Services Concorrência Workshop de testes para aplicativos web Slide 37

Novas Ferramentas Build, gestão de dependências Maven, Ant+Ivy Integração Contínua Hudson, Continuum, Twist Dashboard Sonar, XRadar Sensores + Mineração Hackystat Diagnóstico TestabilityExplorer, Yslow! Workshop de testes para aplicativos web Slide 38

Novas ferramentas Análise estática de código PMD, FindBugs, Checkstyle Cobertura de testes Cobertura, JMockit Coverage Mutantes Jester Geração de massa de dados: Benerator Desempenho / Carga Jmeter, TheGrinder Workshop de testes para aplicativos web Slide 39

Futuro? > comunicação, feedback, aviso rápido > nuvem como desafio e oportunidade serviços especializados para teste de configuração/volume/ desempenho profissional de testes como embaixador da qualidade > uso de linguagens dinâmicas ciclos de implantação + curtos / contínuos (Agile operations) framework XYZ ==> XYZ test. Frameworks sem um ambiente de teste associado serão inaceitáveis. Workshop de testes para aplicativos web Slide 40