SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Tutorial
Automação de Testes e
CasperJS
• Visão sobre Automação de Testes
• Processo de Automação de Testes
• Manipulação de Elementos
• CasperJS
• Referências
Ementa
• Formação: Ciência da Computação (UNITRI)
• Pós-Graduação: Gerenciamento de Projetos em TI (UNITRI)
• Pós-Graduação: Teste de Software (UNIEURO)
• Certificado ALATS - CTBS
• Certificado ISTQB – CTFL
• + de 4 anos na área de Testes e Qualidade de Software
Apresentação
• Frederico Allan de Souza
https://www.linkedin.com/pub/frederico-allan
fredericoallansouza@gmail.com
• Pra que automatizar? • Tarefas repetitivas
• Garantir continuidade
do negócio
• Reduzir esforço e custo
• Confiabilidade no
código fonte
Visão sobre Automação de Testes
• Áreas de atuação Testes
Automatizados
• Realizar testes que
passem por todas as
camadas
• Foco nos principais
processos de negócio
• Utilizar ferramentas
com reaproveitamento
de código e fácil
manutenção.
Visão sobre Automação de Testes
UI
Services
Unit
Planejamento e
priorização
Ambiente de Testes
e Massa de Dados
Construção Scripts
(Ações do usuário)
Inserção dos
Pontos de
Verificação
(Asserts)
Execução dos
Scripts
Refatoração
Inserção em um
ambiente de
integração contínua
Análise dos
resultados
Manutenção
Processo de Automação de Teste
• Roteiro/Passos:
1. Cadastrar um produto
2. Cadastrar preço
3. Entrar com produto no
estoque
4. Consultar o estoque
Processo de Automação de Teste
• Planejamento e “roteirização” do Teste
• Fluxogramas / Processos de Negócio
• Casos de Uso
Processo de Automação de Teste
• Considerações nesta fase:
– Identificar o comportamento do sistema como um
usuário normal:
• Transições de tela
• Pop-ups
• Mensagens de Alerta e validação
• etc
Processo de Automação de Teste
• Exercitando:
– Vamos analisar o comportamento do sistema ao
Cadastrar usuário com sucesso no redmine demo.
Processo de Automação de Teste
1. Entrar na pagina http://demo.redmine.org/login
2. cadastrar um usuário (Cadastre-se)
 Usuário:sbx0
 Senha:sbx0
 Confirmação:sbx0
 Nome: sbx0
 Sobrenome: sbx0
 Email: sbx0@sbx0.com
 Indioma: Portuguese (Brazil)
 Qual o comportamento do sistema?
 Como, você usuário, identifica que o cadastro foi
