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

Documentos relacionados
Requisitos Executáveis: O modelo FIT / FitNesse

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

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

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

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

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

TESTES AUTOMATIZADOS COM JUNITE MOCKITO

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

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

Universidade da Beira Interior

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

WebApps em Java com uso de Frameworks

Programação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets

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

J550 Testes em Aplicações Web com Cactus

Desenvolvimento WEB II. Professora: Kelly de Paula Cunha

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

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

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

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

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Parte I. Demoiselle Mail

Manual de Instalação da Ferramenta Selenium para Apoiar o Processo de Teste Freetest

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

SISTEMA DE AGENDAMENTO E GERENCIAMENTO DE CONSULTAS CLÍNICAS

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

INTRODUÇÃO À TECNOLOGIA SERVLETS

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Engenharia de Software

Como o FIT funciona. FIT: Framework for Integrated Tests FIT. Dados de testes. Programa. Fixtures. classes. Resultados de testes

Desenvolvimento Guiado por Testes

Introdução à Plataforma Eclipse. Leandro Daflon

Desenvolvendo Websites com PHP

UFG - Instituto de Informática

Interessados deverão encaminhar currículo para e efetuar o cadastro em nosso site

Geração e execução de scripts de teste em aplicações web a partir de casos de uso direcionados por comportamento 64

ANEXO 09 PERFIS PROFISSIONAIS MÍNIMOS

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

ARQUITETURA DO SISTEMA ERP PEGASUS

Anexo I Formulário para Proposta

Sistemas para internet e software livre

Fundamentos da Plataforma Java EE. Prof. Fellipe Aleixo

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

4 O Workflow e a Máquina de Regras

Programação Na Web. Servlets: Como usar as Servlets. Agenda. Template genérico para criar Servlets Servlet 2.4 API

Spring: Um suite de novas opções para Java EE

NOME: MATHEUS RECUERO T2 ANTIVIRUS PANDA

Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle

Mini-Curso Agile Testing

Palavras-chave: i3geo, gvsig, Mapserver, integração, plugin. Contato: ou

UNICE Ensino Superior Linguagem de Programação Ambiente Cliente Servidor.

Pág. 1 de 9 geral@cadtresd.pt Room Player

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural


4 Desenvolvimento da ferramenta

Metodologia e Gerenciamento do Projeto na Fábrica de Software v.2

Introdução ao Android

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Oportunidades 30/05/2014

Curso de Aprendizado Industrial Desenvolvedor WEB

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

PROGRAMAÇÃO SERVIDOR WEBSERVICES EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

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

ASP.NET MVC em Ação. Jeffrey Palermo Ben Scheirman Jimmy Bogard. Novatec. Prefácio de Phil Haack

Manual de Procedimentos para Desenvolvimento de Softwares

Diretrizes Complementares para Aplicação da Análise de Pontos de Função no PAD

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

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

PROGRAMAÇÃO SERVIDOR PADRÕES DAO, VIEW CONTROL E FRONT CONTROL EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Adriano Reine Bueno Rafael Barros Silva

PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL Aula 06: Introdução Linguagem HTML

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: WEB Container TomCat Aula 05

Um Ambiente Gráfico para Desenvolvimento de Software de Controle para Robôs Móveis Utilizando Simulação 3D

Orientada a serviços: JAX-WS SOAP API

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

Google Web Toolkit* Clério Damasceno Soares, Daniel da Silva Filgueiras e Fábio Figueiredo da Silva

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

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

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

Guilherme Augusto de Assis

MÓDULO Programação para Web 2

Aspectos técnicos do desenvolvimento baseado em componentes

Desenvolvimento de um aplicativo básico usando o Google Android

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Analista de Negócio Pleno

Front-End: corresponde ao que será visualizado pelo utilizador via web. Deve ser acessível para todo e qualquer utilizador.

SCC Técnicas de Programação para WEB. Rodrigo Fernandes de Mello

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

Trabalho de Sistema de Informações. Instalação e configuração aplicativo Ocomon

Google App Engine. André Gustavo Duarte de Almeida. Computação Ubíqua e Nuvens. Natal, 24 de maio de 2012 andregustavoo@gmail.com

Orientação a Objetos

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Gravação e Transmissão

Arquitetura de uma Webapp

MANUAL DE INSTALAÇÃO E CONFIGURAÇÃO. Motor Periférico Versão 8.0

Relatório referente a compreensão da programação JSP. Realizado do dia de 22 abril de 2010 a 03 de maio de 2010.

Transcrição:

Estratégias para testes: a metáfora da pirâmide alimentar Jorge Diz Instrutor Globalcode Kleber Xavier Instrutor Globalcode 1

Agenda > O que são testes? > Tipos de testes > A pirâmide de testes (Huggins) > Testes antes, durante e depois > Testes de aplicativos web > Selenium > Fitnesse > Cactus > Conclusões 2

O que são testes? > Projeto e implementação de um sistema de software que exercita outro sistema com o intuito de encontrar bugs [Binder] 3

Tipos de testes > Muitas classificações, baseadas no objetivo > Teste unitário: classes e métodos > Teste de integração: interação entre classes > Teste funcional: funcionalidades, regras de negócio, casos de uso > Teste de carga: múltiplos usuários > Teste de interface: interface com usuário > Teste de aceitação: atende objetivos do usuário > O que testar então? 4

