SlideShare uma empresa Scribd logo
1 de 52
Baixar para ler offline
Vamos falar sobre o
Protractor Style Guide?
Walmyr Lima e Silva Filho
Porque utilizar um style guide?
● Boas práticas
● Padronização
● Tornar rápido e fácil escrever testes e2e
● Facilidade na depuração de erros
● Facilidade na manutenção dos testes por
qualquer membro do time
● Pirâmide dos testes: teste e2e o principal
● Vantagens:
○ Demonstram que o todo funciona conforme o
esperado
○ Previne incidentes em produção
○ Teste manual toma muito tempo X CD
(continuous delivery)
Testes end-to-end (e2e)
● Regras gerais
● Estrutura de projeto
● Estratégias de localizadores (locators)
● Page Objects
● Suites de teste
Style guide
● Regras gerais
● Estrutura de projeto
● Estratégias de localizadores (locators)
● Page Objects
● Suites de teste
Style guide
● Porquê?
○ Pois os testes de unidade executam muito
mais rápidos que os testes e2e
○ Evitar duplicidade de testes
Não crie testes e2e para funcinalidades já cobertas por
testes de unidade
● Porquê?
○ Suas ferramentas de build podem
sobrescrever as configurações para você
(grunt, gulp)
○ Evite configurações duplicadas
Utilize somente um arquivo de configuração
/* Evite */
protractor.conf.dev.js
protractor.conf.stg.js
protractor.conf.local.js
/* Recomenda-se */
protractor.conf.js -> gulp test-local; gulp test-
dev; ...
● Regras gerais
● Estrutura de projeto
● Estratégias de localizadores (locators)
● Page Objects
● Suites de teste
Style guide
● Porquê?
○ Fácil de localizar
○ Separa testes e2e de testes de unidade
○ Estrutura de diretórios mais limpa
Agrupe seus testes e2e em uma estrutura que faça
sentido para seu projeto (ex.: my-project/tests/e2e/)
● Regras gerais
● Estrutura de projeto
● Estratégias de localizadores (locators)
● Page Objects
● Suites de teste
Style guide
● Porquê?
○ Markup sujeito a alterações
○ xpath tem problemas de desempemho
(performance)
○ Não são legíveis
NUNCA utilize xpath
● Porquê?
○ Acesse elementos facilmente
○ O código é mais difícil de mudar que o
markup
○ São localizadores mais legíveis (ex.:
by.model, by.binding)
Dê preferência à localizadores específicos do Protractor
quando possível
● Porquê?
○ Acesse elementos facilmente
○ Você utiliza markup que é menos sujeito
a alterações
○ Legibilidade de localizadores
Dê preferência à by.id e by.css quando não houver um
localizador específico do protractor disponível
Evite localizadores por textos que mudam com
frequência
● Porquê?
○ Textos de botões, links e rótulos tendem
a mudar ao longo do tempo
○ Seus testes não podem quebrar por
simples alterações de textos
○ Sistemas multilanguage (tradução)
Nunca utilize xpath
● Regras gerais
● Estrutura de projeto
● Estratégias de localizadores (locators)
● Page Objects
● Suites de teste
Style guide
● Porquê?
○ Encapsulamento de informações sobre
elementos da página em teste
○ Reutilização de código
○ Desacopla a lógica dos testes dos
detalhes da implementação
Utilize Page Objects para interagir com a página em
teste
● Porquê?
○ Mantém o código limpo e facilita
encontrar o que se procura
Declare um Page Object por arquivo
● Porquê?
○ Um PageObject por aquivo significa que
só há uma classe à exportar
Utilize somente um module.exports ao final do arquivo
Page Object
● Porquê?
○ As dependências de módulos devem ser claras
e fáceis de encontrar
○ Separação de dependências e código de teste
○ Torna as dependências disponíveis para toda
a suite de teste
Requeira e instancie todos os node modules no topo
● Porquê?
○ O usuário de um Page Object deve ter
acesso rápido aos elementos disponíveis
na página
Declare todos elementos do construtor como públicos
● Porquê?
○ A maioria (ou todos) dos elementos do
Page Object estão expostos e podem ser
utilizados diretamente no teste
○ Fazer de outra forma adiciona
complexidade desnecessária
Declare funções para operações que necessitam de
mais de um passo
● Porquê?
○ A responsabilidade pelos assertions é do
teste
○ As pessoas que vão ler o código de teste
devem ser capazes de compreender o
comportamento esperado da aplicação lendo
somente o teste
Não faça assertions nos Page Objects
● Porquê?
○ Você pode utilizá-los em múltiplos
testes
○ Evita duplicidade de código
○ Quando uma diretiva muda, você só
precisa mudar o wrapper, uma vez
Adicione wrappers para diretivas, diálogos e elementos
comuns
● Regras gerais
● Estrutura de projeto
● Estratégias de localizadores (locators)
● Page Objects
● Suites de teste
Style guide
● Porquê?
○ Utilizar a aplicação real com todos suas
dependências lhe provê alta confiança
○ Use mock quando você realmente não pode
fazer chamadas à aplicação real
Não utilize mock a não ser que seja totalmente
necessário
● Porquê?
○ É bem documentado
○ É também suportado pelo time do Protractor
○ beforeAll e afterAll
Utilize Jasmine2
● Porquê?
○ Execute testes em paralelo com sharding
○ A ordem de execução não é garantida
○ Execução isolada de suites de teste
Faça seus testes independentes ao menos no nível de
arquivo
● Porquê?
○ Execução isolada de testes
○ Você pode depurar seus testes facilmente
(ex.: fdescribe, xdescribe, fit, xit)
Faça seus testes independentes uns dos outros
Exceto quando as operações realizadas para
iniciar o estado inicial do testes é muito
custosa
● Porquê?
○ Os testes ficarão executando para sempre
Faça seus testes independentes uns dos outros
NUNCA use xpath
● Porquê?
○ Garantia de que a página em teste está em um
estado limpo
Navegue até a página em teste antes de cada teste
● Porquê?
○ Garantia de que as principais partes da
aplicação estão corretamente conectadas
○ Usuários não navegam digitando URLs
○ Provê confiança sobre questões
relacionadas a permissões
Tenha uma suite de testes que navega através das
principais rotas de sua aplicação
Referências
http://angular.github.io/protractor/#/style-guide
https://www.youtube.com/watch?
feature=player_embedded&v=-lTGnYwnEuM
Alguns exemplos
https://github.com/wlsf82/protractor-style-guide
Obrigado!
walmyr.filho.com
talkingabouttesting.com
@walmyrlimaesilv
wlsf82

