SlideShare uma empresa Scribd logo
1 de 27
Framework de Testes
Centro de Computação da UFMG
Julho de 2014
1. Contextualização
● Por que automatizar?
● Cucumber
● Glue code
● Estrutura dos testes (Cucumber, Java e Selenium)
1. Características atuais do framework
● Estrutura organizada
● Facilidade na adaptação a novos padrões de sistema
● Facilidade na adição de novos passos
● Instalação e Configuração simplificadas
● Manutenção simples de código, sem XPath
● Relatório para visualização do resultado de testes executados
1. Melhorias em desenvolvimento
● Facilidade na digitação de features (utilização de plugin no RAD)
● Integração contínua (Jenkins)
Roteiro desta apresentação
● Testes manuais são uma tarefa repetitiva, propensa a erros;
● Testes automatizados possibilitam a redução do tempo gasto na fase de testes;
● Automatização do caminhamento simples pelas telas (clique em todas as opções do
menu) em geral descobre cerca de 30% dos bugs;
● Esforços podem ser concentrados em outras atividades ou outros tipos de teste
(que não possam ser automatizados), aumentando a qualidade do produto ;
● A automatização facilita a execução de Testes de Regressão;
● Em processos de metodologia ágil, com ciclos de desenvolvimento de curta
duração, pode se tornar impraticável executar testes de sistema abrangentes em
cada ciclo, sem o uso de testes automatizados.
Por que automatizar?
● Ferramenta para execução de testes de automatizados (features);
● Executa código a partir de frases escritas em uma linguagem próxima à
natural (Gherkin, com tradução para vários idiomas);
● Fácil entendimento dos cenários de testes
● possibilidade de que cenários sejam escritos pelo próprio dono do produto;
● Simplicidade na reprodução manual de um cenário de teste;
● Automatização dos cenários de testes pode ser feita posteriormente;
● Facilidade no rastreamento de erros na execução dos testes
automatizados;
Cucumber
Funcionalidade: Teste do CRUD Gerir Cargo do Quem é Quem
Contexto: Cadastrar, Alterar, Buscar e Excluir
Dado que o usuario vini esteja logado na página Home do Quem é Quem
Quando o usuário focar o menu Cadastro
E for acionado o submenu Gerir Cargos do Quem é Quem
Cenário: Inserir Cargos - Verifica Existência Prévia
Quando o campo [Buscar] for preenchido com o valor ‘Programador${datahora atual}’
E o comando [Buscar] do tipo [Botão] for acionado
Então nenhum item deve estar retornado na pesquisa
Quando o comando [Criar Cargo] do tipo [Botão] for acionado
E o campo [Nome] for preenchido com o valor ‘Programador${datahora atual}’
E o comando [Salvar] for acionado
Então deve ser exibida a mensagem ‘Os dados foram salvos com sucesso.’
.feature
● Glue code é o código fonte que possui as informações interpretadas e tratadas pelo
cucumber, que transforma os passos Gherkin em código executável.
● Em Java, o glue code é realizado através de anotações, com as 3 palavras-chave
básicas do Gherking: @Dado, @Quando e @Então.
● As anotações recebem como parâmetro uma expressão regular, e o Cucumber faz o
casamento do passo Gherkin com as expressões regulares encontradas no glue
code.
● Os grupos de captura da expressão regular são passados como parâmetros do
método, na ordem em que são encontrados na expressão.
Glue Code
Estrutura dos testes
@Dado
…
@Entao
public void {
...
}
@Quando ("^o usuário focar o menu (.+)$")
public void focarMenuCucumber(String menu) throws Throwable {
paginaBase.paginaGerais.focaMenu(driver, menu);
}
Feature e Glue code
Funcionalidade: Teste do CRUD Gerir Cargo do Quem é Quem
Contexto: Cadastrar, Alterar, Buscar e Excluir
Dado que o usuario vini esteja logado na página Home do Quem é Quem
Quando o usuário focar o menu Cadastro
E for acionado o submenu Gerir Cargos do Quem é Quem
Cenário: Inserir Cargos - Verifica Existência Prévia
Quando o campo [Buscar] for preenchido com o valor ‘Programador${datahora atual}’
E o comando [Buscar] do tipo [Botão] for acionado
Então nenhum item deve estar retornado na pesquisa
Quando o comando [Criar Cargo] do tipo [Botão] for acionado
E o campo [Nome] for preenchido com o valor ‘Programador${datahora atual}’
E o comando [Salvar] for acionado
Então deve ser exibida a mensagem ‘Os dados foram salvos com sucesso.’
Funcionalidade: Teste do CRUD Gerir Cargo do Quem é Quem
Contexto: Cadastrar, Alterar, Buscar e Excluir
Dado que o usuario vini esteja logado na página Home do Quem é Quem
Quando o usuário focar o menu Cadastro
E for acionado o submenu Gerir Cargos do Quem é Quem
Cenário: Inserir Cargos - Verifica Existência Prévia
Quando o campo [Buscar] for preenchido com o valor ‘Programador${datahora atual}’
E o comando [Buscar] do tipo [Botão] for acionado
Então nenhum item deve estar retornado na pesquisa
Quando o comando [Criar Cargo] do tipo [Botão] for acionado
E o campo [Nome] for preenchido com o valor ‘Programador${datahora atual}’
E o comando [Salvar] for acionado
Então deve ser exibida a mensagem ‘Os dados foram salvos com sucesso.’
Feature e Glue code
@Quando("^o campo [(.+)] for preenchido com o valor '(.+)'$")
public void preencherValorDoCampoCucumber(String rotulo, String valor) {
paginaBase.paginaPreencher.preencherValorDoCampo(driver,
rotulo, valor);
}
Execução da feature
Resultado da execução
LEGENDA:
. PASSOU
- NÃO FOI
EXECUTADO
F FALHOU
U PASSO NÃO
DEFINIDO
● Estrutura organizada
● separação por tipos de interação
● uso de interfaces
● Facilidade na adição de novos padrões de sistema
● Facilidade na adição de novos passos
● Instalação e configuração simplificadas
● Manutenção simples, com indicação de elementos facilitada (sem
XPath)
● Relatório para visualização do resultado dos testes executados
● Abrangente; atende bem ao padrão atual (sistema SIGA)
Características Atuais do Framework
Estrutura organizada, com facilidade na adição de novos padrões de sistema
teste.paginas.reuso.passosCucumber teste.paginas.reuso.interfacesFramework
ACIONAR
PREENCHER
GERAIS
VERIFICAR
ACIONAR
PREENCHER
BUSCAR
GERAIS
VERIFICAR
teste.paginas.reuso.implementacoesFramework.ejb3
ACIONAR PREENCHERBUSCAR GERAIS VERIFICAR
implementaçõesEspecificasProjetoDeTeste.ejb3
Passo 1: Implementar novos métodos
para o novo padrão de sistema
LOGIN
Facilidade na adição de novos padrões de sistema
Passo 2: Estender a classe
Passo 3: Sobrescrever o método
Passo 4: Adicionar bind
Estrutura para adição de novos passos
Regras locais
Específicos para
cada projeto
Regras globais
(genéricos)
Utilizados em
diversos projetos
Framework
Projeto de teste
Facilidade na adição de novos passos globais
teste.paginas.reuso.passosCucumber teste.paginas.reuso.interfacesFramework
ACIONAR
PREENCHER
GERAIS
VERIFICAR
ACIONAR
PREENCHER
BUSCAR
GERAIS
VERIFICAR
teste.paginas.reuso.implementacoesFramework.ejb3
ACIONAR PREENCHERBUSCAR GERAIS VERIFICAR
NOVO PASSO GLOBAL
1. Criar novo passo cucumber
2. Declarar novo método
3. Implementar novo método
Comparação do processo de adição de novos passos
Antes
● Cada projeto de teste criado como uma
cópia do projeto do Framework.
● Definição de novos passos e funções de
forma independente e com transmissão
informal (cada desenvolvedor passando a
sua implementação para os que a
desejassem utilizar).
Depois
● Cada projeto de teste criado como um
projeto que importa o código do
Framework como uma dependência.
● Todo projeto utiliza os passos gerais do
Framework, utilizando passos específicos
para o sistema apenas quando necessário.
● Caso um passo criado seja geral o
suficiente e de uso comum em um grande
número de sistemas, ele é inserido no
Framework, para futuro reuso.
Configuração de novo projeto de testes
Definição de novos passos e métodos globais
ConfiguracaoSelenium
SharedDriver
RunFeature.launch
VerificaFeature.launch
PropriedadesLogin
PaginaLogin
Instalação e configuração simplificadas
Passo 1: Criar estrutura de diretórios
Passo 2: Estender classes
Passo 3: Informar dados de acesso à aplicação:
PropriedadesLogin<NomeProjeto>
PaginaLogin<NomeProjeto>
RunFeature.launch
VerificaFeature.launch
PropriedadesLogin
PaginaLogin
DATABASE
PÁGINAS
ConfiguracaoSelenium
SharedDriver
RunFeature.launch
VerificaFeature.launch
FRAMEWORK
REUSO
ConfiguracaoSelenium<NomeProjeto>
SharedDriver<NomeProjeto>
PROJETO DE TESTES
DATABASE
PÁGINAS
REUSO
WebDriverModule
CAMINHO = ”/<NomeProjeto>/home.seam”;
SENHA_PADRAO = ”♦♦♦♦♦♦”;
@Dado("^que o usuário (.+) esteja logado na página
Home do <SistemaTestado>$")
SERVIDOR=”http://<ServidorDeTeste>.ufmg.br”
Instancia ConfiguracaoSelenium<NomeProjeto>
Bind com SharedDriver<NomeProjeto>
Instalação e configuração simplificadas
Antes
● Configuradas como variáveis de ambiente
do workspace do eclipse.
● Para testar cada projeto de teste, era
necessário reconfigurar as variáveis do
ambiente ou utilizar workspaces
separados.
Depois
● Cada projeto de teste define tais
variáveis na classe
ConfiguracaoSelenium<NomeDoProjetoDe
Teste>.
● Dois projetos de teste podem conviver no
mesmo workspace sem necessidade de
reconfiguração.
Configuração das Variáveis SERVIDOR_APLICAÇÃO,
SERVIDOR_SELENIUM e BROWSER
Manutenção simples do código, sem Xpath
Antes
Depois
● Facilidade na digitação de features
● utilização de plugin no RAD
● Integração contínua
● Jenkins
Melhorias em desenvolvimento
● Recursos
● Auxílio na digitação dos passos, com autocomplete de regras que
se enquadram, no momento da digitação
● Indicação de erro, em frente a passos que estão sem regras
conhecidas
● Outline View dos elementos que compõem a feature
● Ganhos esperados
● tornar a tarefa de especificação de testes mais agradável e
produtiva
Plugin
Plugin
Plugin
Integração contínua
● Prática de desenvolvimento de software onde os membros de uma
equipe integram seu trabalho frequentemente.
● Cada integração é verificada por um build automatizado (incluindo
os testes) para detectar erros de integração.
● Como o sistema é integrado continuamente, os erros são
detectados de forma rápida, não sendo acumulados e não gerando
um problema geral no sistema.
● É mais fácil encontrar erros em pequenas integrações do que em
uma integração grande.
Integração contínua
TIPO DE BUILD CARACTERÍSTICAS
Contínuo / Incremental
Executa quando o código é alterado no repositório, faz
uma compilação rápida e executa alguns testes unitários.
Diário / Noturno
Faz a compilação completa com todos os testes unitários
e testes adicionais, tais como testes funcionais
(Cucumber).
Release (nova versão)
Cria um pacote de instalação e, em seguida, executa e
testa todo o processo.
FIM

Mais conteúdo relacionado

Mais procurados

PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETslides_teltools
 
Aula 01 web server controls
Aula 01   web server controlsAula 01   web server controls
Aula 01 web server controlsGabriel Bugano
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYraquelcarsi
 

Mais procurados (6)

PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NET
 
Testes de carga com j meter
Testes de carga com j meterTestes de carga com j meter
Testes de carga com j meter
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
J Meter
J MeterJ Meter
J Meter
 
Aula 01 web server controls
Aula 01   web server controlsAula 01   web server controls
Aula 01 web server controls
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITY
 

Destaque

Intrudução ao Behavior Driven Development (BDD) com Ruby on Rails
Intrudução ao Behavior Driven Development (BDD) com Ruby on RailsIntrudução ao Behavior Driven Development (BDD) com Ruby on Rails
Intrudução ao Behavior Driven Development (BDD) com Ruby on RailsRodrigo Urubatan
 
Haciendo BDD con MSpec
Haciendo BDD con MSpecHaciendo BDD con MSpec
Haciendo BDD con MSpecJorge Gamba
 
Testes com BDD (Behave_Selenium_Python)
Testes com BDD (Behave_Selenium_Python)Testes com BDD (Behave_Selenium_Python)
Testes com BDD (Behave_Selenium_Python)Augusta Raposo Marques
 
7 distribição t e comparação de medias
7   distribição t e comparação de medias7   distribição t e comparação de medias
7 distribição t e comparação de mediasFernando Lucas
 
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...Rafael Chiavegatto
 
Construindo software em segurança com BDD
Construindo software em segurança com BDDConstruindo software em segurança com BDD
Construindo software em segurança com BDDHenrique Luz
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015Renato Groff
 
Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Vanderson Silva
 
Automação de testes BDD e ATDD
Automação de testes BDD e ATDDAutomação de testes BDD e ATDD
Automação de testes BDD e ATDDQualister
 
Aprenda bdd-jogando-dados-ebook
Aprenda bdd-jogando-dados-ebookAprenda bdd-jogando-dados-ebook
Aprenda bdd-jogando-dados-ebookValério Farias
 
Falando sobre BDD com cucumber-jvm
Falando sobre BDD com cucumber-jvmFalando sobre BDD com cucumber-jvm
Falando sobre BDD com cucumber-jvmHézio Fernandes
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)Renato Groff
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehaveIsmael
 
