Buscar

02 intro teste de software parte1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Introdução ao Teste de Software
Parte 1
Prof. André Takeshi Endo
 
Verificação e Validação
● Como atingir qualidade**?
– Conquista passo-a-passo
– Aplicação de atividades de V&V
**Não entrar na discussão do que é qualidade! Ver disciplina “Qualidade de Software”
 
Verificação e Validação
● Garantia de qualidade
● Atividades de V&V objetivam minimizar a 
ocorrência de defeitos e riscos associados
● Detectar a presença de defeitos nos artefatos 
de software
– Exemplos de artefatos?
 
Verificação e Validação
● O que é verificação?
– Assegurar que o produto, ou determinada função, 
esteja sendo implementado corretamente. 
– Estamos construindo corretamente o produto?
– O software atende a especificação?
● O que é validação?
– Assegurar que o produto sendo desenvolvido 
corresponde ao produto correto, conforme os 
requisitos do usuário.
– Estamos construindo o produto certo?
– A especificação representa as necessidades do 
usuário?
 
Verificação e Validação
● Exemplos de atividades de V&V
– Revisões técnicas formais
– Auditoria de qualidade
– Monitoramento de desempenho
– Simulação
– Teste
 
Verificação e Validação
● V&V envolve atividades de análise estática e 
dinâmica
● Análise estática: não requer a execução do 
software
– Inspeção de requisitos
● Análise dinâmica: requer a execução do 
software (qualquer artefato executável)
– simulação
 
Verificação e Validação
● Mas teste é verificação ou validação?
● Análise estática ou dinâmica?
Figura de http://www.easterbrook.ca/steve/2010/11/the-difference-between-verification-and-validation/ 
 
Definição de Teste
● “Teste é o processo de demonstrar que 
defeitos não estão presentes.”
● “O propósito do teste é mostrar que um 
programa realizar suas funcões 
corretamente.”
● “Teste é processo de estabelecer confiança 
de um programa faz o que supõe-se que ele 
deva fazer.”
[Myers14]
 
Definição de Teste
● “Teste é o processo de demonstrar que 
defeitos não estão presentes.”
● “O propósito do teste é mostrar que um 
programa realizar suas funcões 
corretamente.”
● “Teste é processo de estabelecer confiança 
de um programa faz o que supõe-se que ele 
deva fazer.”
[Myers14]
Qual o problemas com essas definições?
O teste precisa agregar valor!
 
Definição de Teste
● “Teste é o processo de executar um 
programa com a intenção de encontrar 
defeitos.”
● Esta definição traz uma melhor orientação aos 
profissionais da área
● Exercício: encare esta e as definições 
incorretas como metas/objetivos. Qual o 
efeito?
[Myers14]
 
Definição de Teste
● “Teste é o processo de executar um 
programa com a intenção de encontrar 
defeitos.”
● Semanticamente OK, mas …
● Os projetos reais precisam de mais:
– Tempo limitado
– Precisa ser repetível
– Equipes
[Myers14]
 
Teste vs Depuração
● E depuração (debugging)?
– Localizar e corrigir o defeito [Myers12]
● Analogia com um crime
● Identificar que houve um crime
● Identificar quem foi o autor do crime
● Qual é teste e qual é depuração?
 
Terminologia de Defeitos
● Software bug
● It has been just so in all of my inventions. The first step is an intuition, and comes with a burst, 
then difficulties arise — this thing gives out and [it is] then that "Bugs" — as such little faults and 
difficulties are called — show themselves and months of intense watching, study and labor are 
requisite before commercial success or failure is certainly reached. [Edison1878]
http://en.wikipedia.org/wiki/Software_bug
 
Terminologia de Defeitos
● Padrão IEEE 610.12-1990
● “Errar é humano, (...)”
– Por que as pessoas erram (em ES)?
*imagens da Internet
 
Terminologia de Defeitos
● Engano (mistake) → ação humana (ação 
incorreta) do programador 
● Defeito (fault) → passo, processo ou definição 
de dados incorreta, incompleta, ausente, ou 
extra. Instrução ou comando incorreto.
– Incorreta: delta = b*b + 4*a*c
– Incompleta: delta = b*b – 4*a 
– ausente: //TODO calcular delta 
– extra: delta = b*b – 4*a*c; delta = - delta;
 
