SlideShare uma empresa Scribd logo
#gutsrs /@gutsrs
Práticas de desenvolvimento aplicadas na
automação de testes com Selenium
Robson Bittencourt
Programação
• 19h15 às 19h45 Recepção, boas vindas e Coffee
para integração
• 19h45 às 19h55 Abertura do evento,
apresentação do GUTS-RS e expectativas do
evento
• 19h55 às 20h45 Práticas de desenvolvimento
aplicadas na automação de testes com Selenium
(Robson Bittencourt)
• 20h45 às 21h15 Hands on com Selenium
Sobre o GUTS-RS
• GUTS-RS: Grupo de Usuários de Testes de Software do RS
• Criado em: agosto/2008
• Objetivo: compartilhar o uso de métodos, processos e
ferramentas de Teste de Software e promover discussões
sobre a aplicação das melhores práticas de teste e
qualidade utilizadas no mercado
• Público Alvo: Gerentes, Analistas de Testes, Testadores,
Desenvolvedores e demais profissionais e estudantes
interessados na área
• Coordenação: Diraci Júnior, Eduardo Oliveira e Moisés
Ramírez
Canais de Comunicação
http://guts-rs.blogspot.com.br/
@gutsrs
guts-rs-sucesu@googlegroups.com
Grupo de Usuários de Testes de Software do RS
Guts RS GUTS-RS
http://pt.slideshare.net/GUTS-RS
http://guts-rs.eventbrite.com/
Comunicados
• Submissão de Palestras 2016
– DOJO
– Fishbowl
– Palestra
– TCC
– Testing Games
– Workshop
– Outros
• Assinar a lista de presença
• Preencher a Ficha do Evento
• Certificado de Participação
Próximos Eventos
• GUTS Talks (julho)
Ferramentas de Automação de Testes
Sobre o palestrante
Robson é graduado em Sistemas de Informação,
pela Facensa de Gravataí. Busca estar sempre a
par das boas práticas de construção de software,
como testes, Clean Code e Design Patterns.
Gosta de estudar coisas novas, principalmente
assuntos relacionados a Engenharia de Software
e Métodos Ágeis. Gosta de repassar as coisas
que aprende e tem feito isso através de
palestras e do seu blog.
Contatos
robson.luizv@gmail.com
@rluizv
github.com/robsonbittencourt
rbittencourt.com
Práticas de desenvolvimento
aplicadas na automação de
testes com Selenium
Agenda
- Importância dos testes automatizados
- Linguagens Orientadas a Objetos
- Abstrações
- SOLID
- DRY
- Design Patterns
- Clean Code
- Organização
- Indo além
Importância dos testes automatizados
Feedback contínuo
Importância dos testes automatizados
Nos dão segurança
Importância dos testes automatizados
Liberam tempo para testes e tarefas mais
complexas
Importância dos testes automatizados
Uma vez escritos se tornam guardiões
Importância dos testes automatizados
Importância dos testes automatizados
Importância dos testes automatizados
Mas porquê?
Importância dos testes automatizados
Escrever testes funcionais é complexo
Importância dos testes automatizados
http://www.toolsqa.com/java/junit-framework/junit-test-selenium-webdriver/
Importância dos testes automatizados
Linguagens Orientadas a Objetos
Linguagens Orientadas a Objetos
Diferença entre o paradigma procedural e a
orientação a objetos
Abstrações
ABSTRAÇÕES
Abstrações
Carro
Abstrações
Metáfora do lenhador
Abstrações
Criar uma caixa de ferramentas
Abstrações
Projeto de classes
Abstrações
Quebra-cabeças
SOLID
SOLID
S - Single responsability
O - Open / closed
L - Liskov substitution
I - Interface segregation
D - Dependency inversion
SOLID
Single responsability
SOLID
Open / Closed principle
SOLID
Open / Closed principle
SOLID
Open / Closed principle
SOLID
Open / Closed principle
SOLID
Open / Closed principle
DRY
Don’t repeat yourself
Não se repita
DRY
DRY
Design Patterns
Design Patterns
- Solução reproduzível de um problema
- Problemas clássicos geralmente possuem
patterns
- Não trazem a solução final
- Instigam as boas práticas e princípios da
orientação a objetos
Design Patterns
Page Object
Representa uma página
Reusáveis
Redução da manutenção
Linguagem de domínio
Design Patterns
Page Object
Design Patterns
Page Object
Design Patterns
Representam um elemento ou
componente
Encapsulam código do WebDriver
Abstrações de elementos
Design Patterns
Abstrações de elementos
Design Patterns
Abstrações de elementos
Design Patterns
Abstrações de elementos
Design Patterns
Abstrações de elementos
Design Patterns
Abstrações de elementos
Design Patterns
Auxiliam na criação do setup de teste
Reusáveis
Foco no caso de teste
Fixtures / Builders
Design Patterns
Fixtures / Builders
Design Patterns
Fixtures / Builders
Design Patterns
Fixtures / Builders
Design Patterns
Fixtures / Builders
Clean Code
Clean Code
Any fool can write code that a
computer can understand. Good
programmers write code that
humans can understand.
Martin Fowler, 2008.
Clean Code
Bons nomes
Clean Code
Bons nomes
Clean Code
Métodos Pequenos
Clean Code
Comentários
Organização
Organização
Fluxo de Páginas
Organização
A classe de Teste deve criar seus próprios
dados
Testes independentes
Organização
Uma classe de teste por funcionalidade
testada
Testes independentes
Organização
Dependências dentro da mesma classe são
aceitáveis
Testes independentes
Organização
given-when-then
[GUTS-RS] Práticas de desenvolvimento aplicadas na automação de testes com Selenium
Indo Além
Indo Além
Livros
Indo Além
Livros
Indo Além
Livros
Indo Além
Mokona
github.com/robsonbittencourt/mokona
ABSTRAÇÕES
Dúvidas?
robson.luizv@gmail.com