Testes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsTestes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsLocaweb
 

Destaque (19)

Intrudução ao Behavior Driven Development (BDD) com Ruby on Rails
Intrudução ao Behavior Driven Development (BDD) com Ruby on RailsIntrudução ao Behavior Driven Development (BDD) com Ruby on Rails
Intrudução ao Behavior Driven Development (BDD) com Ruby on Rails
 
Haciendo BDD con MSpec
Haciendo BDD con MSpecHaciendo BDD con MSpec
Haciendo BDD con MSpec
 
Ericson Perez
Ericson PerezEricson Perez
Ericson Perez
 
Testes com BDD (Behave_Selenium_Python)
Testes com BDD (Behave_Selenium_Python)Testes com BDD (Behave_Selenium_Python)
Testes com BDD (Behave_Selenium_Python)
 
7 distribição t e comparação de medias
7   distribição t e comparação de medias7   distribição t e comparação de medias
7 distribição t e comparação de medias
 
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
 
Construindo software em segurança com BDD
Construindo software em segurança com BDDConstruindo software em segurança com BDD
Construindo software em segurança com BDD
 
BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015BDD (Behavior-Driven Development) - Setembro/2015
BDD (Behavior-Driven Development) - Setembro/2015
 
Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1
 
Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
 
BDD - Behaviour Driven Development
BDD - Behaviour Driven DevelopmentBDD - Behaviour Driven Development
BDD - Behaviour Driven Development
 
