SlideShare uma empresa Scribd logo
1 de 71
Teste agora! Não deixe para
depois!
Marco Antonio Anibal Damaceno
VIII Jornada Científica
Faculdades Integradas Vianna Júnior
$ whoami
Marco Damaceno
Desenvolvedor web há 6 anos. Trabalha
atualmente na eMiolo.com com Ruby,
PHP e JavaScript.
$ echo “O que é teste de
software?”
Podemos verificar o significado das
palavras “testar” e “teste” no dicionário.
Testar
por à prova; experimentar.
Teste
exame crítico ou prova das qualidades
de uma pessoa ou coisa.
Agora, segundo a literatura...
Testar é verificar se o software está
fazendo o que deveria fazer, de acordo
com os seus requisitos (Rios e Moreira -
2003)
Testar é o processo de executar um
programa ou sistema com a intenção de
encontrar defeitos (teste negativo)
(Glen Myers - 1979)
$ echo “Tipos de teste”
Critérios de agrupamento de teste de
software
1. Quanto ao conhecimento sobre o
software
2. Quanto à natureza do teste
3. Testes não-funcionais
4. Testes automatizados
1. Quanto ao conhecimento sobre o
software
Teste de caixa branca
Quando se avalia o funcionamento
interno do software. Por exemplo, se
determinados métodos executam
corretamente.
1. Quanto ao conhecimento sobre o
software
Teste de caixa preta
Quando se avalia o comportamento do
software, através de suas interfaces. Por
exemplo, quando o usuário usa o
sistema para ver se ele retorna valores
esperados após um cálculo.
2. Quanto à natureza do teste
Teste Unitário ou de Unidade
testa partes específicas do sistema,
como classes e seus métodos.
2. Quanto à natureza do teste
Teste de Integração
testa vários componentes de um sistema
funcionando em conjunto.
2. Quanto à natureza do teste
Teste de Sistema ou Homologação
execução do sistema do ponto de vista
do usuário, embora não realizado pelo
usuário final.
2. Quanto à natureza do teste
Teste de Aceitação
teste realizado pelo usuário para verificar
se o software está de acordo com o que
foi contratado.
2. Quanto à natureza do teste
Teste de Regressão
testes já realizados são executados
novamente após modificações no
software para garantir que não houve um
efeito colateral inesperado.
3. Testes não-funcionais
Teste de Desempenho (Performance)
verifica o desempenho do sistema com
uma carga normal de usuários. Por
exemplo, o tempo de resposta médio é
de 2 segundos com até mil usuários.
3. Testes não-funcionais
Testes de Carga (Volume)
verifica a capacidade máxima do
sistema, ou seja, o ponto onde ele trava
ou deixa de responder em tempo
adequado.
3. Testes não funcionais
Teste de Resiliência (Stress)
verifica o comportamento do sistema e
sua capacidade de se recuperar de
falhas inesperadas, como queda de
energia, falha em banco de dados, picos
de acesso, etc.
4. Testes automatizados
Testes executados por robôs através de
um script.
$ echo “Quando testar um
software?”
AGORA!!!
$ echo “Exemplos de falhas”
http://g1.globo.com/Noticias/Tecnologia/0,,MUL1160798-6174,00-
FALHA+EM+SITE+VENDE+TVS+DE+PLASMA+E+NOTEBOOKS+POR+R.html
http://www.baguete.com.br/public/noticias/geral/21/08/2008/furo-anatel-expoe-dados-pessoais
http://sao-paulo.estadao.com.br/blogs/seus-direitos/cliente-nao-consegue-comprar-fogao-na-oferta-
da-americanas-com/
http://agiletesters.com.br/topic/353/descobrindo-senhas-md5-e-sha1-em-menos-de-10-minutos
$ echo “Como testar um
software?”
Depende da linguagem que estiver
usando no projeto.
Ferramentas para testes unitários e de
integração:
PHP - PHPUnit
Java - JUnit
Ruby - RSpec, Minitest
JavaScript - Jasmine, Mocha
Python - Unittest
C++ - xUnit++
C# - NUnit
Ferramentas para testes aceitação:
Capybara
Selenium
Para testes não funcionais:
https://blitz.io/
$ echo “Situações que
precisam de testes”
Joãozinho desenvolveu o software x na
linguagem PHP que já está produção.
Um usuário relatou um erro e Joãozinho
foi logo tentar corrigir. Ele então
percebeu que a parte do código que deu
erro é um método usado em várias
partes do sistema. Sendo assim, não
seria tão simples uma mudança no
método pois poderia gerar outros erros.
Solução 1
Escrever um novo método que corrige o
problema especificado pelo usuário
deixando o método problemático intacto
já que ele é usado em outras partes do
sistema.
Solução 2
Verificar em todo sistema onde o método
problemático é usado e escrever um
teste para cada parte onde ele é
chamado se baseando na expectativa do
que ele deve fazer.
Joãozinho desenvolveu um sistema na
versão 5.1 do Laravel. O tempo passou
e o Laravel chegou à versão 5.4.
Joãozinho, por algum motivo, viu a
necessidade de atualizar o projeto da
versão 5.1 para a 5.4 do Laravel.
Joãozinho não sabe por onde começar
pois teme que ocorram muitos erros
após a atualização.
Solução 1
Deixa o sistema do jeito que está, afinal
o cliente não está nem um pouco
preocupado com que framework o
sistema dele foi feito.
Solução 2
Atualizar o sistema e corrigir os
eventuais erros que aparecerem.
Solução 3
Clonar o projeto atual no servidor de
homologação (testes) e fazer nele a
atualização do projeto para identificar os
eventuais erros. Escrever testes que
cubram boa parte do sistema a fim de
eliminar erros por conta da atualização.
$ echo “Dicas”
Teste comportamento, não configuração.
Dê atenção redobrada às partes críticas
do sistema.
Use mocks somente quando necessário.
Planeje seus testes.
Sempre execute um teste de regressão
no fim.
Se encontrar um erro no sistema, pare
tudo o que estiver fazendo, escreva um
teste que reproduza o erro e corrija!
Escreva o teste pensando qual saída e
quais entradas são esperadas no
método.
Escreva testes somente para métodos
públicos.
Use os testes como documentação.
Use ferramentas de monitoramento de
sistema.
Não se prenda ao MVC.
Não deixe o teste para o final.
Lembre-se que testes certificam a
qualidade de um sistema e de seus
desenvolvedores.
maadamaceno@gmail.com
github.com/mdamaceno
twitter.com/mdamaceno

