SlideShare uma empresa Scribd logo
Continuous
LearningAve
Native
AppsAlley
Avenue Coders
Plaza
DevOps
Road
Microservices
Blvd
Cloud Platform
Blvd
Machine Learning
Ave
Data
Science
Plaza
Web Development
Hwy
Design
Alley
Digital
Transformation
Ave
Agile
Coaching
Ave
E-Commerce
Turnpike
Developers
Hwy
Henrique Schmidt Willy Salazar
Desenvolvimento de
Software:
Mundo ideal x Mundo real
Julho, 2020
Definições Qualidade vs
Desenvolvimento
Pirâmide de
testes
CI / CD Boas práticas de
código
Sumário
1 4 52 3
Agilidade Indicações de
estudo
Sumário
6 7
Definições
A V E
NUE
7
O que é um desenvolvedor de
software (dev)?
Definições1
A V E
NUE
8
O que é um analista de qualidade
(qa)?
Introdução1
A V E
NUE
9
Dois mundos
Definições1
Mundo ideal Mundo real
● Relato do nosso conhecimento atual em
desenvolvimento de software voltado
para literatura.
● Relatos de experiências nossas e de
colegas na área de desenvolvimento.
● Realidade onde todas as boas práticas são
aplicadas da maneira correta, de acordo
com a realidade específica.
● Há restrição de dinheiro, tempo e
conhecimento de pessoas envolvidas com
desenvolvimento de software.
● Todas pessoas envolvidas com
desenvolvimento de software entendem a
importância de seguir princípios e práticas
consolidadas.
● É um grande desafio para pessoas mudarem
a forma de trabalho.
Qualidade vs
Desenvolvimento
A V E
NUE
11
2
Taylorismo ● Separação do planejamento da execução
● Criação de um departamento separado de qualidade.
● Somente gerência toma decisões
Qualidade vs Desenvolvimento
Frederick Taylor
A V E
NUE
12
2
Toyota Production
System
Qualidade vs Desenvolvimento
Taiichi Ohno ("Pai" do TPS)
Shigeo Shingo ("Pai" do TPS e Poka Yoke)
● Todo trabalhador é responsável por toda a linha de
produção.
● Kaizen - Melhoria contínua
● Just in time
● Sistema para evitar falhas humanas (Poka Yoke)
A V E
NUE
13
Comparação
Qualidade vs Desenvolvimento2
Mundo ideal Mundo real
● QAs trabalhando junto com os Devs. ● Devs entregam um software para QAs
testarem.
● Código de teste é desenvolvido junto com
código de produção.
● Código de produção é desenvolvido,
sistema é publicado e então os testes são
desenvolvidos.
● Segundos após a escrita de um código é
possível saber se ele tem a qualidade
necessária. Sem estoque de código.
● Dias ou semanas após a escrita de um
código é possível saber se ele tem a
qualidade necessária.
Custo vs Tempo de descoberta do bug
Pirâmide de
testes
A V E
NUE
16
Pirâmide de testes3
Autor: Martin Fowler
The act of writing a unit test
is more an act of design
than of verification.
Robert C. Martin (Uncle Bob)
Desenvolvimento de software  mundo ideal x mundo real
A V E
NUE
19
Casquinha de
sorvete
Pirâmide de testes
Muitos testes manuais de interface.
Alguns testes de integração e end-to-end.
Muito poucos testes unitários.
Place your image here. Try to keep your image
within these boundaries.
And remove this text box later!
Again, remove this text box later!
One more time: remove this text box later!
3
A V E
NUE
20
Comparação
Pirâmide de testes3
Mundo ideal Mundo real
● Poucos testes end-to-end para garantir as
jornadas dos usuários.
● Muitos testes manuais repetitivos.
● Muito pouco teste manual, principalmente
exploratórios.
● Muitos testes de integração e end-to-end.
● Muitos testes unitários, melhorando o
design de código.
● Poucos testes unitários, deixando o design
de código ruim.
CI/CD
Desenvolvimento de software  mundo ideal x mundo real
A V E
NUE
23
Continuous
Integration
CI/CD
Prática de desenvolvimento de software
onde Devs/QAs integram o código com uma
branch principal frequentemente.
Integrando frequentamente, é possível
detectar e corrigir erros mais rápidamente e
diminuir problemas de merge.
4
A V E
NUE
24
Continuous Delivery
CI/CD
Prática de desenvolvimento de software
onde o software é construído de uma forma
que pode ser publicado em produção a
qualquer momento.
Testes automatizados são uma peça chave
para Continuous Delivery ser possível.
4
A V E
NUE
25
Continuous
Deployment
CI/CD
Um passo além de Continuous Delivery, onde
toda alteração de código é automaticamente
publicada em produção, se toda pipeline
passar.
A grande vantagem é que não há mais a
pressão de um “dia de deploy” e pode-se
receber feedback mais rápido dos usuários.
4
A V E
NUE
26
Comparação
4
Mundo ideal Mundo real
● Os testes automatizados dão confiança para
o time que o software pode ser publicado
em produção.
● O time precisa passar por uma fase de
testes manual para ter confiança no código
fonte.
● O time não passa horas/dias resolvendo
conflitos.
● Desenvolvedores trabalham muito tempo
em branches separadas e merges pode
levar horas/dias.
● Sem “estoque” de código. O time tem um
feedback rápido dos usuários sobre as
alterações.
● Estresse em dias de deploy, demora para
receber feedback de usuários.
Boas práticas de
código
I'm not a great programmer;
I'm just a good programmer
with great habits.
Kent Beck
Nós somos aquilo que
fazemos repetidamente.
Excelência, então, não é um
modo de agir, mas um
hábito.Aristóteles
A V E
NUE
30
Análise estática de código
Análise de um código-fonte sem execução
do programa.
Boas práticas de código5
Desenvolvimento de software  mundo ideal x mundo real
A V E
NUE
32
Complexidade Ciclomática
Métrica que pode ser utilizada para
detectar código complexo e candidato a
refatoração.
Mais avançada do que simples número de
linhas.
Definido por Thomas J. MCCabe, 1976
Boas práticas de código5
Desenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo real
A V E
NUE
35
SOLID
Princípios de programação orientada a
objetos com o objetivo de deixar o design
do software mais legível e flexível.
Boas práticas de código5
A V E
NUE
36
Design Patterns
Soluções típicas para problemas comuns
em desenvolvimento de software.
Boas práticas de código5
A V E
NUE
37
Code Review
Prática que aumenta a Propriedade
coletiva do código.
Boas práticas de código5
A V E
NUE
38
Comparação
Boas práticas de código5
Mundo ideal Mundo real
● Código com funções e classes pequenas e
fáceis de entender.
● Código com algumas classes e funções
grandes e de difícil entendimento.
● O time utiliza ferramentas de análise
estática de código diariamente.
● O time não utiliza ferramentas de análise
estática de código.
● O time tem um processo consistente de
code review.
● Cada desenvolvedor adiciona novas
features com a única preocupação de
atender o prazo da demanda.
● Todos devs do time se sentem confiantes
para alterar qualquer parte do sistema.
● Cada parte do sistema tem um
desenvolvedor como responsável.
Agilidade
A V E
NUE
40
Cascata
Processo sequencial de desenvolvimento
de software.
Agilidade6
A V E
NUE
41
Manifesto ágil
Agilidade6
Desenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo real
A V E
NUE
44
Comparação
Agilidade6
Mundo ideal Mundo real
● Time entrega software funcionando
frequentemente.
● Time raramente faz entregas de software
funcionando.
● Time está preparado e recebe bem
mudanças no software.
● Time trabalha bastante na fase de análise
para evitar mudanças depois.
● Pessoas de negócio estão próximas dos
desenvolvedores no dia a dia.
● Desenvolvedores e pessoas de negócio
raramente conversam.
● O time decide a melhor forma de solução do
problema.
● Pessoas de fora do time decidem como as
soluções são desenvolvidas.
Indicações de
estudo
A V E
NUE
46
Inglês
Indicações de estudo7
A V E
NUE
47
Indicações de estudo7
Livros
A V E
NUE
48
Universidade de Automação
de Testes
Indicações de estudo7
A V E
NUE
49
Referências
Indicações de estudo7
Angie Jones Elias Nogueira Julio de Lima Joe Colantonio
A V E
NUE
50
Referências
Indicações de estudo7
Martin Fowler Kent Beck Uncle Bob Eric Evans
Thank you!
Questions?