Mais conteúdo relacionado

PPTX
[GUTS-RS] GUTS Talks - Ferramentas de Automação de Testes
PPTX
[GUTS-RS] Tendências de Teste de Software para 2016
PPTX
[GUTS-RS] Agile Testing Coach
PPTX
[GUTS-RS] GUTS Testing Games - Jogo BDD Warriors
PPSX
DevOps pela visão de QA
PDF
[GUTS-RS] Test Thinking
PDF
[GUTS-RS] Mobile Testing
PDF
[GUTS-RS] GUTS Universitário - Carreira de Testes
[GUTS-RS] GUTS Talks - Ferramentas de Automação de Testes
[GUTS-RS] Tendências de Teste de Software para 2016
[GUTS-RS] Agile Testing Coach
[GUTS-RS] GUTS Testing Games - Jogo BDD Warriors
DevOps pela visão de QA
[GUTS-RS] Test Thinking
[GUTS-RS] Mobile Testing
[GUTS-RS] GUTS Universitário - Carreira de Testes

Mais procurados (20)

PPTX
[GUTS-RS] Performance Engineering
PPTX
[GUTS-RS] DOJO de Arquitetura e Estratégia de Testes
PPTX
[GUTS-RS] Testes em Projetos de Implantação de ERP
PPTX
[GUTS-RS] Automação de Testes com Sikuli Script
PPTX
[GUTS-RS] GUTS Universitário - UNISINOS Campus POA
PPTX
[GUTS-RS] Testar Interfaces com UX
PPTX
[GUTS-RS] Agile Tester 3.0
PDF
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
PDF
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
PPTX
[GUTS-RS] Testes de Usabilidade e Acessibilidade para melhorar a experiência ...
PDF
Como integrar um Agile Tester no seu time
PDF
Robotium + cucumber + gradle, misture com spoon e tenha uma execução de teste...
PDF
Testes de usabilidade com uma pitada de lean ux
PDF
[GUTS-RS] GUTS Talks - Automação de Testes
PDF
Automação de Teste com Robotium - Tche Mobile 2014
PDF
GUTS Talks Março 2018
PDF
Teste software metodos metodologia ageis agil agile testing
PDF
DevCamp - O papel de um testador em uma equipe ágil
PDF
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
PDF
DEV-OPS para teste de software
[GUTS-RS] Performance Engineering
[GUTS-RS] DOJO de Arquitetura e Estratégia de Testes
[GUTS-RS] Testes em Projetos de Implantação de ERP
[GUTS-RS] Automação de Testes com Sikuli Script
[GUTS-RS] GUTS Universitário - UNISINOS Campus POA
[GUTS-RS] Testar Interfaces com UX
[GUTS-RS] Agile Tester 3.0
[GUTS-RS] MBehavior, um framework de automação de testes multiplataforma para...
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
[GUTS-RS] Testes de Usabilidade e Acessibilidade para melhorar a experiência ...
Como integrar um Agile Tester no seu time
Robotium + cucumber + gradle, misture com spoon e tenha uma execução de teste...
Testes de usabilidade com uma pitada de lean ux
[GUTS-RS] GUTS Talks - Automação de Testes
Automação de Teste com Robotium - Tche Mobile 2014
GUTS Talks Março 2018
Teste software metodos metodologia ageis agil agile testing
DevCamp - O papel de um testador em uma equipe ágil
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
DEV-OPS para teste de software
Anúncio

