teste de software 01: introdução marcelo damorim [email protected]

30
Teste de Software 01: Introdução Marcelo d’Amorim [email protected]

Upload: internet

Post on 16-Apr-2015

117 views

Category:

Documents


6 download

TRANSCRIPT

Teste de Software01: Introdução

Marcelo d’Amorim

[email protected]

2

Resumo desta aula

• Perspectiva– 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

• 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

Principal limitação de testes é incompletude: é possível que teste não encontre um erro latente.

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ãoConfirmar se leu corretamenteInformar senhaConfirmar se válidaInterromper se opção saque indisponível Informar opção de saque Informar valor de saqueRetirar dinheiroConferir dinheiro

15

Estrutura de um teste

• Exemplo: caixa eletrônico

• Cenário: saque de dinheiro

• Teste:

Inserir cartãoConfirmar se leu corretamenteInformar senhaConfirmar se válidaInterromper se opção saque indisponível Informar opção de saque Informar valor de saqueRetirar dinheiroConferir dinheiro

ENTRADA

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 != nullpublic static void sort(int[] v) { for (int i = 0; i <= v.length; i++) { …v[i] … }}

21

Exemplo

// pre condicao: v != nullpublic 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. -- www.expresscomputeronline.com

29

Resumo desta aula

• Perspectiva– 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