SlideShare uma empresa Scribd logo
1 de 56
Solucionando a Teoria do
Caos com Cypress.io
Teoria do Caos
“A Teoria do Caos trata de sistemas complexos e dinâmicos rigorosamente
deterministas, mas que apresentam um fenômeno fundamental de
instabilidade chamado sensibilidade às condições iniciais que, modulando uma
propriedade suplementar de recorrência, torna-os não previsíveis na prática a
longo prazo.”
Teoria do Caos
A ideia é que uma pequena variação nas condições em determinado ponto de
um sistema dinâmico pode ter consequências de proporções inimagináveis.
À exemplo, o bater de asas de uma borboleta no Brasil pode provocar um
furacão no Texas.
Fazendo uma analogia com o Desenvolvimento de Software...
Automatizando Testes com
Cypress.io
Patrick Monteiro
O PROBLEMA
O PROBLEMA
Com a busca de uma cultura DevOps dentro da W3AS notou-se a evolução em
diversos pontos de nosso processo de desenvolvimento.
O Back-end e Front-end evoluíram bastante, porém tínhamos um gargalo na
etapa de testes de nossos projetos.
Por mais que existam testes implementados no back e front, não resolvemos
esse tempo gasto nos testes que simulam o ambiente real.
A SOLUÇÃO
A SOLUÇÃO
Para solucionar o problema, buscamos integrar ao desenvolvimento de novos
sistemas o teste conhecido como End-to-End(E2E).
O E2E é uma metodologia utilizada para testar se o fluxo de um aplicativo está
sendo executado corretamente do início ao fim.
Um exemplo de teste E2E teria como objetivos:
● Acessar um sistema com login e senha;
● Acessar um módulo do sistema;
● Realizar um crud completo;
● Verificar itens inseridos ou removidos;
● Sair do sistema
A FERRAMENTA
A FERRAMENTA
Para desenvolver os testes E2E, buscamos uma ferramenta moderna, simples
e eficaz.
O Cypress.io caiu como uma luva para nosso time, tanto de desenvolvimento
quanto para a equipe de testes pela sua simplicidade desde a instalação, até a
execução.
Com o cypress é possível produzir testes rapidamente, bastando ter
conhecimento mínimo em HTML, CSS e JavaScript.
A FERRAMENTA
Cypress permite que você escreve todos os tipos de testes:
● Testes de ponta a ponta;
● Testes de integração;
● Teste unitários;
Um pouco mais sobre o
Cypress.io
O Cypress testa seu código, e não sua paciência!
Ele apresenta um novo padrão de testes front-end que todo desenvolvedor e
engenheiro de controle de qualidade precisa.
Cypress.io
O ecossistema Cypress consiste em um Test Runner instalado localmente, de
código aberto e um serviço de Dashboard para gravar seus testes.
Após a criação do conjunto de testes, é possível integrar o Cypress ao seu
provedor de CI. E o Cypress ainda facilita disponibilizando algumas imagens
Docker.
Provedor de CI:
AppVeyor, BitBucket, BuildKite, CircleCI,
CodeShip Basic, CodeShip Pro, Concourse,
Docker, GitLab, Jenkins, Semaphore, Shippable,
Solano, TravisCI, VSTS CI/TeamFoundation...
O teste foi quebrado
por muito tempo...
Cypress.io
Os testes de ponta a ponta(E2E) não eram fáceis. Foi a parte que os
desenvolvedores odiaram por muito tempo.
O Cypress veio a facilitar a configuração, gravação, execução e depuração de
testes. Tudo em uma única ferramenta!
Cypress.io
7 Características do
Cypress
Características do Cypress
1 - Cypress não usa Selenium
A maioria das ferramentas de teste E2E é baseada no Selenium, e é por isso
que todas compartilham os mesmos problemas. Para tornar o Cypress
diferente, uma nova arquitetura foi construída a partir do zero.
Enquanto o Selenium executa comandos através da rede, o Cypress é
executado no mesmo ciclo de execução da sua aplicação.
Características do Cypress
2 - Cypress se concentra em fazer testes end-to-end REALMENTE bem
Cypress não é um framework de automação geral, nem é uma estrutura de
teste de unidade para seus serviços de back-end. Já existem ótimas
ferramentas por aí que fazem isso.
O Cypress cria uma experiência enquanto você escreve testes de ponta a ponta
para seus aplicativos Web.
Características do Cypress
3 - Cypress funciona em qualquer estrutura de front-end ou site
Cypress testa tudo o que é executado em um navegador da web. Toda
arquitetura em torno do Cypress é construída especialmente para lidar com
estruturas JavaScript modernas.
Estruturas com React, Angular, Vue, Elm, etc funcionam bem com Cypress,
assim como páginas e aplicativos renderizados por servidores mais antigos.
Características do Cypress
4 - Testes são escritos apenas em JavaScript
Embora você possa compilar o JavaScript de qualquer outro idioma, o código
de teste é executado no próprio navegador.
Não há ligação de idioma ou driver, sempre será apenas JavaScript.
Características do Cypress
5 - Cypress é tudo em um
Escrever testes E2E requer muitas ferramentas diferentes para trabalhar em
conjunto.
Com Cypress você obtém várias ferramentas em uma. Não há necessidade de
instalar 10 ferramentas e bibliotecas separadas para configurar seu conjunto
de testes.
Características do Cypress
6 - Cypress é para desenvolvedores e engenheiros de QA.
Um dos objetivos do Cypress era tornar o desenvolvimento orientado a testes
uma realidade para testes E2E. Ele permite você usá-lo enquanto constrói sua
aplicação.
Características do Cypress
7 - Cypress corre muito, muito mais rápido
Esses aprimoramentos arquitetônicos liberam a capacidade de fazer TDD com
testes completos de ponta a ponta pela primeira vez.
O Cypress foi construído para que o teste e o desenvolvimento possam ocorrer
simultaneamente. Você pode desenvolver mais rápido enquanto conduz todo o
processo de desenvolvimento com testes porque:
● você pode ver sua aplicação;
● você ainda tem acesso às ferramentas do desenvolvedor;
● e as alterações são refletidas em tempo real;
No final você terá desenvolvido mais, seu código será melhor e completamente
Testado!
Preparando o
Ambiente
Instalando Cypress.io
Instalar Cypress através do npm em seus projetos é super fácil:
npm install cypress --save-dev
Configurando Scripts
Após o Download, é necessário configurar os scripts em sua aplicação:
npm run test - Executa em background os testes.
npm run test:e2e - Abre o dashboard do Cypress.
Criando estrutura
inicial
Estrutura de pastas
Para que o Cypress gere a estrutura de pastas necessárias para executar os
testes, basta rodar o comando anterior npm run test:e2e. Ele identifica que não
existe um arquivo cypress.json e nem uma estrutura de pastas com os testes,
e cria automaticamente.
Estrutura de Pastas
● fixtures = basicamente são dados fixos para utilizarmos em nossos testes
● integration = onde ficarão nossos testes
● plugins = permitem que você toque, modifique ou estenda o
comportamento interno do cypress
● support = commandos personalizados e importação de arquivos
Adicionando um
arquivo de teste
Adicionando um arquivo de Teste
Supondo que você tenha instalado com sucesso o Test Runner e abriu o
aplicativo Cypress, agora é hora de escrever nosso primeiro teste. Em
cypress/integrations crie um arquivo:
CadastroUsuario.spec.js
Rapidamente o Test Runner exibe imediatamente na lista de testes de
integração. O Cypress monitora seus arquivos de especificação para quaisquer
alterações e exibe automaticamente elas.
Iniciando um teste
Mesmo que não tenhamos escrito nenhum teste, vamos clicar nele na lista e
assistir ao Cypress iniciar seu navegador.
Escrevendo um
teste simples
Escrevendo um teste simples
Agora é hora de escrever nosso primeiro teste no ambiente de
desenvolvimento.
Em nosso arquivo CadastroUsuario.spec.js adicionaremos o código:
O contexto no cypress é equivalente aos cenários testes, e as iterações são
equivalentes as ações dos cenários de testes.
Utilizando Cypress
sem npm
Utilizando o Cypress sem npm
Se você estiver em um ambiente sem node e npm instalados, o cypress
permite baixar a última versão compactadas, sem a necessidade de
dependências.
Utilizando o Cypress sem npm
Basta descompactar o arquivo, e dentro do diretório executar o Cypress.exe
Criando o diretório
Criamos um diretório para nosso projeto chamado TesteUsuario, e abrimos
com o Test Runner do Cypress.
Ao abrir, o Cypress identifica que não há a estrutura de pastas e arquivo
Cypress.json e os cria.
Configurando nossa baseUrl
Para facilitar o desenvolvimento dos testes e evitar trechos repetitivos,
podemos configurar uma baseUrl para nossos testes.
Essa configuração é feita no arquivo cypress.json:
Configurando nossa baseUrl
Agora ao visitar nossa aplicação, não precisamos mais digitar o endereço por
completo, apenas a rota:
Neste caso, estamos visitando a rota inicial da aplicação.
Escrevendo os
Testes
Escrevendo os Testes
Para acessar o formulário, iremos configurar uma nova iteração com uma
outra url:
Escrevendo os Testes
Note que o acesso é feito muito rápido, para adicionar um delay, podemos
utilizar o comando cy.wait()
Escrevendo os testes
O Cypress possui uma ferramenta de seleção, que nos permite identificar
elementos no DOM para acessarmos com mais facilidade.
Escrevendo os testes
Agora tentamos preencher um campo do formulário, começamos pelo campo
Nome.
O primeiro passo é identificar o input do Nome no HTML, para isso usamos o
comando cy.get() e passamos o elemento e propriedade que será buscado no
HTML.
Escrevendo os testes
Após identificar o input no HTML, é necessário dar o focus() neste elemento.
Para isso usamos o comando focus():
Por fim, iremos preencher nosso input com um dado através do comando
type():
Escrevendo os testes
Agora iremos validar o valor do input com o que foi inserido através do
comando should():
Escrevendo os testes
Para os inputs de Sobrenome e Endereço, iremos seguir os mesmos passos
do teste escrito para o campo Nome.
Escrevendo os testes
Para os inputs de Sobrenome, Endereço e CPF, iremos seguir os mesmos
passos do teste escrito para o campo Nome.
Escrevendo os testes
O campo de Gênero tem um funcionamento diferente, pois ele não é um input
e sim um select.
Ou seja, ele não recebe uma entrada de texto.
Ele precisa da ação de click do mouse,
e posteriormente o click no item que se
deseja escolher.
Escrevendo os testes
No caso do Idioma a seleção é feita pelo click também, só que dessa vez o
click é realizado em um dos botões apresentados.
Escrevendo os testes
Para finalizar nosso cadastro, precisamos clicar no botão de confirmação.
Nada que não já saibamos fazer.
Escrevendo os testes
Porém nosso teste não chega ao fim por aí,
precisamos ainda validar se o cadastro foi
feito com sucesso e a mensagem foi
apresentada ao usuário!
Obrigado!

