Testes de SoftwareTestes de Software
Andrew Diniz da Costa
andrew@les.inf.puc-rio.br
Agenda
Conceitos gerais
Principais Tipos de Teste
Testes Unitários
Testes Funcionais
O que são testes de
software?
Atividades realizadas ao longo do desenvolvimento,que
verificam se o software e seus componentes
atendem às suas especificações.
Testes de Software garantem que o sistema foi
desenvolvido corretamente e o mesmo possui as
características de qualidade esperadas.
O que são testes de
software?
Atividades controladas visando
identificar problemas
Envolve ações que vão do levantamento
de requisitos até a execução dos testes
propriamente ditos
Verifica “resultados encontrados” X
“resultados esperados”
Prevenir, localizar e documentar
defeitos
Minimizar o impacto potencial de
defeitos, detectando-os antes da
entrega do produto ao cliente
Por que testar?
Aumentar a Qualidade dos produtos gerados,
através da prevenção de defeitos, realização de
testes e validações no desenvolvimento de
software.
Garantir que o produto gerado atenda às expectativas do
cliente.
Garantir que o produto gerado atende às especificações
(requisitos funcionais e não funcionais) do sistema.
Garantir que o produto gerado funciona corretamente no
ambiente de produção.
Garantir que alterações realizadas no sistema e em seus
componentes gerem os resultados esperados e não
comprometam a integridade do sistema.
Reduzir ao máximo a incidência de defeitos nos produtos
entregues, bem como a sua severidade.
Custo de Correção
O custo de 1 problema é 200 vezes maior
se for reparado após a implantação
1 a 2
5
10
20
50
200
EstEstáágiogio
Requisitos
Projeto
Codificação
Teste de Unidade
Teste de Aceitação
Manutenção
Custo Relativo de ReparoCusto Relativo de Reparo
Tipos de Testes
Teste de Unidade
Teste de Integração
Teste de Regressão
Teste de Sistema
Teste de Aceitação
Teste de Integridade de Dados e de Banco de Dados
Teste Funcional
Teste de Interface com o usuário
Teste de desempenho
Teste de Carga
Teste de Stress
Teste de Segurança
Teste de Tolerância a Falhas
Teste de Recuperação
Teste de Configuração
...
•Diferenças entre alguns tipos de
testes não são muito claras
•Ex.: Teste Funcional X Teste
de Sistema X Teste de
Aceitação
•Você provavelmente deve ter em
mente algum tipo de teste que
não está nessa lista ☺
•Diferenças entre alguns tipos de
testes não são muito claras
•Ex.: Teste Funcional X Teste
de Sistema X Teste de
Aceitação
•Você provavelmente deve ter em
mente algum tipo de teste que
não está nessa lista ☺
Boa Prática
É importante fazer um bom levantamento de
Requisitos
Identificar os cenários
O que é obrigatório
Fazer protótipo de tela
Tirar ambigüidades
Bons casos de uso facilitam o trabalho dos
testes
Caso contrário, o trabalho que deveria ser
realizado no levantamento de requisitos vai ser
realizado no levantamento dos casos de testes.
Boas Práticas
Os testes devem ser repetíveis
Deve-se prevenir a propagação de defeitos entre as
fases do desenvolvimento
Testes de sistemas ou funcionais devem ser
executados por uma equipe preparada e independente
da equipe de desenvolvimento.
Devem existir ambientes isolados para a realização
dos diversos tipos de teste
Implementar testes automatizados
Focar os testes na parte crítica do sistema
Testes Unitários
Introdução
Teste Unitário
O teste unitário é implementado com base no
menor elemento testável (unidades) do
software.
Implica em testar a estrutura interna (como
fluxo lógico e de dados), a função da unidade e
os comportamentos observáveis.
O que é unidade?
Componente, classe, método, etc.
Caixa Branca
Tecnologias
JUnit e DBUnit
JUnit
Realiza testes unitários
Ex: Verifica se algum método realiza o cálculo
esperado.
API - http://www.junit.org/
Demonstração
E o DBUnit?
Motivação
Rua da Passagem
122
João11111111
Rua Candido Mendes
22
Maria22222222
Av. Ns. Copacabana
131
Ana33333333
EndereçoNomeCPF
Rua da Passagem
122
João11111111
Rua Candido Mendes
22
Maria22222222
Av. Ns. Copacabana
131
Ana33333345
EndereçoNomeCPF
Motivação
... ...
Motivação
xxxxxxxxxx
xxxxx
xxxxxxxxxxxxxxxx
Coluna3Coluna2Coluna1
Modelo Relacional
Procedure (.....)
xxxxxxxxxx
xxxxx
xxxxxxxxxxxxxxxx
Coluna3Coluna2Coluna1
Tabela Temporária Resultados Esperados
DBUnit
Extensão dos casos de teste do JUnit
Consistência do modelo de dados
Oferece mecanismos de exportação
Carga do banco de dados antes dos
testes
Métodos de comparação
Demonstração
Conclusão
DBUnit é uma extensão do JUnit
DBUnit realiza testes unitários voltados
para banco de dados
DBUnit é uma API gratuita.
Testes Funcionais
Testes Funcionais
Teste caixa preta que simula a interação
do usuário com o sistema
Geralmente baseado em cenários de
testes extraídos dos casos de uso ou de
descrições das funcionalidades
Representam um dos testes de maior nível
de granularidade
Utilizado em fases mais avançadas do
ciclo de desenvolvimento
Teste Funcional
Documentação de Testes
Qual a importância de
documentar casos de teste?
Descrever o passo a passo de cada caso de teste.
Importante para permitir a disseminação do
conhecimento e para ajudar na manutenção.
Existem diversas ferramentas no mercado que
auxiliam nesse processo de documentação,
como:
Rational Test Manager
Rational Quality Manager
...
Demonstração do Rational
Test Manager
Fim!!
Perguntas?
1/8/2011 @LES/PUC-Rio 27

