Você está na página 1de 51

Teste de Software

Prof. Jean-Rémi Bourguet

Qualidade de Software e Testes de Sistemas


Ciclo de vida dos testes de Software

A fase de Teste De Software (TDS) também possui um ciclo de vida!

u https://www.youtube.com/watch?v=An7HC1LolDM

Conceitos Básicos 2/29


VV& T

I A construção de software não é uma tarefa simples.


I Está sujeita a diversos tipos de problemas.
I Obtenção de um produto diferente daquele que se esperava.
I A maioria dos problemas é consequência de um erro humano.
I As atividades de Validação, Verificação e Teste (VV&T) certificam.
I Certificam que o produto esteja em conformidade com o especificado.

Conceitos Básicos 3/29


VV& T

I A verificação consiste em identificar defeitos e possíveis problemas.


I A validação avalia se a construção segue os requisitos predefinidos.

u https://www.youtube.com/watch?v=gQrSxbfUjug
Conceitos Básicos 3/29
O que é teste de software?

... o processo de executar um programa com objetivo de encontrar erros ...


[Myers, 1979]
... o processo de avaliar um sistema ou um componente por meios manuais
ou automáticos para verificar se ele satisfaz os requisitos especificados ou
identificar diferenças entre resultados esperados e obtidos.
[ANSI/IEEE Standard 729, 1983]

u https://www.youtube.com/watch?v=rFaWOw8bIMM
Conceitos Básicos 4/29
O que é teste de software?

I Funcionamento em uma situação não está de acordo como esperado?


I Um teste bem-sucedido identifica defeitos não descobertos.
I Esses defeitos poderão ser corrigidos pelo programador.
I Quando os testes são planejados de maneira sistemática e rigorosa...
I ...é um dos parâmetros para estimar a confiabilidade e qualidade.

u https://www.youtube.com/watch?v=TDynSmrzpXw
Conceitos Básicos 4/29
O que é teste de software?

I Teste de software executa o programa com entradas em particular.


I Verifica se seu comportamento está de acordo com o esperado.
I Caso a execução apresente resultados não especificados...
I ...dizemos que um erro ou defeito foi identificado.
I Os dados da execução podem servir como fonte de informação.

Conceitos Básicos 4/29


O que é teste de software?

I O termo bug foi utilizado pela primeira vez por Thomas Edison.
I Depois disso foi popularizado por Grace Hopper.
I Descreve defeitos inexplicáveis em um software.

I Os testes de software servem para medir a confiabilidade de sistema.


I À medida que poucos defeitos encontram-se em determinado tempo
I ... o software é considerado mais confiável.

Por que testar é necessário?


I Atender às necessidades dos usuários.
I É provável que o software possua defeitos.
I Desenvolvedor teria que resolver muitos
bugs de projetos anteriores em produção.
Conceitos Básicos I As falhas podem custar muito caro. 5/29
O que é teste de software?

I O termo bug foi utilizado pela primeira vez por Thomas Edison.
I Depois disso foi popularizado por Grace Hopper.
I Descreve defeitos inexplicáveis em um software.

I Os testes de software servem para medir a confiabilidade de sistema.


I À medida que poucos defeitos encontram-se em determinado tempo
I ... o software é considerado mais confiável.

Por que testar é necessário?


I Atender às necessidades dos usuários.
I É provável que o software possua defeitos.
I Desenvolvedor teria que resolver muitos
bugs de projetos anteriores em produção.
Conceitos Básicos I As falhas podem custar muito caro. 5/29
O que é teste de software?

I O termo bug foi utilizado pela primeira vez por Thomas Edison.
I Depois disso foi popularizado por Grace Hopper.
I Descreve defeitos inexplicáveis em um software.

I Os testes de software servem para medir a confiabilidade de sistema.


I À medida que poucos defeitos encontram-se em determinado tempo
I ... o software é considerado mais confiável.

Por que testar é necessário?


I Atender às necessidades dos usuários.
I É provável que o software possua defeitos.
I Desenvolvedor teria que resolver muitos
bugs de projetos anteriores em produção.
Conceitos Básicos I As falhas podem custar muito caro. 5/29
O que é teste de software?

I O termo bug foi utilizado pela primeira vez por Thomas Edison.
I Depois disso foi popularizado por Grace Hopper.
I Descreve defeitos inexplicáveis em um software.

I Os testes de software servem para medir a confiabilidade de sistema.


