Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

INTRODUÇÃO À ENGENHARIA 
DE SOFTWARE 
Prof. Marcelo Cabral 
www.fundacaoredeam.com.br 
2016 
Tópicos da aula de Hoje: 
 Teste de Software 
 Módulo I: Conceitos e Definições de Teste de Software 
 Módulo II: Técnicas de Teste de Software 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Propósito da Aula 
 Conscientizar (futuros) engenheiros de software sobre a importância de testes... 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Módulo I: Roteiro 
 Conceitos Básicos de Teste de Software em Geral 
 Elementos do Teste de Software 
 Níveis de Teste 
 Desenvolvimento x Teste de Software 
 Processo de Testes de Software 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Definições 
 Engano => Defeito => Falha => Erro 
 Engano: 
 Ato falho cometido por um ser humano durante o processo de construção 
de um artefato. 
 Defeito: 
 Deficiência mecânica ou algorítmica que se ativada pode levar a uma falha 
 Falha: 
 Evento notável onde o sistema viola suas especificações 
 Erro: 
 Item de informação ou estado de execução inconsistente 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste e Depuração 
 Teste: 
 Processo de executar um programa ou sistema com o objetivo de revelar a 
presença de falhas; ou, falhando nesse objetivo, aumentar a confiança sobre 
o programa 
 Depuração: 
 É uma consequência não previsível do teste. Após revelada a presença do 
erro, o defeito deve ser encontrado e corrigido 
 Depuração não é teste! 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Elementos do Teste de Software 
 Caso de Teste: 
 Descreve uma condição particular a ser testada 
 Composto por valores de entrada, restrições para a sua execução e um 
resultado ou comportamento esperado. 
 
 Procedimento (Roteiro) de Teste: 
 Descreve os passos necessários para a execução de um ou grupos de casos 
de teste 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Elementos do Teste de Software 
 Critérios de Cobertura dos Testes: 
 Permitem a identificação de partes do programa que devem ser executadas 
para garantir a qualidade do software e indicar quando o mesmo foi 
suficientemente testado. 
 A Cobertura dos Testes determina o percentual de elementos testados em 
um programa. 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Elementos do Teste de Software 
 Rodada (Bateria) de Teste: 
 Execução de todos os testes para uma versão do produto em um 
determinado ambiente 
 Uma nova rodada de teste deve ser executada caso o critério de aceitação do 
produto não tenha sido atingido 
 Incidentes de Teste: 
 Evento ou comportamento diferenciado ocorrido durante a execução dos 
testes que requer investigação 
 Não há garantia que todo incidente seja uma falha, pois ainda precisa ser 
analisado 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Objetivos dos Testes de Software 
 Refutar a assertiva de que o produto está correto 
 Determinar entradas que façam as saídas obtidas diferirem das saídas 
esperadas de acordo com a especificação 
 Busca de um contra exemplo 
 É um processo destrutivo, sob o ponto de vista psicológico, 
contrariamente às demais fases da Engenharia de Software, onde 
constrói-se um produto 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Características dos Testes de Software 
 Uma das atividades mais onerosas do desenvolvimento de software 
 Último recurso para avaliação do produto antes de sua entrega ao 
usuário final 
 Atividade essencial para ascensão ao nível 3 do CMMI e Nível D do MPS 
 Atividade relevante para avaliação de produtos de software (ISO9126, 
ISO14598-5) 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Princípios de Teste de Software 
 Os testes devem ser rastreáveis aos requisitos do usuário 
 Devem ser realizados para testar os requisitos do usuário 
 Devem ser completamente planejados antes de seu início 
 O planejamento é primordial para sua execução 
 Acredita-se que o princípio de Paretto exista de fato 
 80% de todos os erros encontrados a partir das falhas reveladas estarão 
concentrados em 20% dos componentes do software 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Princípios de Teste de Software 
 Devem ser aplicados inicialmente em pequena escala e depois 
expandidos 
 Não é possível aplicá-los exaustivamente 
 Para aumentar sua eficácia, deve ser executado por equipes 
independentes (quem não desenvolveu o software) 
 Para evitar viés na execução, os testadores devem ser diferentes de 
quem planejou os testes 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Software 
 O que identifica um bom teste ? 
 Possui alta probabilidade de revelar falhas 
 Não é redundante 
 É abrangente o suficiente 
 Possui um nível adequado de complexidade 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Software 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Software 
 Atividade que tipicamente envolve: 
 Execução do software com entradas representativas para as futuras 