Testes, engenharia de Software, teste de Software

  • 1.
    Testes de SoftwareTestesde Software Andrew Diniz da Costa andrew@les.inf.puc-rio.br
  • 2.
    Agenda Conceitos gerais Principais Tiposde Teste Testes Unitários Testes Funcionais
  • 3.
    O que sãotestes de software? Atividades realizadas ao longo do desenvolvimento,que verificam se o software e seus componentes atendem às suas especificações. Testes de Software garantem que o sistema foi desenvolvido corretamente e o mesmo possui as características de qualidade esperadas.
  • 4.
    O que sãotestes de software? Atividades controladas visando identificar problemas Envolve ações que vão do levantamento de requisitos até a execução dos testes propriamente ditos Verifica “resultados encontrados” X “resultados esperados” Prevenir, localizar e documentar defeitos Minimizar o impacto potencial de defeitos, detectando-os antes da entrega do produto ao cliente
  • 5.
    Por que testar? Aumentara Qualidade dos produtos gerados, através da prevenção de defeitos, realização de testes e validações no desenvolvimento de software. Garantir que o produto gerado atenda às expectativas do cliente. Garantir que o produto gerado atende às especificações (requisitos funcionais e não funcionais) do sistema. Garantir que o produto gerado funciona corretamente no ambiente de produção. Garantir que alterações realizadas no sistema e em seus componentes gerem os resultados esperados e não comprometam a integridade do sistema. Reduzir ao máximo a incidência de defeitos nos produtos entregues, bem como a sua severidade.
  • 6.
    Custo de Correção Ocusto de 1 problema é 200 vezes maior se for reparado após a implantação 1 a 2 5 10 20 50 200 EstEstáágiogio Requisitos Projeto Codificação Teste de Unidade Teste de Aceitação Manutenção Custo Relativo de ReparoCusto Relativo de Reparo
  • 7.
    Tipos de Testes Testede Unidade Teste de Integração Teste de Regressão Teste de Sistema Teste de Aceitação Teste de Integridade de Dados e de Banco de Dados Teste Funcional Teste de Interface com o usuário Teste de desempenho Teste de Carga Teste de Stress Teste de Segurança Teste de Tolerância a Falhas Teste de Recuperação Teste de Configuração ... •Diferenças entre alguns tipos de testes não são muito claras •Ex.: Teste Funcional X Teste de Sistema X Teste de Aceitação •Você provavelmente deve ter em mente algum tipo de teste que não está nessa lista ☺ •Diferenças entre alguns tipos de testes não são muito claras •Ex.: Teste Funcional X Teste de Sistema X Teste de Aceitação •Você provavelmente deve ter em mente algum tipo de teste que não está nessa lista ☺
  • 8.
    Boa Prática É importantefazer um bom levantamento de Requisitos Identificar os cenários O que é obrigatório Fazer protótipo de tela Tirar ambigüidades Bons casos de uso facilitam o trabalho dos testes Caso contrário, o trabalho que deveria ser realizado no levantamento de requisitos vai ser realizado no levantamento dos casos de testes.
  • 9.
    Boas Práticas Os testesdevem ser repetíveis Deve-se prevenir a propagação de defeitos entre as fases do desenvolvimento Testes de sistemas ou funcionais devem ser executados por uma equipe preparada e independente da equipe de desenvolvimento. Devem existir ambientes isolados para a realização dos diversos tipos de teste Implementar testes automatizados Focar os testes na parte crítica do sistema
  • 10.
  • 11.
    Introdução Teste Unitário O testeunitário é implementado com base no menor elemento testável (unidades) do software. Implica em testar a estrutura interna (como fluxo lógico e de dados), a função da unidade e os comportamentos observáveis. O que é unidade? Componente, classe, método, etc. Caixa Branca
  • 12.
    Tecnologias JUnit e DBUnit JUnit Realizatestes unitários Ex: Verifica se algum método realiza o cálculo esperado. API - http://www.junit.org/
  • 13.
  • 14.
  • 15.
    Motivação Rua da Passagem 122 João11111111 RuaCandido Mendes 22 Maria22222222 Av. Ns. Copacabana 131 Ana33333333 EndereçoNomeCPF Rua da Passagem 122 João11111111 Rua Candido Mendes 22 Maria22222222 Av. Ns. Copacabana 131 Ana33333345 EndereçoNomeCPF
  • 16.
  • 17.
  • 18.
    DBUnit Extensão dos casosde teste do JUnit Consistência do modelo de dados Oferece mecanismos de exportação Carga do banco de dados antes dos testes Métodos de comparação
  • 19.
  • 20.
    Conclusão DBUnit é umaextensão do JUnit DBUnit realiza testes unitários voltados para banco de dados DBUnit é uma API gratuita.
  • 21.
  • 22.
    Testes Funcionais Teste caixapreta que simula a interação do usuário com o sistema Geralmente baseado em cenários de testes extraídos dos casos de uso ou de descrições das funcionalidades Representam um dos testes de maior nível de granularidade Utilizado em fases mais avançadas do ciclo de desenvolvimento
  • 23.
  • 24.
  • 25.
    Qual a importânciade documentar casos de teste? Descrever o passo a passo de cada caso de teste. Importante para permitir a disseminação do conhecimento e para ajudar na manutenção. Existem diversas ferramentas no mercado que auxiliam nesse processo de documentação, como: Rational Test Manager Rational Quality Manager ...
  • 26.
  • 27.