Você está na página 1de 47

Conceitos e Técnicas de Testes de Software

Prof. Evandro César Freiberger

Instituto Federal de Mato Grosso


Departamento da Área de Informática
evandro.freiberger@ifmt.edu.br

2022

Prof. Evandro César Freiberger (IFMT) Testes 2022 1 / 47


Sumário

1 Introdução aos Conceitos de Testes de Software

2 Niveis de Testes de Software

3 Processo de Testes de Software

Prof. Evandro César Freiberger (IFMT) Testes 2022 2 / 47


Cenário Atual do Desenvolvimento de Software
Prazos apertados para entregas

Clientes menos tolerantes a atrasos nas entregas

Necessidade de software de boa qualidade

Clientes menos tolerantes a falhas

Novas tecnologias e sistemas cada vez mais complexos

O mercado têm poucos testadores especialistas

Pouco investimento na área de testes

Software testados apenas pelos próprios desenvolvedores


I Sistemas perfeitos
I Vício da Implementação já Conhecido

Prof. Evandro César Freiberger (IFMT) Testes 2022 3 / 47


Conceitos Básicos de Testes de Software
Desenvolvimento de software não é uma tarefa simples;

Facilmente pode se tornar bastante complexa, dependendo da complexidade e tamanho


do sistema a ser criado;

Assim, o desenvolvimento de software está sujeito a diversos tipos de problemas,


acarretando na obtenção de um produto diferente daquele que o esperado;

Muitos fatores podem contribuir como causas de tais problemas;

A maioria dos fatores tem uma única origem: erro humano;

Como a maioria das atividades de engenharia, a construção de software depende


principalmente da habilidade, da interpretação e da execução de tarefas por pessoas que
o constroem;

Nesse contexto, erros acabam surgindo, mesmo com a utilização de métodos e


ferramentas de engenharia de software.

Prof. Evandro César Freiberger (IFMT) Testes 2022 4 / 47


Conceitos Básicos de Testes de Software

Teste de Software...
Processo de executar um programa com objetivo de encontrar erros. (Myers, 1979)

Processo de avaliar um software ou um componente de software para verificar se ele


satisfaz os requisitos especificados ou identificar diferenças entre resultados esperados e
obtidos. (ANSI/IEEE Standard 729)

Prof. Evandro César Freiberger (IFMT) Testes 2022 5 / 47


Conceitos Básicos de Testes de Software
Para que os erros possam ser descobertos antes de o software ser liberado para a
utilização, existe um conjunto de atividades, que no geral são chamadas de “Validação,
Verificação e Teste”, ou “VV&T”.

O objetivo dessas atividades é garantir que tanto o modo pelo qual o software está sendo
construído, quanto o produto em si, estejam em conformidade com o especificado.

Atividades de VV&T não se restringem ao produto final. Ao contrário, podem e devem ser
conduzidas durante todo o processo de desenvolvimento do software, desde a sua
concepção.

Prof. Evandro César Freiberger (IFMT) Testes 2022 6 / 47


Conceitos Básicos de Testes de Software

Teste de Software Contribui...


Verificação: Estamos construindo corretamente o produto?

Validação: Estamos construindo o produto certo?

Prof. Evandro César Freiberger (IFMT) Testes 2022 7 / 47


Conceitos Básicos de Testes de Software
A literatura tradicional estabelece significados específicos para diferentes termos relacionados
como: falha, defeito, erro, engano.
Definimos defeito (fault) como sendo um passo, processo ou definição de dados
incorretos;

Engano (mistake), como a ação humana que produz um defeito;

A existência de um defeito pode ocasionar um erro (error) durante uma execução do


programa, que se caracteriza por um estado inconsistente ou inesperado;

Tal estado pode levar a uma falha (failure), ou seja, pode fazer com que o resultado
produzido pela execução seja diferente do resultado esperado.

Prof. Evandro César Freiberger (IFMT) Testes 2022 8 / 47


Conceitos Básicos de Testes de Software

Existe o consenso de que não é possível eliminar todas as


falhas/erros de um Software.

Prof. Evandro César Freiberger (IFMT) Testes 2022 9 / 47


Conceitos Básicos de Testes de Software
Domínio de Entrada e Domínio de Saída.

O domínio de entrada de um programa P, denotado por D( P ), é o conjunto de todos os


valores possíveis que podem ser utilizados para executar P.

O domínio de saída do programa, é o conjunto de todos os resultados possíveis


produzidos pelo programa.

