Frameworks de Testes
End-to-end
NodeJS
Oi!
Bárbara Cabral
QA Engineer
◎ Conceitos
◉ BDD & ATDD
◎ Exemplos ATDD + BDD
◎ Frameworks em NodeJS
◉ CucumberJS
◉ Protractor
◉ CodeceptJS
◉ BackstopJS
Agenda
BDD e ATDD
Abordagens de Desenvolvimento de
Software orientado à Testes
Unitários
Componente
Integração
Aceitação
Pirâmide de Testes
BDD
Behavior Driven Development
1
O que é?
É uma abordagem
que funciona muito
bem com uma
metodologia ágil,
encoraja devs, qas, e
pessoas não técnicas
(de negócios) a
utilizarem uma
linguagem única
facilitando a
conversação.
Criador
Dan North, em 2003,
concebeu em reposta
ao TDD, ele retira a
palavra “teste” do
nome da técnica e a
traz de volta ao
comportamento da
aplicação.
BDD
ATDD
Acceptance Testing Driven
Development
2
O que é?
É uma abordagem
para a criação de
requisitos de forma
colaborativa entre o
cliente e a equipe. É
descrita de forma
natural para que
todos entendam o
que será entregue
sem criação de
doctos adicionais.
Criador
Elisabeth
Hendrickson, em
2008, criou a técnica
se baseando em
conceitos de BDD,
TDD e Especificação
por exemplos.
ATDD
Exemplos
ATDD + BDD
Base para os frameworks de testes
end-to-end
Estória (User Story)
Como um usuário do site
JetBlue
Eu gostaria de encontrar
vôos de ida e volta para a
cidade de destino
Para que eu agende a
minha viagem de férias
“As a/an …
I would like ..
So that”
Cenário (Scenario)
Dado que eu acesso o site da JetBlue
Quando escolho cidade de origem
E escolho data de saída
E escolho cidade de destino
E escolho data de retorno
Então eu visualizo uma lista de vôos
relacionados à pesquisa
“ Given …
When …
Then … ”
Exemplo
Cenário Outline: Busca por vôos inválidos
Quando eu escolho a <cidade_origem>
E escolho a <data_saida>
E escolho a <cidade_destino>
E escolho a <data_retorno>
E eu busco por vôos
Então eu vejo a mensagem de erro “Vôo não encontrado”
Exemplos:
| cidade_origem | data_saida | cidade_destino | data_retorno |
| "Florianópolis" | "02/01/2018" | "São Paulo" | "28/01/2018" |
| "Miami" | "02/01/2018" | "Cairo" | "28/01/2052" |
Exemplos
Frameworks em NodeJS
◎ Especificação
◉ CucumberJS
◎ Protractor
◎ CodeceptJS
◎ BackstopJS
Frameworks
CucumberJS
◎ Versão em Javascript do Cucumber
◉ Framework de Especificação para BDD
◎ Sintaxe da linguagem é gherkin
◎ Executa com o NodeJS
◎ Baseado em:
◉ Feature files
◉ Step Files
◎ Especificar os cenários ANTES de
desenvolver
◎ Automatizá-los DEPOIS de desenvolvidos
CucumberJS
CucumberJS
CucumberJS
Protractor
◎ Executa com o Node.js usando o WebDriver
(selenium) para controlar o browser e simular
as ações dos usuários
◎ Identifica elementos do AngularJS
◎ Usa a biblioteca do Jasmine para sua sintaxe
de testes.
◎ Sintaxe é similar à sintaxe dos testes unitários,
contendo um arquivo de teste com um ou
mais blocos de “it” que descrevem os
requisitos da aplicação.
Protractor
Protractor
Protractor + PageObj
PageObject
CodeceptJS
◎ É baseado em cenários
◎ Pode-ser ir inserindo os comandos direto no shell
dentro da execução do teste
◎ É personalizável, Helpers:
◉ Protractor
◉ Pupeeter (opera em cima do Chrome
diretamente, sem o ChromeDriver)
◉ Nightmare (headless, like PhantomJS)
◉ Appium (mobile)
◉ REST (API)
◎ Sintaxe unificada, não importa o Helper
CodeceptJS
CodeceptJS + CucumberJS
CodeceptJS + CucumberJS
◎ Simples de começar
◎ Comandos interessantes
◉ Gerar steps não implementados
◉ Executar tags do cucumber
◉ Cenários que executam apenas em 1 browser
◉ Gerar pageobjects
CodeceptJS + PageObjects
BackstopJS
◎ Testes de Regressão Visual
◎ Compara alterações visuais entre versões do
sistema
◉ Ex: dev environment vs. production
◉ Screenshots para versão de referência
BackstopJS
◎ Comandos
◉ $ backstopjs init
◉ $ backstopjs referente
◉ $ backstopjs test
◎ Engines
◉ Chrome-Headless
○ "engine": "puppeteer" (default)
○ "engine": "chromy"
◉ Slimer (similar ao phantom roda no gecko: engine do firefox)
○ "engine": "slimerjs"
○ "engine": "casper"
BackstopJS
“Referências
◎ Top 5 Most Rated Node.js Frameworks for
End-to-End Web Testing
◎ Meus Exemplos
◉ Exemplo JetBlue com Protractor
◉ Exemplo JetBlue com o CucumberJS +
Protractor
Obrigada!
Perguntas & Sugestões
Você pode me encontrar
twitter @barbarapcabral & email barbaracabral@gmail.com