Terminologia de Defeitos
● Erro (error) → Qualquer estado na execução 
do programa que seja inconsistente. 
Manifestação interna do defeito.
● Falha (failure) → Produção de uma saída 
incorreta com relação à sua especificação. 
Manifestação notável, externa do defeito.
 
Terminologia de Defeitos
● Exemplo: considere o comando z = x + y 
substituído erroneamente z = x – y. O que 
acontece quando esse comando é ativado 
com:
– o valor y = 0?
– e com o valor y != 0?
 
Terminologia de Defeitos
● Figura
 
Terminologia de Defeitos
● Exemplo: Leia dois inteiros e imprima o maior.
 
Terminologia de Defeitos
● Exemplo: Leia dois inteiros e imprima o maior.
O programa falhou!
Encontramos uma falha.
 
Terminologia de Defeitos
● Exemplo: Leia dois inteiros e imprima o maior.
#include<stdio.h>
#include<conio.h>
int main(void)
{
 int num1, num2;
 
 printf("Entre com o primeiro numero: ");
 scanf("%d", &num1);
 printf("\nEntre com o segundo numero: ");
 scanf("%d", &num2);
 
 if(num1 < num2)
 printf("\n\nO maior numero eh %d.", num1); 
 else
 printf("\n\nO maior numero eh %d.", num2); 
 
 getch();
}
 
Terminologia de Defeitos
● Exemplo: Leia dois inteiros e imprima o maior.
#include<stdio.h>
#include<conio.h>
int main(void)
{
 int num1, num2;
 
 printf("Entre com o primeiro numero: ");
 scanf("%d", &num1);
 printf("\nEntre com o segundo numero: ");
 scanf("%d", &num2);
 
 if(num1 < num2)
 printf("\n\nO maior numero eh %d.", num1); 
 else
 printf("\n\nO maior numero eh %d.", num2); 
 
 getch();
}
O defeito deste programa é 
A troca do sinal.
O correto seria:
if(num1 > num2)
 
Terminologia de Defeitos
● Exemplo: Leia dois inteiros e imprima o maior.
#include<stdio.h>
#include<conio.h>
int main(void)
{
 int num1, num2;
 
 printf("Entre com o primeiro numero: ");
 scanf("%d", &num1);
 printf("\nEntre com o segundo numero: ");
 scanf("%d", &num2);
 
 if(num1 < num2)
 printf("\n\nO maior numero eh %d.", num1); 
 else
 printf("\n\nO maior numero eh %d.", num2); 
 
 getch();
}
Existe alguma entrada 
que não geraria uma
falha?
 
Casos de Teste
● Como você testa um software?
● OK, como testamos uma Ferrari?
● O que diz a especificação (requisito)?
http://fastestlaps.com/models/ferrari-enzo 
 
Casos de Teste
● No meu teste, ela demorou 5 s. 
– Encontrei um defeito?
– Qual foi o local do teste?
http://fastestlaps.com/models/ferrari-enzo 
 
Casos de Teste
● No meu teste, ela demorou 5 s. 
– Encontrei um defeito?
– Qual foi o local do teste?
http://fastestlaps.com/models/ferrari-enzo 
 
Casos de Teste
● Definição da IEEE
– “(1) A set of test inputs, execution conditions, 
and expected results developed for a particular 
objective, such as to exercise a particular 
program path or to verify compliance with a 
specific requirement.
– (2) Documentation specifying inputs, predicted 
results, and a set of execution conditions for a 
test item.”
 
Casos de Teste
● Definição da IEEE
● “Um conjunto de entradas, condições de 
execução, e resultados esperados, desenvolvidos 
com um objetivo particular tal como exercitar um 
caminho do programa ou verificar a adequação com 
um requisito específico.”
 
Casos de Teste
● É composto por:
● Entradas (dado fornecido)
● Condições de execução (pré-condições)
– inexistente
● Resultados esperados(oráculo)
 
Casos de Teste
http://fastestlaps.com/models/ferrari-enzo 
Sistema sob teste
System Under Test
(SUT)
Pré-condições
Entradas
Saídas esperadas
 
Casos de Teste
● Figura
 
Casos de Teste
● Formalmente:
– Programa P
– Domínio de entrada de P é D
– Especificação de P é S
– Execução de P é P*
– PRE conjunto de pré-condições de P
– Caso de teste → (d; p; S(d))
 
Casos de Teste
● Conjunto de teste (suite de teste) → vários casos de 
teste
● Quando um caso de teste passou ou falhou?
– De maneira formal
● Um bom caso de teste tem alta probabilidade de 
revelar um defeito ainda não descoberto.
 