Pirâmide Alimentar 5

Pirâmide de testes (Huggins*) (*) Jason Huggins, autor do Selenium 6

Quando testar? > Escrever o teste depois: > O sistema compila, a entrega é amanhã: agora vamos testar > Grande torcida para o sistema funcionar > testes bondosos > testes exploratórios 7

Modelo V 8

Quando testar? > Modelo V: > Na hora do desenvolvimento, já estou vendido no escopo: testes são vistos apenas como um controle de qualidade > Feedback muito tardio > Especificação imatura dos testes 9

Quando testar? > Testar pouco: > Em processos de software: a qualidade que eu consigo seguindo o processo é tão boa que não preciso tanto de testes > Pense positivo! 10

Quando testar? > Teste como suporte ao desenvolvimento: > Test-driven, example-driven, behavior-driven. > Definição da forma de uso externo (API) de uma biblioteca > Feedback imediato > Exagero na importância da automação 11

O que estamos testando? > Regras de negócio teste FIT > Funcionalidade de componentes web Cactus (teste in-container) > Interface usuário Selenium (teste in-browser) > Estresse/desempenho JMeter 12

Teste de aplicativos web > Complicadores: > Disponibilizar (ou aproximar) o ambiente de servidor web > Dependência de configurações > Dependência de browsers > Dependência de JavaScript > AJAX / tempos de espera 13

Teste de UI para web > Opções: > Simular o browser HTMLUnit > Executar in-browser, em JavaScript Selenium Core > Acionar browser a partir de um programa em Java (ou C#, Ruby, etc) Selenium RC > Acionar browser a partir de um plugin do browser Selenium IDE > Acionar browser a partir de um wiki StoryTest IQ (Selenium + FitNesse) > Acionar browser a partir de um editor de workflow CubicTest (Selenium + plugin Eclipse) 14

Selenium - arquitetura Testes JUnit CubicTest plugin Eclipse IDE CubicTest StoryTest IQ Selenium On Rails Selenium RC Client API ( Java ) Selenium RC Client API ( Ruby ) * Selenium RC Server Java Selenium Core JavaScript DOM (X)HTML Browser: IE, Firefox, Safari,... Selenium IDE (só ( Firefox 15

Selenium para programadores > Ferramentas > Selenium RC Client API para Java, Ruby, Perl, C#, Python > Programação de testes via a RC API > Programação de testes em JavaScript no Selenium Core > Componentes do lado servidor para testes in-container (para AJAX) > Usos: > AJAX (componentes testáveis no servidor) > Testes em JavaScript > Lógica de testes com controle de fluxo, concorrência, massa de dados de teste. 16

Selenium: não programadores > Ferramentas > Selenium IDE > Story Test IQ > CubicTest > Selenium Grid > Usos: > Record & replay > Testes com vários browsers > Testes como especificação do fluxo da aplicação 17

Selenium IDE 18

Selenium IDE TestRunner 19

Story Test IQ 20

Cubic Test 21

Teste de regras de negócio > Testes de aceitação X testes unitários > construindo o código certo (aceitação/validação) > construindo certo o código (unitário/verificação) > Métrica RTF (Running, Tested Features) [Ron Jeffries] > número de funcionalidades entregues testadas e executando > Ferramenta FitNesse > 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 22

Fitnesse - arquitetura diagrama extraído do site http://fitnesse.org 23

Fit planilha original 24

FitNesse tabela Wiki 25

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); } 26

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; } 27

FitNesse resultado 28

DSLs em planilhas FIT > DSL = domain-specific language > Linguagens específicas para um determinado domínio > Criadas caso-a-caso, aproveitam o motor do FIT > Podem ser implementadas utilizando fixtures customizadas (DoFixture) 29

Teste de componentes JavaEE > Fora do contêiner 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 contêiner > são necessárias ferramentas específicas > configuração mais complexa > os ambientes são testados num ambiente mais próximo do real 30

Cactus > Ferramenta Cactus > framework para testes de componentes Java EE (Servlets, EJB, Filtros, tags customizados) > baseado na ferramenta JUnit > o teste executa parte no cliente e parte no servidor 31

Cactus diagrama extraído do site http://jakarta.apache.org/cactus 32

Cactus - arquitetura 1:beginX 1b <<new>> 2: () setup 3: () testx 4: () teardown MeuTestCase MeuTestCase 5: endx <<Servlet>> <<Servlet>> MeuTestCase beginxyz Proxy MeuTestCase Proxy setup* testxyz* setup setup teardown* testxyz testxyz endxyz teardown Container teardown Container JEE (Ex: JEE (Ex: Jetty Jetty Web Web ( Container ( 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 33

Conclusões > características diferentes requerem diferentes tipos de testes > cada tipo de teste possui a sua ferramenta específica > conjunto de testes balanceado testes diferentes nas quantidades adequadas (pirâmide de testes) > Testes não são só para garantia de qualidade 34

Conclusões > Mitos: > Testador não precisa programar > Programador não precisa testar > Usuário não precisa definir testes > Vale a pena automatizar tudo > Ligar sempre os desconfiômetros 35

Perguntas e Respostas 36