condições de operação 
 Comparação entre saídas produzidas e esperadas 
 Comparação entre estados resultantes e esperados 
 Mensuração de características de execução (memória e tempo 
consumidos, etc.) 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Software 
 É uma atividade que requer concentração... 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
TESTE DE CONCENTRAÇÃO 
Desenvolvimento x Testes (Modelo V) 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Software 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Unidade 
 É a fase do processo de teste em que se testam as menores unidades de software 
desenvolvidas 
 O universo alvo desse tipo de teste são os métodos dos objetos ou mesmo pequenos 
trechos de código 
 Objetivo: 
 Encontrar falhas de funcionamento dentro de uma pequena parte do sistema 
funcionando independentemente do todo 
 Existem situações em que você não terá os recursos para realizar o teste 
completo das unidades. 
 Selecione os módulos críticos e aqueles com alta complexidade e apenas teste estes 
módulos 
 Utilize inspeções de código 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Integração 
 "Se todos os módulos funcionam individualmente (analisado através do teste de 
unidade), porque se tem dúvida de que eles funcionarão quando colocados 
juntos?“ 
 
O problema é exatamente "colocá-los juntos" – tendo uma interface. 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Integração 
 A partir dos módulos testados no nível de unidade, construir a estrutura de 
programa que foi determinada pelo projeto 
 Além disso, encontrar falhas provenientes da integração interna dos 
componentes de um sistema 
 Tipos de falhas: envio e recebimento de dados 
 Ex: um objeto A pode estar aguardando o retorno de um valor X ao executar um 
método do objeto B, porém este objeto B pode retornar um valor Y, desta forma 
gerando uma falha 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Integração 
 Aplicara abordagem “big bang” para integração é uma estratégia ingênua 
que está fadada ao fracasso. 
 Teste de integração deve ser conduzido de forma incremental e organizada! 
 
 Tipos de Teste de Integração: 
 Top-down 
 Bottom-up 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Integração 
 Abordagem Top-Down 
 Inicia-se a integração pelo primeiro módulo até o último da hierarquia (de 
cima para baixo). 
 Vantagem: Testa antes as principais funções de controle. 
 Desvantagem: Stubs são necessários 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Integração 
 Abordagem Bottom-Up 
 Módulos são integrados partindo-se do último da hierarquia (de baixo para cima). 
 Vantagem: Projeto de Caso de Teste mais fácil pela ausência de stubs 
 Desvantagem: O programa não existe como entidade até que o último 
 módulo seja adicionado. Necessidade de criar drivers (teoricamente mais 
 fáceis que stubs) 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Stubs e Drivers - Conceitos 
 Stubs são pseudo-implementações de determinadas especificações(Casos básicos/triviais/esperados) 
 Drivers são operações que automatizam testes de acordo com casos de 
teste 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Sistema 
 Objetivo: 
 Executar o sistema sob ponto de vista de seu usuário final, varrendo as funcionalidades em busca 
de falhas 
 Testes executados em condições similares àquelas que um usuário utilizará no seu dia-a-dia 
 Um sistema divide-se em características: 
 Funcionais: 
 Ignora a estruturado sistema 
 Foco na funcionalidade 
 Não-Funcionais: 
 Considera as características de qualidade do sistema: Usabilidade, Portabilidade, Recuperabilidade, 
Segurança, Eficiência,... 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Sistema 
 Tipos específicos de Teste de Sistema: 
 Recuperação 
 Força o software a falhar numa variedade de situações e verifica a capacidade de 
recuperação do produto 
 Segurança 
 Verifica se os mecanismos de proteção construídos para o sistema irão de fato protegê-lo de 
alguma utilização ou intrusão imprópria. 
 Stress 
 Executa o sistema de forma a exigir recursos em quantidade, frequência ou volume 
anormais 
 Desempenho 
 Avalia o desempenho do software quando integrado ao sistema. Normalmente está 
associado ao teste de stress 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Estratégias para Re-Teste 
 Podem ocorrer para qualquer estratégia de teste, em caso de mudanças no 
software no planejamento dos testes 
 Dois tipos: 
 Regressão 
 “Fumaça”(smoketesting) 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Regressão 
 Estratégia importante para redução de “efeitos colaterais” 
 Consiste em se aplicar, a cada nova versão do software ou a cada ciclo, todos os 