Exemplo - um programa que recebe como parâmetros de entrada dois números inteiros x
e y, com y >= 0, e calcula o valor de x elevado y , indicando um erro caso os argumentos
estejam fora do intervalo especificado.
I O domínio de entrada deste programa é formado por todos os possíveis pares de números
inteiros (x, y).
I O domínio de saída seria o conjunto de números inteiros e mensagens de erro produzidos
pelo programa.

Prof. Evandro César Freiberger (IFMT) Testes 2022 10 / 47


Conceitos Básicos de Testes de Software
Um Dado de Teste para um programa P é um elemento do domínio de entrada de P.

Um Caso de Teste é um par formado por um dado de teste e o resultado esperado para
a execução do programa com aquele dado de teste.

Ao conjunto de todos os casos de teste usados durante determinada atividade de teste


costuma-se chamar conjunto de teste ou conjunto de casos de teste.

Por exemplo, no programa que calcula x elevado y , temos os seguintes casos de teste:
((2, 3), 8), ((4, 3), 64), ((3, -1), Erro).

Prof. Evandro César Freiberger (IFMT) Testes 2022 11 / 47


Conceitos Básicos de Testes de Software
Cenário Típico das Atividades de Testes.

Para um domínio de dados de um programa D(P), aplicado em um conjunto de casos de


testes T, executados pelo programa P, e comparados com as especificações do programa
S(P) o resultado pode ser sucesso ou falha.

Prof. Evandro César Freiberger (IFMT) Testes 2022 12 / 47


Conceitos Básicos de Testes de Software
Testes não verificam completamente as saídas de um sistema, visto que as ENTRADAS
SÃO INFINITAS
Teste não garante a qualidade, pois a qualidade tem um conceito muito mais amplo
Testes custam em média de 20% a 30% do custo de elaboração de um software (ou
pelo menos deveriam custar)

Prof. Evandro César Freiberger (IFMT) Testes 2022 13 / 47


Conceitos Básicos de Testes de Software

Prof. Evandro César Freiberger (IFMT) Testes 2022 14 / 47


Níveis de Testes de Software

Questões Chave de Teste de Software


Prof. Evandro César Freiberger (IFMT) Testes 2022 15 / 47
Níveis de Testes de Software

Questões Chave de Teste de Software

Prof. Evandro César Freiberger (IFMT) Testes 2022 16 / 47


Teste de Unidade ou Unitário

Objetivo: encontrar falhas em unidades autônomas do sistema

O que testa: sub rotinas, métodos, classes, . . . , menores unidades

Realizado: pelos programadores

Forma: normalmente é automatizado por ferramentas (JUnit, PHPUnit, etc)

Observação:
precisa estar sempre atualizado em relação ao código em desenvolvimento
costuma dar muito trabalho para manter o isolamento (dados e requisições)

Prof. Evandro César Freiberger (IFMT) Testes 2022 17 / 47


Teste de Integração

Objetivo: validar a comunicação entre componentes de um sistema

O que testa: a integração (envio/recebimento de dados) entre os componentes

Realizado: pelos programadores

Forma: normalmente é automatizado por ferramentas (JUnit, PHPUnit, etc)

Observação:
Vão desde a chamada de métodos entre classes, comunicação entre camadas,
comunicação com banco de dados, chamada de serviços (Web Services/Microsserviços,
API, Middleware), etc

Prof. Evandro César Freiberger (IFMT) Testes 2022 18 / 47


Teste de Integração

Prof. Evandro César Freiberger (IFMT) Testes 2022 19 / 47


Teste de Integração

Prof. Evandro César Freiberger (IFMT) Testes 2022 20 / 47


Teste de Sistema

Objetivo: executar o sistema sob o ponto de vista de seu usuário final, buscando por
falhas

O que testa: entradas e saídas do sistema (funcionalidade)

Realizado: equipe de teste/testador especialista

Forma: cenários de testes a partir de requisitos especificados, pode ser automatizado

Observação:
A percepção de um bom testador irá explorar uma gama maior de possibilidade de
encontrar erros;
Embora a automatização seja possível, o teste com testadores reais pode ampliar os
casos de testes;

Prof. Evandro César Freiberger (IFMT) Testes 2022 21 / 47


Teste de Aceitação

Objetivo: executar o sistema sob o ponto de vista de seu usuário final, buscando atestar
se aceita ou não o sistema

O que testa: principalmente funcionalidade conforme acordo solicitado

Realizado: número reduzido de usuário final do sistema (escolhidos), pessoas que