Mais conteúdo relacionado

Mais procurados

Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Renato Groff
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyFausto Siqueira
 
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017Renato Groff
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Renato Groff
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Renato Groff
 
Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Renato Groff
 
Testes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalksTestes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalksDiana Ungaro Arnos
 
Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016Renato Groff
 
Testes: existe vida antes do TDD
Testes: existe vida antes do TDDTestes: existe vida antes do TDD
Testes: existe vida antes do TDDDiana Ungaro Arnos
 
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDDPHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDDDiana Ungaro Arnos
 
PHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesPHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesDiana Ungaro Arnos
 
Primeiro framework de testes automatizados
Primeiro framework de testes automatizados  Primeiro framework de testes automatizados
Primeiro framework de testes automatizados Lorena Caldas
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais característicasalinebiath
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaLeandro Parazito
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e SeleniumAndré Thiago
 
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...minastestingconference
 

Mais procurados (20)

Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017Behavior-Driven Development (BDD) - Abril/2017
Behavior-Driven Development (BDD) - Abril/2017
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic Academy
 
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
 
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017Mocks, Stubs e Fakes - Developers-SP - Julho-2017
Mocks, Stubs e Fakes - Developers-SP - Julho-2017
 
MVC & Zend Framework
MVC & Zend FrameworkMVC & Zend Framework
MVC & Zend Framework
 
Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016Behavior-Driven Development (BDD) - DevOps Summit 2016
Behavior-Driven Development (BDD) - DevOps Summit 2016
 
