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

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

Introdução 1.

Apresentações semelhantes


Apresentação em tema: "Introdução 1."— Transcrição da apresentação:

1 Introdução 1

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

3 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. 3 3

4 Teste em Perspectiva Prova de teorema Análise estática Teste
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! 4 4

5 Limitações de Prova de Teorema
Requer conhecimento de um expert Processo manual tedioso e passível de erro Nota: prova por refinamento não é técnica de verificação! É uma disciplina de prova para melhorar produtividade. 5 5

6 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. 6 6

7 Citação de Dijkstra “Testing can never demonstrate the absence of errors in software, only their presence.” -- E.W.Dijkstra 7 7

8 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. 8 8

9 Testes é incompleto, porém...
Rápida implantação Documenta intenções e designs Capaz de encontrar erros complexos em programas complexos Erros complexos: memory leak, deadlock Programas complexos: 9 9

10 Definição: Teste (artefato)‏
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] 10

11 Definição: Teste (artefato)‏
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] 11

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

13 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()); 13

14 Exemplo Entrada e resultado esperado: public class Customer {
String getName() {…} } public class Bank{ static Bank createBank() {…} Customer createCustomer(String name) {…} Entrada e resultado esperado: Bank bank = Bank.createBank(); String name = “customer1“; Customer cust = bank.createCustomer(name); Assert.assertEquals(name, cust.getName()); 14

15 Exemplo Condições de execução: public class Customer {
String getName() {…} } public class Bank{ static Bank createBank() {…} Customer createCustomer(String name) {…} Customer search(String name) {…} Condições de execução: 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()); } 15

16 Terminologia: Falta e Falha
Terminologia: Falta e Falha IEEE STD ( ‏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] 16

17 Quiz: Localize falta e falha
Quiz: Localize falta e falha // pre condicao: v != null public static void sort(int[] v) { for (int i = 0; i <= v.length; i++) { …v[i] … } 17

18 Quiz: Localize falta e falha
Quiz: Localize falta e falha // pre condicao: v != null public static void sort(int[] v) { for (int i = 0; i <= v.length; i++) { …v[i] … } defeito manifestação do defeito 18

19 Teste e Depuração Teste é atividade de localizar falhas!
Teste e Depuração Teste é atividade de localizar falhas! Depuração é atividade de localizar faltas! Teste e Depuração são atividades complementares 19

20 Teste e Depuração Teste é atividade de localizar falhas!
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 20

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

22 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! 22

23 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 23 23

24 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. 24 24

25 Resumo desta aula Perspectiva Alguma terminologia
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 25 25

26 Enquete ant make JUnit3 JUnit4 26 26


Carregar ppt "Introdução 1."

Apresentações semelhantes


Anúncios Google