testes que já foram aplicados nas versões ou ciclos de teste anteriores do 
sistema. 
 Execute testes de regressão toda vez que uma modificação maior é realizada no 
software( incluindo a integração de novos módulos) 
 Efetue a gerência de configuração 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de “Fumaça” 
 Pode ser caracterizado como estratégia de integração incremental. 
 O software é reconstruído( com novos componentes incorporados) e 
exercitado diariamente. 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Aceitação 
 Foco nos requisitos – nas características imediatamente aparentes para o usuário 
final 
 Testes realizados, geralmente, por um grupo restrito de usuários finais do sistema 
 Teste conduzido para determinar se um sistema satisfaz ou não seus critérios de 
aceitação definidos pelo cliente 
 Critérios para Teste de Aceitação 
 A funcionalidade (caso de uso) ou características de desempenho estão de 
acordo com o especificado e são aceitas 
 Uma variação da especificação é descoberta e uma lista de discrepâncias 
(deficiências) é criada 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Aceitação 
 Teste Alfa e Beta 
 Alfa: executado na instalação do desenvolvedor pelo cliente 
 Beta: executado na instalação de um ou mais clientes pelo usuário final do 
software 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Teste de Instalação 
 Consiste em instalar o sistema nos locais em que estão os usuários 
 Dispensado no caso do teste de aceitação ter sido executado no ambiente 
do usuário 
 Focam: 
 A integridade do sistema instalado; e 
 A verificação quanto a se alguma característica funcional ou não funcional 
foi afetada pelas condições do local de operação 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Dúvidas 
 
 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
Módulo II: Roteiro 
 Técnicas de Teste: 
 Funcional x Estrutural x Baseada em Erros 
 Particionamento Por Equivalência 
 Análise do Valor Limite 
 Grafo de Causa-Efeito 
 Exercícios 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Técnicas para Teste de Software 
 Técnicas: 
 Funcional (ou caixa preta/caixa fechada) 
 Estrutural (ou caixa branca/caixa aberta) 
 Baseada em erros 
 A questão não está em qual delas utilizar e sim como combiná-las de 
forma a maximizar os benefícios das atividades de teste! 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Técnica Estrutural (Caixa Branca) 
 É baseada no conhecimento da estrutura interna da implementação 
 Teste dos detalhes procedimentais 
 A maioria dos critérios dessa técnica utiliza uma representação de 
programa conhecida como grafo de programa ou grafo de fluxo de 
controle 
 Dependente de apoio ferramental 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Técnica Estrutural (Caixa Branca) 
 Detalhes considerados: 
 nó 
 arco 
 caminho: 
 simples 
 completo 
 Livre de laço 
 Fluxo de controle 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Técnica Estrutural (Caixa Branca) 
 Nós: 
 Blocos “indivisíveis” 
 Não existe desvio para o meio do bloco 
 Uma vez que o primeiro comando do bloco é executado, os demais comandos 
são executados sequencialmente 
 Arestas ou Arcos: 
 Representam o fluxo de controle entre os nós 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Técnica Estrutural (Caixa Branca) 
 Critérios de Fluxo de Controle 
 Todos-Nós: 
 1,2,3,4,5,6,7,4,8,9,11 
 1,3,4,8,9,10,11 
 Todos-Arcos: 
 <1,2>,<2,3>,<3,4>,<4,5>,<5,6>,<6,7>,<7,4>, 
<4,8>,<8,9>,<9,11> 
 <1,3>,<3,4>,<4,5>,<5,7>,<7,4>,<4,8>,<8,10>, 
<10,11> 
 Todos-Caminhos 
 ?????? 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Técnica Funcional (Caixa Preta) 
 Baseia-se na especificação do software para derivar os requisitos de teste 
 Aborda o software de um ponto de vista macroscópico 
 Envolve dois passos principais: 
 Identificar as funções que o software deve realizar (especificação dos 
requisitos, casos de uso) 
 Criar casos de teste capazes de verificar se essas funções estão 
sendo executadas corretamente 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Técnica Funcional (Caixa Preta) 
 Baseia-se na especificação do software para derivar os requisitos de teste 
 Aborda o software de um ponto de vista macroscópico 
 Envolve dois passos principais: 
 Identificar as funções que o software deve realizar (especificação dos 
requisitos, casos de uso) 
 Criar casos de teste capazes de verificar se essas funções estão 
sendo executadas corretamente 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Técnica Funcional (Caixa Preta) 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Técnica Funcional (Caixa Preta) 
 Problema: 
 Dificuldade em quantificar a atividade de teste –não se pode garantir que 