Testes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalksTestes O que são e para que servem? - LadyTalks
Testes O que são e para que servem? - LadyTalks
 
Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016Mocking Test - QA Ninja Conf 2016
Mocking Test - QA Ninja Conf 2016
 
Testes: existe vida antes do TDD
Testes: existe vida antes do TDDTestes: existe vida antes do TDD
Testes: existe vida antes do TDD
 
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDDPHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
PHP Expericence 2015 - Testes Unitários - Existe vida antes do TDD
 
PHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de TestesPHPExperience 2016 - Pirâmide de Testes
PHPExperience 2016 - Pirâmide de Testes
 
Testes unitários e Mocks
Testes unitários e MocksTestes unitários e Mocks
Testes unitários e Mocks
 
Selenium ide
Selenium ideSelenium ide
Selenium ide
 
Primeiro framework de testes automatizados
Primeiro framework de testes automatizados  Primeiro framework de testes automatizados
Primeiro framework de testes automatizados
 
Robot Framework - principais características
Robot Framework - principais característicasRobot Framework - principais características
Robot Framework - principais características
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
Revisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da culturaRevisão de Código - Uma prática que depende da cultura
Revisão de Código - Uma prática que depende da cultura
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
 
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
[MTC 2021] Tests smells: aquele cheirinho de que algo não está bom no seu cód...
 

Destaque

Destaque (6)

Workshop - E2e tests with protractor
Workshop - E2e tests with protractorWorkshop - E2e tests with protractor
Workshop - E2e tests with protractor
 
Protractor tests no processo de integração contínua
Protractor tests no processo de integração contínuaProtractor tests no processo de integração contínua
Protractor tests no processo de integração contínua
 
Primeiros passos com protractor - GUTS-SC
Primeiros passos com protractor - GUTS-SCPrimeiros passos com protractor - GUTS-SC
Primeiros passos com protractor - GUTS-SC
 
Introduction to Protractor
Introduction to ProtractorIntroduction to Protractor
Introduction to Protractor
 
Protractor + visual review 2
Protractor + visual review 2Protractor + visual review 2
Protractor + visual review 2
 
Protractor: Tips & Tricks
Protractor: Tips & TricksProtractor: Tips & Tricks
Protractor: Tips & Tricks
 

Semelhante a Protractor style guide - Agile Testers Conference 2016

Legibilidade de código não é perfumaria
Legibilidade de código não é perfumariaLegibilidade de código não é perfumaria
Legibilidade de código não é perfumariaAriane Izac
 
5 dicas para melhorar a legibilidade de código dos testes automáticos
5 dicas para melhorar a legibilidade de código dos testes automáticos 5 dicas para melhorar a legibilidade de código dos testes automáticos
5 dicas para melhorar a legibilidade de código dos testes automáticos Ariane Izac
 
Legibilidade de código não é perfumaria
Legibilidade de código não é perfumariaLegibilidade de código não é perfumaria
Legibilidade de código não é perfumariaAriane Izac
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseOziel Moreira Neto
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentOtavio Augusto
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesCamilo Ribeiro
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"Cesar Romero
 
Criando Websites a Jato com Django - Marcos Daniel Petry
Criando Websites a Jato com Django - Marcos Daniel PetryCriando Websites a Jato com Django - Marcos Daniel Petry
Criando Websites a Jato com Django - Marcos Daniel PetryTchelinux
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código LegadoCesar Romero
 
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016Renato Groff
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisAna Paula Gomes
 
Visao geral TI03 2-0
Visao geral TI03 2-0Visao geral TI03 2-0
Visao geral TI03 2-0Ale Uehara
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmáticaelliando dias
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018Renato Groff
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Diego Pacheco
 