Mais conteúdo relacionado

Mais procurados

Maio 2016 - O QA em um Time Ágil
Maio 2016 - O QA em um Time Ágil Maio 2016 - O QA em um Time Ágil
Maio 2016 - O QA em um Time Ágil
Grupo de Testes Carioca
 
jCompany X Geradores de Códigos
jCompany X Geradores de CódigosjCompany X Geradores de Códigos
jCompany X Geradores de Códigos
Powerlogic Consultoria e Sistemas
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a Qualidade
Kamilla Queiroz Xavier
 
E so mais um campinho na tela
E so mais um campinho na telaE so mais um campinho na tela
E so mais um campinho na tela
Vandre Ramos, MSc, MBA, CSM
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
Matheus Fechine de Moura
 
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitáriosInstituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela (Florianópolis-SC, Brasil)
 
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Trends
 
Minas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega ContínuaMinas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega Contínua
Samanta Cicilia
 
Scrum treinamento
Scrum   treinamentoScrum   treinamento
Scrum treinamento
Fernando Celarino
 
TDD para Java EE
TDD para Java EETDD para Java EE
TDD para Java EE
Dairton Bassi
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeis
Cristiano Caetano
 
Mitos do Desenvolvimento de Software
Mitos do Desenvolvimento de SoftwareMitos do Desenvolvimento de Software
Mitos do Desenvolvimento de Software
guest2f8cba
 
