A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Teste de Software 01: Introdução

Apresentações semelhantes


Apresentação em tema: "Teste de Software 01: Introdução"— Transcrição da apresentação:

1 Teste de Software 01: Introdução
Marcelo d’Amorim

2 Resumo desta aula Perspectiva Alguma terminologia
Provar corretude ou encontrar erros? Alguma terminologia Caso de teste, suite de teste, falha, defeitos, depuração, etc. Dados estatísticos sobre a área

3 Perspectiva: Métodos Formais e Informais
Prova de teorema Prova propriedades complexas, mas requer muito esforço humano. Análise estática (interpretação abstrata) Prova propriedades simples; pode apresentar alarmes falso. Mas é automático. Teste Não prova corretude e não é automático!

4 Perspectiva: Métodos Formais e Informais
“Testing can never demonstrate the absence of errors in software, only their presence.” -- E.W.Dijkstra

5 Perspectiva: Métodos Formais e Informais
“Testing can never demonstrate the absence of errors in software, only their presence.” -- E.W.Dijkstra Principal limitação de testes é incompletude: é possível que teste não encontre um erro latente.

6 Perspectiva: Métodos Formais e Informais
“Testing can never demonstrate the absence of errors in software, only their presence.” -- E.W.Dijkstra Principal limitação de testes é incompletude: é possível que teste não encontre um erro latente. Apesar disto, testes também é: Simples de implantar Documenta intenções e designs, e É eficaz em encontrar erros. Inclusive, erros complexos como memory leakage e deadlock

7 "Beware of bugs in the above code; I have only proved it correct, not tried it." -- Donald Knuth

8 O que é um teste?

9 O que é um teste? “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” [IEEE, do178b]

10 O que é um teste? “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” [IEEE, do178b]

11 O que é um teste? “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” [IEEE, do178b]

12 Partes de um (caso de) teste
“Test inputs” = dados de entrada “Execution conditions” = precondições “Expected results” (oracle) = resultado esperado (oráculo)

13 Estrutura de um teste Exemplo: caixa eletrônico
Cenário: saque de dinheiro Teste: ?

14 Estrutura de um teste Exemplo: caixa eletrônico
Cenário: saque de dinheiro Teste: Inserir cartão Confirmar se leu corretamente Informar senha Confirmar se válida Interromper se opção saque indisponível Informar opção de saque Informar valor de saque Retirar dinheiro Conferir dinheiro

15 Estrutura de um teste Exemplo: caixa eletrônico
Cenário: saque de dinheiro Teste: ENTRADA Inserir cartão Confirmar se leu corretamente Informar senha Confirmar se válida Interromper se opção saque indisponível Informar opção de saque Informar valor de saque Retirar dinheiro Conferir dinheiro CONDIÇÃO RESULTADO ESPERADO

16 Suíte de teste Definição: conjunto de casos de testes
Em geral, relacionado a módulo do sistema Exemplo: suíte de regressão

17 comum: rodar teste de regressão ao final de cada dia de desenvolvimento
continuous testing: rodar teste de regressão a medida que mudanças aparecem impact analysis: rodar apenas os testes afetados por mudanças no código

18 Terminologia IEEE STD. 982.2-1988 (http://standards.ieee.org/)
Fault ou bug (defeito) problema Failure (erro) manifestação do problema Mais detalhes Software Metrics and Reliability [Rosenberg et al., ISSRE’98]

19 Terminologia IEEE STD. 982.2-1988 (http://standards.ieee.org/)
Fault or bug (defeito) problema Failure (erro) manifestação do problema Mais detalhes Software Metrics and Reliability [Rosenberg et al., ISSRE’98] CAUSA EFEITO

20 Exemplo // pre condicao: v != null public static void sort(int[] v) {
for (int i = 0; i <= v.length; i++) { …v[i] … }

21 Exemplo // pre condicao: v != null public static void sort(int[] v) {
for (int i = 0; i <= v.length; i++) { …v[i] … } CAUSA EFEITO

22 Teste e Depuração Teste é atividade de localizar erros!
Depuração é atividade de localizar bugs! Exemplo sort(new int[]{});

23 Terminologia IEEE STD. 982.2-1988 (http://standards.ieee.org/)
Fault or bug (defeito) problema Failure (erro) manifestação do problema Mais detalhes Software Metrics and Reliability [Rosenberg et al., ISSRE’98] Teste procura por manifestações de um problema

24 Como se manifesta? Erros de lógica Erros universais

25 Inspeção Forma-se uma equipe para identificar defeitos e chegar a um consenso Qualquer artefato pode ser alvo de inspeção Exemplo Walkthrough (forma de code peer review)

26 Teste x Depuração x Inpeção
Teste e Depuração são atividades ortogonais Inspeção Manual (necessariamente) Complementar à teste e depuração

27 Alguns dados estatísticos
Entre 70 e 80% do custo de desenvolvimento de software envolve atividades de teste e depuração -- National Institute of Standards and Technology (NIST) 2002.

28 Alguns dados estatísticos
Gartner Group estimou em 2006 que o mercado mundial de teste de software é de $13bi. e o tamanho do mercado global de serviços é em torno de $6.1bi. --

29 Resumo desta aula Perspectiva Alguma terminologia
Provar corretude ou encontrar erros? Alguma terminologia Caso de teste, suíte de teste, falha, defeitos, depuração, etc. Dados estatísticos sobre a área

30 Enquete ant make JUnit3 JUnit4


Carregar ppt "Teste de Software 01: Introdução"

Apresentações semelhantes


Anúncios Google