teste de software. introdução 3 teste conjunto de atividades e técnicas relacionadas com a...

26
TestE de Software

Upload: internet

Post on 21-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

TestE de Software

Page 2: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Introdução

Page 3: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

3

Teste

• Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Page 4: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

4

Teste

• Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Testes procura erros em conjunto de possíveis execuções do programa.

Page 5: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

5

Teste em Perspectiva

• Prova de teorema– Prova propriedades complexas, mas requer

muito esforço humano.

• Análise estática– Prova propriedades simples; pode apresentar

alarmes falso. Mas é automático.

• Teste– Não prova corretude e não é inteiramente

automático!

Page 6: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

6

Limitações de Prova de Teorema

• Requer conhecimento de um expert

• Processo manual – tedioso e passível de erro

Page 7: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

7

Limitações de Análise Estática

• Provar propriedades de forma automática é, em geral, indecidível!

• Eficaz apenas quando– Propriedades de verificação são simples

• Variáveis não inicializadas, erros de tipo, etc.

– Programas (/ modelos) são simples• Ausência de loop e recursão, ausência de heap,

etc.

Page 8: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

8

Citação de Dijkstra

• “Testing can never demonstrate the absence of errors in software, only their presence.” -- E.W.Dijkstra

Page 9: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

9

Citação de Dijkstra

• “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.

Page 10: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

10

Testes é incompleto, porém...

• Rápida implantação

• Documenta intenções e designs

• Capaz de encontrar erros complexos em programas complexos–Erros complexos: memory, deadlock–Programas complexos:

Page 11: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Definição: Teste (artefato)

• “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]

Page 12: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Definição: Teste (artefato)

• “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]

Page 13: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Exemplo

public class Customer { String getName() {…} }public class Bank{ static Bank createBank() {…} Customer createCustomer(String name) {…} }

Page 14: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Exemplo

public class Customer { String getName() {…} }public class Bank{ static Bank createBank() {…} Customer createCustomer(String name) {…} }

Bank bank = Bank.createBank();String name = “customer1“;Customer cust = bank.createCustomer(name);Assert.assertEquals(name, cust.getName());

Page 15: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Exemplo

public class Customer { String getName() {…} }public class Bank{ static Bank createBank() {…} Customer createCustomer(String name) {…} }

Bank bank = Bank.createBank();String name = “customer1“;Customer cust = bank.createCustomer(name);Assert.assertEquals(name, cust.getName());

Entrada e resultado esperado:

Page 16: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Exemplo

public class Customer { String getName() {…} }public class Bank{ static Bank createBank() {…} Customer createCustomer(String name) {…} Customer search(String name) {…}}

Bank bank = Bank.createBank();String name = “customer1“;Customer cust = bank.search(name);if (cust == null) { Customer cust = bank.createCustomer(name); Assert.assertEquals(name, cust.getName());}

Condições de execução:

Page 17: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Terminologia: Falta e Falha

• IEEE STD. 982.2-1988 (http://standards.ieee.org/)– Fault (falta, bug ou defeito): problema– Failure (falha, ou erro): manifestação do

problema

• Mais detalhes…– Software Metrics and Reliability [Rosenberg

et al., ISSRE’98]

Page 18: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Quiz: Localize falta e falha

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

Page 19: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Quiz: Localize falta e falha

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

manifestação do defeito

Page 20: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Teste e Depuração

Teste é atividade de localizar falhas!

Depuração é atividade de localizar faltas!

Teste e Depuração são atividades complementares

Page 21: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Teste e Depuração

Teste é atividade de localizar falhas!

Depuração é atividade de localizar faltas!

No exemplo anterior:

Atividade de teste localiza erro no uso de v[i] no corpo do loop de sort.

Depuração localiza o defeito na condição de parada do loop i <= v.length

Page 22: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Teste de sort

public class SortTest{ public static void main(String[] args) { sort(new int[]{}); }}

Page 23: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

Terminologia: suíte e regressão

• Suíte de testes é o mesmo que conjunto de testes

• Regressão é o evento de uma falha em um teste que costumava passar

Rodar continuamente a suíte de regressão ajuda a antecipar correção de bugs!

Page 24: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

24

Alguns dados estatísticos (1)

• Beizer [1990] estimou que testes toma 30% a 90% do custo de desenvolvimento

• Santhanan and Hailpern [2002] relata que de 50 a 75% do custo de desenvolvimento envolve teste e depuração

Page 25: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

25

Alguns dados estatísticos (2)

• O instituto americano de padrões e tecnologia (NIST) [2002] estima que $59.2bi é o custo da infra-estrutura inadequada de teste.

Page 26: TESTE DE SOFTWARE. Introdução 3 Teste Conjunto de atividades e técnicas relacionadas com a procura de erros em um programa

26

Resumo desta aula

• Perspectiva– Provar corretude ou encontrar erros?

• Alguma terminologia– Caso de teste, suíte de teste, regressão, falha,

defeitos, depuração, etc.

• Dados estatísticos sobre a área