Mais conteúdo relacionado

Mais procurados

Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!Ariane Izac
 
Testes de ponta a ponta
Testes de ponta a pontaTestes de ponta a ponta
Testes de ponta a pontaElias Nogueira
 
Arquitetura de Automação de Teste
Arquitetura de Automação de TesteArquitetura de Automação de Teste
Arquitetura de Automação de TesteElias Nogueira
 
Unit tests & TDD
Unit tests & TDDUnit tests & TDD
Unit tests & TDDDror Helper
 
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesSamanta Cicilia
 
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re GoingSpring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re GoingVMware Tanzu
 
Automação de Teste para iOS e Android com Appium
Automação de Teste para iOS e Android com AppiumAutomação de Teste para iOS e Android com Appium
Automação de Teste para iOS e Android com AppiumElias Nogueira
 
Introduction to cypress in Angular (Chinese)
Introduction to cypress in Angular (Chinese)Introduction to cypress in Angular (Chinese)
Introduction to cypress in Angular (Chinese)Hong Tat Yew
 
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Cypress e2e automation testing -  day1 intor by: Hassan HameedCypress e2e automation testing -  day1 intor by: Hassan Hameed
Cypress e2e automation testing - day1 intor by: Hassan HameedHassan Muhammad
 
DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilElias Nogueira
 