Casos de teste: exemplos
● Exemplo: Faça um programa que receba 
como entrada um inteiro positivo e responda 
se o número é primo ou não.
● (5; “primo”)
● (49; “nao eh primo”)
● (37; “primo”)
● (10; “nao eh primo”)
● (-15; “entrada invalida”)
● (“sete”; “entrada invalida”)
 
Casos de teste: exemplos
● O programa string solicita do usuário um 
inteiro positivo no intervalo entre 1 e 20 e 
então solicita uma cadeia de caracteres desse 
comprimento. Após isso, o programa solicita 
um caracter e retorna a posição na cadeia em 
que o caracter é encontrado pela primeira vez 
ou uma mensagem indicando que o caracter 
não está presente na cadeia. 
 
Casos de teste: exemplos
● Quais as entradas?
● CT no qual o caracter é encontrado
● CT no qual o caracter não é encontrado
● CTs problemáticos?
 
Exercício: Casos de Teste
● Especifique um conjunto de casos de teste para 
testar o programa a seguir:
● O programa lê três valores inteiros que representam 
os lados de um triângulo. O programa informa se os 
lados formam um triângulo isósceles, escaleno ou 
equilatero. 
● Condição: a soma de dois lados tem que ser maior 
que o terceiro lado.
 
Exercício: Casos de Teste
1) CT para triângulo escaleno válido?
2) CT para triângulo isósceles válido?
3) CT para triângulo equilatero válido?
4) Existem pelo menos 3 CTs para isósceles válido 
contendo a permutação dos mesmos valores?
5) CT com um valor zero?
6) CT com um valor negativo?
7) CT em que a soma de 2 lados é igual ao terceiro 
lado?
 
Exercício: Casos de Teste
8) Para o item 7, existe um CT para cada permutação 
de valores?
9) Existe CT em que a soma de 2 lados é menor que o 
terceiro lado?
10) Para o item 9, existe um CT para cada 
permutação de valores?
11) Existe um CT para os três valores iguais a zero?
12) Existe CT com valores não inteiros?
13) Existe CT com número de valores errados, por ex., 
2 valores ao invés de 3?
14) Para cada CT, você especificou a saída esperada?
 
Exercício: Casos de Teste
● Baseado em defeitos encontrados para esse 
programa.
● Qual foi seu desempenho?
● Testar de forma ad-hoc foi / é suficiente?
● Existem formas mais sistemáticas?
 
Bibliografia
● [Pfleeger07] S. L. Pfleeger, “Engenharia de Software: Teoria e Prática”, 2007.
● [Pressman11] R. S. Pressman, “Engenharia de Software: uma abordagem 
profissional”, 2011.
● [Sommerville03] I. Sommerville, “Engenharia de Software”, 2003.
● [IEEE90] “IEEE Standard Glossary of Software Engineering Terminology”, 1990. 
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=159342
● [DMJ07] DELAMARO, Márcio Eduardo; MALDONADO, José Carlos; JINO, Mario. 
Introdução ao teste de software. Rio de Janeiro, RJ: Elsevier, 2007. 394 p. ISBN 
9788535226348.
● [Pezze08] PEZZÈ, Mauro; YOUNG, Michal. Teste e análise de software: processo, 
princípios e técnicas. Porto Alegre, RS: Bookman, 2008. 512 p. ISBN 
9780471455936.
● [Myers12] MYERS, Glenford J.; BADGETT, Tom; SANDLER, Corey. The art of 
software testing. 3rd ed. Hoboken, NJ.: John Wiley & Sons, c2012. xi, 240 p. ISBN 
978118031964.
 
Bibliografia
● [Rios11] RIOS, Emerson. Gerenciando projetos de teste de software. Niterói, RJ: 
Imagem art studio, 2011. 312 p. ISBN 9788599479223.
● [Kaner02] KANER, Cem; BACH, James; PETTICHORD, Bret. Lessons learned in 
software testing: a context-driven approach. New York, N.Y.: Wiley, c2002. xxvii, 
286 p. ISBN 0471081124.
● [UUU] Materiais didáticos elaborados pelos grupos de engenharia de software do 
ICMC-USP, DC-UFSCAR e UTFPR-CP.
● Partes dessa apresentação foram adaptadas do material da profa. Ellen Francine e 
profa. Simone Souza.
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42

Continue navegando