Testes de Performance na Nuvem com JMeter e Blazemeter
Testes de Performance na Nuvem com JMeter e BlazemeterTestes de Performance na Nuvem com JMeter e Blazemeter
Testes de Performance na Nuvem com JMeter e Blazemeter
Elias Nogueira
 
Facetas do desenvolvedor agil
Facetas do desenvolvedor agilFacetas do desenvolvedor agil
Facetas do desenvolvedor agil
Paulo Igor Alves Godinho
 
Metodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoMetodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introdução
Achiles Camilo
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?
Cristiano Schwening
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a Qualidade
Kamilla Queiroz Xavier
 
Implantando continuous delivery e seus oito principios
Implantando continuous delivery e seus oito principiosImplantando continuous delivery e seus oito principios
Implantando continuous delivery e seus oito principios
Carlos Felippe Cardoso
 
Conheça como a Vinta trabalha.
Conheça como a Vinta trabalha.Conheça como a Vinta trabalha.
Conheça como a Vinta trabalha.
Vinta Software
 

Mais procurados (19)

Maio 2016 - O QA em um Time Ágil
Maio 2016 - O QA em um Time Ágil Maio 2016 - O QA em um Time Ágil
Maio 2016 - O QA em um Time Ágil
 
jCompany X Geradores de Códigos
jCompany X Geradores de CódigosjCompany X Geradores de Códigos
jCompany X Geradores de Códigos
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a Qualidade
 
E so mais um campinho na tela
E so mais um campinho na telaE so mais um campinho na tela
E so mais um campinho na tela
 
Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016Palestra TDD Javou! #08 2016
Palestra TDD Javou! #08 2016
 
Instituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitáriosInstituto Stela S&T#001, Projeto de software com testes unitários
Instituto Stela S&T#001, Projeto de software com testes unitários
 
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
Agile Tester – a importância da automação dos testes no DevOps - Sidnei Eiji ...
 
Minas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega ContínuaMinas Testing Conference - Entrega Contínua
Minas Testing Conference - Entrega Contínua
 
Scrum treinamento
Scrum   treinamentoScrum   treinamento
Scrum treinamento
 
TDD para Java EE
TDD para Java EETDD para Java EE
TDD para Java EE
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeis
 
Mitos do Desenvolvimento de Software
Mitos do Desenvolvimento de SoftwareMitos do Desenvolvimento de Software
Mitos do Desenvolvimento de Software
 
Testes de Performance na Nuvem com JMeter e Blazemeter
Testes de Performance na Nuvem com JMeter e BlazemeterTestes de Performance na Nuvem com JMeter e Blazemeter
Testes de Performance na Nuvem com JMeter e Blazemeter
 
