SlideShare uma empresa Scribd logo
1 de 75
#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
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

Mais procurados

Mais procurados (20)

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

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

T@rget trust curso de introdução ao processo de teste de software
T@rget trust   curso de introdução ao processo de teste de softwareT@rget trust   curso de introdução ao processo de teste de software
T@rget trust curso de introdução ao processo de teste de software
Targettrust
 
T@rget trust curso de introdução ao processo de teste de software
T@rget trust   curso de introdução ao processo de teste de softwareT@rget trust   curso de introdução ao processo de teste de software
T@rget trust curso de introdução ao processo de teste de software
Targettrust
 
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINALTCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
Andre Luis de Andrade
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
softeam
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
André Thiago
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
Igor Sobreira
 

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

Tudo o que você precisa saber para começar a automação de testes em dispositi...
Tudo o que você precisa saber para começar a automação de testes em dispositi...Tudo o que você precisa saber para começar a automação de testes em dispositi...
Tudo o que você precisa saber para começar a automação de testes em dispositi...
 
Agile Brazil 2018
Agile Brazil 2018Agile Brazil 2018
Agile Brazil 2018
 
[Karla e Larissa] Agile Brazil 2018
[Karla e Larissa] Agile Brazil 2018[Karla e Larissa] Agile Brazil 2018
[Karla e Larissa] Agile Brazil 2018
 
T@rget trust curso de introdução ao processo de teste de software
T@rget trust   curso de introdução ao processo de teste de softwareT@rget trust   curso de introdução ao processo de teste de software
T@rget trust curso de introdução ao processo de teste de software
 
T@rget trust curso de introdução ao processo de teste de software
T@rget trust   curso de introdução ao processo de teste de softwareT@rget trust   curso de introdução ao processo de teste de software
T@rget trust curso de introdução ao processo de teste de software
 
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINALTCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
TCC_CMMI_Projeto_AndreLuisDeAndrade_FINAL
 
AppTesting
AppTestingAppTesting
AppTesting
 
Apresentacao Convenio
Apresentacao ConvenioApresentacao Convenio
Apresentacao Convenio
 
ALM com VSTS (v2)
ALM com VSTS (v2)ALM com VSTS (v2)
ALM com VSTS (v2)
 
Test day 2012
Test day 2012Test day 2012
Test day 2012
 
Practice 4 :: Gestão de Projetos de SW OO :: Métricas, Estimação e Planificações
Practice 4 :: Gestão de Projetos de SW OO :: Métricas, Estimação e PlanificaçõesPractice 4 :: Gestão de Projetos de SW OO :: Métricas, Estimação e Planificações
Practice 4 :: Gestão de Projetos de SW OO :: Métricas, Estimação e Planificações
 
Planode Aula
Planode AulaPlanode Aula
Planode Aula
 
TDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - FloripaTDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - Floripa
 
Testes com TestLink e Selenium
Testes com TestLink e SeleniumTestes com TestLink e Selenium
Testes com TestLink e Selenium
 
Introdução ao RUP
Introdução ao RUPIntrodução ao RUP
Introdução ao RUP
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
 
Palestra sobre Automação de Testes com Rest-Assured
Palestra sobre Automação de Testes com Rest-AssuredPalestra sobre Automação de Testes com Rest-Assured
Palestra sobre Automação de Testes com Rest-Assured
 
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
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
 

Mais de GUTS-RS

Mais de GUTS-RS (15)

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

Último

Último (6)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
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
 

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

Notas do Editor

  1. Explicar um pouco sobre a importância dos testes automatizados na qualidade do software
  2. Mostrar que podemos ter feedback contínuo ao executar os testes constantemente em um jenkins por exemplo
  3. Nos dão segurança na hora de realizar os deploys.
  4. Explicar que a suíte de testes automatizados libera tempo para o time de QA fazer tarefas mais importantes
  5. Falar sobre o valor dos testes, já que uma vez escritos eles ficam lá “para sempre”
  6. Mostrar a pirâmide de testes ideal
  7. E mostrar o que geralmente ocorre na realidade
  8. Questionar o porque isso ocorre
  9. Mostrar alguns exemplo de como escrever testes funcionais pode ser complexo
  10. Falar sobre o código complexo
  11. Explicar o que são as linguagens orientadas a objeto e como elas podem ajudar a simplificar os testes
  12. 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
  13. Começar a explicar o que são abstrações
  14. 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.
  15. 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.
  16. 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.
  17. 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?
  18. 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.
  19. 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.
  20. Citar os 5 princípios Só vou explicar os 2 primeiros
  21. 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.
  22. 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.
  23. Explicar o exemplo
  24. Explicar o exemplo
  25. Explicar o exemplo
  26. Explicar o exemplo
  27. 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?
  28. Explicar o exemplo
  29. Explicar o exemplo
  30. 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.
  31. Bons nomes nos ajudam a entender de forma mais fácil o código escrito. Porém as vezes dar bons nomes é difícil.
  32. 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.
  33. 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.
  34. Falar um pouco sobre organização do código
  35. 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.
  36. 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
  37. Falar que todo mundo deve estar cheio de dúvidas e que vou mostrar mais algumas coisas para tentar ajudar nisso
  38. Livro da Casa do Código escrito pelo Mauricio Aniche. Livro muito bom, que da uma nova perspectiva sobre a orientação a objetos.
  39. Dois livros muito boons sobre Design Patterns O primeiro é mais para quem está começando e o segundo já é um pouco mais avançado
  40. 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
  41. Vou mostrar um projeto pessoal, que utiliza várias práticas faladas anteriormente. Vou fazer um livecoding nesse slide
  42. Reforçar a importância das abstrações