I À medida que poucos defeitos encontram-se em determinado tempo
I ... o software é considerado mais confiável.

Por que testar é necessário?


I Atender às necessidades dos usuários.
I É provável que o software possua defeitos.
I Desenvolvedor teria que resolver muitos
bugs de projetos anteriores em produção.
Conceitos Básicos I As falhas podem custar muito caro. 5/29
O que é teste de software?

I O termo bug foi utilizado pela primeira vez por Thomas Edison.
I Depois disso foi popularizado por Grace Hopper.
I Descreve defeitos inexplicáveis em um software.

I Os testes de software servem para medir a confiabilidade de sistema.


I À medida que poucos defeitos encontram-se em determinado tempo
I ... o software é considerado mais confiável.

Por que testar é necessário?


I Atender às necessidades dos usuários.
I É provável que o software possua defeitos.
I Desenvolvedor teria que resolver muitos
bugs de projetos anteriores em produção.
Conceitos Básicos I As falhas podem custar muito caro. 5/29
O que é teste de software?

I O termo bug foi utilizado pela primeira vez por Thomas Edison.
I Depois disso foi popularizado por Grace Hopper.
I Descreve defeitos inexplicáveis em um software.

I Os testes de software servem para medir a confiabilidade de sistema.


I À medida que poucos defeitos encontram-se em determinado tempo
I ... o software é considerado mais confiável.

Por que testar é necessário?


I Atender às necessidades dos usuários.
I É provável que o software possua defeitos.
I Desenvolvedor teria que resolver muitos
bugs de projetos anteriores em produção.
Conceitos Básicos I As falhas podem custar muito caro. 5/29
O que é teste de software?

I O termo bug foi utilizado pela primeira vez por Thomas Edison.
I Depois disso foi popularizado por Grace Hopper.
I Descreve defeitos inexplicáveis em um software.

I Os testes de software servem para medir a confiabilidade de sistema.


I À medida que poucos defeitos encontram-se em determinado tempo
I ... o software é considerado mais confiável.

Por que testar é necessário?


I Atender às necessidades dos usuários.
I É provável que o software possua defeitos.
I Desenvolvedor teria que resolver muitos
bugs de projetos anteriores em produção.
Conceitos Básicos I As falhas podem custar muito caro. 5/29
Erro, Defeito e Falha

I erro: uma ação humana que produz um resultado incorreto.


I defeito (ou Bug): a manifestação de um erro no software.
I falha: comportamento inesperado devido ao defeito.

Uma pessoa comete um erro que cria um defeito no software que pode
causar uma falha na operação. [Rocha 2011]
Conceitos Básicos 6/29
Erro, Defeito e Falha

I erro: uma ação humana que produz um resultado incorreto.


I defeito (ou Bug): a manifestação de um erro no software.
I falha: comportamento inesperado devido ao defeito.

Uma pessoa comete um erro que cria um defeito no software que pode
causar uma falha na operação. [Rocha 2011]
Conceitos Básicos 6/29
Erro, Defeito e Falha

I erro: uma ação humana que produz um resultado incorreto.


I defeito (ou Bug): a manifestação de um erro no software.
I falha: comportamento inesperado devido ao defeito.

Uma pessoa comete um erro que cria um defeito no software que pode
causar uma falha na operação. [Rocha 2011]
Conceitos Básicos 6/29
Erro, Defeito e Falha

I erro: uma ação humana que produz um resultado incorreto.


I defeito (ou Bug): a manifestação de um erro no software.
I falha: comportamento inesperado devido ao defeito.

Uma pessoa comete um erro que cria um defeito no software que pode
causar uma falha na operação. [Rocha 2011]
Conceitos Básicos 6/29
Artefatos de Teste

Artefatos de Teste
Documentação gerada durante o processo de teste.
Compartilhada com diferentes partes interessadas.
Todos os processos de teste transparentes e registrados corretamente.

Conceitos Básicos 7/29


Requisitos

Requisitos
Um requisito consiste da definição documentada.
Propriedade ou comportamento que um produto deve atender.

Conceitos Básicos 8/29


Estratégia de Teste

Estratégia de Teste
Descreve a abordagem geral e os objetivos das tarefas de teste.
Informa as partes interressadas sobre as técnicas e ferramentas.

Conceitos Básicos 9/29


Plano de Teste

Plano de Teste
Descreve a abordagem sistêmica testando as funcionalidades.
Inclui os detalhos do fluxo de trabalho.
O objetivo é comunicar a intenção das tarefas de teste.