Semelhante a [GUTS-RS] Práticas de desenvolvimento aplicadas na automação de testes com Selenium (20)

PDF
Automação de Testes
PPS
Automação de testes para equipes agile
PPTX
Introdução a testes automatizados
PPTX
Tudo o que você precisa saber para começar a automação de testes em dispositi...
PDF
Automação de testes funcionais com selenium webdriver
PDF
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
PPTX
Testando Aplicações Web com Selenium WebDriver - .NET SP - Novembro-2018
PPTX
Por que automatizar testes de software?
PDF
Selenium Workshop
PDF
Selenium
PPT
Automacão de Testes Funcionais com Selenium
PPTX
Automação de Teste Funcionais - Selenium
PPT
Reusabilidade na Utilização de Frameworks Automatizados
PPTX
A importância de utilizar testes automatizados
PDF
Testes com TestLink e Selenium
KEY
Greenbar - Testes automatizados na sua empresa
PPT
Curso Básico de Selenium
PPTX
Testes automatizados de software
PPTX
Testes automatizados de software
PDF
GOTEST-Aula3-Automacao-Processo-Testes.pdf
Automação de Testes
Automação de testes para equipes agile
Introdução a testes automatizados
Tudo o que você precisa saber para começar a automação de testes em dispositi...
Automação de testes funcionais com selenium webdriver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
Testando Aplicações Web com Selenium WebDriver - .NET SP - Novembro-2018
Por que automatizar testes de software?
Selenium Workshop
Selenium
Automacão de Testes Funcionais com Selenium
Automação de Teste Funcionais - Selenium
Reusabilidade na Utilização de Frameworks Automatizados
A importância de utilizar testes automatizados
Testes com TestLink e Selenium
Greenbar - Testes automatizados na sua empresa
Curso Básico de Selenium
Testes automatizados de software
Testes automatizados de software
GOTEST-Aula3-Automacao-Processo-Testes.pdf
Anúncio

Mais de GUTS-RS (15)

PDF
[GUTS-RS] Testes de Performance
PDF
[GUTS-RS] - Testes de Segurança: O que preciso saber para planejar
PDF
Evento novembro 2018 - Desafios do QA - Da automação ao Ágil
PDF
Evento setembro 2018 - Criando comunidades de prática na organização
PDF
10 ANOS DE GUTS-RS E A EVOLUÇÃO DO QA NESSES 10 ANOS
PDF
[GUTS-RS] Evento Julho 2018 - Testes de Software em ambientes ERP SAP
PDF
[GUTS-RS]​ Evento Maio 2018 - Carreira na área de Testes
PDF
[GUTS-RS] Evento Abril 2018 - Qualidade de código para automação de testes
PDF
[GUTS-RS] Evento Outubro 2017 - Entrega contínua do zero ao sucesso
PPTX
[GUTS-RS] Evento Setembro 2017 - Continuous Integration, Delivery e Deploymen...
PDF
[GUTS-RS] GUDay 2017: Qualidade impulsionando negócios, criando marcas e prod...
PDF
[GUTS-RS] Evento julho 2017 - Como iniciar os testes de performance em uma a...
PDF
[GUTS-RS] GUTS Talks - Soft Skills
PPTX
[GUTS-RS] Workshop de Introdução ao Behaviour-Driven Development
PPSX
[GUTS-RS] DevOps pela visão de QA
[GUTS-RS] Testes de Performance
[GUTS-RS] - Testes de Segurança: O que preciso saber para planejar
Evento novembro 2018 - Desafios do QA - Da automação ao Ágil
Evento setembro 2018 - Criando comunidades de prática na organização
10 ANOS DE GUTS-RS E A EVOLUÇÃO DO QA NESSES 10 ANOS
[GUTS-RS] Evento Julho 2018 - Testes de Software em ambientes ERP SAP
[GUTS-RS]​ Evento Maio 2018 - Carreira na área de Testes
[GUTS-RS] Evento Abril 2018 - Qualidade de código para automação de testes
[GUTS-RS] Evento Outubro 2017 - Entrega contínua do zero ao sucesso
[GUTS-RS] Evento Setembro 2017 - Continuous Integration, Delivery e Deploymen...
[GUTS-RS] GUDay 2017: Qualidade impulsionando negócios, criando marcas e prod...
[GUTS-RS] Evento julho 2017 - Como iniciar os testes de performance em uma a...
[GUTS-RS] GUTS Talks - Soft Skills
[GUTS-RS] Workshop de Introdução ao Behaviour-Driven Development
[GUTS-RS] DevOps pela visão de QA