acompanham o desenvolvimento do sistema

Forma: usuários finais simulam o uso do sistema verificando o comportamento do


sistema, tendo como base os cenários mais críticos do sistema (requisitos)

Observação:
Pode incluir recuperação de falhas, segurança e desempenho

Prof. Evandro César Freiberger (IFMT) Testes 2022 22 / 47


Teste Alfa

Objetivo: executar o sistema sob o ponto de vista de seu usuário final, buscando dar
feedback sobre o funcionamento do sistema

O que testa: principalmente funcionalidade

Realizado: número reduzido de usuário final do sistema, porém maior que no teste de
aceitação, que não tem uma ligação direta com o desenvolvimento do sistema

Forma: usuários finais simulam o uso do sistema verificando o comportamento do


sistema, mas sem um plano de testes

Observação:
A equipe de desenvolvimento deve dedicar um tempo para absorver os feedbacks dos
testes Alfa e retornar com alterações, ajustes ou justificativas

Prof. Evandro César Freiberger (IFMT) Testes 2022 23 / 47


Teste Beta

Objetivo: executar o sistema sob o ponto de vista de seu usuário final, buscando dar
feedback sobre o funcionamento do sistema

O que testa: principalmente funcionalidade

Realizado: número grade usuário final do sistema, desconhecidos da equipe de


desenvolvimento

Forma: usuários finais usam o sistema e podem dar feedback pelo próprio sistema
(formulário do próprio sistema)

Observação:
A equipe de desenvolvimento não precisa dar feedback personalizado para os testes
Beta
Teste Beta funcionam como um pré-lançamento

Prof. Evandro César Freiberger (IFMT) Testes 2022 24 / 47


Teste de Regressão

Objetivo: re-executar testes após alterações no sistema, para garantir que tudo continua
funcionando corretamente (busca de efeitos colaterais)

O que testa: tudo o que existir de testes (automatizados ou não)

Realizado: depende do nível do teste que será repetido

Forma: depende do nível do teste que será repetido

Observação:
A automação de testes e a documentação de cenários de testes facilitam a execução de
testes de regressão.

Prof. Evandro César Freiberger (IFMT) Testes 2022 25 / 47


O que Testar

Questões Chave de Teste de Software

Prof. Evandro César Freiberger (IFMT) Testes 2022 26 / 47


Teste de Funcionalidade

Objetivo: verificar se as funcionalidades do sistema estão ocorrendo de forma correta


(conforme regras de negócio e requisitos)

Forma de verificar: executar testes de Unidade, Integração, Sistema, Aceitação, Alfa, Beta e
Regressão

Observação:
precisa estar sempre atualizado em relação ao código em desenvolvimento

Prof. Evandro César Freiberger (IFMT) Testes 2022 27 / 47


Teste de Usabilidade

Objetivo: validar os aspectos que envolvem a experiência do usuário ao utilizar o sistema

Forma de verificar: monitorar o usuário usando o sistema, quer seja pessoalmente ou via
ferramentas de apoio

Exemplos:
Ergonomia de um website
Definição e disposição de cores da interface
Tipo da interface (menu, touch screen, gestos, voz, etc)

Prof. Evandro César Freiberger (IFMT) Testes 2022 28 / 47


Exemplo de Teste de Usabilidade

Prof. Evandro César Freiberger (IFMT) Testes 2022 29 / 47


Teste de Segurança

Objetivo: validar a proteção do sistema contra invasões ou acesso não autorizado à


informações

Forma de verificar: depende do que será testado; é comum até a terceirização dessa tarefa;
vão desde o desenvolvimento até a operação do sistema

Exemplos:
Sites com acesso restritos
Tráfego de informações criptografadas
Senhas fracas, dedutíveis ou usuais

Prof. Evandro César Freiberger (IFMT) Testes 2022 30 / 47


Teste de Portabilidade

Objetivo: validar o funcionamento do sistema em diferentes plataformas, ambientes e


dispositivos, para os quais o sistema está sendo proposto

Forma de verificar: planos de testes que contemplem a execução em todos os ambientes


propostos (funcionalidade e padrões de interface)

Exemplos:
IOS, Android, Windows, Linux
Computadores, notebooks, smartphones, tablets
Firefox, Chrome, Opera, Edge

Prof. Evandro César Freiberger (IFMT) Testes 2022 31 / 47


Como Testar

Prof. Evandro César Freiberger (IFMT) Testes 2022 32 / 47