Facetas do desenvolvedor agil
Facetas do desenvolvedor agilFacetas do desenvolvedor agil
Facetas do desenvolvedor agil
 
Metodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introduçãoMetodologias Ágeis: Uma breve introdução
Metodologias Ágeis: Uma breve introdução
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a Qualidade
 
Implantando continuous delivery e seus oito principios
Implantando continuous delivery e seus oito principiosImplantando continuous delivery e seus oito principios
Implantando continuous delivery e seus oito principios
 
Conheça como a Vinta trabalha.
Conheça como a Vinta trabalha.Conheça como a Vinta trabalha.
Conheça como a Vinta trabalha.
 

Semelhante a Desenvolvimento de software mundo ideal x mundo real

Engenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - IntroEngenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - Intro
Rudson Kiyoshi Souza Carvalho
 
XP Programming
XP ProgrammingXP Programming
XP Programming
CJR, UnB
 
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
José Alexandre Macedo
 
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Daniel Carvalhinho
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Developer Academy
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
Dextra Sistemas / Etec Itu
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
Kleitor Franklint Correa Araujo
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
Carlos Wagner Costa
 
São Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOpsSão Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOps
Guilherme Pereira Silva
 
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryQConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
Rodrigo Russo
 
Extreme programming (xp)
 Extreme programming   (xp) Extreme programming   (xp)
Extreme programming (xp)
João Carlos Ottobboni
 
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
Amazon Web Services LATAM
 
Aula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de Software
Rudson Kiyoshi Souza Carvalho
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
rzauza
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
Luiz Fernando Signorelli
 
Clean Architecture com .NET Core
Clean Architecture com .NET CoreClean Architecture com .NET Core
Clean Architecture com .NET Core
Gabriel Schade Cardoso
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
Adriano Bertucci
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Gabriela Patuci
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
Bruno Souza
 
Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entrega
Humberto Streb
 

Semelhante a Desenvolvimento de software mundo ideal x mundo real (20)

Engenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - IntroEngenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - Intro
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
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
 
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!Porque você precisa de uma estratégia de QA e precisa disso AGORA!
Porque você precisa de uma estratégia de QA e precisa disso AGORA!
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Os Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de softwareOs Benefícios dos testes no desenvolvimento de software
Os Benefícios dos testes no desenvolvimento de software
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
São Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOpsSão Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOps
 
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryQConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
 
Extreme programming (xp)
 Extreme programming   (xp) Extreme programming   (xp)
Extreme programming (xp)
 
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
 
Aula 4- Engenharia de Software
Aula 4- Engenharia de SoftwareAula 4- Engenharia de Software
Aula 4- Engenharia de Software
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 
Clean Architecture com .NET Core
Clean Architecture com .NET CoreClean Architecture com .NET Core
Clean Architecture com .NET Core
 
Qualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALMQualidade de software com Visual Studio ALM
Qualidade de software com Visual Studio ALM
 
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaAutomação de Testes: Ferramentas e Aplicação com Integração Contínua
Automação de Testes: Ferramentas e Aplicação com Integração Contínua
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Docker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entregaDocker, jenkins e gradle para tomar o controle de sua entrega
Docker, jenkins e gradle para tomar o controle de sua entrega
 

