Globalcode – Open4education
Aprenda como criar uma
suite de testes e2e
Rápida, robusta e de fácil manutenção
por Walmyr Lima e Silva Filho
Globalcode – Open4education
Quem sou eu?
Bacharel em Administração de empresas com ênfase em
análise de sistemas pela PUCRS
Desenvolvedor de software e agile testing coach na Taller
Negócios Digitais (até o final de Maio de 2016)
Autor do blog talkingabouttesting.com
Autor do curso "Aprendendo Protractor", disponível de forma
gratuita no Youtube.
Engenheiro de software com foco em QA no Appear.in (a
partir de Junho de 2016)
Globalcode – Open4education
O que você vai saber ao final
dessa palestra:
➔ Um pouco sobre o porquê automatizar testes
➔ Alguns fundamentos importantes em teste de software
➔ Problemas dos testes de UI (e2e)
➔ Como tornar seus testes e2e parte do dia-a-dia dos
desenvolvedores tanto quanto os testes de unidade
➔ Quais as vantagens de uma suite de testes e2e rápida,
robusta e manutenível
➔ A importância de pipelines
➔ Alguns exemplos e links úteis...
Globalcode – Open4education
➔ Rápido feedback após mudanças
➔ Trabalho repetitivo é chato de fazer manualmente
➔ Não se consegue testar tudo de forma manual
(performance, por exemplo)
Mas afinal, porquê automatizar
testes?
Globalcode – Open4education
Pirâmide dos testes
Referência: https://goo.gl/TgOM5L
Globalcode – Open4education
Quadrante dos testes
Referência: http://goo.gl/Flgv7w
Globalcode – Open4education
Testes e2e / UI Testing
➔ São os testes do topo da pirâmide
➔ Testes funcionais e/ou de aceitação (com
foco no negócio)
São testes executados em navegadores reais
que simulam a utilização da aplicação como os
usuários fariam.
Globalcode – Open4education
Principais problemas de
testes de UI
Globalcode – Open4education
São lentos
➔ Necessidade de abrir o navegador
➔ Pré e pós condições de testes muito custosas
➔ Testes das partes "erradas" da aplicação
(erradas para testes e2e)
Globalcode – Open4education
São frágeis
➔ Dependência entre casos de teste ou suites
de teste (não independentes)
➔ Falta de conhecimento de automação por
parte do time
➔ Falta de conhecimento da aplicação
(negócio)
➔ Falta de conhecimento seletores CSS
➔ Falta de padrões
Globalcode – Open4education
São de difícil manutenção
➔ Falta de padrões
➔ Cultura de desenvolvimento tradicional
Globalcode – Open4education
Em contra partida, veja algumas
vantagens dos testes de
unidade e serviços
➔ Rápidos
➔ Mais controle por parte dos desenvolvedores
➔ Evoluem mais facilmente junto com a aplicação
Globalcode – Open4education
Então, como criar uma suite de
testes e2e que seja rápida,
robusta e de fácil manutenção?
Globalcode – Open4education
Para ser rápida...
➔ Crie uma suite de smoke test
➔ Crie uma suite de testes para as principais rotas da
aplicação
➔ Paralelize os testes
➔ Crie um pipeline com diferentes estágios
(unidade/serviços, smoke, regression/acceptance)
Globalcode – Open4education
Quão
rápida?
Globalcode – Open4education
Vejamos
alguns dados
Globalcode – Open4education
Suite de teste das principais rotas
da aplicação
Globalcode – Open4education
Paralelização de testes -
exemplo 1
Globalcode – Open4education
Veja o tempo de execução dos
mesmos testes executados em
um mesmo navegador...
Globalcode – Open4education
Paralelização de testes -
exemplo 2
Globalcode – Open4education
Veja também o tempo de
execução dos mesmos testes
executados em um mesmo
navegador...
Globalcode – Open4education
Estes testes paralelos também
podem ser executados em
serviços na nuvem
Globalcode – Open4education
➔ Crie testes independentes
➔ Pré-requisitos de testes que seriam lentos de ser
executados via interface podem ser criados via
onPrepare, por exemplo
➔ Conheça e se mantenha atualizado sobre as
ferramentas utilizadas
➔ Conheça a aplicação da perspectiva de negócios
➔ Bons seletores CSS ajudam na testabilidade
➔ Siga e dissemine os padrões
➔ Utilize Page Objects
Para ser robusta...
Globalcode – Open4education
Independencia de testes...
Globalcode – Open4education
Setup/teardown com onPrepare
Globalcode – Open4education
Outras possibilidades...
beforeLaunch()
onComplete()
onCleanUp()
afterLaunch()
Globalcode – Open4education
Mantenha-se atualizado...
Globalcode – Open4education
Crie testes pensando no negócio
Globalcode – Open4education
Seletores CSS...
Globalcode – Open4education
Dica para aprendizado de CSS
Globalcode – Open4education
Siga e dissemine os padrões...
Globalcode – Open4education
Utilize Page Objects...
Globalcode – Open4education
Sem Page Objects...
Globalcode – Open4education
Com Page Objects (spec file)...
Globalcode – Open4education
Com Page Objects (.po file)...
Globalcode – Open4education
message-wrapper.po file
Globalcode – Open4education
➔ Entenda cada camada da aplicação
➔ Siga e dissemine os padrões
➔ Dissemine a cultura do Agile Testing
➔ Refatore sem piedade!
Para ser evolutiva...
Globalcode – Open4education
Application layers...
Globalcode – Open4education
Cultura Agile Testing...
Globalcode – Open4education
O manifesto dos testes
Valorizamos:
● Testar durante mais que testar no final
● Prevenir bugs mais que encontrar bugs
● Testar o entendimento mais que verificar
funcionalidades
● Construir o melhor sistema mais que quebrar o sistema
● Time responsável pela qualidade mais que
responsabilidade do testador/time de QA.
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Aproveite as refatorações para
matar @TODOs e xit().pend()s
Globalcode – Open4education
Nem sempre sua suite de
testes e2e poderá ser rápida,
mas no mínimo DEVE ser
robusta e manutenível.
Globalcode – Open4education
Aqui entra a importância dos
pipelines
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Vejamos alguns exemplos?
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Globalcode – Open4education
Navigation tests from Protractor
oficial repository
Globalcode – Open4education
É possível, og du kan gjøre det
Globalcode – Open4education
Takk!
@walmyrlimaesilv
http://github.com/wlsf82

TDC 2016 Trilha Testes - Floripa