Teste de Caixa Branca

Objetivo: validar as estruturas internas do sistema, analisando o código que realiza as


ações

Níveis de teste: validar as estruturas internas do sistema, analisando o código que realiza as
ações

Exemplos:
Testes de métodos e classes
Testes de comandos de repetição
Testes de condições
Análise de código (qualidade/padrão do código)

Prof. Evandro César Freiberger (IFMT) Testes 2022 33 / 47


Teste de Caixa Preta

Objetivo: Validar as funcionalidades do sistema, sem analisar o código que realiza as


ações (analisa as saídas das operações mediante entradas submetidas)

Níveis de teste: Teste de Integração, Sistema, Aceitação, Alfa e Beta

Exemplos:
Testes de integração entre componentes de negócio, com banco, com serviços
Testes de uso na visão de usuário final (Sistema, Aceitação, Alfa e Beta)

Prof. Evandro César Freiberger (IFMT) Testes 2022 34 / 47


Teste Estáticos

Objetivo: Analisar o código sem executá-lo e verificar se as boas práticas e padrões foram
obedecidos

É realizado com testes de Caixa Branca

Existem ferramentas para a automação, mas exigem um esforço grande na customização e


adequação para as características de cada projeto/código
Exemplos:
Documentação de código
Nomenclatura de identificadores
Null Pointers são tratados
Arquitetura definida foi seguida
As conexões com banco de dados foram encerradas

Prof. Evandro César Freiberger (IFMT) Testes 2022 35 / 47


Testes Manuais versus Automatizados

Prof. Evandro César Freiberger (IFMT) Testes 2022 36 / 47


Testes no Modelo V de Desenvolvimento

Prof. Evandro César Freiberger (IFMT) Testes 2022 37 / 47


Testes no Tradicional versus Modelos Ágeis

Prof. Evandro César Freiberger (IFMT) Testes 2022 38 / 47


Documentação no Modelo Tradicional versus Modelo Ágil

Prof. Evandro César Freiberger (IFMT) Testes 2022 39 / 47


Pirâmide de Teste
Os testes Unitários são os mais rápidos para serem desenvolvidos e
mais baratos.
Os testes de Interface com o Usuário são mais trabalhosos e mais
caros para serem desenvolvidos.

Prof. Evandro César Freiberger (IFMT) Testes 2022 40 / 47


Pirâmide de Teste

Prof. Evandro César Freiberger (IFMT) Testes 2022 41 / 47


Responsabilidades nos Testes
Desenvolvedores
I criar e executar os testes de Unidade

Testadores
I Dar suporte a implementação dos testes de unidade
I Criar, executar, monitorar e manter os testes (com apoio dos desenvolvedores)
F Testes de Integração de componentes
F Testes de Sistema
F Testes de Integração de Sistemas

Partes Interessadas (Stakeholders)


I Testam as estórias
I Podem usar casos de testes previamente escritos

Prof. Evandro César Freiberger (IFMT) Testes 2022 42 / 47


Visão Geral dos Testes em um Modelo Ágil (versão 1)

Prof. Evandro César Freiberger (IFMT) Testes 2022 43 / 47


Visão Geral dos Testes em um Modelo Ágil (versão 2)

Prof. Evandro César Freiberger (IFMT) Testes 2022 44 / 47


Produtos Típicos dos Testadores
Plano de Testes
I Testes Automatizados
I Testes Manuais
Relatórios de Defeitos

Logs de Resultado de Testes

Métricas de Testes
I Estatísticas
I O que foi encontrado versus o que foi resolvido
I Recorrência de defeitos

Prof. Evandro César Freiberger (IFMT) Testes 2022 45 / 47


Gestão de Testes e Configuração
Verificar de forma automatizada e contínua as alterações de código;
Manter histórico de ações efetuadas
Permitir a viabilidade de integração contínua
Controlar versões de testes, relacionadas com versões de código
Permitir a rastreabilidade de alterações de documentos, códigos, scripts de testes e etc
Viabilizar as atualizações dos testes, frente às mudanças no sistema
I Ponto crítico de testes

Prof. Evandro César Freiberger (IFMT) Testes 2022 46 / 47


Critérios de Aceitação Definidos
Comportamento Funcional

Características de Qualidade

Cenários (Casos de Uso e User Stories)

Regras de Negócio

Restrições

Definição de Dados

Interfaces Externas

Prof. Evandro César Freiberger (IFMT) Testes 2022 47 / 47

Você também pode gostar