Último (16)

PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Custos e liquidação no SAP Transportation Management, TM130 Col18
Processos na gestão de transportes, TM100 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
COBITxITIL-Entenda as diferença em uso governança TI
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Arquitetura de computadores - Memórias Secundárias
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Gestão de transportes básica no SAP S/4HANA, S4611 Col20

[GUTS-RS] Práticas de desenvolvimento aplicadas na automação de testes com Selenium

Notas do Editor

  • #12: Explicar um pouco sobre a importância dos testes automatizados na qualidade do software
  • #13: Mostrar que podemos ter feedback contínuo ao executar os testes constantemente em um jenkins por exemplo
  • #14: Nos dão segurança na hora de realizar os deploys.
  • #15: Explicar que a suíte de testes automatizados libera tempo para o time de QA fazer tarefas mais importantes
  • #16: Falar sobre o valor dos testes, já que uma vez escritos eles ficam lá “para sempre”
  • #17: Mostrar a pirâmide de testes ideal
  • #18: E mostrar o que geralmente ocorre na realidade
  • #19: Questionar o porque isso ocorre
  • #20: Mostrar alguns exemplo de como escrever testes funcionais pode ser complexo
  • #21: Falar sobre o código complexo
  • #22: Explicar o que são as linguagens orientadas a objeto e como elas podem ajudar a simplificar os testes
  • #23: Explicar a diferença entre linguagens procedurais e orientadas a objeto. Enquanto a linguagem procedural trabalha com operações em uma sequencia. As linguagens orientadas a objeto criam abstrações que tem por objetivo trazer o modelo do mundo real para o código
  • #24: Começar a explicar o que são abstrações
  • #25: Explicar o quão abstrato é um carro. Por exemplo sabemos que ao apertar o acelerador o carro anda. Mas não sabemos ao certo como isso ocorre.
  • #26: Não vou usar as mesmas palavras, mas segue abaixo a metáfora: No Alasca, um esporte tradicional é cortar árvores. Há lenhadores famosos, com domínio, habilidade e energia no uso do machado. Querendo tornar-se também um grande lenhador, um jovem escutou falar do melhor de todos os lenhadores do país. Resolveu procurá-lo. - Quero ser seu discípulo. Quero aprender a cortar árvore como o senhor. O jovem empenhou-se no aprendizado das lições do mestre, e depois de algum tempo achou-se melhor que ele. Mais forte, mais ágil, mais jovem, venceria facilmente o velho lenhador. Desafiou o mestre para uma competição de oito horas, para ver qual dos dois cortaria mais árvores. O desafio foi aceito, e o jovem lenhador começou a cortar árvores com entusiasmo e vigor. Entre uma árvore e outra, olhava para o mestre, mas na maior parte das vezes o via sentado. O jovem voltava às suas árvores, certo da vitória, sentindo piedade pelo velho mestre. Quando terminou o dia, para grande surpresa do jovem, o velho mestre havia cortado muito mais árvores do que o seu desafiante. - Mas como é que pode? – surpreendeu-se. Quase todas as vezes em que olhei, você estava descansando! - Não, meu filho, eu não estava descansando. Estava afiando o machado. Foi por isso que você perdeu. Aprendizado é um processo que não tem fim. Sempre temos algo a aprender. O tempo utilizado para afiar o machado é recompensado valiosamente. O reforço no aprendizado, que dura a vida toda, é como afiar sempre o machado. Continue afiando o seu.
  • #27: Devemos afiar nosso machado Dedicar o tempo necessário para criar uma base para os testes, ou seja uma caixa de ferramenta. Isso irá fazer com que no futuro seja muito mais fácil escrever os testes.
  • #28: Para isso devemos ter muita atenção ao projeto de classes. O projeto de classes é como iremos organizar os objetos do nosso projeto de testes. Como eles irão interagir? Quais são os pontos principais? Quais são os pontos que tendem a mudar com o tempo?
  • #29: Pensar no projeto de classes é como um quebra cabeça Nesse quebra cabeça é muito mais importante a forma da peça, ou seja como nossas classes se relacionam com outras. Se temos que alterar a forma de uma peça, essa mudança irá se propagar para outras peças. Da mesma maneira no código. Portanto devemos sempre planejar muito bem como nossas classes irão interagir. O desenho da peça, ou seja a implentação do código, como ele faz o que faz, não é tão importante. Refatorar um algoritmo mal feito é fácil desde que a estrutura esteja bem feita, assim como seria fácil alterar a cor de uma peça em nosso quebra cabeça.
  • #30: SOLID é um acrônimo de cinco princípios de software, identificados por Robert C Martin (Uncle Bob). Esses princípios servem como guia para a escrita de códigos com boa manutenabilidade.
  • #31: Citar os 5 princípios Só vou explicar os 2 primeiros
  • #32: Classes devem ter somente uma responsabilidade. Isso implica que elas devem possuir somente um motivo para mudar. Dizemos que classes assim são classes coesas. Coesão Classes coesas tendem a ser menores e mais simples, menos suscetíveis a problemas, reúso mais fácil e a chance de propagarem problemas para outras classes é menor.
  • #33: O princípio do aberto/fechado diz que devemos manter nossas classes abertas para extensão e fechadas para alteração. Devemos identificar pontos do código que tendem a crescer com o tempo e extrair abstrações destes. Para que seja possível evoluir o código sem alterar o existente.
  • #34: Explicar o exemplo
  • #35: Explicar o exemplo
  • #36: Explicar o exemplo
  • #37: Explicar o exemplo
  • #38: Temos que ter cuidado quando escrevemos código duplicado. Se você se pega usando ctrl+c + ctrl+v, pare e pense duas vezes. Será que não é possível extrair um método que faz o que o código repetido fazia?
  • #39: Explicar o exemplo
  • #40: Explicar o exemplo
  • #57: Explicar o que é código limpo. Uma série de práticas que visam fazer com que o código escrito seja facilmente entendido por outras pessoas.
  • #59: Bons nomes nos ajudam a entender de forma mais fácil o código escrito. Porém as vezes dar bons nomes é difícil.
  • #61: Devemos sempre tentar escrever métodos pequenos. Métodos muito grandes são difíceis de dar manutenção. Geralmente não respeitam o princípio da responsabilidade única. Não existe um tamanho máximo correto, mas acredito que um método com mais que 15 linhas já deva levantar um alerta.
  • #62: Aqui vai ser polêmico. Comentários poluem o código. Além disso tendem a ser mentirosos, já que com o tempo o código irá sofrer mudanças e nem sempre as pessoas irão alterar os comentários para corresponder a nova realidade. Geralmente as duas práticas anteriores eliminam a necessidade dos comentários. Métodos pequenos são auto explicativos, e muitas vezes podemos substituir um comentário com um nome melhor para o método ou variável. Existem exceções. Documentações de api, TODO, e comentários em rotinas muito complicadas, podem ser uma exceção.
  • #63: Falar um pouco sobre organização do código
  • #64: Explicar a ideia de criar um fluxo de páginas. Os métodos sempre retornam a página seguinte. Assim ao ler o código fica claro o que espera-se que aconteça no browser.
  • #68: Quebrar os testes em blocos de given when e then 1º bloco criação dos dados necessários no testes 2º bloco método/cenário sobre teste 3º asserções
  • #70: Falar que todo mundo deve estar cheio de dúvidas e que vou mostrar mais algumas coisas para tentar ajudar nisso
  • #71: Livro da Casa do Código escrito pelo Mauricio Aniche. Livro muito bom, que da uma nova perspectiva sobre a orientação a objetos.
  • #72: Dois livros muito boons sobre Design Patterns O primeiro é mais para quem está começando e o segundo já é um pouco mais avançado
  • #73: Se eu pudesse recomendar somente um livro, recomendaria esse Esse livro ensina uma série de práticas que irá fazer com que você escreva um ótimo código
  • #74: Vou mostrar um projeto pessoal, que utiliza várias práticas faladas anteriormente. Vou fazer um livecoding nesse slide
  • #75: Reforçar a importância das abstrações