Desenvolvimento de software mundo ideal x mundo real

  • 1. Continuous LearningAve Native AppsAlley Avenue Coders Plaza DevOps Road Microservices Blvd Cloud Platform Blvd Machine Learning Ave Data Science Plaza Web Development Hwy Design Alley Digital Transformation Ave Agile Coaching Ave E-Commerce Turnpike Developers Hwy
  • 3. Desenvolvimento de Software: Mundo ideal x Mundo real Julho, 2020
  • 4. Definições Qualidade vs Desenvolvimento Pirâmide de testes CI / CD Boas práticas de código Sumário 1 4 52 3
  • 7. A V E NUE 7 O que é um desenvolvedor de software (dev)? Definições1
  • 8. A V E NUE 8 O que é um analista de qualidade (qa)? Introdução1
  • 9. A V E NUE 9 Dois mundos Definições1 Mundo ideal Mundo real ● Relato do nosso conhecimento atual em desenvolvimento de software voltado para literatura. ● Relatos de experiências nossas e de colegas na área de desenvolvimento. ● Realidade onde todas as boas práticas são aplicadas da maneira correta, de acordo com a realidade específica. ● Há restrição de dinheiro, tempo e conhecimento de pessoas envolvidas com desenvolvimento de software. ● Todas pessoas envolvidas com desenvolvimento de software entendem a importância de seguir princípios e práticas consolidadas. ● É um grande desafio para pessoas mudarem a forma de trabalho.
  • 11. A V E NUE 11 2 Taylorismo ● Separação do planejamento da execução ● Criação de um departamento separado de qualidade. ● Somente gerência toma decisões Qualidade vs Desenvolvimento Frederick Taylor
  • 12. A V E NUE 12 2 Toyota Production System Qualidade vs Desenvolvimento Taiichi Ohno ("Pai" do TPS) Shigeo Shingo ("Pai" do TPS e Poka Yoke) ● Todo trabalhador é responsável por toda a linha de produção. ● Kaizen - Melhoria contínua ● Just in time ● Sistema para evitar falhas humanas (Poka Yoke)
  • 13. A V E NUE 13 Comparação Qualidade vs Desenvolvimento2 Mundo ideal Mundo real ● QAs trabalhando junto com os Devs. ● Devs entregam um software para QAs testarem. ● Código de teste é desenvolvido junto com código de produção. ● Código de produção é desenvolvido, sistema é publicado e então os testes são desenvolvidos. ● Segundos após a escrita de um código é possível saber se ele tem a qualidade necessária. Sem estoque de código. ● Dias ou semanas após a escrita de um código é possível saber se ele tem a qualidade necessária.
  • 14. Custo vs Tempo de descoberta do bug
  • 16. A V E NUE 16 Pirâmide de testes3 Autor: Martin Fowler
  • 17. The act of writing a unit test is more an act of design than of verification. Robert C. Martin (Uncle Bob)
  • 19. A V E NUE 19 Casquinha de sorvete Pirâmide de testes Muitos testes manuais de interface. Alguns testes de integração e end-to-end. Muito poucos testes unitários. Place your image here. Try to keep your image within these boundaries. And remove this text box later! Again, remove this text box later! One more time: remove this text box later! 3
  • 20. A V E NUE 20 Comparação Pirâmide de testes3 Mundo ideal Mundo real ● Poucos testes end-to-end para garantir as jornadas dos usuários. ● Muitos testes manuais repetitivos. ● Muito pouco teste manual, principalmente exploratórios. ● Muitos testes de integração e end-to-end. ● Muitos testes unitários, melhorando o design de código. ● Poucos testes unitários, deixando o design de código ruim.
  • 21. CI/CD
  • 23. A V E NUE 23 Continuous Integration CI/CD Prática de desenvolvimento de software onde Devs/QAs integram o código com uma branch principal frequentemente. Integrando frequentamente, é possível detectar e corrigir erros mais rápidamente e diminuir problemas de merge. 4
  • 24. A V E NUE 24 Continuous Delivery CI/CD Prática de desenvolvimento de software onde o software é construído de uma forma que pode ser publicado em produção a qualquer momento. Testes automatizados são uma peça chave para Continuous Delivery ser possível. 4
  • 25. A V E NUE 25 Continuous Deployment CI/CD Um passo além de Continuous Delivery, onde toda alteração de código é automaticamente publicada em produção, se toda pipeline passar. A grande vantagem é que não há mais a pressão de um “dia de deploy” e pode-se receber feedback mais rápido dos usuários. 4
  • 26. A V E NUE 26 Comparação 4 Mundo ideal Mundo real ● Os testes automatizados dão confiança para o time que o software pode ser publicado em produção. ● O time precisa passar por uma fase de testes manual para ter confiança no código fonte. ● O time não passa horas/dias resolvendo conflitos. ● Desenvolvedores trabalham muito tempo em branches separadas e merges pode levar horas/dias. ● Sem “estoque” de código. O time tem um feedback rápido dos usuários sobre as alterações. ● Estresse em dias de deploy, demora para receber feedback de usuários.
  • 28. I'm not a great programmer; I'm just a good programmer with great habits. Kent Beck
  • 29. Nós somos aquilo que fazemos repetidamente. Excelência, então, não é um modo de agir, mas um hábito.Aristóteles
  • 30. A V E NUE 30 Análise estática de código Análise de um código-fonte sem execução do programa. Boas práticas de código5
  • 32. A V E NUE 32 Complexidade Ciclomática Métrica que pode ser utilizada para detectar código complexo e candidato a refatoração. Mais avançada do que simples número de linhas. Definido por Thomas J. MCCabe, 1976 Boas práticas de código5
  • 35. A V E NUE 35 SOLID Princípios de programação orientada a objetos com o objetivo de deixar o design do software mais legível e flexível. Boas práticas de código5
  • 36. A V E NUE 36 Design Patterns Soluções típicas para problemas comuns em desenvolvimento de software. Boas práticas de código5
  • 37. A V E NUE 37 Code Review Prática que aumenta a Propriedade coletiva do código. Boas práticas de código5
  • 38. A V E NUE 38 Comparação Boas práticas de código5 Mundo ideal Mundo real ● Código com funções e classes pequenas e fáceis de entender. ● Código com algumas classes e funções grandes e de difícil entendimento. ● O time utiliza ferramentas de análise estática de código diariamente. ● O time não utiliza ferramentas de análise estática de código. ● O time tem um processo consistente de code review. ● Cada desenvolvedor adiciona novas features com a única preocupação de atender o prazo da demanda. ● Todos devs do time se sentem confiantes para alterar qualquer parte do sistema. ● Cada parte do sistema tem um desenvolvedor como responsável.
  • 40. A V E NUE 40 Cascata Processo sequencial de desenvolvimento de software. Agilidade6
  • 41. A V E NUE 41 Manifesto ágil Agilidade6
  • 44. A V E NUE 44 Comparação Agilidade6 Mundo ideal Mundo real ● Time entrega software funcionando frequentemente. ● Time raramente faz entregas de software funcionando. ● Time está preparado e recebe bem mudanças no software. ● Time trabalha bastante na fase de análise para evitar mudanças depois. ● Pessoas de negócio estão próximas dos desenvolvedores no dia a dia. ● Desenvolvedores e pessoas de negócio raramente conversam. ● O time decide a melhor forma de solução do problema. ● Pessoas de fora do time decidem como as soluções são desenvolvidas.
  • 47. A V E NUE 47 Indicações de estudo7 Livros
  • 48. A V E NUE 48 Universidade de Automação de Testes Indicações de estudo7
  • 49. A V E NUE 49 Referências Indicações de estudo7 Angie Jones Elias Nogueira Julio de Lima Joe Colantonio
  • 50. A V E NUE 50 Referências Indicações de estudo7 Martin Fowler Kent Beck Uncle Bob Eric Evans