Automação de testes BDD e ATDD
Automação de testes BDD e ATDDAutomação de testes BDD e ATDD
Automação de testes BDD e ATDD
 
Aprenda bdd-jogando-dados-ebook
Aprenda bdd-jogando-dados-ebookAprenda bdd-jogando-dados-ebook
Aprenda bdd-jogando-dados-ebook
 
Falando sobre BDD com cucumber-jvm
Falando sobre BDD com cucumber-jvmFalando sobre BDD com cucumber-jvm
Falando sobre BDD com cucumber-jvm
 
BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)BDD (Behavior-Driven Development)
BDD (Behavior-Driven Development)
 
Test First, TDD e outros Bichos
Test First, TDD e outros BichosTest First, TDD e outros Bichos
Test First, TDD e outros Bichos
 
BDD JBehave
BDD JBehaveBDD JBehave
BDD JBehave
 
Testes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJsTestes utilizando cucumber + PhantomJs
Testes utilizando cucumber + PhantomJs
 
BDD & Cucumber
BDD & CucumberBDD & Cucumber
BDD & Cucumber
 

Semelhante a Framework de testes cecom

TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.ioTDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.iotdc-globalcode
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlinkslides_teltools
 
Testes de regressão automatizados
Testes de regressão automatizadosTestes de regressão automatizados
Testes de regressão automatizadosCristian R. Silva
 
