Aula 01
Aula 01
Aula 01
de Software
disciplina em nível de Pós-graduação em
Engenharia de Software
Ementa da Disciplina
Introdução: princípios, limitações, conceitos básicos e terminologia. Técnicas de
Projeto de Casos de Teste. Teste Funcional. Teste Estrutural. Teste de Caixa Preta.
Automação da Atividades de Testes. Testes de Software Orientado a Objetos. Testes
de Software para internet. Técnicas de Depuração de Software. Ferramentas de
Suporte ao teste de software. Exercícios práticos.
1
Apresentação da Disciplina
Estrutura do Curso
2
Avaliação das Disciplina
Algumas perguntas:
3
Motivação para estudar Teste de Software
2. Uma importante alternativa profissional
4
Algumas Referências Bibliográficas
Referências Em Portugues
5
Nova boa referencia em português
▪Artigos de Divulgação:
▪Fonte Secundária, Revistas técnicas da área, livros de divulgação, Congressos
de divulgação. Podem ser usados em parte.
▪White Papers:
?
▪Autores conhecidos, fontes seguras, recuperáveis, entidades confiáveis
▪Artigos Ruins:
▪Autores desconhecidos, fontes inseguras, opiniões pessoais, publicidade de
produtos, artigos suspeitos e tendenciosos. Livros ruins.
6
Um nome para cada coisa : Teste de Software
Termos e Definições I
▪ Software são todos os produtos do processo de desenvolvimento de um
programa de computador, que tem uma finalidade prática.
Termos e Definições – II
Dando nomes à coisa
Padrão IEEE (1983)
IEEE Std 729-1983 Standard Glossary of Software Engineering Terminology.
7
Termos e Definições – III
Dando nome à coisa
Verbete: falha
[Do lat. fallia.]
2. Falta, defeito.
3. Omissão, lacuna, falência.
Verbete: erro
(ê)[Dev. de errar.]
1. Ato ou efeito de errar.
2. Juízo falso; desacerto, engano.
3. Incorreção, inexatidão.
4. Desvio de bom caminho; desregramento, falta.
A língua é uma arma perigosa, você pode conseguir muito inimigos com ela.
Erro implica em juízo falso (Alguém errou), culpa, não ajuda a resolver o problema.
Falha não traduz a real gravidade é apenas uma omissão, uma lacuna.
Coloquialmente vamos usar BUG
Termos e Definição - IV
bug
8
Termos e Definições
▪Especificação do Produto
– É um documento que estabelece o que o software deve fazer.
– É parte do software e também deve ser testado
– Pode ser mais ou menos formal
– Por definição:
O que é um BUG?
2. Quando o software faz algo que a especificação diz que não faz,
3. Quando o software faz algo que não foi especificado, e não deveria
4. Quando o software não faz algo que não foi especificado, mas deveria,
(*) Notar que a especificação pode ser explícita (dita) ou implícita (não dita)
9
Erros de Software Famosos
Bug do Ponto Flutuante do Pentium, 1994
(4195835 / 3145727) * 3145727 – 4195835 = ?
A INTEL detectou o problema, mas não foi considerado crítico
Custo da reposição dos chips foi de US$400 milhões
– Especificação 50%
– Projeto 25%
– Código 20%
– Outros 5% Ref. Patton, 2001
10
questões para discussão...
11
Definição de Teste Software
Programador
Analista de Sistemas
Desenvolvedor
Engenheiro de Software
Testador? Tester
Analista de Teste,
Analista de Qualidade
Engenheiro de Teste de Software
Engenheiro de Software especializado em testes.
12
Perfil do analista de teste de software
Conhecendo o professor
13
Conhecendo os alunos
1976 – Michael Fagan publicou um paper sobre Design and Code Inspections
1979 – Glenford Myers publicou seu livro (clássico) “ A Arte do Teste de Software”
1987 – IEEE publica um padrão com uma terminologia para a área de Engenharia de Software.
1994 - Brian Marick The Craft of Software Testing Inclui elementos e Orientação a Objetos.
1995 - Edward Kit publica Software Testing in The Real World, bom livro mas com os mesmos princípios.
1999 - Kaner, Cem publica Testing Computer Software, 2nd ed. Aborda um ponto de vista prático
2000 – Kent Beck e Erick Gamma publicam o artigo: Test Infected: Programmers Love Writing Tests”
onde apresentam o Junit. Ferramenta essencial para o desenvolvimento na filosofia do XP.
2003 – Kent Beck e outros Test Driven Development, o teste como método de desenvolvimento
14
Controle do Desenvolvimento de Software
▪Qualidade
– Independe da Funcionalidade, consome recursos (prazo e custo
– deseja-se alta (cliente) e (desenvolvedor)
▪Prazo de execução
– Tempo para se obter o produto de software.
– Deseja-se baixo (cliente).
▪Custo (e Preço) do desenvolvimento
– Preço:
• Interessa ao cliente e ao desenvolvedor. Ligado a quanto o cliente irá pagar pelo
produto de software.
• Deseja-se baixo (cliente). Deseja-se alto (desenvolvedor)
– Custo do desenvolvimento
• Interessa ao desenvolvedor. Ligado aos gastos que se tem com o desenvolvimento.
• Deseja-se baixo (desenvolvedor)
▪Funcionalidade (Escopo)
– Corresponde às funções de um software.
– Deseja-se alta (cliente e desenvolvedor).
Teste de Software
(visão do teste no processo de desenvolvimento)
Meio para garantir a funcionalidade do software ?
Faz parte do processo de desenvolvimento (garante funcionalidade ? )
Prazo
Interfere pouco no prazo do desenvolvimento
O prazo é mais alterado por retrabalho da programação
15
Teste de Software como Especificação
Teste de Software garante a funcionalidade do sistema
O TESTE É A ESPECIFICAÇÃO
Frase do dia
16
Apresentar as definições e os fundamentos do teste
de software. Analisar alguns axiomas nesta área.
PARTE 2 - FUNDAMENTOS DO
TESTE DE SOFTWARE
O que é um Bug?
Código do
erro Programa falha
(defeito)
bug
A retirada de um bug de software é uma operação de debug (depuração)
17
O custo dos bugs?
Beck, 2000 afirma que o custo da mudança de software não muda muito com o
tempo. Essa é a fundamentação técnica da eXtreme Programming
Axiomas de Testes de Software são afirmações sobre teste que vamos admitir como
válidas.
18
Axiomas do Teste de Software (1)
Custo da
Não correção dos
bugs existentes (Difícil de medir)
19
Axiomas de Teste de Software (3)
Um médico não pode afirmar com exatidão que uma pessoa não tem nenhuma
doença
Um analista de teste de software pode, no máximo, afirmar que não existem indícios
de bugs no software.
Por isso que os testes não provam nunca que um programa não tem erros.
Paradoxo do Pesticida:
Os mesmos testes aplicados repetidas vezes podem não detectar falhas que ainda
permanecem no programa.
20
Axiomas de Teste de Software (5)
21
Axiomas de Teste de Software (7)
▪ Ex.1 O programa está muito ruim. Não executa nada do que foi especificado. Já no
início do uso do sistema , teclando Arquivo> Abrir... o programa apresenta uma
mensagem de erro.
22
Axiomas de Teste de Software (9)
Resumo
• Lembrando que:
23