Mais conteúdo relacionado

Mais procurados

Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizadosThiago Ghisi
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de SoftwareMaurício Aniche
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/IntegradosGiovanni Bassi
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesPaulo César M Jeveaux
 
A importância de utilizar testes automatizados
A  importância   de utilizar  testes automatizadosA  importância   de utilizar  testes automatizados
A importância de utilizar testes automatizadosDiego Allan Oliveira
 
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
 
Qualidade de Software - Desenvolvimento dirigido por testes
Qualidade de Software - Desenvolvimento dirigido por testesQualidade de Software - Desenvolvimento dirigido por testes
Qualidade de Software - Desenvolvimento dirigido por testesJoaquim Lopes Júnior
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IJoão Lourenço
 
Palestra tdd - rsjug
Palestra tdd - rsjugPalestra tdd - rsjug
Palestra tdd - rsjugBruno Maomeh
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Softwaremarthahuback
 
Do push para a produção: Os desafios de automação em Continuous Delivery
Do push para a produção: Os desafios de automação em Continuous DeliveryDo push para a produção: Os desafios de automação em Continuous Delivery
Do push para a produção: Os desafios de automação em Continuous DeliveryCamilo Ribeiro
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?Samuel Lourenço
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoSandy Maciel
 

Mais procurados (20)

Eng de testes
Eng de testesEng de testes
Eng de testes
 
Introdução a testes automatizados
Introdução a testes automatizadosIntrodução a testes automatizados
Introdução a testes automatizados
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de Software
 
Testes Unitários/Integrados
Testes Unitários/IntegradosTestes Unitários/Integrados
Testes Unitários/Integrados
 
Testes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de TestesTestes de Software & Ferramentas de Testes
Testes de Software & Ferramentas de Testes
 
A importância de utilizar testes automatizados
A  importância   de utilizar  testes automatizadosA  importância   de utilizar  testes automatizados
A importância de utilizar testes automatizados
 
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
 
Testes Unitários usando TestNG
Testes Unitários usando TestNGTestes Unitários usando TestNG
Testes Unitários usando TestNG
 
Qualidade de Software - Desenvolvimento dirigido por testes
Qualidade de Software - Desenvolvimento dirigido por testesQualidade de Software - Desenvolvimento dirigido por testes
Qualidade de Software - Desenvolvimento dirigido por testes
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
Palestra tdd - rsjug
Palestra tdd - rsjugPalestra tdd - rsjug
Palestra tdd - rsjug
 
Plano de teste
Plano de testePlano de teste
Plano de teste
 
Qualidade
QualidadeQualidade
Qualidade
 
Mini aula de teste de software
Mini aula de teste de softwareMini aula de teste de software
Mini aula de teste de software
 
Testes de Sofware
Testes de SofwareTestes de Sofware
Testes de Sofware
 
Tecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De SoftwareTecnicas Para Planejamento E Execucao De Testes De Software
Tecnicas Para Planejamento E Execucao De Testes De Software
 
Do push para a produção: Os desafios de automação em Continuous Delivery
Do push para a produção: Os desafios de automação em Continuous DeliveryDo push para a produção: Os desafios de automação em Continuous Delivery
Do push para a produção: Os desafios de automação em Continuous Delivery
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
 

Semelhante a Teste software agora

Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninDevInPF
 
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfINTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfRonaldAlves15
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...Rodrigo Oliveira, Msc, PMP
 
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
 
Principais conceitos em testes de software
Principais conceitos em testes de softwarePrincipais conceitos em testes de software
Principais conceitos em testes de softwareJoyce Bastos
 
Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POAAline Zanin
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Verificação e Validação
Verificação e ValidaçãoVerificação e Validação
Verificação e ValidaçãoMarcelo Yamaguti
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKMário Pravato Junior
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraTaís Dall'Oca
 
Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...
Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...
Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...minastestingconference
 

Semelhante a Teste software agora (20)

O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
 
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdfINTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
INTRODUÇÃO AOS TESTES NO FRONT-END COM REACT JS E REACT NATIVE.pdf
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Teste de software
Teste de software Teste de software
Teste de software
 
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
 
Introdução ao Teste de Software
Introdução ao Teste de SoftwareIntrodução ao Teste de Software
Introdução ao Teste de Software
 
Principais conceitos em testes de software
Principais conceitos em testes de softwarePrincipais conceitos em testes de software
Principais conceitos em testes de software
 
Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POA
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
SLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptxSLIDEPRELIMINAR.pptx
SLIDEPRELIMINAR.pptx
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
Verificação e Validação
Verificação e ValidaçãoVerificação e Validação
Verificação e Validação
 
Visão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOKVisão de Testes de Software segundo o SWEBOK
Visão de Testes de Software segundo o SWEBOK
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
 
Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...
Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...
Criando um ambiente real de distribuição de aplicativos usando TestFairy: Mai...
 

Teste software agora