Semelhante a Protractor style guide - Agile Testers Conference 2016 (20)

Legibilidade de código não é perfumaria
Legibilidade de código não é perfumariaLegibilidade de código não é perfumaria
Legibilidade de código não é perfumaria
 
5 dicas para melhorar a legibilidade de código dos testes automáticos
5 dicas para melhorar a legibilidade de código dos testes automáticos 5 dicas para melhorar a legibilidade de código dos testes automáticos
5 dicas para melhorar a legibilidade de código dos testes automáticos
 
Legibilidade de código não é perfumaria
Legibilidade de código não é perfumariaLegibilidade de código não é perfumaria
Legibilidade de código não é perfumaria
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java Enterprise
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Desenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por TestesDesenvolvimento Dirigido por Testes
Desenvolvimento Dirigido por Testes
 
TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"TDD com Código Legado - "Atualizado"
TDD com Código Legado - "Atualizado"
 
Criando Websites a Jato com Django - Marcos Daniel Petry
Criando Websites a Jato com Django - Marcos Daniel PetryCriando Websites a Jato com Django - Marcos Daniel Petry
Criando Websites a Jato com Django - Marcos Daniel Petry
 
TDD com Código Legado
TDD com Código LegadoTDD com Código Legado
TDD com Código Legado
 
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
 
Qualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnitQualidade no desenvolvimento de Software com TDD e PHPUnit
Qualidade no desenvolvimento de Software com TDD e PHPUnit
 
In tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e maisIn tests we trust: começando com TDD, mocks e mais
In tests we trust: começando com TDD, mocks e mais
 
Django
DjangoDjango
Django
 
Visao geral TI03 2-0
Visao geral TI03 2-0Visao geral TI03 2-0
Visao geral TI03 2-0
 
RealDay: Introduction to TDD
RealDay: Introduction to TDDRealDay: Introduction to TDD
RealDay: Introduction to TDD
 
Programação Pragmática
Programação PragmáticaProgramação Pragmática
Programação Pragmática
 
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
Testes na plataforma .NET: TDD, Mocks, BDD e Selenium - .NET SP - Abril-2018
 
Codigo limpo.pptx
Codigo limpo.pptxCodigo limpo.pptx
Codigo limpo.pptx
 
Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1Treinamento Testes Unitários - parte 1
Treinamento Testes Unitários - parte 1
 

Mais de Walmyr Lima e Silva Filho

Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...Walmyr Lima e Silva Filho
 
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressWalmyr Lima e Silva Filho
 
Agile Testing - A quality culture in the company's core business
Agile Testing - A quality culture in the company's core businessAgile Testing - A quality culture in the company's core business
Agile Testing - A quality culture in the company's core businessWalmyr Lima e Silva Filho
 
Lessons learned as a software engineer working at appear.in
Lessons learned as a software engineer working at appear.inLessons learned as a software engineer working at appear.in
Lessons learned as a software engineer working at appear.inWalmyr Lima e Silva Filho
 
Estratégias para o uso de integração e entrega contínua com gocd
Estratégias para o uso de integração e entrega contínua com gocdEstratégias para o uso de integração e entrega contínua com gocd
Estratégias para o uso de integração e entrega contínua com gocdWalmyr Lima e Silva Filho
 

Mais de Walmyr Lima e Silva Filho (13)

Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
Testando na Gringa - Se preparando para uma entrevista técnica para uma vaga ...
 
Writing cypress tests without cucumber
Writing cypress tests without cucumberWriting cypress tests without cucumber
Writing cypress tests without cucumber
 
Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
 
Component testing with cypress
Component testing with cypressComponent testing with cypress
Component testing with cypress
 
Esquenta QAX
Esquenta QAXEsquenta QAX
Esquenta QAX
 
Agile Testing - A quality culture in the company's core business
Agile Testing - A quality culture in the company's core businessAgile Testing - A quality culture in the company's core business
Agile Testing - A quality culture in the company's core business
 