realizado?
Processo de Automação de Teste
• Ferramentas manipulam tela através dos
elementos html
• Principais formas:
– Navegando até o xpath do elemento:
//div/p[2]
- Atributos do elemento
class=“intro”
id=“my-Adrdress”
Manipulação dos Elementos na Página
• Principais formas de acesso nos elementos
html em ferramentas de teste web:
– Seletores CSS
– id
– class
– por atributo
– contains
– etc
Manipulação dos Elementos na Página
• Executando código jquery na página:
- Os elementos html podem possuir eventos e
funções javascript ou jquery que podem ser
chamados via “console”. Ex:
- $(“button#salvar”).click();
- $(“input#login”).val(“admin”);
- $(“label#usuario”).text(“User”);
- Fazer Testes!
Manipulação dos Elementos na Página
• Pense nas inúmeras
funções que um código
em javascript chamar
dentro da página e a
manipulação que pode
efetuar nos elementos
html.
Manipulação dos Elementos na Página
• Agora pense numa
ferramenta de testes
que executa javascript,
manipula os objetos
html, injeta código, usa
as próprias funções da
página.
Manipulação dos Elementos na Página
• Agora imagine uma
ferramenta de testes
totalmente baseada em
javascript!
Manipulação dos Elementos na Página
• Ferramenta opensource de teste desenvolvido
em javascript para o PhantomJS.
• É executado pelo browser “webkit” via
headless.
– Defini e ordena os passos de navegação
– Preenchimento de formulários
– Clicks
– Captura screenshots da página ou parte dela
– Testa DOM remoto
CasperJS
– Log de eventos
– Download de recursos, incluindo os binários
– Escreve um conjunto de testes funcionais,
poupando resultados como JUnit e XML
CasperJS
• Instalação Windows:
1. baixe a ultima versão do arquivo .zip na página
casperjs.org
2. descompacte a pasta no c: com o nome de
“casperjs”
3. altere a variável de ambiente “path” incluindo o
diretório da pasta bin do casperjs
CasperJS
• Faça o mesmo para o phantomjs:
1. baixe a ultima versão do arquivo .zip na página
do phantomjs
2. descompacte a pasta no c: com o nome de
“phantomjs”
3. altere a variável de ambiente “path” incluindo o
diretório da pasta do phantomjs
CasperJS
• Instale a versão do .net 3.5 ou a mais recente
– http://www.microsoft.com/pt-br/search/Results.aspx?q=.net
CasperJS
• Efetue o teste abrindo o prompt do ms-dos e
digite:
>casperjs --version
>phantomjs --version
CasperJS
• Guia rápido:
– Escolha um editor js e escreva um arquivo teste.js
com o código abaixo:
– Execute-o com:
• >casperjs <nome_arquivo.js>
CasperJS
• Nós teremos o seguinte:
• Colocar o resultado do teste
• O que significa o nosso código de teste?
CasperJS
1. criação da instancia casper
2. Inicio dos testes e abertura da
url
– Uma vez a página aberta
capturamos o título da
página
– <title> my page</title>
3. Abrimos outra url
– Capturamos o título da
página
4. Executamos todas as funções
acima.
CasperJS
• Pergunta!
No exemplo acima
executamos um teste?
CasperJS
• Não!!!
• Testes precisam de validações (asserções) que
garantam, visualmente, que o sistema
responde de forma correta!
CasperJS
• Casper possui módulos de teste que fazem
asserções nos elementos e validam textos,
títulos da página, valores dentro de campos,
nome de botões etc. Ex:
CasperJS
• Documentação
CasperJS
• Sua API é dividida nas funções:
CasperJS
• casper:
– Comportamento do teste
– Funções utilitárias
– Timers e validações de espera de transição
– etc
CasperJS
• clientUtils:
– O que pode ser executado no front-end
• Com a função “Evaluate” o casper injeta “__utils”
dentro da página e utiliza suas funçoes. Neste caso
acima, utiliza o “.echo”
CasperJS
• clientUtils:
• Perceba que o módulo “__utils__” não está disponível
na página quando abrimos normalmente:
CasperJS
• mouse:
– Abstração das operações com mouse como click,
move, doubleclick
CasperJS
• colorizer:
– Coloração diferenciada nos print’s de execução
CasperJS
Note
Most of the time you won’t have
to use a Colorizer instance
directly as CasperJS provides
all the necessary methods.
• tester:
– Funções para validar conteúdo, textos, atributos,
valores dos elementos html.
CasperJS
• Agora na estrutura de uma suíte de teste:
CasperJS
Teste!
• Nota:
– O then do método thenOpen significa que o script precisa
esperar o método anterior terminar para então partir para
o próximo passo, pois este é o fluxo de navegação.
– Como cada página tem um tempo de carregamento
diferente, o CasperJS precisa deste mecanismo para
controlar o fluxo de execução.
CasperJS
CasperJS
Execute este código e perceba as execuções
que foram feitas de forma assíncronas!
1. Exercício: criar o caso de teste conforme
nossos exercícios anteriores
2. Execute-o no cmd: >casperjs test arquivo.js
CasperJS
1. Entrar na pagina http://demo.redmine.org/login
2. cadastrar um usuário (Cadastre-se)
 Usuário:sbx0
 Senha:sbx0
 Confirmação:soft@123
 Nome: sbx0
 Sobrenome: sbx0
 Email: sbx0@sbx0.com
 Indioma: Portuguese (Brazil)
3. Visualizar “Minha Conta”
4. Logar com o usuário.
5. Excluir a conta
6. Logar com o usuário.
CasperJS
CasperJS
CasperJS
CasperJS
CasperJS
CasperJS
• Introdução a Automação de teste
– http://www.qualister.com.br/blog/introducao-a-automacao-de-testes
• Melhorando sua Estratégia de Testes Automatizados
– http://stefanteixeira.com.br/2014/04/22/melhorando-sua-estrategia-de-testes-automatizados/
• Seletores CSS 2.1 - Parte 1
– http://maujor.com/tutorial/seletores_css21_parte1.php
• W3Schools
– http://www.w3schools.com/
• CasperJS.org
– http://casperjs.org
• PhantomJS.org
– http://phantomjs.org/
• Testes Funcionais com CasperJS
– http://imasters.com.br/front-end/javascript/testes-funcionais-com-casperjs/
Referências

Mais conteúdo relacionado

Mais procurados

De A a Zabbix Devry Metrocamp
De A a Zabbix Devry MetrocampDe A a Zabbix Devry Metrocamp
De A a Zabbix Devry MetrocampAndré Déo
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosiMasters
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Railstchandy
 
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SPUserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SPAndré Déo
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com DjangoMarinho Brandão
 
08 Java Script Introdução - Teoria
08 Java Script   Introdução  - Teoria08 Java Script   Introdução  - Teoria
08 Java Script Introdução - TeoriaCentro Paula Souza
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMCAlisson Agiani
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitFlávio Lisboa
 
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JSDesenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JSRomulo Fagundes
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Tutorial de instalação do Maven
Tutorial de instalação do MavenTutorial de instalação do Maven
Tutorial de instalação do MavenAllan Alves
 
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Edlaine Zamora
 

Mais procurados (19)

De A a Zabbix Devry Metrocamp
De A a Zabbix Devry MetrocampDe A a Zabbix Devry Metrocamp
De A a Zabbix Devry Metrocamp
 
Navegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza Bastos
 
TDDing com Javascript
TDDing com JavascriptTDDing com Javascript
TDDing com Javascript
 
Design Patterns on Rails
Design Patterns on RailsDesign Patterns on Rails
Design Patterns on Rails
 
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SPUserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
UserParameter vs Zabbix Sender - 1º ZABBIX MEETUP DO INTERIOR-SP
 
Construindo Sistemas Com Django
Construindo Sistemas Com DjangoConstruindo Sistemas Com Django
Construindo Sistemas Com Django
 
08 Java Script Introdução - Teoria
08 Java Script   Introdução  - Teoria08 Java Script   Introdução  - Teoria
08 Java Script Introdução - Teoria
 
Apresentação sobre MVVMC
Apresentação sobre MVVMCApresentação sobre MVVMC
Apresentação sobre MVVMC
 
Desenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo ToolkitDesenvolvendo com Dojo Toolkit
Desenvolvendo com Dojo Toolkit
 
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JSDesenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
Desenvolvendo com Node.JS - Mongoose + MongoDB + Vue.JS
 
Angular js
Angular jsAngular js
Angular js
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Groovy grails
Groovy grailsGroovy grails
Groovy grails
 
Tutorial codeigniter
Tutorial codeigniterTutorial codeigniter
Tutorial codeigniter
 
Tutorial de instalação do Maven
Tutorial de instalação do MavenTutorial de instalação do Maven
Tutorial de instalação do Maven
 
Boas práticas de API Design
Boas práticas de API DesignBoas práticas de API Design
Boas práticas de API Design
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
 

Destaque

ALM Practices - Cultura da entrega diária com EVDnC
ALM Practices - Cultura da entrega diária com EVDnCALM Practices - Cultura da entrega diária com EVDnC
ALM Practices - Cultura da entrega diária com EVDnCespecificacoes.com
 
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosScrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosStefan Teixeira
 
TDC2012 - E o que vem antes da automação?
TDC2012 - E o que vem antes da automação?TDC2012 - E o que vem antes da automação?
TDC2012 - E o que vem antes da automação?Paulo Vicente
 
Testes UI: não aceite mais falso negativos
Testes UI: não aceite mais falso negativosTestes UI: não aceite mais falso negativos
Testes UI: não aceite mais falso negativosAndrei Tognolo
 
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes AutomatizadosQConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes AutomatizadosStefan Teixeira
 
testando interfaces web
testando interfaces webtestando interfaces web
testando interfaces webAndrews Medina
 
O melhor da monitoração de web performance
O melhor da monitoração de web performanceO melhor da monitoração de web performance
O melhor da monitoração de web performanceDavidson Fellipe
 
PhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaPhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaHenrique Gogó
 
Testes unitários com Qunit
Testes unitários com QunitTestes unitários com Qunit
Testes unitários com QunitThiago Tiveron
 

Destaque (11)

ALM Practices - Cultura da entrega diária com EVDnC
ALM Practices - Cultura da entrega diária com EVDnCALM Practices - Cultura da entrega diária com EVDnC
ALM Practices - Cultura da entrega diária com EVDnC
 
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes AutomatizadosScrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
Scrum Gathering Rio 2014 - Melhorando sua Estratégia de Testes Automatizados
 
TDC2012 - E o que vem antes da automação?
TDC2012 - E o que vem antes da automação?TDC2012 - E o que vem antes da automação?
TDC2012 - E o que vem antes da automação?
 
Testes UI: não aceite mais falso negativos
Testes UI: não aceite mais falso negativosTestes UI: não aceite mais falso negativos
Testes UI: não aceite mais falso negativos
 
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes AutomatizadosQConRio 2014 - Uso de Headless Browsers em Testes Automatizados
QConRio 2014 - Uso de Headless Browsers em Testes Automatizados
 
testando interfaces web
testando interfaces webtestando interfaces web
testando interfaces web
 
Precisa testar? - Parte 1
Precisa testar? - Parte 1Precisa testar? - Parte 1
Precisa testar? - Parte 1
 
O melhor da monitoração de web performance
O melhor da monitoração de web performanceO melhor da monitoração de web performance
O melhor da monitoração de web performance
 
Agile testing coach - Agile Trends Floripa
Agile testing coach - Agile Trends FloripaAgile testing coach - Agile Trends Floripa
Agile testing coach - Agile Trends Floripa
 
PhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha CamaradaPhantomJS - O Fantasminha Camarada
PhantomJS - O Fantasminha Camarada
 
Testes unitários com Qunit
Testes unitários com QunitTestes unitários com Qunit
Testes unitários com Qunit
 

Semelhante a Tutorial visão automação de testes e casper js

Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumSandy Maciel
 
Ferramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascriptFerramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascriptRodrigo Ferreira
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04Carlos Santos
 
TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016Fernando Santiago
 
Curso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como ProgramarCurso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como ProgramarTiago Antônio da Silva
 
Agile Brazil 2018
Agile Brazil 2018Agile Brazil 2018
Agile Brazil 2018Karla Silva
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPelliando dias
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end seleniumQualister
 
Testes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
Testes Funcionais e Estruturais utilizando Selenium IDE e CoberturaTestes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
Testes Funcionais e Estruturais utilizando Selenium IDE e CoberturaTiago Antônio da Silva
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...Cleber Dantas
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e WebdriverJúlio de Lima
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifaguestea329c
 

Semelhante a Tutorial visão automação de testes e casper js (20)

Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
Curso HTML 5 - Aula Inicial
Curso HTML 5 - Aula InicialCurso HTML 5 - Aula Inicial
Curso HTML 5 - Aula Inicial
 
Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
Node JS - Parte 2
Node JS - Parte 2Node JS - Parte 2
Node JS - Parte 2
 
Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando selenium
 
Ferramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascriptFerramenta Flow - Análise estática de códigos javascript
Ferramenta Flow - Análise estática de códigos javascript
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
 
TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016TDC - Testes e Sistemas legados #quemNunca - SC/2016
TDC - Testes e Sistemas legados #quemNunca - SC/2016
 
Curso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como ProgramarCurso JavaScript - Aula de Introdução como Programar
Curso JavaScript - Aula de Introdução como Programar
 
Agile Brazil 2018
Agile Brazil 2018Agile Brazil 2018
Agile Brazil 2018
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHP
 
TechEd_OFC305
TechEd_OFC305TechEd_OFC305
TechEd_OFC305
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end selenium
 
Testes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
Testes Funcionais e Estruturais utilizando Selenium IDE e CoberturaTestes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
Testes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
MSTechday - Técnicas e recursos para desenvolvimento web em cenários de grand...
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 

Tutorial visão automação de testes e casper js

  • 2. • Visão sobre Automação de Testes • Processo de Automação de Testes • Manipulação de Elementos • CasperJS • Referências Ementa
  • 3. • Formação: Ciência da Computação (UNITRI) • Pós-Graduação: Gerenciamento de Projetos em TI (UNITRI) • Pós-Graduação: Teste de Software (UNIEURO) • Certificado ALATS - CTBS • Certificado ISTQB – CTFL • + de 4 anos na área de Testes e Qualidade de Software Apresentação • Frederico Allan de Souza https://www.linkedin.com/pub/frederico-allan fredericoallansouza@gmail.com
  • 4. • Pra que automatizar? • Tarefas repetitivas • Garantir continuidade do negócio • Reduzir esforço e custo • Confiabilidade no código fonte Visão sobre Automação de Testes
  • 5. • Áreas de atuação Testes Automatizados • Realizar testes que passem por todas as camadas • Foco nos principais processos de negócio • Utilizar ferramentas com reaproveitamento de código e fácil manutenção. Visão sobre Automação de Testes UI Services Unit
  • 6. Planejamento e priorização Ambiente de Testes e Massa de Dados Construção Scripts (Ações do usuário) Inserção dos Pontos de Verificação (Asserts) Execução dos Scripts Refatoração Inserção em um ambiente de integração contínua Análise dos resultados Manutenção Processo de Automação de Teste
  • 7. • Roteiro/Passos: 1. Cadastrar um produto 2. Cadastrar preço 3. Entrar com produto no estoque 4. Consultar o estoque Processo de Automação de Teste • Planejamento e “roteirização” do Teste
  • 8. • Fluxogramas / Processos de Negócio • Casos de Uso Processo de Automação de Teste
  • 9. • Considerações nesta fase: – Identificar o comportamento do sistema como um usuário normal: • Transições de tela • Pop-ups • Mensagens de Alerta e validação • etc Processo de Automação de Teste
  • 10. • Exercitando: – Vamos analisar o comportamento do sistema ao Cadastrar usuário com sucesso no redmine demo. Processo de Automação de Teste
  • 11. 1. Entrar na pagina http://demo.redmine.org/login 2. cadastrar um usuário (Cadastre-se)  Usuário:sbx0  Senha:sbx0  Confirmação:sbx0  Nome: sbx0  Sobrenome: sbx0  Email: sbx0@sbx0.com  Indioma: Portuguese (Brazil)  Qual o comportamento do sistema?  Como, você usuário, identifica que o cadastro foi realizado? Processo de Automação de Teste
  • 12. • Ferramentas manipulam tela através dos elementos html • Principais formas: – Navegando até o xpath do elemento: //div/p[2] - Atributos do elemento class=“intro” id=“my-Adrdress” Manipulação dos Elementos na Página
  • 13. • Principais formas de acesso nos elementos html em ferramentas de teste web: – Seletores CSS – id – class – por atributo – contains – etc Manipulação dos Elementos na Página
  • 14. • Executando código jquery na página: - Os elementos html podem possuir eventos e funções javascript ou jquery que podem ser chamados via “console”. Ex: - $(“button#salvar”).click(); - $(“input#login”).val(“admin”); - $(“label#usuario”).text(“User”); - Fazer Testes! Manipulação dos Elementos na Página
  • 15. • Pense nas inúmeras funções que um código em javascript chamar dentro da página e a manipulação que pode efetuar nos elementos html. Manipulação dos Elementos na Página
  • 16. • Agora pense numa ferramenta de testes que executa javascript, manipula os objetos html, injeta código, usa as próprias funções da página. Manipulação dos Elementos na Página
  • 17. • Agora imagine uma ferramenta de testes totalmente baseada em javascript! Manipulação dos Elementos na Página
  • 18. • Ferramenta opensource de teste desenvolvido em javascript para o PhantomJS. • É executado pelo browser “webkit” via headless. – Defini e ordena os passos de navegação – Preenchimento de formulários – Clicks – Captura screenshots da página ou parte dela – Testa DOM remoto CasperJS
  • 19. – Log de eventos – Download de recursos, incluindo os binários – Escreve um conjunto de testes funcionais, poupando resultados como JUnit e XML CasperJS
  • 20. • Instalação Windows: 1. baixe a ultima versão do arquivo .zip na página casperjs.org 2. descompacte a pasta no c: com o nome de “casperjs” 3. altere a variável de ambiente “path” incluindo o diretório da pasta bin do casperjs CasperJS
  • 21. • Faça o mesmo para o phantomjs: 1. baixe a ultima versão do arquivo .zip na página do phantomjs 2. descompacte a pasta no c: com o nome de “phantomjs” 3. altere a variável de ambiente “path” incluindo o diretório da pasta do phantomjs CasperJS
  • 22. • Instale a versão do .net 3.5 ou a mais recente – http://www.microsoft.com/pt-br/search/Results.aspx?q=.net CasperJS
  • 23. • Efetue o teste abrindo o prompt do ms-dos e digite: >casperjs --version >phantomjs --version CasperJS
  • 24. • Guia rápido: – Escolha um editor js e escreva um arquivo teste.js com o código abaixo: – Execute-o com: • >casperjs <nome_arquivo.js> CasperJS
  • 25. • Nós teremos o seguinte: • Colocar o resultado do teste • O que significa o nosso código de teste? CasperJS
  • 26. 1. criação da instancia casper 2. Inicio dos testes e abertura da url – Uma vez a página aberta capturamos o título da página – <title> my page</title> 3. Abrimos outra url – Capturamos o título da página 4. Executamos todas as funções acima. CasperJS
  • 27. • Pergunta! No exemplo acima executamos um teste? CasperJS
  • 28. • Não!!! • Testes precisam de validações (asserções) que garantam, visualmente, que o sistema responde de forma correta! CasperJS
  • 29. • Casper possui módulos de teste que fazem asserções nos elementos e validam textos, títulos da página, valores dentro de campos, nome de botões etc. Ex: CasperJS
  • 31. • Sua API é dividida nas funções: CasperJS
  • 32. • casper: – Comportamento do teste – Funções utilitárias – Timers e validações de espera de transição – etc CasperJS
  • 33. • clientUtils: – O que pode ser executado no front-end • Com a função “Evaluate” o casper injeta “__utils” dentro da página e utiliza suas funçoes. Neste caso acima, utiliza o “.echo” CasperJS
  • 34. • clientUtils: • Perceba que o módulo “__utils__” não está disponível na página quando abrimos normalmente: CasperJS
  • 35. • mouse: – Abstração das operações com mouse como click, move, doubleclick CasperJS
  • 36. • colorizer: – Coloração diferenciada nos print’s de execução CasperJS Note Most of the time you won’t have to use a Colorizer instance directly as CasperJS provides all the necessary methods.
  • 37. • tester: – Funções para validar conteúdo, textos, atributos, valores dos elementos html. CasperJS
  • 38. • Agora na estrutura de uma suíte de teste: CasperJS Teste!
  • 39. • Nota: – O then do método thenOpen significa que o script precisa esperar o método anterior terminar para então partir para o próximo passo, pois este é o fluxo de navegação. – Como cada página tem um tempo de carregamento diferente, o CasperJS precisa deste mecanismo para controlar o fluxo de execução. CasperJS
  • 40. CasperJS Execute este código e perceba as execuções que foram feitas de forma assíncronas!
  • 41. 1. Exercício: criar o caso de teste conforme nossos exercícios anteriores 2. Execute-o no cmd: >casperjs test arquivo.js CasperJS 1. Entrar na pagina http://demo.redmine.org/login 2. cadastrar um usuário (Cadastre-se)  Usuário:sbx0  Senha:sbx0  Confirmação:soft@123  Nome: sbx0  Sobrenome: sbx0  Email: sbx0@sbx0.com  Indioma: Portuguese (Brazil) 3. Visualizar “Minha Conta” 4. Logar com o usuário. 5. Excluir a conta 6. Logar com o usuário.
  • 48. • Introdução a Automação de teste – http://www.qualister.com.br/blog/introducao-a-automacao-de-testes • Melhorando sua Estratégia de Testes Automatizados – http://stefanteixeira.com.br/2014/04/22/melhorando-sua-estrategia-de-testes-automatizados/ • Seletores CSS 2.1 - Parte 1 – http://maujor.com/tutorial/seletores_css21_parte1.php • W3Schools – http://www.w3schools.com/ • CasperJS.org – http://casperjs.org • PhantomJS.org – http://phantomjs.org/ • Testes Funcionais com CasperJS – http://imasters.com.br/front-end/javascript/testes-funcionais-com-casperjs/ Referências