Automação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriverAutomação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriverQualister
 
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driverJúlio de Lima
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade IIIJoão Lourenço
 
ALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerAlan Carlos
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilElias Nogueira
 
BDD com specflow e selenium webdriver
BDD com specflow e selenium webdriverBDD com specflow e selenium webdriver
BDD com specflow e selenium webdriverCristian Mathias
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium Mayron Cachina
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junitcejug
 
Tutorial visão automação de testes e casper js
Tutorial visão automação de testes e casper jsTutorial visão automação de testes e casper js
Tutorial visão automação de testes e casper js4ALL Tests
 
Tutorial - Visão sobre Automação de Testes com CasperJS
Tutorial - Visão sobre Automação de Testes com CasperJSTutorial - Visão sobre Automação de Testes com CasperJS
Tutorial - Visão sobre Automação de Testes com CasperJSFrederico Allan
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
 
Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Wennder Santos
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)Júlio de Lima
 
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com CodeceptionQualister
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 

Semelhante a Framework de testes cecom (20)

TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.ioTDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
TDC2018SP | Trilha Testes - Testes de carga e performance com Gatling.io
 
PDC - Testes - Usando o Testlink
PDC - Testes - Usando o TestlinkPDC - Testes - Usando o Testlink
PDC - Testes - Usando o Testlink
 