partes essenciais ou críticas do software foram executadas 
 Critérios da Técnica Funcional: 
 Particionamento em Classes de Equivalência 
 Análise do Valor Limite 
 Grafo de Causa-Efeito 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Particionamento em Classes de Equivalência 
 Critério utilizado para reduzir o número de casos de teste procurando 
garantir uma boa cobertura do código do produto em teste. 
 Empregado intuitivamente pelos programadores mesmo sem conhecer o 
critério. 
 Exemplo: 
 Sistema de recursos humanos – empregar pessoas com base na idade 
 
 
 
 
 Como deveriam ser derivados casos de teste para o exemplo acima ? 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Particionamento em Classes de Equivalência 
 O módulo deveria ser testado considerando as idades: 
0,1,2,3,4,5,6,7,8,...,90,91,92,93,94,95,96,97,98,99 ? 
 Considere que o módulo que resolve o problema anterior tenha sido 
implementado como ilustrado abaixo: 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Particionamento em Classes de Equivalência 
 Caso o programa tenha sido implementado desta forma, a única forma 
de testá-lo adequadamente seria executar o módulo com valores de 
idade de 0..99. 
 Caso haja tempo suficiente, esse é o melhor teste a ser realizado. 
 O problema é que da forma como o código acima foi implementado, a 
execução de um dado caso de teste não diz nada a respeito da execução 
do próximo 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Particionamento em Classes de Equivalência Agora considere essa outra implementação (bem melhor) do mesmo 
problema: 
 
 
 
 
 Dada essa implementação, fica claro que não é necessário testar para 
todos os valores 0, 1, 2,···, 14, 15 e 16, por exemplo. 
 Apenas um valor precisa ser testado. 
 Qual seria esse valor? 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Particionamento em Classes de Equivalência 
 RESPOSTA: 
 Qualquer valor dentro do intervalo tem a mesma importância, ou seja, 
qualquer valor escolhido é adequado. 
 O mesmo se aplica para os demais intervalos de dados 
 Tais intervalos determinam o que é chamado de classe de equivalência 
 Qualquer valor no intervalo de uma classe é considerado equivalente em 
termos de teste. Assim sendo: 
 Se um caso de teste de uma classe de equivalência revela uma falha qualquer 
caso de teste da mesma classe também revelaria e vice-versa. 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Particionamento em Classes de Equivalência 
 Tal critério de teste assume que na especificação de requisitos existe uma indicação precisa 
das classes de equivalência. 
 Observe que com esse critério de teste o número de casos de teste é reduzido de 100 para 
4( um para cada classe de equivalência). 
 Além disso, também é assumido que o programador não implementou algo estranho como 
ilustrado abaixo: 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Particionamento em Classes de Equivalência 
 Divide o domínio de entrada do programa em classes de dados( classes 
de equivalências) 
 Uma classe de equivalência representa um conjunto de estados válidos e 
inválidos para uma condição de entrada 
 Tipicamente uma condição de entrada pode ser um valor numérico 
específico, uma faixa de valores, um conjunto de valores relacionados, ou 
uma condição lógica. 
 Os dados de teste são derivados a partir das classes de equivalência 
 Eventualmente, pode se considerar o domínio de saída como referência 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Particionamento em Classes de Equivalência 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Particionamento em Classes de Equivalência 
 2 Passos 
1. Identificar classes de equivalência(é um processo heurístico) 
 Se uma condição de entrada especifica uma faixa de valores ou requer um 
valor específico: 1 classe de equivalência válida e 2 inválidas são definidas; 
 Se uma condição de entrada especifica um membro de um conjunto ou é 
lógica: uma classe de equivalência válida e uma inválida são definidas 
 2.Definir os casos de teste 
 Enumeram-se as classes de equivalência 
 Casos de teste para as classes válidas 
 Casos de teste para as classes inválidas 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Particionamento em Classes de Equivalência 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Particionamento em Classes de Equivalência 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Particionamento em Classes de Equivalência 
 Em geral, não há tempo para a criação de um caso de teste para cada 
classe válida. 
 Solução: 
 Criar o menor número possível de casos de teste que cubram todas 
as classes válidas. 
 Criar um caso de teste para cada classe inválida 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Exemplo 1 
 Função: 
 Considere uma função que aceita como entradas de 4 a 6 valores inteiros de 