How to Get Started with Cypress
How to Get Started with CypressHow to Get Started with Cypress
How to Get Started with CypressApplitools
 
End to end test automation with cypress
End to end test automation with cypressEnd to end test automation with cypress
End to end test automation with cypressPankajSingh184960
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredJúlio de Lima
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasWordCamp Floripa
 
Automação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira ÁgilAutomação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira ÁgilElias Nogueira
 
What is Agile Testing? Edureka
What is Agile Testing? EdurekaWhat is Agile Testing? Edureka
What is Agile Testing? EdurekaEdureka!
 
e2e testing with cypress
e2e testing with cypresse2e testing with cypress
e2e testing with cypressTomasz Bak
 
Certificações em Teste e Qualidade de Software
Certificações em Teste e Qualidade de SoftwareCertificações em Teste e Qualidade de Software
Certificações em Teste e Qualidade de SoftwareCamilo Ribeiro
 

Mais procurados (20)

Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!Estratégias de testes em 10 passos, step by step!
Estratégias de testes em 10 passos, step by step!
 
Testes de ponta a ponta
Testes de ponta a pontaTestes de ponta a ponta
Testes de ponta a ponta
 
Arquitetura de Automação de Teste
Arquitetura de Automação de TesteArquitetura de Automação de Teste
Arquitetura de Automação de Teste
 