How to kill software quality in five steps
How to kill software quality in five stepsHow to kill software quality in five steps
How to kill software quality in five steps
 
Lessons learned as a software engineer working at appear.in
Lessons learned as a software engineer working at appear.inLessons learned as a software engineer working at appear.in
Lessons learned as a software engineer working at appear.in
 
Oslo QA Meetup
Oslo QA MeetupOslo QA Meetup
Oslo QA Meetup
 
Estratégias para o uso de integração e entrega contínua com gocd
Estratégias para o uso de integração e entrega contínua com gocdEstratégias para o uso de integração e entrega contínua com gocd
Estratégias para o uso de integração e entrega contínua com gocd
 
Agile testing coach Agile Lean Ireland 2017
Agile testing coach   Agile Lean Ireland 2017Agile testing coach   Agile Lean Ireland 2017
Agile testing coach Agile Lean Ireland 2017
 
Agile testing coach - Agile Trends Floripa
Agile testing coach - Agile Trends FloripaAgile testing coach - Agile Trends Floripa
Agile testing coach - Agile Trends Floripa
 
Palestra agile testing coaching
Palestra agile testing coaching Palestra agile testing coaching
Palestra agile testing coaching
 

Protractor style guide - Agile Testers Conference 2016

  • 1. Vamos falar sobre o Protractor Style Guide? Walmyr Lima e Silva Filho
  • 2. Porque utilizar um style guide? ● Boas práticas ● Padronização ● Tornar rápido e fácil escrever testes e2e ● Facilidade na depuração de erros ● Facilidade na manutenção dos testes por qualquer membro do time
  • 3. ● Pirâmide dos testes: teste e2e o principal ● Vantagens: ○ Demonstram que o todo funciona conforme o esperado ○ Previne incidentes em produção ○ Teste manual toma muito tempo X CD (continuous delivery) Testes end-to-end (e2e)
  • 4. ● Regras gerais ● Estrutura de projeto ● Estratégias de localizadores (locators) ● Page Objects ● Suites de teste Style guide
  • 5. ● Regras gerais ● Estrutura de projeto ● Estratégias de localizadores (locators) ● Page Objects ● Suites de teste Style guide
  • 6. ● Porquê? ○ Pois os testes de unidade executam muito mais rápidos que os testes e2e ○ Evitar duplicidade de testes Não crie testes e2e para funcinalidades já cobertas por testes de unidade
  • 7. ● Porquê? ○ Suas ferramentas de build podem sobrescrever as configurações para você (grunt, gulp) ○ Evite configurações duplicadas Utilize somente um arquivo de configuração
  • 8. /* Evite */ protractor.conf.dev.js protractor.conf.stg.js protractor.conf.local.js /* Recomenda-se */ protractor.conf.js -> gulp test-local; gulp test- dev; ...
  • 9. ● Regras gerais ● Estrutura de projeto ● Estratégias de localizadores (locators) ● Page Objects ● Suites de teste Style guide
  • 10. ● Porquê? ○ Fácil de localizar ○ Separa testes e2e de testes de unidade ○ Estrutura de diretórios mais limpa Agrupe seus testes e2e em uma estrutura que faça sentido para seu projeto (ex.: my-project/tests/e2e/)
  • 11.
  • 12. ● Regras gerais ● Estrutura de projeto ● Estratégias de localizadores (locators) ● Page Objects ● Suites de teste Style guide
  • 13. ● Porquê? ○ Markup sujeito a alterações ○ xpath tem problemas de desempemho (performance) ○ Não são legíveis NUNCA utilize xpath
  • 14.
  • 15. ● Porquê? ○ Acesse elementos facilmente ○ O código é mais difícil de mudar que o markup ○ São localizadores mais legíveis (ex.: by.model, by.binding) Dê preferência à localizadores específicos do Protractor quando possível
  • 16.
  • 17. ● Porquê? ○ Acesse elementos facilmente ○ Você utiliza markup que é menos sujeito a alterações ○ Legibilidade de localizadores Dê preferência à by.id e by.css quando não houver um localizador específico do protractor disponível
  • 18.
  • 19. Evite localizadores por textos que mudam com frequência ● Porquê? ○ Textos de botões, links e rótulos tendem a mudar ao longo do tempo ○ Seus testes não podem quebrar por simples alterações de textos ○ Sistemas multilanguage (tradução)
  • 21. ● Regras gerais ● Estrutura de projeto ● Estratégias de localizadores (locators) ● Page Objects ● Suites de teste Style guide
  • 22. ● Porquê? ○ Encapsulamento de informações sobre elementos da página em teste ○ Reutilização de código ○ Desacopla a lógica dos testes dos detalhes da implementação Utilize Page Objects para interagir com a página em teste
  • 23.
  • 24. ● Porquê? ○ Mantém o código limpo e facilita encontrar o que se procura Declare um Page Object por arquivo
  • 25.
  • 26. ● Porquê? ○ Um PageObject por aquivo significa que só há uma classe à exportar Utilize somente um module.exports ao final do arquivo Page Object
  • 27.
  • 28. ● Porquê? ○ As dependências de módulos devem ser claras e fáceis de encontrar ○ Separação de dependências e código de teste ○ Torna as dependências disponíveis para toda a suite de teste Requeira e instancie todos os node modules no topo
  • 29.
  • 30. ● Porquê? ○ O usuário de um Page Object deve ter acesso rápido aos elementos disponíveis na página Declare todos elementos do construtor como públicos
  • 31.
  • 32. ● Porquê? ○ A maioria (ou todos) dos elementos do Page Object estão expostos e podem ser utilizados diretamente no teste ○ Fazer de outra forma adiciona complexidade desnecessária Declare funções para operações que necessitam de mais de um passo
  • 33.
  • 34. ● Porquê? ○ A responsabilidade pelos assertions é do teste ○ As pessoas que vão ler o código de teste devem ser capazes de compreender o comportamento esperado da aplicação lendo somente o teste Não faça assertions nos Page Objects
  • 35. ● Porquê? ○ Você pode utilizá-los em múltiplos testes ○ Evita duplicidade de código ○ Quando uma diretiva muda, você só precisa mudar o wrapper, uma vez Adicione wrappers para diretivas, diálogos e elementos comuns
  • 36.
  • 37. ● Regras gerais ● Estrutura de projeto ● Estratégias de localizadores (locators) ● Page Objects ● Suites de teste Style guide
  • 38. ● Porquê? ○ Utilizar a aplicação real com todos suas dependências lhe provê alta confiança ○ Use mock quando você realmente não pode fazer chamadas à aplicação real Não utilize mock a não ser que seja totalmente necessário
  • 39. ● Porquê? ○ É bem documentado ○ É também suportado pelo time do Protractor ○ beforeAll e afterAll Utilize Jasmine2
  • 40.
  • 41. ● Porquê? ○ Execute testes em paralelo com sharding ○ A ordem de execução não é garantida ○ Execução isolada de suites de teste Faça seus testes independentes ao menos no nível de arquivo
  • 42.
  • 43. ● Porquê? ○ Execução isolada de testes ○ Você pode depurar seus testes facilmente (ex.: fdescribe, xdescribe, fit, xit) Faça seus testes independentes uns dos outros
  • 44. Exceto quando as operações realizadas para iniciar o estado inicial do testes é muito custosa ● Porquê? ○ Os testes ficarão executando para sempre Faça seus testes independentes uns dos outros
  • 46. ● Porquê? ○ Garantia de que a página em teste está em um estado limpo Navegue até a página em teste antes de cada teste
  • 47.
  • 48. ● Porquê? ○ Garantia de que as principais partes da aplicação estão corretamente conectadas ○ Usuários não navegam digitando URLs ○ Provê confiança sobre questões relacionadas a permissões Tenha uma suite de testes que navega através das principais rotas de sua aplicação
  • 49.