2 dígitos maiores do que 10. 
 Identificação das variáveis de entrada e das condições que estas devem 
satisfazer: 
 nro_entradas ∈ [4,6] 
 Valor ∈ [10,99] 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Exemplo 1 
 Determinação das classes de equivalência: 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Condições de Entrada Classes Válidas Classes Inválidas 
Número de entradas 
(nro_entradas) 
4 ≤ nro_entradas ≤ 6 (C1) nro_entradas < 4 (C3) 
nro_entradas > 6 (C4) 
Valor informado (valor) 10 ≤ valor ≤ 99 (C2) valor < 10 (C5) 
valor > 99 (C6) 
Exemplo 1 
 Casos de Teste: 
 Selecionar casos de testes cobrindo as classes válidas das diferentes 
variáveis 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
nro-entradas C1 C2 C3 C4 C5 C6 
4.6 
< 4 
>6 
valor 
10 .. 99 
< 10 
> 99 
Exemplo 1 
 Casos de Teste: 
 Dica: “Congela” uma variável como válida e alterna as outras 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
nro-entradas C1 C2 C3 C4 C5 C6 
4.6 
< 4 
>6 
valor 
10 .. 99 
< 10 
> 99 
Exemplo 1 
 Casos de Teste: 
 Selecionar casos de teste cobrindo as classes válidas das diferentes variáveis 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
nro-entradas C1 C2 C3 C4 C5 C6 
4.6 X 
< 4 
>6 
valor 
10 .. 99 X 
< 10 
> 99 
Exemplo 1 
 Casos de Teste: 
 Para cada classe inválida escolha um caso de teste que cubra 1 e somente 1 
de cada vez 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
nro-entradas C1 C2 C3 C4 C5 C6 
4.6 X 
< 4 X 
>6 
valor 
10 .. 99 X X 
< 10 
> 99 
Exemplo 1 
 Casos de Teste: 
 Selecionar casos de testes cobrindo as classes válidas das diferentes 
variáveis 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
nro-entradas C1 C2 C3 C4 C5 C6 
4.6 X X X 
< 4 X 
>6 X 
valor 
10 .. 99 X X X 
< 10 X 
> 99 X 
Exemplo 2 
 Verificação de uma senha válida: 
 Considere o teste do procedimento: Valida_Nova_Senha que recebe como 
entrada uma senha e valida-a conforme as seguintes regras: 
 Uma senha deve ter de 6 a 10 caracteres 
 O primeiro caractere deve ser alfabético, numérico ou um “?” 
 Os outros caracteres podem ser quaisquer, desde que não sejam caracteres de 
controle 
 A senha não pode existir em um dicionário 
 Exemplo: 
 acdn25 (válido); 1pass (inválido); 
 senha*1 (inválido); a12345678910 (inválido); 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Exemplo 2 
 Classes de Equivalência 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
Exemplo 2 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
C
la
ss
es
 d
e 
eq
u
iv
al
ên
ci
a 
Casos de Teste 
1 2 3 4 5 6 7 8 9 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
Casos de Teste 
1. 
2. 
3. 
4. 
5. 
6. 
7. 
8. 
9. 
Exemplo 2 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
C
la
ss
es
 d
e 
eq
u
iv
al
ên
ci
a 
Casos de Teste 
1 2 3 4 5 6 7 8 9 
1 X X X X X X X X 
2 X X 
3 X X 
4 X X 
5 X X X X X X X X 
6 X X X X X X X X 
7 X 
8 X 
9 X 
10 X 
11 X 
12 X 
Casos de Teste 
1. senhaok 
2. 1senha 
3. ?senha 
4. senha 
5. senhacorreta 
6. [esc]senha 
7. *senha 
8. senha[esc]ok 
9. Invalida [no dicionário] 
Dúvidas 
 
 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
Exercício Classe de Equivalência 
 Problema do dia, mês e ano: 
 Dado o seguinte problema: “um programa recebe 3 valores pela linha de comando: 
dia, mês, ano e imprime a data do dia seguinte. 
 O dia, o mês e o ano tem valores numéricos inteiros: 1 <= dia <= 31, 1 <= mês <= 12 e 
1817 <= ano <= 2017. 
 Determine as classes de equivalência e os casos de teste para esse programa. 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
 
 
 
INTRODUÇÃO À ENGENHARIA DE SOFTWARE 
Espero que tenham 
gostado ! 
Até próxima aula !

Mais conteúdos dessa disciplina