Unit tests & TDD
Unit tests & TDDUnit tests & TDD
Unit tests & TDD
 
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de TestesTOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
TOTVS - Agile Testing e a Importância de se ter Estratégia de Testes
 
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re GoingSpring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
 
Automação de Teste para iOS e Android com Appium
Automação de Teste para iOS e Android com AppiumAutomação de Teste para iOS e Android com Appium
Automação de Teste para iOS e Android com Appium
 
Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
Introduction to cypress in Angular (Chinese)
Introduction to cypress in Angular (Chinese)Introduction to cypress in Angular (Chinese)
Introduction to cypress in Angular (Chinese)
 
Cypress e2e automation testing - day1 intor by: Hassan Hameed
Cypress e2e automation testing -  day1 intor by: Hassan HameedCypress e2e automation testing -  day1 intor by: Hassan Hameed
Cypress e2e automation testing - day1 intor by: Hassan Hameed
 
DevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágilDevCamp - O papel de um testador em uma equipe ágil
DevCamp - O papel de um testador em uma equipe ágil
 
Cypress testing
Cypress testingCypress testing
Cypress testing
 
How to Get Started with Cypress
How to Get Started with CypressHow to Get Started with Cypress
How to Get Started with Cypress
 
End to end test automation with cypress
End to end test automation with cypressEnd to end test automation with cypress
End to end test automation with cypress
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-Assured
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio Nas
 
Automação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira ÁgilAutomação de Teste em Front End - Caipira Ágil
Automação de Teste em Front End - Caipira Ágil
 
What is Agile Testing? Edureka
What is Agile Testing? EdurekaWhat is Agile Testing? Edureka
What is Agile Testing? Edureka
 
e2e testing with cypress
e2e testing with cypresse2e testing with cypress
e2e testing with cypress
 
Certificações em Teste e Qualidade de Software
Certificações em Teste e Qualidade de SoftwareCertificações em Teste e Qualidade de Software
Certificações em Teste e Qualidade de Software
 

Semelhante a Solucionando a Teoria do Caos com Cypress.io

DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasAmazon Web Services LATAM
 
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...minastestingconference
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...GUTS-RS
 
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...Dextra Sistemas / Etec Itu
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...Amazon Web Services
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
Segurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheirasSegurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheirasBruno Luiz Pereira da Silva
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAmazon Web Services LATAM
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptxCarlos Gonzaga
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSAmazon Web Services LATAM
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDextra Sistemas / Etec Itu
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testeselliando dias
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaLeonardo Kobus
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 

Semelhante a Solucionando a Teoria do Caos com Cypress.io (20)

cypress.pdf
cypress.pdfcypress.pdf
cypress.pdf
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas RápidasDevOps na AWS: Construindo Sistemas para Entregas Rápidas
DevOps na AWS: Construindo Sistemas para Entregas Rápidas
 
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
[MTC 2021] Criando testes automatizados rápidos e robustos com cypress - Walm...
 
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
[GUTS-RS] Workshop (prático) de Testes Automatizados para dispositivos móveis...
 
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
VSSUMMIT 2023 - Como partir do zero e entregar uma API Profissional com .NET ...
 
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...DevOps na AWS: Construindo Sistemas para Entregas Rápidas -  DEV301 - Sao Pau...
DevOps na AWS: Construindo Sistemas para Entregas Rápidas - DEV301 - Sao Pau...
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Segurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheirasSegurança e automação na Amazon: Lições das trincheiras
Segurança e automação na Amazon: Lições das trincheiras
 
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
 
Testes automatizados.pptx
Testes automatizados.pptxTestes automatizados.pptx
Testes automatizados.pptx
 
ESX Tech Lives - DevOps
ESX Tech Lives - DevOpsESX Tech Lives - DevOps
ESX Tech Lives - DevOps
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Webinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWSWebinar: Introdução à Distribuição Contínua na AWS
Webinar: Introdução à Distribuição Contínua na AWS
 
Continuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na NuvemContinuous Deployment e DevOps na Nuvem
Continuous Deployment e DevOps na Nuvem
 
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu DevelopersDesenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
 
Desenvolvimento Guiado por Testes
Desenvolvimento Guiado por TestesDesenvolvimento Guiado por Testes
Desenvolvimento Guiado por Testes
 
Entrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuidaEntrega contínua com arquitetura distribuida
Entrega contínua com arquitetura distribuida
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 

Mais de Patrick Monteiro

Quasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoQuasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoPatrick Monteiro
 
Quasar Framework - Uma visão Geral
Quasar Framework - Uma visão GeralQuasar Framework - Uma visão Geral
Quasar Framework - Uma visão GeralPatrick Monteiro
 
Introdução ao codeigniter
Introdução ao codeigniterIntrodução ao codeigniter
Introdução ao codeigniterPatrick Monteiro
 
Afinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsAfinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsPatrick Monteiro
 
DESENVOLVIMENTO DE APLICAÇÕES WEB
DESENVOLVIMENTO DE APLICAÇÕES WEBDESENVOLVIMENTO DE APLICAÇÕES WEB
DESENVOLVIMENTO DE APLICAÇÕES WEBPatrick Monteiro
 

Mais de Patrick Monteiro (7)

Quasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenhoQuasar Framework - Front end de alto desempenho
Quasar Framework - Front end de alto desempenho
 
Quasar Framework - Uma visão Geral
Quasar Framework - Uma visão GeralQuasar Framework - Uma visão Geral
Quasar Framework - Uma visão Geral
 
Meetup vue.js
Meetup vue.jsMeetup vue.js
Meetup vue.js
 
Introdução ao codeigniter
Introdução ao codeigniterIntrodução ao codeigniter
Introdução ao codeigniter
 
Afinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsAfinal, o que são Single Page Applications
Afinal, o que são Single Page Applications
 
Novidades do http 2.0
Novidades do http 2.0Novidades do http 2.0
Novidades do http 2.0
 
DESENVOLVIMENTO DE APLICAÇÕES WEB
DESENVOLVIMENTO DE APLICAÇÕES WEBDESENVOLVIMENTO DE APLICAÇÕES WEB
DESENVOLVIMENTO DE APLICAÇÕES WEB
 