Conceitos Básicos 10/29


Dado de Teste

I O domínio de entrada de um programa P é um conceito importante.


I Todos os valores possíveis que podem ser utilizados para executar P.
I Dado de teste para P é um elemento do domínio de entrada de P.

Conceitos Básicos 11/29


Caso de Teste

Caso de Teste / Conjunto de Teste


Os casos de teste refletem os requisitos que devem ser verificados.
Título, objetivo, condições, passos de execução, resultado esperado.
Conjunto de teste é o conjunto de todos os casos de teste.

Conceitos Básicos 12/29


Caso de Teste

Conceitos Básicos 12/29


Roteiro de Teste

Roteiro de Teste
Cenário de teste contém a situação do software passando os testes.
Cenário a partir da qual muitos casos de teste (positivos e negativos)
podem ser preparados para ações bem-sucedidas ou mal-sucedidas.

Conceitos Básicos 13/29


Revelar

I Definido um conjunto de casos de teste T para o programa P...


I ... executa-se P em teste com T e verifica-se o resulta obtido.
I Se coincide com o esperado, então nenhum erro foi identificado.
I Se, para algum caso, difere do esperado, um defeito foi revelado.

Conceitos Básicos 14/29


Matriz de Rastreabilidade

Matriz de Rastreabilidade
Estabelece traços entre os casos de testes e os requisitos do sistema.

u https://www.youtube.com/watch?v=cm-cSW66Isc
Conceitos Básicos 15/29
Relatório

Relatório de Teste de Software


Relatório sobre as atividades de teste com algumas informações:
recurso de teste, progresso do teste e a qualidade do software.

Conceitos Básicos 16/29


Teste de confiabilidade

Teste de confiabilidade

Probabilidade de que o software não vai causar uma falha.


Medição por tempo especificado sob condições determinadas.

Conceitos Básicos 17/29


O custo de um defeito

I O custo da correção de um defeito tende a ser cada vez maior...


I ... quanto mais tarde ele for descoberto [Myers et al. 2004].

Conceitos Básicos 18/29


O custo de um defeito

I Em 1996, um software com uma exceção não tratada foi responsável...


I ...pela explosão do foguete Ariane-5, tendo um prejuízo de 500 M$!

Conceitos Básicos 18/29


Tipos de Teste de Software

I Teste de Caixa Preta é um teste de software.

I Verifica a saída dos dados usando entradas de vários tipos.

I Tais entradas não são escolhidas conforme a estrutura do programa.

Conceitos Básicos 19/29


Tipos de Teste de Software

I Teste de Caixa Branca é um teste de software.

I Uma técnica de teste que usa a perspectiva interna (código fonte).

I A desvantagem é que não analisa se a especificação está certa.

Conceitos Básicos 19/29


Tipos de Teste de Software

I Teste de Caixa Cinza é um teste de software.

I Uma mescla do uso das duas técnicas definidas antes.

I Analisa a parte lógica mais a funcionalidade do sistema.

I Testador comunica-se com desenvolvedor para otimizar os casos.

Conceitos Básicos 19/29


Testes estáticos

I A análise estática de softwares é também conhecida como whitebox.


I Ela trabalha diretamente com o código de uma ferramenta.
I Os componentes do software são verificados sem executá-lo.

Conceitos Básicos 20/29


Teste de unidade

I Uma unidade é a menor parte testável de um programa.


I Um teste unitário é o menor teste, sendo aplicado por analistas.
I Verifica se um único componente opera da maneira correta (via I/O).

Conceitos Básicos 21/29


Teste de unidade

I Cobertura é uma métrica para medir a quantidade de código...


I ... que foi testada por um conjunto de casos de testes.
I Expressa em termos de porcentagem do código-fonte da aplicação.
I Várias métricas existem para mensurar a cobertura :
I Cobertura de Linha
I Cobertura de Função e Método
I Cobertura de Classe
I ...

u https://www.youtube.com/watch?v=_Udjai_6b9Y
Conceitos Básicos 21/29
Teste de integração

I Um teste de unidade ajuda a isolar o que está quebrado no software.


I Teste de integração: Fase que combina e testa os módulos em grupo.
I Sucede o teste de unidade e antecede o teste de sistema.

u https://www.youtube.com/watch?v=QYCaaNz8emY
Conceitos Básicos 22/29
Teste de sistema

