SlideShare uma empresa Scribd logo
1 de 59
Baixar para ler offline
Teste de
Software
Conhecendo e aplicando
Help → About me...
 André P. Bertoletti
 Pai “júnior” :D
 Analista de Sistemas,
desenvolvedor, professor,
consultor e agitador de
comunidades
 Entusiasta das Boas Práticas
e Métodos Ágeis
 Curto também: violão,
políticas públicas, café,
espiritualidade, etc... apbertoletti@gmail.com
/apbertoletti
/apbertoletti
Estamos contratando!
www.luxfacta.com
Senta que lá vem a história...
• Frente a outras indústrias, somos
muito novos e ainda temos muito
a aprender e melhorar
• Na década de 1960, a indústria
de software começa a se
organizar melhor, na tentativa
de contornar a crise do software
e dar um tratamento de
engenharia (mais sistemático e
controlado) ao desenvolvimento
de software.
A idade da indústria de software
Engenharia
civil
2550 a.C
Engenharia de software
1948 d.C
Mas qual crise era esta?
• Amadorismo no desenvolvimento
• Projetos estourando o orçamento
• Projetos estourando o prazo
• Software de baixa qualidade
• Software muitas vezes não atendendo os
requisitos
• Projetos não gerenciáveis e código difícil de
manter
Será que conseguimos sair da crise?
Fonte: Chaos Rerport – Standish Group
https://www.standishgroup.com/sample_research_files/CHAOSReport2015-
Final.pdf
Década de 1960 Ano de 2015
Mas o que é qualidade mesmo?
Definições de qualidade
• “Qualidade é desenvolver, projetar, produzir e
comercializar um produto que seja sempre mais
econômico, mais útil, e que satisfaça o consumidor.”
(ISHIKAWA apud MORETTI, 2003, p. 15)
• “Qualidade é a conformidade do produto às suas
especificações” (CROSBY apud MORETTI, 2003, p. 15)
• “A qualidade consiste nas características dos produtos que
vão ao encontro das necessidades dos clientes, e dessa
forma proporcionam satisfação em relação ao produto. A
qualidade é a ausência de falhas.” (JURAN apud MORETTI,
2003, p. 14)
Em busca de mais qualidade...
Paradigmas de
programação
Métodos
Padrões
De projeto
Frameworks
Boas
práticas
Teste de
Sotware
Planejamento
Lean
Software
Ferramentas
Mais robustas
Maturidade dos
Profissionais
Comunidades
Tipos de testes de Software
• Testes de unidade (manual)
• Testes de unidade (automatizado)
• Testes de integração
• Testes de sistema
• Testes de aceitação
• Testes de carga/stress
• Testes de usabilidade
• Testes de mutação
• Testes de UI (User Interface)
• TDD (Criar o teste antes do código)
• BDD (Criar cenários de teste diversos)
Custo de correção de um bug no ciclo
de vida de um software
O que é testar mesmo?
Definição de teste
Um processo feito de forma
responsável precisa ser testado
sempre, a fim de garantir que o
resultado obtido confere com o
resultado esperado
Processo: “Pendurar quadro na parede”
Qual seria o teste deste processo?
Passou no Teste - OK!!!
Resultado esperado =
quadro na parede
Aqui entra o teste unitário
Teste unitário é a verificação
da menor unidade de um
processo (ou das unidades
mais importantes), afim de
validar se os resultados de
entrada/saída conferem com
o esperado.
Qualquer processo manual
que também possua um
resultado
esperado
é passível
de
testes unitários
(automatizado
ou manual)
Software: é aqui que entramos...
Construir um Software
significa automatizar um
processo que antes era
feito manualmente
Dados de
Entrada
Processamento
Automático
Dados de
Saída
Teste manuais
Como acontece um teste manual
NECESSIDADE:
Desenvolver um software que
calcule as quatro operações
aritméticas básicas entre dois
valores e mostre o resultado
na tela.
RESULTADO
ESPERADO:
(operação de adição)
• Valor1 = 100
• Valor2 = 200
• Resultado = 300
Modelo de documento de testes
Mas os testes manuais
bastam?
O problema é que estes
testes não são automáticos
... e tarefas
complexas feitas de
forma manual
chatas... e tornando-se chatas,
uma hora ou outra, nós
deixamos de fazê-las.
e repetitiva tornam-se
Além disso, outros fatores que dificultam
o teste manual...
Testes automatizados
Pensando além do
F5 (RUN)...
se nós já
automatizamos o
processo, será que
não conseguimos
também
automatizar
o seu
teste???
um software
testando...
Aqui entra o Teste Unitário
Automatizado que nada mais é...
...outro software
Quando rodamos um teste automatizado,
fica sob responsabilidade dele nos
informar quais testes passaram
ou não
Frameworks de Teste Automatizado
 C#
 MSTest (http://msdn.microsoft.com/en-us/library/ms243147.aspx)
 Java
 JUnit (http://junit.org)
 JavaScript
 Unit.JS (http://unitjs.com)
 Delphi
 DUnit (http://dunit.sourceforge.net)
 Objetive-C
 OCUnit (http://www.sente.ch/software/ocunit)
 Demais linguagens
 http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
Testes
unitários
Demo
TDD
Test Driven
Development
Escutar o
que teste
está
dizendo
TDD como nossa Rede de
proteção
Test Driven
Develoment
1
23
Ciclo do TDD
Exercício para TDD
Desenvolver uma rotina que calcule o salário líquido do
funcionário (com descontos), levando em consideração o
salário atual e o cargo
do funcionário.
As regras de negocio são as seguintes:
• Desenvolvedores possuem 20% de desconto caso seu salario
seja maior do que R$ 3000,0. Caso contrario, o desconto e
de 10%.
• DBAs e testadores possuem desconto de 25% se seus
salários forem maiores do que R$ 2500,0. 15%, em caso
contrario.
Demo 3
Mas isso tudo funciona no
mundo real?
SIM! Pelo menos deveria...
Bateria de testes do projeto ActList
Benefícios
 Desenvolver testes encoraja o programador
a fazer um bom design do seu código,
afim de facilitar o seu teste automatizado.
 Exemplo: separação dos métodos de regras
de negócio, da camada apresentação.
Benefícios
 Encoraja o programador a desenvolver código
limpo. Pois, se o método estiver coberto com
testes automatizados, é garantida a sua
refatoração. E isso é feito de forma segura,
garantindo que o mesmo continuará funcionando.
 Exemplo: um algoritmo pré-existente, que não
está tão performático, se ele estiver coberto por
testes automatizados, ele poderia ser reescrito
com mais tranquilidade, sem “fator cagaço” de
quebrar algo que já estava funcionando.
Benefícios
 Independente do programador (iniciante ou
experiente) que esteja mexendo no código,
o produto final continuará
funcionando como era esperado.
 Por isso, o teste automatizado, pode ser
considerado um “Ativo Fixo” de uma
empresa de software;
Benefícios
 Em sistemas mais complexos, onde há
métodos reutilizáveis e com alto grau de
dependência entre eles, os testes automatizados
garantem que uma simples manutenção não
“quebre” aquilo que já estava
funcionando.
 Exemplo: Implementação da última Nota Técnica
da NFe.
Mas... nem tudo são flores!
 Mais código para escrever, pois além do
próprio método original, haverá também
o(s) método(s) de testes que irá cobri-lo.
Mas... Nem tudo são flores...
 Mais código para manter, pois caso haja alguma
alteração nos resultados esperados dos métodos
já cobertos, os seus respectivos testes também
deverão ser reajustados.
 Exemplo:
 Mudou a assinatura do método testado (novo
parâmetro, novo nome, etc).
 Mudaram os resultados esperados dos testes que já
estavam prontos
Mas.. Nem tudo são flores...
 Como toda mudança, o primeiro passo é sairmos
da zona de conforto
Pirâmide dos testes
Execução lenta e alto
custo
Execução rápida e
baixo custo
Abrangência maior
Abrangência menor
Lembretes importantes!
• NÃO existe software sem Bug! A ideia do teste unitário é
MINIMIZAR AO MÁXIMO a existência deles.
• Métodos de testes também são software! Portanto
cuidado: testes mal escritos podem retornar falsos
positivos ou falsos negativos!
• O alto número de testes unitários pode trazer uma falsa
sensação de segurança. Pois a garantia de qualidade exige
também a prática de outros testes, como integração,
stress, aceitação, etc.
Referências I
Por que nós amamos testes (e você também deveria)?
https://www.youtube.com/watch?v=32sG8DO3ZdA
Tudo o que você precisa saber sobre testes no Visual Studio
(parte 1) http://www.youtube.com/watch?v=kGnlItZyOzY
(parte 2) http://www.youtube.com/watch?v=UgPMmR2LaZo
(parte 3) http://www.youtube.com/watch?v=oLFBPGuIqGk
Você testa o seu Software? Como?
http://luizcorrea.blogspot.com.br/2009/10/voce-testa-o-seu-software-como.html
Referências II
Como explicar TDD para o seu chefe
http://tdd.caelum.com.br
Podcasts sobre TESTES
https://hipsters.tech/testes-automatizados-hipsters-51
https://www.lambda3.com.br/2016/11/podcast-18-testes/
https://labs.bluesoft.com.br/test-driven-development-bluesoft-podcast-8/
Artigos sobre TDD
http://dojofloripa.wordpress.com/2007/09/10/tudo-sobre-tdd/
http://desenvolvimentoagil.com.br/xp/praticas/tdd/
Perguntas…

Mais conteúdo relacionado

Mais procurados

Métodos contraceptivos
Métodos contraceptivosMétodos contraceptivos
Métodos contraceptivosMercitto
 
Trabalho sobre ABORTO
Trabalho sobre ABORTOTrabalho sobre ABORTO
Trabalho sobre ABORTOaliandra1
 
AULA 1 BIOSSEG..pdf
AULA 1 BIOSSEG..pdfAULA 1 BIOSSEG..pdf
AULA 1 BIOSSEG..pdfssusera9a884
 
Estruturas de dados em Python
Estruturas de dados em PythonEstruturas de dados em Python
Estruturas de dados em PythonRicardo Paiva
 
SISTEMAS digitais SISTEMAS DE NUMERAÇÃO
SISTEMAS digitais SISTEMAS DE NUMERAÇÃOSISTEMAS digitais SISTEMAS DE NUMERAÇÃO
SISTEMAS digitais SISTEMAS DE NUMERAÇÃOCarlos Pereira
 
Sistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - ApresentaçãoSistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - ApresentaçãoLeinylson Fontinele
 
Planilhas eletrônicas
Planilhas eletrônicasPlanilhas eletrônicas
Planilhas eletrônicasPesquisa
 
monitorização invasiva - PAM 2019 (2).pdf
monitorização invasiva - PAM 2019 (2).pdfmonitorização invasiva - PAM 2019 (2).pdf
monitorização invasiva - PAM 2019 (2).pdfJoyceAlmeida83
 
Segurança da informação - Forense Computacional
Segurança da informação - Forense ComputacionalSegurança da informação - Forense Computacional
Segurança da informação - Forense ComputacionalJefferson Costa
 
Aula 02 - Escolha caso
Aula 02 - Escolha casoAula 02 - Escolha caso
Aula 02 - Escolha casoEder Samaniego
 
AULA 08 - CÂNCER DE COLO DE ÚTERO E MAMA.pptx
AULA 08 - CÂNCER DE COLO DE ÚTERO E MAMA.pptxAULA 08 - CÂNCER DE COLO DE ÚTERO E MAMA.pptx
AULA 08 - CÂNCER DE COLO DE ÚTERO E MAMA.pptxVanessaAlvesDeSouza4
 
Projeto dezembro vermelho
Projeto dezembro vermelhoProjeto dezembro vermelho
Projeto dezembro vermelhoMeio & Mensagem
 

Mais procurados (20)

Métodos contraceptivos
Métodos contraceptivosMétodos contraceptivos
Métodos contraceptivos
 
Trabalho sobre ABORTO
Trabalho sobre ABORTOTrabalho sobre ABORTO
Trabalho sobre ABORTO
 
AULA 1 BIOSSEG..pdf
AULA 1 BIOSSEG..pdfAULA 1 BIOSSEG..pdf
AULA 1 BIOSSEG..pdf
 
Aula novembro-azul-2019
Aula novembro-azul-2019Aula novembro-azul-2019
Aula novembro-azul-2019
 
Regras no laboratório de informática
Regras no laboratório de informáticaRegras no laboratório de informática
Regras no laboratório de informática
 
O centro cirúrgico
O centro cirúrgicoO centro cirúrgico
O centro cirúrgico
 
Dezembro Vermelho
Dezembro VermelhoDezembro Vermelho
Dezembro Vermelho
 
Estruturas de dados em Python
Estruturas de dados em PythonEstruturas de dados em Python
Estruturas de dados em Python
 
Higiene
HigieneHigiene
Higiene
 
Dst’s
Dst’s Dst’s
Dst’s
 
SISTEMAS digitais SISTEMAS DE NUMERAÇÃO
SISTEMAS digitais SISTEMAS DE NUMERAÇÃOSISTEMAS digitais SISTEMAS DE NUMERAÇÃO
SISTEMAS digitais SISTEMAS DE NUMERAÇÃO
 
Proteção gravida
Proteção gravidaProteção gravida
Proteção gravida
 
Sistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - ApresentaçãoSistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - Apresentação
 
Planilhas eletrônicas
Planilhas eletrônicasPlanilhas eletrônicas
Planilhas eletrônicas
 
monitorização invasiva - PAM 2019 (2).pdf
monitorização invasiva - PAM 2019 (2).pdfmonitorização invasiva - PAM 2019 (2).pdf
monitorização invasiva - PAM 2019 (2).pdf
 
O Aborto
O AbortoO Aborto
O Aborto
 
Segurança da informação - Forense Computacional
Segurança da informação - Forense ComputacionalSegurança da informação - Forense Computacional
Segurança da informação - Forense Computacional
 
Aula 02 - Escolha caso
Aula 02 - Escolha casoAula 02 - Escolha caso
Aula 02 - Escolha caso
 
AULA 08 - CÂNCER DE COLO DE ÚTERO E MAMA.pptx
AULA 08 - CÂNCER DE COLO DE ÚTERO E MAMA.pptxAULA 08 - CÂNCER DE COLO DE ÚTERO E MAMA.pptx
AULA 08 - CÂNCER DE COLO DE ÚTERO E MAMA.pptx
 
Projeto dezembro vermelho
Projeto dezembro vermelhoProjeto dezembro vermelho
Projeto dezembro vermelho
 

Semelhante a Qualidade e Testes de Software

Teste de software, na visão de um desenvolvedor
Teste de software, na visão de um desenvolvedorTeste de software, na visão de um desenvolvedor
Teste de software, na visão de um desenvolvedorAndré Phillip Bertoletti
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoflavio1110
 
XP Programming
XP ProgrammingXP Programming
XP ProgrammingCJR, UnB
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agileAlini Rebonatto
 
Principais conceitos em testes de software
Principais conceitos em testes de softwarePrincipais conceitos em testes de software
Principais conceitos em testes de softwareJoyce Bastos
 
Analise e desenvolvimento
Analise e desenvolvimentoAnalise e desenvolvimento
Analise e desenvolvimentoGabriel Moura
 
Testes, engenharia de Software, teste de Software
Testes, engenharia de Software, teste de SoftwareTestes, engenharia de Software, teste de Software
Testes, engenharia de Software, teste de SoftwareSilas Gonçalves
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixCris Fidelix
 
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 softwareDextra Sistemas / Etec Itu
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreCloves da Rocha
 

Semelhante a Qualidade e Testes de Software (20)

Teste de software - Conhecendo e Aplicando
Teste de software - Conhecendo e AplicandoTeste de software - Conhecendo e Aplicando
Teste de software - Conhecendo e Aplicando
 
Testes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicandoTestes de unidade - Conhecendo e aplicando
Testes de unidade - Conhecendo e aplicando
 
Teste de software, na visão de um desenvolvedor
Teste de software, na visão de um desenvolvedorTeste de software, na visão de um desenvolvedor
Teste de software, na visão de um desenvolvedor
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojo
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Dba Testes Gerentes B2
Dba Testes Gerentes B2Dba Testes Gerentes B2
Dba Testes Gerentes B2
 
Tdd x testes unidades
Tdd x testes unidadesTdd x testes unidades
Tdd x testes unidades
 
XP Programming
XP ProgrammingXP Programming
XP Programming
 
Automação de testes para equipes agile
Automação de testes para equipes agileAutomação de testes para equipes agile
Automação de testes para equipes agile
 
Principais conceitos em testes de software
Principais conceitos em testes de softwarePrincipais conceitos em testes de software
Principais conceitos em testes de software
 
Analise e desenvolvimento
Analise e desenvolvimentoAnalise e desenvolvimento
Analise e desenvolvimento
 
Testes, engenharia de Software, teste de Software
Testes, engenharia de Software, teste de SoftwareTestes, engenharia de Software, teste de Software
Testes, engenharia de Software, teste de Software
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
 
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
 
Aula - Teste de Software
Aula - Teste de SoftwareAula - Teste de Software
Aula - Teste de Software
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do Mestre
 
Teste de software
Teste de softwareTeste de software
Teste de software
 

Mais de André Phillip Bertoletti

Banco de Dados II - Unimep/Pronatec - Aula 12
Banco de Dados II - Unimep/Pronatec - Aula 12Banco de Dados II - Unimep/Pronatec - Aula 12
Banco de Dados II - Unimep/Pronatec - Aula 12André Phillip Bertoletti
 
Banco de Dados II - Unimep/Pronatec - Aula 11
Banco de Dados II - Unimep/Pronatec - Aula 11Banco de Dados II - Unimep/Pronatec - Aula 11
Banco de Dados II - Unimep/Pronatec - Aula 11André Phillip Bertoletti
 
Banco de Dados II - Unimep/Pronatec - Aula 10
Banco de Dados II - Unimep/Pronatec - Aula 10Banco de Dados II - Unimep/Pronatec - Aula 10
Banco de Dados II - Unimep/Pronatec - Aula 10André Phillip Bertoletti
 
Banco de Dados II - Unimep/Pronatec - Aula 9
Banco de Dados II - Unimep/Pronatec - Aula 9Banco de Dados II - Unimep/Pronatec - Aula 9
Banco de Dados II - Unimep/Pronatec - Aula 9André Phillip Bertoletti
 
Banco de Dados II - Unimep/Pronatec - Aula 8
Banco de Dados II - Unimep/Pronatec - Aula 8Banco de Dados II - Unimep/Pronatec - Aula 8
Banco de Dados II - Unimep/Pronatec - Aula 8André Phillip Bertoletti
 
Interface Homem-máquina - Unimep/Pronatec - Aula 9
Interface Homem-máquina - Unimep/Pronatec - Aula 9Interface Homem-máquina - Unimep/Pronatec - Aula 9
Interface Homem-máquina - Unimep/Pronatec - Aula 9André Phillip Bertoletti
 
Banco de Dados II - Unimep/Pronatec - Aula 6
Banco de Dados II - Unimep/Pronatec - Aula 6Banco de Dados II - Unimep/Pronatec - Aula 6
Banco de Dados II - Unimep/Pronatec - Aula 6André Phillip Bertoletti
 
Interface Homem-máquina - Unimep/Pronatec - Aula 7
Interface Homem-máquina - Unimep/Pronatec - Aula 7Interface Homem-máquina - Unimep/Pronatec - Aula 7
Interface Homem-máquina - Unimep/Pronatec - Aula 7André Phillip Bertoletti
 
Interface Homem-máquina - Unimep/Pronatec - Aula 6
Interface Homem-máquina - Unimep/Pronatec - Aula 6Interface Homem-máquina - Unimep/Pronatec - Aula 6
Interface Homem-máquina - Unimep/Pronatec - Aula 6André Phillip Bertoletti
 
Interface Homem-máquina - Unimep/Pronatec - Aula 4
Interface Homem-máquina - Unimep/Pronatec - Aula 4Interface Homem-máquina - Unimep/Pronatec - Aula 4
Interface Homem-máquina - Unimep/Pronatec - Aula 4André Phillip Bertoletti
 
Interface Homem-máquina - Unimep/Pronatec - Aula 3
Interface Homem-máquina - Unimep/Pronatec - Aula 3Interface Homem-máquina - Unimep/Pronatec - Aula 3
Interface Homem-máquina - Unimep/Pronatec - Aula 3André Phillip Bertoletti
 
Interface Homem-máquina - Unimep/Pronatec - Aula 2
Interface Homem-máquina - Unimep/Pronatec - Aula 2Interface Homem-máquina - Unimep/Pronatec - Aula 2
Interface Homem-máquina - Unimep/Pronatec - Aula 2André Phillip Bertoletti
 
Banco de Dados II - Unimep/Pronatec - Aula 5
Banco de Dados II - Unimep/Pronatec - Aula 5Banco de Dados II - Unimep/Pronatec - Aula 5
Banco de Dados II - Unimep/Pronatec - Aula 5André Phillip Bertoletti
 
Banco de Dados II - Unimep/Pronatec - Aula 4
Banco de Dados II - Unimep/Pronatec - Aula 4Banco de Dados II - Unimep/Pronatec - Aula 4
Banco de Dados II - Unimep/Pronatec - Aula 4André Phillip Bertoletti
 
Banco de Dados II - Unimep/Pronatec - Aula 3
Banco de Dados II - Unimep/Pronatec - Aula 3Banco de Dados II - Unimep/Pronatec - Aula 3
Banco de Dados II - Unimep/Pronatec - Aula 3André Phillip Bertoletti
 
Banco de Dados II - Unimep/Pronatec - Aula 2
Banco de Dados II - Unimep/Pronatec - Aula 2Banco de Dados II - Unimep/Pronatec - Aula 2
Banco de Dados II - Unimep/Pronatec - Aula 2André Phillip Bertoletti
 
Interface Homem-máquina - Unimep/Pronatec - Aula 1
Interface Homem-máquina - Unimep/Pronatec - Aula 1Interface Homem-máquina - Unimep/Pronatec - Aula 1
Interface Homem-máquina - Unimep/Pronatec - Aula 1André Phillip Bertoletti
 

Mais de André Phillip Bertoletti (20)

Comunidade Locais de TI
Comunidade Locais de TIComunidade Locais de TI
Comunidade Locais de TI
 
The clean coder
The clean coder The clean coder
The clean coder
 
Banco de Dados II - Unimep/Pronatec - Aula 12
Banco de Dados II - Unimep/Pronatec - Aula 12Banco de Dados II - Unimep/Pronatec - Aula 12
Banco de Dados II - Unimep/Pronatec - Aula 12
 
Banco de Dados II - Unimep/Pronatec - Aula 11
Banco de Dados II - Unimep/Pronatec - Aula 11Banco de Dados II - Unimep/Pronatec - Aula 11
Banco de Dados II - Unimep/Pronatec - Aula 11
 
Política nas mídias sociais
Política nas mídias sociaisPolítica nas mídias sociais
Política nas mídias sociais
 
Banco de Dados II - Unimep/Pronatec - Aula 10
Banco de Dados II - Unimep/Pronatec - Aula 10Banco de Dados II - Unimep/Pronatec - Aula 10
Banco de Dados II - Unimep/Pronatec - Aula 10
 
Banco de Dados II - Unimep/Pronatec - Aula 9
Banco de Dados II - Unimep/Pronatec - Aula 9Banco de Dados II - Unimep/Pronatec - Aula 9
Banco de Dados II - Unimep/Pronatec - Aula 9
 
Banco de Dados II - Unimep/Pronatec - Aula 8
Banco de Dados II - Unimep/Pronatec - Aula 8Banco de Dados II - Unimep/Pronatec - Aula 8
Banco de Dados II - Unimep/Pronatec - Aula 8
 
Interface Homem-máquina - Unimep/Pronatec - Aula 9
Interface Homem-máquina - Unimep/Pronatec - Aula 9Interface Homem-máquina - Unimep/Pronatec - Aula 9
Interface Homem-máquina - Unimep/Pronatec - Aula 9
 
Banco de Dados II - Unimep/Pronatec - Aula 6
Banco de Dados II - Unimep/Pronatec - Aula 6Banco de Dados II - Unimep/Pronatec - Aula 6
Banco de Dados II - Unimep/Pronatec - Aula 6
 
Interface Homem-máquina - Unimep/Pronatec - Aula 7
Interface Homem-máquina - Unimep/Pronatec - Aula 7Interface Homem-máquina - Unimep/Pronatec - Aula 7
Interface Homem-máquina - Unimep/Pronatec - Aula 7
 
Interface Homem-máquina - Unimep/Pronatec - Aula 6
Interface Homem-máquina - Unimep/Pronatec - Aula 6Interface Homem-máquina - Unimep/Pronatec - Aula 6
Interface Homem-máquina - Unimep/Pronatec - Aula 6
 
Interface Homem-máquina - Unimep/Pronatec - Aula 4
Interface Homem-máquina - Unimep/Pronatec - Aula 4Interface Homem-máquina - Unimep/Pronatec - Aula 4
Interface Homem-máquina - Unimep/Pronatec - Aula 4
 
Interface Homem-máquina - Unimep/Pronatec - Aula 3
Interface Homem-máquina - Unimep/Pronatec - Aula 3Interface Homem-máquina - Unimep/Pronatec - Aula 3
Interface Homem-máquina - Unimep/Pronatec - Aula 3
 
Interface Homem-máquina - Unimep/Pronatec - Aula 2
Interface Homem-máquina - Unimep/Pronatec - Aula 2Interface Homem-máquina - Unimep/Pronatec - Aula 2
Interface Homem-máquina - Unimep/Pronatec - Aula 2
 
Banco de Dados II - Unimep/Pronatec - Aula 5
Banco de Dados II - Unimep/Pronatec - Aula 5Banco de Dados II - Unimep/Pronatec - Aula 5
Banco de Dados II - Unimep/Pronatec - Aula 5
 
Banco de Dados II - Unimep/Pronatec - Aula 4
Banco de Dados II - Unimep/Pronatec - Aula 4Banco de Dados II - Unimep/Pronatec - Aula 4
Banco de Dados II - Unimep/Pronatec - Aula 4
 
Banco de Dados II - Unimep/Pronatec - Aula 3
Banco de Dados II - Unimep/Pronatec - Aula 3Banco de Dados II - Unimep/Pronatec - Aula 3
Banco de Dados II - Unimep/Pronatec - Aula 3
 
Banco de Dados II - Unimep/Pronatec - Aula 2
Banco de Dados II - Unimep/Pronatec - Aula 2Banco de Dados II - Unimep/Pronatec - Aula 2
Banco de Dados II - Unimep/Pronatec - Aula 2
 
Interface Homem-máquina - Unimep/Pronatec - Aula 1
Interface Homem-máquina - Unimep/Pronatec - Aula 1Interface Homem-máquina - Unimep/Pronatec - Aula 1
Interface Homem-máquina - Unimep/Pronatec - Aula 1
 

Qualidade e Testes de Software

  • 2. Help → About me...  André P. Bertoletti  Pai “júnior” :D  Analista de Sistemas, desenvolvedor, professor, consultor e agitador de comunidades  Entusiasta das Boas Práticas e Métodos Ágeis  Curto também: violão, políticas públicas, café, espiritualidade, etc... apbertoletti@gmail.com /apbertoletti /apbertoletti
  • 4. Senta que lá vem a história... • Frente a outras indústrias, somos muito novos e ainda temos muito a aprender e melhorar • Na década de 1960, a indústria de software começa a se organizar melhor, na tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemático e controlado) ao desenvolvimento de software.
  • 5. A idade da indústria de software Engenharia civil 2550 a.C Engenharia de software 1948 d.C
  • 6. Mas qual crise era esta? • Amadorismo no desenvolvimento • Projetos estourando o orçamento • Projetos estourando o prazo • Software de baixa qualidade • Software muitas vezes não atendendo os requisitos • Projetos não gerenciáveis e código difícil de manter
  • 7. Será que conseguimos sair da crise? Fonte: Chaos Rerport – Standish Group https://www.standishgroup.com/sample_research_files/CHAOSReport2015- Final.pdf Década de 1960 Ano de 2015
  • 8. Mas o que é qualidade mesmo?
  • 9. Definições de qualidade • “Qualidade é desenvolver, projetar, produzir e comercializar um produto que seja sempre mais econômico, mais útil, e que satisfaça o consumidor.” (ISHIKAWA apud MORETTI, 2003, p. 15) • “Qualidade é a conformidade do produto às suas especificações” (CROSBY apud MORETTI, 2003, p. 15) • “A qualidade consiste nas características dos produtos que vão ao encontro das necessidades dos clientes, e dessa forma proporcionam satisfação em relação ao produto. A qualidade é a ausência de falhas.” (JURAN apud MORETTI, 2003, p. 14)
  • 10. Em busca de mais qualidade... Paradigmas de programação Métodos Padrões De projeto Frameworks Boas práticas Teste de Sotware Planejamento Lean Software Ferramentas Mais robustas Maturidade dos Profissionais Comunidades
  • 11. Tipos de testes de Software • Testes de unidade (manual) • Testes de unidade (automatizado) • Testes de integração • Testes de sistema • Testes de aceitação • Testes de carga/stress • Testes de usabilidade • Testes de mutação • Testes de UI (User Interface) • TDD (Criar o teste antes do código) • BDD (Criar cenários de teste diversos)
  • 12. Custo de correção de um bug no ciclo de vida de um software
  • 13. O que é testar mesmo?
  • 14. Definição de teste Um processo feito de forma responsável precisa ser testado sempre, a fim de garantir que o resultado obtido confere com o resultado esperado
  • 15. Processo: “Pendurar quadro na parede” Qual seria o teste deste processo?
  • 16. Passou no Teste - OK!!! Resultado esperado = quadro na parede
  • 17. Aqui entra o teste unitário Teste unitário é a verificação da menor unidade de um processo (ou das unidades mais importantes), afim de validar se os resultados de entrada/saída conferem com o esperado.
  • 18. Qualquer processo manual que também possua um resultado esperado é passível de testes unitários (automatizado ou manual)
  • 19. Software: é aqui que entramos...
  • 20. Construir um Software significa automatizar um processo que antes era feito manualmente Dados de Entrada Processamento Automático Dados de Saída
  • 22. Como acontece um teste manual NECESSIDADE: Desenvolver um software que calcule as quatro operações aritméticas básicas entre dois valores e mostre o resultado na tela. RESULTADO ESPERADO: (operação de adição) • Valor1 = 100 • Valor2 = 200 • Resultado = 300
  • 23. Modelo de documento de testes
  • 24. Mas os testes manuais bastam?
  • 25. O problema é que estes testes não são automáticos ... e tarefas complexas feitas de forma manual chatas... e tornando-se chatas, uma hora ou outra, nós deixamos de fazê-las. e repetitiva tornam-se
  • 26. Além disso, outros fatores que dificultam o teste manual...
  • 28. Pensando além do F5 (RUN)... se nós já automatizamos o processo, será que não conseguimos também automatizar o seu teste???
  • 29. um software testando... Aqui entra o Teste Unitário Automatizado que nada mais é... ...outro software
  • 30. Quando rodamos um teste automatizado, fica sob responsabilidade dele nos informar quais testes passaram ou não
  • 31. Frameworks de Teste Automatizado  C#  MSTest (http://msdn.microsoft.com/en-us/library/ms243147.aspx)  Java  JUnit (http://junit.org)  JavaScript  Unit.JS (http://unitjs.com)  Delphi  DUnit (http://dunit.sourceforge.net)  Objetive-C  OCUnit (http://www.sente.ch/software/ocunit)  Demais linguagens  http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
  • 33. Demo
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 41. TDD como nossa Rede de proteção
  • 44. Exercício para TDD Desenvolver uma rotina que calcule o salário líquido do funcionário (com descontos), levando em consideração o salário atual e o cargo do funcionário. As regras de negocio são as seguintes: • Desenvolvedores possuem 20% de desconto caso seu salario seja maior do que R$ 3000,0. Caso contrario, o desconto e de 10%. • DBAs e testadores possuem desconto de 25% se seus salários forem maiores do que R$ 2500,0. 15%, em caso contrario.
  • 46. Mas isso tudo funciona no mundo real? SIM! Pelo menos deveria...
  • 47. Bateria de testes do projeto ActList
  • 48. Benefícios  Desenvolver testes encoraja o programador a fazer um bom design do seu código, afim de facilitar o seu teste automatizado.  Exemplo: separação dos métodos de regras de negócio, da camada apresentação.
  • 49. Benefícios  Encoraja o programador a desenvolver código limpo. Pois, se o método estiver coberto com testes automatizados, é garantida a sua refatoração. E isso é feito de forma segura, garantindo que o mesmo continuará funcionando.  Exemplo: um algoritmo pré-existente, que não está tão performático, se ele estiver coberto por testes automatizados, ele poderia ser reescrito com mais tranquilidade, sem “fator cagaço” de quebrar algo que já estava funcionando.
  • 50. Benefícios  Independente do programador (iniciante ou experiente) que esteja mexendo no código, o produto final continuará funcionando como era esperado.  Por isso, o teste automatizado, pode ser considerado um “Ativo Fixo” de uma empresa de software;
  • 51. Benefícios  Em sistemas mais complexos, onde há métodos reutilizáveis e com alto grau de dependência entre eles, os testes automatizados garantem que uma simples manutenção não “quebre” aquilo que já estava funcionando.  Exemplo: Implementação da última Nota Técnica da NFe.
  • 52. Mas... nem tudo são flores!  Mais código para escrever, pois além do próprio método original, haverá também o(s) método(s) de testes que irá cobri-lo.
  • 53. Mas... Nem tudo são flores...  Mais código para manter, pois caso haja alguma alteração nos resultados esperados dos métodos já cobertos, os seus respectivos testes também deverão ser reajustados.  Exemplo:  Mudou a assinatura do método testado (novo parâmetro, novo nome, etc).  Mudaram os resultados esperados dos testes que já estavam prontos
  • 54. Mas.. Nem tudo são flores...  Como toda mudança, o primeiro passo é sairmos da zona de conforto
  • 55. Pirâmide dos testes Execução lenta e alto custo Execução rápida e baixo custo Abrangência maior Abrangência menor
  • 56. Lembretes importantes! • NÃO existe software sem Bug! A ideia do teste unitário é MINIMIZAR AO MÁXIMO a existência deles. • Métodos de testes também são software! Portanto cuidado: testes mal escritos podem retornar falsos positivos ou falsos negativos! • O alto número de testes unitários pode trazer uma falsa sensação de segurança. Pois a garantia de qualidade exige também a prática de outros testes, como integração, stress, aceitação, etc.
  • 57. Referências I Por que nós amamos testes (e você também deveria)? https://www.youtube.com/watch?v=32sG8DO3ZdA Tudo o que você precisa saber sobre testes no Visual Studio (parte 1) http://www.youtube.com/watch?v=kGnlItZyOzY (parte 2) http://www.youtube.com/watch?v=UgPMmR2LaZo (parte 3) http://www.youtube.com/watch?v=oLFBPGuIqGk Você testa o seu Software? Como? http://luizcorrea.blogspot.com.br/2009/10/voce-testa-o-seu-software-como.html
  • 58. Referências II Como explicar TDD para o seu chefe http://tdd.caelum.com.br Podcasts sobre TESTES https://hipsters.tech/testes-automatizados-hipsters-51 https://www.lambda3.com.br/2016/11/podcast-18-testes/ https://labs.bluesoft.com.br/test-driven-development-bluesoft-podcast-8/ Artigos sobre TDD http://dojofloripa.wordpress.com/2007/09/10/tudo-sobre-tdd/ http://desenvolvimentoagil.com.br/xp/praticas/tdd/