Último

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdfAula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdfInocencioHoracio3
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAMarcio Venturelli
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiPaulo Pagliusi, PhD, CISM
 
Convergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor SucroenergéticoConvergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor SucroenergéticoMarcio Venturelli
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx2m Assessoria
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASMarcio Venturelli
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx2m Assessoria
 

Último (9)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdfAula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
Aula 01 - Introducao a Processamento de Frutos e Hortalicas.pdf
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
Convergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor SucroenergéticoConvergência TO e TI nas Usinas - Setor Sucroenergético
Convergência TO e TI nas Usinas - Setor Sucroenergético
 
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docxATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
ATIVIDADE 1 - GESTÃO DE PESSOAS E DESENVOLVIMENTO DE EQUIPES - 52_2024.docx
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docxATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
ATIVIDADE 1 - CÁLCULO DIFERENCIAL E INTEGRAL II - 52_2024.docx
 

Solucionando a Teoria do Caos com Cypress.io

  • 1. Solucionando a Teoria do Caos com Cypress.io
  • 2. Teoria do Caos “A Teoria do Caos trata de sistemas complexos e dinâmicos rigorosamente deterministas, mas que apresentam um fenômeno fundamental de instabilidade chamado sensibilidade às condições iniciais que, modulando uma propriedade suplementar de recorrência, torna-os não previsíveis na prática a longo prazo.”
  • 3. Teoria do Caos A ideia é que uma pequena variação nas condições em determinado ponto de um sistema dinâmico pode ter consequências de proporções inimagináveis. À exemplo, o bater de asas de uma borboleta no Brasil pode provocar um furacão no Texas. Fazendo uma analogia com o Desenvolvimento de Software...
  • 6. O PROBLEMA Com a busca de uma cultura DevOps dentro da W3AS notou-se a evolução em diversos pontos de nosso processo de desenvolvimento. O Back-end e Front-end evoluíram bastante, porém tínhamos um gargalo na etapa de testes de nossos projetos. Por mais que existam testes implementados no back e front, não resolvemos esse tempo gasto nos testes que simulam o ambiente real.
  • 8. A SOLUÇÃO Para solucionar o problema, buscamos integrar ao desenvolvimento de novos sistemas o teste conhecido como End-to-End(E2E). O E2E é uma metodologia utilizada para testar se o fluxo de um aplicativo está sendo executado corretamente do início ao fim. Um exemplo de teste E2E teria como objetivos: ● Acessar um sistema com login e senha; ● Acessar um módulo do sistema; ● Realizar um crud completo; ● Verificar itens inseridos ou removidos; ● Sair do sistema
  • 10. A FERRAMENTA Para desenvolver os testes E2E, buscamos uma ferramenta moderna, simples e eficaz. O Cypress.io caiu como uma luva para nosso time, tanto de desenvolvimento quanto para a equipe de testes pela sua simplicidade desde a instalação, até a execução. Com o cypress é possível produzir testes rapidamente, bastando ter conhecimento mínimo em HTML, CSS e JavaScript.
  • 11. A FERRAMENTA Cypress permite que você escreve todos os tipos de testes: ● Testes de ponta a ponta; ● Testes de integração; ● Teste unitários;
  • 12. Um pouco mais sobre o
  • 13. Cypress.io O Cypress testa seu código, e não sua paciência! Ele apresenta um novo padrão de testes front-end que todo desenvolvedor e engenheiro de controle de qualidade precisa.
  • 14. Cypress.io O ecossistema Cypress consiste em um Test Runner instalado localmente, de código aberto e um serviço de Dashboard para gravar seus testes. Após a criação do conjunto de testes, é possível integrar o Cypress ao seu provedor de CI. E o Cypress ainda facilita disponibilizando algumas imagens Docker. Provedor de CI: AppVeyor, BitBucket, BuildKite, CircleCI, CodeShip Basic, CodeShip Pro, Concourse, Docker, GitLab, Jenkins, Semaphore, Shippable, Solano, TravisCI, VSTS CI/TeamFoundation...
  • 15. O teste foi quebrado por muito tempo...
  • 16. Cypress.io Os testes de ponta a ponta(E2E) não eram fáceis. Foi a parte que os desenvolvedores odiaram por muito tempo. O Cypress veio a facilitar a configuração, gravação, execução e depuração de testes. Tudo em uma única ferramenta!
  • 19. Características do Cypress 1 - Cypress não usa Selenium A maioria das ferramentas de teste E2E é baseada no Selenium, e é por isso que todas compartilham os mesmos problemas. Para tornar o Cypress diferente, uma nova arquitetura foi construída a partir do zero. Enquanto o Selenium executa comandos através da rede, o Cypress é executado no mesmo ciclo de execução da sua aplicação.
  • 20. Características do Cypress 2 - Cypress se concentra em fazer testes end-to-end REALMENTE bem Cypress não é um framework de automação geral, nem é uma estrutura de teste de unidade para seus serviços de back-end. Já existem ótimas ferramentas por aí que fazem isso. O Cypress cria uma experiência enquanto você escreve testes de ponta a ponta para seus aplicativos Web.
  • 21. Características do Cypress 3 - Cypress funciona em qualquer estrutura de front-end ou site Cypress testa tudo o que é executado em um navegador da web. Toda arquitetura em torno do Cypress é construída especialmente para lidar com estruturas JavaScript modernas. Estruturas com React, Angular, Vue, Elm, etc funcionam bem com Cypress, assim como páginas e aplicativos renderizados por servidores mais antigos.
  • 22. Características do Cypress 4 - Testes são escritos apenas em JavaScript Embora você possa compilar o JavaScript de qualquer outro idioma, o código de teste é executado no próprio navegador. Não há ligação de idioma ou driver, sempre será apenas JavaScript.
  • 23. Características do Cypress 5 - Cypress é tudo em um Escrever testes E2E requer muitas ferramentas diferentes para trabalhar em conjunto. Com Cypress você obtém várias ferramentas em uma. Não há necessidade de instalar 10 ferramentas e bibliotecas separadas para configurar seu conjunto de testes.
  • 24. Características do Cypress 6 - Cypress é para desenvolvedores e engenheiros de QA. Um dos objetivos do Cypress era tornar o desenvolvimento orientado a testes uma realidade para testes E2E. Ele permite você usá-lo enquanto constrói sua aplicação.
  • 25. Características do Cypress 7 - Cypress corre muito, muito mais rápido Esses aprimoramentos arquitetônicos liberam a capacidade de fazer TDD com testes completos de ponta a ponta pela primeira vez. O Cypress foi construído para que o teste e o desenvolvimento possam ocorrer simultaneamente. Você pode desenvolver mais rápido enquanto conduz todo o processo de desenvolvimento com testes porque: ● você pode ver sua aplicação; ● você ainda tem acesso às ferramentas do desenvolvedor; ● e as alterações são refletidas em tempo real; No final você terá desenvolvido mais, seu código será melhor e completamente Testado!
  • 27. Instalando Cypress.io Instalar Cypress através do npm em seus projetos é super fácil: npm install cypress --save-dev
  • 28. Configurando Scripts Após o Download, é necessário configurar os scripts em sua aplicação: npm run test - Executa em background os testes. npm run test:e2e - Abre o dashboard do Cypress.
  • 30. Estrutura de pastas Para que o Cypress gere a estrutura de pastas necessárias para executar os testes, basta rodar o comando anterior npm run test:e2e. Ele identifica que não existe um arquivo cypress.json e nem uma estrutura de pastas com os testes, e cria automaticamente.
  • 31. Estrutura de Pastas ● fixtures = basicamente são dados fixos para utilizarmos em nossos testes ● integration = onde ficarão nossos testes ● plugins = permitem que você toque, modifique ou estenda o comportamento interno do cypress ● support = commandos personalizados e importação de arquivos
  • 33. Adicionando um arquivo de Teste Supondo que você tenha instalado com sucesso o Test Runner e abriu o aplicativo Cypress, agora é hora de escrever nosso primeiro teste. Em cypress/integrations crie um arquivo: CadastroUsuario.spec.js Rapidamente o Test Runner exibe imediatamente na lista de testes de integração. O Cypress monitora seus arquivos de especificação para quaisquer alterações e exibe automaticamente elas.
  • 34. Iniciando um teste Mesmo que não tenhamos escrito nenhum teste, vamos clicar nele na lista e assistir ao Cypress iniciar seu navegador.
  • 36. Escrevendo um teste simples Agora é hora de escrever nosso primeiro teste no ambiente de desenvolvimento. Em nosso arquivo CadastroUsuario.spec.js adicionaremos o código: O contexto no cypress é equivalente aos cenários testes, e as iterações são equivalentes as ações dos cenários de testes.
  • 38. Utilizando o Cypress sem npm Se você estiver em um ambiente sem node e npm instalados, o cypress permite baixar a última versão compactadas, sem a necessidade de dependências.
  • 39. Utilizando o Cypress sem npm Basta descompactar o arquivo, e dentro do diretório executar o Cypress.exe
  • 40. Criando o diretório Criamos um diretório para nosso projeto chamado TesteUsuario, e abrimos com o Test Runner do Cypress. Ao abrir, o Cypress identifica que não há a estrutura de pastas e arquivo Cypress.json e os cria.
  • 41. Configurando nossa baseUrl Para facilitar o desenvolvimento dos testes e evitar trechos repetitivos, podemos configurar uma baseUrl para nossos testes. Essa configuração é feita no arquivo cypress.json:
  • 42. Configurando nossa baseUrl Agora ao visitar nossa aplicação, não precisamos mais digitar o endereço por completo, apenas a rota: Neste caso, estamos visitando a rota inicial da aplicação.
  • 44. Escrevendo os Testes Para acessar o formulário, iremos configurar uma nova iteração com uma outra url:
  • 45. Escrevendo os Testes Note que o acesso é feito muito rápido, para adicionar um delay, podemos utilizar o comando cy.wait()
  • 46. Escrevendo os testes O Cypress possui uma ferramenta de seleção, que nos permite identificar elementos no DOM para acessarmos com mais facilidade.
  • 47. Escrevendo os testes Agora tentamos preencher um campo do formulário, começamos pelo campo Nome. O primeiro passo é identificar o input do Nome no HTML, para isso usamos o comando cy.get() e passamos o elemento e propriedade que será buscado no HTML.
  • 48. Escrevendo os testes Após identificar o input no HTML, é necessário dar o focus() neste elemento. Para isso usamos o comando focus(): Por fim, iremos preencher nosso input com um dado através do comando type():
  • 49. Escrevendo os testes Agora iremos validar o valor do input com o que foi inserido através do comando should():
  • 50. Escrevendo os testes Para os inputs de Sobrenome e Endereço, iremos seguir os mesmos passos do teste escrito para o campo Nome.
  • 51. Escrevendo os testes Para os inputs de Sobrenome, Endereço e CPF, iremos seguir os mesmos passos do teste escrito para o campo Nome.
  • 52. Escrevendo os testes O campo de Gênero tem um funcionamento diferente, pois ele não é um input e sim um select. Ou seja, ele não recebe uma entrada de texto. Ele precisa da ação de click do mouse, e posteriormente o click no item que se deseja escolher.
  • 53. Escrevendo os testes No caso do Idioma a seleção é feita pelo click também, só que dessa vez o click é realizado em um dos botões apresentados.
  • 54. Escrevendo os testes Para finalizar nosso cadastro, precisamos clicar no botão de confirmação. Nada que não já saibamos fazer.
  • 55. Escrevendo os testes Porém nosso teste não chega ao fim por aí, precisamos ainda validar se o cadastro foi feito com sucesso e a mensagem foi apresentada ao usuário!