I O teste de sistema é uma fase do processo de teste de software.


I O sistema já é completamente integrado e verificado.
I Verificação do seus requisitos em um ambiente de produção.

u https://www.youtube.com/watch?v=ijtvAvapsP0
Conceitos Básicos 23/29
Teste exploratório

I Teste exploratório é um teste não sistemático.


I Ele depende da experiência e intuição do testador...
I ../ao invés de seguir um roteiro previamente planejado.
I Ou seja, é caracterizado apenas por uma exploração do software.

Conceitos Básicos 24/29


Teste de aceitação

I Teste de aceitação é uma fase do processo de teste.


I Um teste de caixa-preta é realizado antes da disponibilização.
I Verifica o sistema em relação aos seus requisitos originais.
I Verifica o sistema em relação às necessidades atuais do usuário.

Conceitos Básicos 25/29


Teste de aceitação

I Testes α: número restrito de usuários e observação do desenvolvedor.


Entre o término do desenvolvimento e a entrega.
I Testes β: número alto de usuários sem presença do desenvolvedor.
Com o resultado dos problemas reportados pelos usuários.
Os engenheiros de software fazem as devidas correções.
I Testes γ: lançam produtos que foram "mal testados" ao mercado.
Os problemas que os usuários encontram são corrigidos...
... quando a aplicação já está disponível para os usuários finais.

3 18. Testes de Software


Conceitos Básicos 25/29
Teste de regressão

I Depois dessa fase, com correções de bugs, podem surgir regressões.


I Uma regressão é um defeito introduzido no software...
I depois de quaisquer alterações feitas no software.
I Um teste de regressão é realizado após uma modificação.
I Garante que novos defeitos não tenham sido introduzidos.

u https://www.youtube.com/watch?v=aeu5zacsHsI
3 19. Teste de regressão
Conceitos Básicos 26/29
Teste A/B

I Método de teste através do qual comparam-se duas variantes: A e B.


I Experiência controlada, com o objetivo de melhorar a aprovação.
I Em web design, utilizado para identificar alterações nas páginas...
I ...que podem provocar mudanças positivas ou negativas no interesse.

Conceitos Básicos 27/29


Teste A/B

I 2 versões são idênticas exceto por uma variante que pode impactar.
I A versão A pode ser a versão utilizada atualmente (controle).
I A versão B é a modificada (tratamento).
I Podem ser vistas melhorias significativas através de testes dos items.

Conceitos Básicos 27/29


Níveis de Teste de Software
Modelo V

1. Teste de aceitação a partir do documento de requisitos;


2. Teste de sistema a partir do projeto de alto nível;
3. Testes de integração a partir do projeto detalhado;
4. Testes de unidades a partir da codificação.

Este modelo introduz a criação de testes e cenários de teste


durante o ciclo de desenvolvimento do software.
Conceitos Básicos 28/29
Níveis de Teste de Software
Modelo V

1. Teste de aceitação a partir do documento de requisitos;


2. Teste de sistema a partir do projeto de alto nível;
3. Testes de integração a partir do projeto detalhado;
4. Testes de unidades a partir da codificação.

Este modelo introduz a criação de testes e cenários de teste


durante o ciclo de desenvolvimento do software.
Conceitos Básicos 28/29
Níveis de Teste de Software
Modelo V

1. Teste de aceitação a partir do documento de requisitos;


2. Teste de sistema a partir do projeto de alto nível;
3. Testes de integração a partir do projeto detalhado;
4. Testes de unidades a partir da codificação.

Este modelo introduz a criação de testes e cenários de teste


durante o ciclo de desenvolvimento do software.
Conceitos Básicos 28/29
Níveis de Teste de Software
Modelo V

1. Teste de aceitação a partir do documento de requisitos;


2. Teste de sistema a partir do projeto de alto nível;
3. Testes de integração a partir do projeto detalhado;
4. Testes de unidades a partir da codificação.

Este modelo introduz a criação de testes e cenários de teste


durante o ciclo de desenvolvimento do software.
Conceitos Básicos 28/29
Referências

Myers, G. J., Badgett, T., Thomas, T. M., and Sandler, C. (2004).


The art of software testing, volume 2.
Wiley Online Library.
Rocha, A. C. O. (2011).
Introdução testes de software.
http://www.nti.ufpb.br/~caroline/curso/.

Conceitos Básicos 29/29

Você também pode gostar