Notas do Editor

  1. Pessoa que o principal papel é escrever a solução para resolver um problema do negocio
  2. Pessoa que o principal papel é garantir que a solucao desenvolvida pelo time tem a qualidade necessária para o negocio
  3. Não há verdade absoluta ou balas de prata, desenvolvimento de software é uma área complexa. Relato do nosso conhecimento atual em desenvolvimento de software. Realidade onde todas as boas práticas são aplicadas da maneira correta, de acordo com a realidade específica. Todas pessoas envolvidas com desenvolvimento de software entendem a importância de seguir princípios e práticas consolidadas. Relatos de experiências nossas e de colegas na área de desenvolvimento. Há restrição de dinheiro, tempo e conhecimento de pessoas envolvidas com desenvolvimento de software. É um grande desafio para pessoas mudarem a forma de trabalho.
  4. Extreme programming -> Kent Beck Engenharia social do taylorismo -> Engenheiros "educados" decidem como deve ser feito e os trabalhadores fazem o que são mandados "cegamente". Autoridade vs Responsabilidade: Arquitetos mandando como deve ser feito e não fazendo junto com o time. Taylor acreditava que os trabalhadores iriam trabalhar mal mas não tão mal para serem notados, por isso, era importante ter um departamento de qualidade. Inovações do Taylorismo Um de seus maiores legados foi “Princípios da Administração Científica”, livro que basicamente expõe a crença de Taylor na racionalização do trabalho. - Princípio do planejamento; - Princípio da preparação dos trabalhadores: - Princípio do controle: - Princípio da execução; Críticas ao taylorismo - exploração e mecanização do trabalhador - As ideias dos trabalhadores eram reprimidas e cabia somente à gerência tomar decisões quanto à produção, gerando também descontentamento e conflitos entre empregados e empregadores.
  5. Se qualquer pessoa encontra um problema, puxa uma corda e toda a linha de produção é parada. Todos recursos da linha de produção são focados para encontrar a causa raiz e resolver o problema. Kaizen -> Kai (Change) + zen (Good) Kaizen dá voz à força de trabalho, capacitando os indivíduos para identificar áreas para melhoria e sugerir soluções práticas. Controle de processo para melhorar a qualidade como um todo. Just in time -> a matéria prima sempre vai chegar na fábrica na hora em que se precise dela Com o Just in Time não existe sobra de estoque, tudo que é fabricado já tem um destino final certo. Isso se aplica em software, onde não faz sentido estocar requisitos, código, documentação. Se se escrever codigo que só vai ser usado em 6 meses, ele muito provavelmente terá que ser reescrito ou não vai funcionar.
  6. 8:20
  7. Mike Cohn came up with this concept in his book Succeeding with Agile. It's a great visual metaphor telling you to think about different layers of testing. It also tells you how much testing to do on each layer. End-to-end (e2e) tests are used to simulate the user journey. So the answer to this question is yet another question — how many user journeys exist in your application? https://martinfowler.com/bliki/TestPyramid.html Talvez mostrar diferentes piramides
  8. O ato de escrever um teste de unidade é mais um ato de design do que de verificação.
  9. 8:30
  10. Não é um ótimo programador, mas um bom programador com ótimos habitos.
  11. PlataformaPlataforma open-source para inspeção contínua de código-fonte. Tem suporte para mais de 20 linguagens de programação. open-source para inspeção contínua de código-fonte. Tem suporte para mais de 20 linguagens de programação.
  12. Padrão de solução para problemas comuns. Melhora comunicação entre equipe de desenvolvimento.
  13. Menos revisão e mais colaboração
  14. 8:45
  15. Criado em 2001, é uma declaração de princípios que fundamentam o desenvolvimento ágil. https://agilemanifesto.org/iso/ptbr/manifesto.html Estamos descobrindo maneiras melhores de desenvolver software, fazendo-o nós mesmos e ajudando outros a fazerem o mesmo. Através deste trabalho, passamos a valorizar: Indivíduos e interações mais que processos e ferramentas Software em funcionamento mais que documentação abrangente Colaboração com o cliente mais que negociação de contratos Responder a mudanças mais que seguir um plano Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda.
  16. Princípios por trás do Manifesto Ágil Nós seguimos estes princípios: Nossa maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com valor agregado. Mudanças nos requisitos são bem-vindas, mesmo tardiamente no desenvolvimento. Processos ágeis tiram vantagem das mudanças visando vantagem competitiva para o cliente. Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à menor escala de tempo. Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto por todo o projeto. Construa projetos em torno de indivíduos motivados. Dê a eles o ambiente e o suporte necessário e confie neles para fazer o trabalho. O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é através de conversa face a face. Software funcionando é a medida primária de progresso. Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente. Contínua atenção à excelência técnica e bom design aumenta a agilidade. Simplicidade--a arte de maximizar a quantidade de trabalho não realizado--é essencial. As melhores arquiteturas, requisitos e designs emergem de equipes auto-organizáveis. Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu comportamento de acordo.
  17. Busca de materiais Documentacoes Referenciais Empresas Internacionais
  18. Clean Code (Uncle Bob (Robert C. Martin)) TDD by example - Kent Beck Extreme Programming Explained - Kent Beck The Scrum Guide ( Ken Schwaber and Jeff Sutherland) Head First Design Patterns (Elisabeth Freeman, Kathy Sierra) Domain-Driven Design - Tackling Complexity in the Heart of Software (Eric Evans) Agile Testing (Lisa Crispin)