Protractor style guide - Agile Testers Conference 2016

52
Vamos falar sobre o Protractor Style Guide? Walmyr Lima e Silva Filho

Transcript of Protractor style guide - Agile Testers Conference 2016

Page 1: Protractor style guide - Agile Testers Conference 2016

Vamos falar sobre o Protractor Style Guide?

Walmyr Lima e Silva Filho

Page 2: Protractor style guide - Agile Testers Conference 2016

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

Page 3: Protractor style guide - Agile Testers Conference 2016

● 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)

Page 4: Protractor style guide - Agile Testers Conference 2016

● Regras gerais

● Estrutura de projeto

● Estratégias de localizadores (locators)

● Page Objects

● Suites de teste

Style guide

Page 5: Protractor style guide - Agile Testers Conference 2016

● Regras gerais

● Estrutura de projeto

● Estratégias de localizadores (locators)

● Page Objects

● Suites de teste

Style guide

Page 6: Protractor style guide - Agile Testers Conference 2016

● 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

Page 7: Protractor style guide - Agile Testers Conference 2016

● 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

Page 8: Protractor style guide - Agile Testers Conference 2016

/* Evite */

protractor.conf.dev.js

protractor.conf.stg.js

protractor.conf.local.js

/* Recomenda-se */

protractor.conf.js -> gulp test-local; gulp test-dev; ...

Page 9: Protractor style guide - Agile Testers Conference 2016

● Regras gerais

● Estrutura de projeto

● Estratégias de localizadores (locators)

● Page Objects

● Suites de teste

Style guide

Page 10: Protractor style guide - Agile Testers Conference 2016

● 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/)

Page 11: Protractor style guide - Agile Testers Conference 2016
Page 12: Protractor style guide - Agile Testers Conference 2016

● Regras gerais

● Estrutura de projeto

● Estratégias de localizadores (locators)

● Page Objects

● Suites de teste

Style guide

Page 13: Protractor style guide - Agile Testers Conference 2016

● Porquê?

○ Markup sujeito a alterações

○ xpath tem problemas de desempemho

(performance)

○ Não são legíveis

NUNCA utilize xpath

Page 14: Protractor style guide - Agile Testers Conference 2016
Page 15: Protractor style guide - Agile Testers Conference 2016

● 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

Page 16: Protractor style guide - Agile Testers Conference 2016
Page 17: Protractor style guide - Agile Testers Conference 2016

● 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

Page 18: Protractor style guide - Agile Testers Conference 2016
Page 19: Protractor style guide - Agile Testers Conference 2016

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)

Page 20: Protractor style guide - Agile Testers Conference 2016

Nunca utilize xpath

Page 21: Protractor style guide - Agile Testers Conference 2016

● Regras gerais

● Estrutura de projeto

● Estratégias de localizadores (locators)

● Page Objects

● Suites de teste

Style guide

Page 22: Protractor style guide - Agile Testers Conference 2016

● 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

Page 23: Protractor style guide - Agile Testers Conference 2016
Page 24: Protractor style guide - Agile Testers Conference 2016

● Porquê?

○ Mantém o código limpo e facilita

encontrar o que se procura

Declare um Page Object por arquivo

Page 25: Protractor style guide - Agile Testers Conference 2016
Page 26: Protractor style guide - Agile Testers Conference 2016

● Porquê?

○ Um PageObject por aquivo significa que

só há uma classe à exportar

Utilize somente um module.exports ao final do arquivo Page Object

Page 27: Protractor style guide - Agile Testers Conference 2016
Page 28: Protractor style guide - Agile Testers Conference 2016

● 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

Page 29: Protractor style guide - Agile Testers Conference 2016
Page 30: Protractor style guide - Agile Testers Conference 2016

● 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

Page 31: Protractor style guide - Agile Testers Conference 2016
Page 32: Protractor style guide - Agile Testers Conference 2016

● 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

Page 33: Protractor style guide - Agile Testers Conference 2016
Page 34: Protractor style guide - Agile Testers Conference 2016

● 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

Page 35: Protractor style guide - Agile Testers Conference 2016

● 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

Page 36: Protractor style guide - Agile Testers Conference 2016
Page 37: Protractor style guide - Agile Testers Conference 2016

● Regras gerais

● Estrutura de projeto

● Estratégias de localizadores (locators)

● Page Objects

● Suites de teste

Style guide

Page 38: Protractor style guide - Agile Testers Conference 2016

● 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

Page 39: Protractor style guide - Agile Testers Conference 2016

● Porquê?

○ É bem documentado

○ É também suportado pelo time do Protractor

○ beforeAll e afterAll

Utilize Jasmine2

Page 40: Protractor style guide - Agile Testers Conference 2016
Page 41: Protractor style guide - Agile Testers Conference 2016

● 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

Page 42: Protractor style guide - Agile Testers Conference 2016
Page 43: Protractor style guide - Agile Testers Conference 2016

● 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

Page 44: Protractor style guide - Agile Testers Conference 2016

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

Page 45: Protractor style guide - Agile Testers Conference 2016

NUNCA use xpath

Page 46: Protractor style guide - Agile Testers Conference 2016

● 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

Page 47: Protractor style guide - Agile Testers Conference 2016
Page 48: Protractor style guide - Agile Testers Conference 2016

● 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

Page 49: Protractor style guide - Agile Testers Conference 2016
Page 51: Protractor style guide - Agile Testers Conference 2016

Alguns exemplos

https://github.com/wlsf82/protractor-style-guide