[Node js] frameworks de testes end to-end baseados em nodejs

  • 1.
  • 2.
  • 3.
    ◎ Conceitos ◉ BDD& ATDD ◎ Exemplos ATDD + BDD ◎ Frameworks em NodeJS ◉ CucumberJS ◉ Protractor ◉ CodeceptJS ◉ BackstopJS Agenda
  • 4.
    BDD e ATDD Abordagensde Desenvolvimento de Software orientado à Testes
  • 5.
  • 6.
  • 7.
    O que é? Éuma abordagem que funciona muito bem com uma metodologia ágil, encoraja devs, qas, e pessoas não técnicas (de negócios) a utilizarem uma linguagem única facilitando a conversação. Criador Dan North, em 2003, concebeu em reposta ao TDD, ele retira a palavra “teste” do nome da técnica e a traz de volta ao comportamento da aplicação. BDD
  • 8.
  • 9.
    O que é? Éuma abordagem para a criação de requisitos de forma colaborativa entre o cliente e a equipe. É descrita de forma natural para que todos entendam o que será entregue sem criação de doctos adicionais. Criador Elisabeth Hendrickson, em 2008, criou a técnica se baseando em conceitos de BDD, TDD e Especificação por exemplos. ATDD
  • 11.
    Exemplos ATDD + BDD Basepara os frameworks de testes end-to-end
  • 12.
    Estória (User Story) Comoum usuário do site JetBlue Eu gostaria de encontrar vôos de ida e volta para a cidade de destino Para que eu agende a minha viagem de férias “As a/an … I would like .. So that” Cenário (Scenario) Dado que eu acesso o site da JetBlue Quando escolho cidade de origem E escolho data de saída E escolho cidade de destino E escolho data de retorno Então eu visualizo uma lista de vôos relacionados à pesquisa “ Given … When … Then … ” Exemplo
  • 13.
    Cenário Outline: Buscapor vôos inválidos Quando eu escolho a <cidade_origem> E escolho a <data_saida> E escolho a <cidade_destino> E escolho a <data_retorno> E eu busco por vôos Então eu vejo a mensagem de erro “Vôo não encontrado” Exemplos: | cidade_origem | data_saida | cidade_destino | data_retorno | | "Florianópolis" | "02/01/2018" | "São Paulo" | "28/01/2018" | | "Miami" | "02/01/2018" | "Cairo" | "28/01/2052" | Exemplos
  • 14.
  • 15.
    ◎ Especificação ◉ CucumberJS ◎Protractor ◎ CodeceptJS ◎ BackstopJS Frameworks
  • 16.
    CucumberJS ◎ Versão emJavascript do Cucumber ◉ Framework de Especificação para BDD ◎ Sintaxe da linguagem é gherkin ◎ Executa com o NodeJS ◎ Baseado em: ◉ Feature files ◉ Step Files ◎ Especificar os cenários ANTES de desenvolver ◎ Automatizá-los DEPOIS de desenvolvidos
  • 17.
  • 18.
  • 19.
  • 20.
    Protractor ◎ Executa como Node.js usando o WebDriver (selenium) para controlar o browser e simular as ações dos usuários ◎ Identifica elementos do AngularJS ◎ Usa a biblioteca do Jasmine para sua sintaxe de testes. ◎ Sintaxe é similar à sintaxe dos testes unitários, contendo um arquivo de teste com um ou mais blocos de “it” que descrevem os requisitos da aplicação.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
    CodeceptJS ◎ É baseadoem cenários ◎ Pode-ser ir inserindo os comandos direto no shell dentro da execução do teste ◎ É personalizável, Helpers: ◉ Protractor ◉ Pupeeter (opera em cima do Chrome diretamente, sem o ChromeDriver) ◉ Nightmare (headless, like PhantomJS) ◉ Appium (mobile) ◉ REST (API) ◎ Sintaxe unificada, não importa o Helper
  • 26.
  • 27.
  • 28.
    CodeceptJS + CucumberJS ◎Simples de começar ◎ Comandos interessantes ◉ Gerar steps não implementados ◉ Executar tags do cucumber ◉ Cenários que executam apenas em 1 browser ◉ Gerar pageobjects
  • 29.
  • 30.
    BackstopJS ◎ Testes deRegressão Visual ◎ Compara alterações visuais entre versões do sistema ◉ Ex: dev environment vs. production ◉ Screenshots para versão de referência
  • 31.
    BackstopJS ◎ Comandos ◉ $backstopjs init ◉ $ backstopjs referente ◉ $ backstopjs test ◎ Engines ◉ Chrome-Headless ○ "engine": "puppeteer" (default) ○ "engine": "chromy" ◉ Slimer (similar ao phantom roda no gecko: engine do firefox) ○ "engine": "slimerjs" ○ "engine": "casper"
  • 32.
  • 33.
    “Referências ◎ Top 5Most Rated Node.js Frameworks for End-to-End Web Testing ◎ Meus Exemplos ◉ Exemplo JetBlue com Protractor ◉ Exemplo JetBlue com o CucumberJS + Protractor
  • 34.
    Obrigada! Perguntas & Sugestões Vocêpode me encontrar twitter @barbarapcabral & email barbaracabral@gmail.com