Testes de regressão automatizados
Testes de regressão automatizadosTestes de regressão automatizados
Testes de regressão automatizados
 
Automação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriverAutomação de testes funcionais com selenium webdriver
Automação de testes funcionais com selenium webdriver
 
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
 
Teste de Integração - Unidade III
Teste de Integração - Unidade IIITeste de Integração - Unidade III
Teste de Integração - Unidade III
 
ALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test ManagerALM - Testes Manuais no Microsoft Test Manager
ALM - Testes Manuais no Microsoft Test Manager
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 
BDD com specflow e selenium webdriver
BDD com specflow e selenium webdriverBDD com specflow e selenium webdriver
BDD com specflow e selenium webdriver
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
 
Testes de Unidade com Junit
Testes de Unidade com JunitTestes de Unidade com Junit
Testes de Unidade com Junit
 
Tutorial visão automação de testes e casper js
Tutorial visão automação de testes e casper jsTutorial visão automação de testes e casper js
Tutorial visão automação de testes e casper js
 
Tutorial - Visão sobre Automação de Testes com CasperJS
Tutorial - Visão sobre Automação de Testes com CasperJSTutorial - Visão sobre Automação de Testes com CasperJS
Tutorial - Visão sobre Automação de Testes com CasperJS
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)Curso: Desenvolvimento de aplicativos híbridos (dia 2)
Curso: Desenvolvimento de aplicativos híbridos (dia 2)
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
 
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 

Último

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Último (8)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

Framework de testes cecom

  • 1. Framework de Testes Centro de Computação da UFMG Julho de 2014
  • 2. 1. Contextualização ● Por que automatizar? ● Cucumber ● Glue code ● Estrutura dos testes (Cucumber, Java e Selenium) 1. Características atuais do framework ● Estrutura organizada ● Facilidade na adaptação a novos padrões de sistema ● Facilidade na adição de novos passos ● Instalação e Configuração simplificadas ● Manutenção simples de código, sem XPath ● Relatório para visualização do resultado de testes executados 1. Melhorias em desenvolvimento ● Facilidade na digitação de features (utilização de plugin no RAD) ● Integração contínua (Jenkins) Roteiro desta apresentação
  • 3. ● Testes manuais são uma tarefa repetitiva, propensa a erros; ● Testes automatizados possibilitam a redução do tempo gasto na fase de testes; ● Automatização do caminhamento simples pelas telas (clique em todas as opções do menu) em geral descobre cerca de 30% dos bugs; ● Esforços podem ser concentrados em outras atividades ou outros tipos de teste (que não possam ser automatizados), aumentando a qualidade do produto ; ● A automatização facilita a execução de Testes de Regressão; ● Em processos de metodologia ágil, com ciclos de desenvolvimento de curta duração, pode se tornar impraticável executar testes de sistema abrangentes em cada ciclo, sem o uso de testes automatizados. Por que automatizar?
  • 4. ● Ferramenta para execução de testes de automatizados (features); ● Executa código a partir de frases escritas em uma linguagem próxima à natural (Gherkin, com tradução para vários idiomas); ● Fácil entendimento dos cenários de testes ● possibilidade de que cenários sejam escritos pelo próprio dono do produto; ● Simplicidade na reprodução manual de um cenário de teste; ● Automatização dos cenários de testes pode ser feita posteriormente; ● Facilidade no rastreamento de erros na execução dos testes automatizados; Cucumber
  • 5. Funcionalidade: Teste do CRUD Gerir Cargo do Quem é Quem Contexto: Cadastrar, Alterar, Buscar e Excluir Dado que o usuario vini esteja logado na página Home do Quem é Quem Quando o usuário focar o menu Cadastro E for acionado o submenu Gerir Cargos do Quem é Quem Cenário: Inserir Cargos - Verifica Existência Prévia Quando o campo [Buscar] for preenchido com o valor ‘Programador${datahora atual}’ E o comando [Buscar] do tipo [Botão] for acionado Então nenhum item deve estar retornado na pesquisa Quando o comando [Criar Cargo] do tipo [Botão] for acionado E o campo [Nome] for preenchido com o valor ‘Programador${datahora atual}’ E o comando [Salvar] for acionado Então deve ser exibida a mensagem ‘Os dados foram salvos com sucesso.’ .feature
  • 6. ● Glue code é o código fonte que possui as informações interpretadas e tratadas pelo cucumber, que transforma os passos Gherkin em código executável. ● Em Java, o glue code é realizado através de anotações, com as 3 palavras-chave básicas do Gherking: @Dado, @Quando e @Então. ● As anotações recebem como parâmetro uma expressão regular, e o Cucumber faz o casamento do passo Gherkin com as expressões regulares encontradas no glue code. ● Os grupos de captura da expressão regular são passados como parâmetros do método, na ordem em que são encontrados na expressão. Glue Code
  • 8. @Quando ("^o usuário focar o menu (.+)$") public void focarMenuCucumber(String menu) throws Throwable { paginaBase.paginaGerais.focaMenu(driver, menu); } Feature e Glue code Funcionalidade: Teste do CRUD Gerir Cargo do Quem é Quem Contexto: Cadastrar, Alterar, Buscar e Excluir Dado que o usuario vini esteja logado na página Home do Quem é Quem Quando o usuário focar o menu Cadastro E for acionado o submenu Gerir Cargos do Quem é Quem Cenário: Inserir Cargos - Verifica Existência Prévia Quando o campo [Buscar] for preenchido com o valor ‘Programador${datahora atual}’ E o comando [Buscar] do tipo [Botão] for acionado Então nenhum item deve estar retornado na pesquisa Quando o comando [Criar Cargo] do tipo [Botão] for acionado E o campo [Nome] for preenchido com o valor ‘Programador${datahora atual}’ E o comando [Salvar] for acionado Então deve ser exibida a mensagem ‘Os dados foram salvos com sucesso.’
  • 9. Funcionalidade: Teste do CRUD Gerir Cargo do Quem é Quem Contexto: Cadastrar, Alterar, Buscar e Excluir Dado que o usuario vini esteja logado na página Home do Quem é Quem Quando o usuário focar o menu Cadastro E for acionado o submenu Gerir Cargos do Quem é Quem Cenário: Inserir Cargos - Verifica Existência Prévia Quando o campo [Buscar] for preenchido com o valor ‘Programador${datahora atual}’ E o comando [Buscar] do tipo [Botão] for acionado Então nenhum item deve estar retornado na pesquisa Quando o comando [Criar Cargo] do tipo [Botão] for acionado E o campo [Nome] for preenchido com o valor ‘Programador${datahora atual}’ E o comando [Salvar] for acionado Então deve ser exibida a mensagem ‘Os dados foram salvos com sucesso.’ Feature e Glue code @Quando("^o campo [(.+)] for preenchido com o valor '(.+)'$") public void preencherValorDoCampoCucumber(String rotulo, String valor) { paginaBase.paginaPreencher.preencherValorDoCampo(driver, rotulo, valor); }
  • 11. Resultado da execução LEGENDA: . PASSOU - NÃO FOI EXECUTADO F FALHOU U PASSO NÃO DEFINIDO
  • 12. ● Estrutura organizada ● separação por tipos de interação ● uso de interfaces ● Facilidade na adição de novos padrões de sistema ● Facilidade na adição de novos passos ● Instalação e configuração simplificadas ● Manutenção simples, com indicação de elementos facilitada (sem XPath) ● Relatório para visualização do resultado dos testes executados ● Abrangente; atende bem ao padrão atual (sistema SIGA) Características Atuais do Framework
  • 13. Estrutura organizada, com facilidade na adição de novos padrões de sistema teste.paginas.reuso.passosCucumber teste.paginas.reuso.interfacesFramework ACIONAR PREENCHER GERAIS VERIFICAR ACIONAR PREENCHER BUSCAR GERAIS VERIFICAR teste.paginas.reuso.implementacoesFramework.ejb3 ACIONAR PREENCHERBUSCAR GERAIS VERIFICAR implementaçõesEspecificasProjetoDeTeste.ejb3 Passo 1: Implementar novos métodos para o novo padrão de sistema LOGIN
  • 14. Facilidade na adição de novos padrões de sistema Passo 2: Estender a classe Passo 3: Sobrescrever o método Passo 4: Adicionar bind
  • 15. Estrutura para adição de novos passos Regras locais Específicos para cada projeto Regras globais (genéricos) Utilizados em diversos projetos Framework Projeto de teste
  • 16. Facilidade na adição de novos passos globais teste.paginas.reuso.passosCucumber teste.paginas.reuso.interfacesFramework ACIONAR PREENCHER GERAIS VERIFICAR ACIONAR PREENCHER BUSCAR GERAIS VERIFICAR teste.paginas.reuso.implementacoesFramework.ejb3 ACIONAR PREENCHERBUSCAR GERAIS VERIFICAR NOVO PASSO GLOBAL 1. Criar novo passo cucumber 2. Declarar novo método 3. Implementar novo método
  • 17. Comparação do processo de adição de novos passos Antes ● Cada projeto de teste criado como uma cópia do projeto do Framework. ● Definição de novos passos e funções de forma independente e com transmissão informal (cada desenvolvedor passando a sua implementação para os que a desejassem utilizar). Depois ● Cada projeto de teste criado como um projeto que importa o código do Framework como uma dependência. ● Todo projeto utiliza os passos gerais do Framework, utilizando passos específicos para o sistema apenas quando necessário. ● Caso um passo criado seja geral o suficiente e de uso comum em um grande número de sistemas, ele é inserido no Framework, para futuro reuso. Configuração de novo projeto de testes Definição de novos passos e métodos globais
  • 18. ConfiguracaoSelenium SharedDriver RunFeature.launch VerificaFeature.launch PropriedadesLogin PaginaLogin Instalação e configuração simplificadas Passo 1: Criar estrutura de diretórios Passo 2: Estender classes Passo 3: Informar dados de acesso à aplicação: PropriedadesLogin<NomeProjeto> PaginaLogin<NomeProjeto> RunFeature.launch VerificaFeature.launch PropriedadesLogin PaginaLogin DATABASE PÁGINAS ConfiguracaoSelenium SharedDriver RunFeature.launch VerificaFeature.launch FRAMEWORK REUSO ConfiguracaoSelenium<NomeProjeto> SharedDriver<NomeProjeto> PROJETO DE TESTES DATABASE PÁGINAS REUSO WebDriverModule CAMINHO = ”/<NomeProjeto>/home.seam”; SENHA_PADRAO = ”♦♦♦♦♦♦”; @Dado("^que o usuário (.+) esteja logado na página Home do <SistemaTestado>$") SERVIDOR=”http://<ServidorDeTeste>.ufmg.br” Instancia ConfiguracaoSelenium<NomeProjeto> Bind com SharedDriver<NomeProjeto>
  • 19. Instalação e configuração simplificadas Antes ● Configuradas como variáveis de ambiente do workspace do eclipse. ● Para testar cada projeto de teste, era necessário reconfigurar as variáveis do ambiente ou utilizar workspaces separados. Depois ● Cada projeto de teste define tais variáveis na classe ConfiguracaoSelenium<NomeDoProjetoDe Teste>. ● Dois projetos de teste podem conviver no mesmo workspace sem necessidade de reconfiguração. Configuração das Variáveis SERVIDOR_APLICAÇÃO, SERVIDOR_SELENIUM e BROWSER
  • 20. Manutenção simples do código, sem Xpath Antes Depois
  • 21. ● Facilidade na digitação de features ● utilização de plugin no RAD ● Integração contínua ● Jenkins Melhorias em desenvolvimento
  • 22. ● Recursos ● Auxílio na digitação dos passos, com autocomplete de regras que se enquadram, no momento da digitação ● Indicação de erro, em frente a passos que estão sem regras conhecidas ● Outline View dos elementos que compõem a feature ● Ganhos esperados ● tornar a tarefa de especificação de testes mais agradável e produtiva Plugin
  • 25. Integração contínua ● Prática de desenvolvimento de software onde os membros de uma equipe integram seu trabalho frequentemente. ● Cada integração é verificada por um build automatizado (incluindo os testes) para detectar erros de integração. ● Como o sistema é integrado continuamente, os erros são detectados de forma rápida, não sendo acumulados e não gerando um problema geral no sistema. ● É mais fácil encontrar erros em pequenas integrações do que em uma integração grande.
  • 26. Integração contínua TIPO DE BUILD CARACTERÍSTICAS Contínuo / Incremental Executa quando o código é alterado no repositório, faz uma compilação rápida e executa alguns testes unitários. Diário / Noturno Faz a compilação completa com todos os testes unitários e testes adicionais, tais como testes funcionais (Cucumber). Release (nova versão) Cria um pacote de instalação e, em seguida, executa e testa todo o processo.
  • 27. FIM

Notas do Editor

  1. regressão: quando uma versão é lançada, e esta atualização gera erros em componentes já analisados