Introdução 1.

Slides:



Advertisements
Apresentações semelhantes
Teste de Software 01: Introdução
Advertisements

Teste de Software 11: Teste baseado em falhas
Desenvolvimento de Plug-ins Orientado a Testes
Recursividade Inhaúma Neves Ferraz
Soft Errors in Advanced Computer Systems Robert Baumann (IEEE Design & Test of Computers, May-June 2005)
Java Básico Orientação a Objeto Marco Antonio Software Architect Fev/2008.
Engenharia de Requisitos
Prentice Hall Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 8 Defeitos e falhas de software Especificação errada: pode não.
Engenharia de Software
Tópicos Motivação para teste Por que algumas empresas não testam
Recursividade Inhaúma Neves Ferraz
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Walfredo Cirne walfredo.dsc.ufpb.br
Políticas Curso de aprofundamento em linguagem C.
Revisões de Software Parte 1
Técnicas de Teste de Software
Testes de Mutação baseado no artigo de Mário Correia,
Modularização: funções e procedimentos
Testes – visão geral Vanilson Burégio.
Introdução ao Teste Unitário com JUnit
(Reliability) UFRGS-GUARITA-FINEP Desenvolvido por: Pablo Diego Didoné
Slides preparados por Bruno Monteiro e Marcelo dAmorim Execução simbólica - 24/09/2009.
testes de regressão e testes baseados em riscos
O Fluxo de Implementação
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
JUnit “Keep the bar green to keep the code clean” JUnit Site.
Um Framework Para Testes
How to Break Software Capítulo 3 Taíse Dias Testing from the user Interface.
How to Break Software Capítulo 2 Taíse Dias Testing from the User Interface.
Estruturas de Dados Aula 9: Listas (parte 1)
The art of Unit Testing. Unit testing O Um teste unitário é uma parte de código (geralmente um método/função), que invoca outra parte de codigo e verifica.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Gestão de defeitos.
Introdução a Teste de Software
Visão de testes em Software Rogério Monteiro, CIn UFPE 02 – Maio
Processos de Software.
Teste baseado em falhas
SCORE 2009 – aula a convite do Prof. Jaelson Castro Marcelo d’Amorim Testes em 2h.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Base de Conhecimento em Teste de Software Gestão de Defeitos
Teste de Software 14: Geração de teste baseado em modelos: MBT
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
Teste Simbólico Marcelo d’Amorim
Data Flow Testing. Vários critérios de adequação até aqui Baseado em entradas de função (funcional)‏ Baseado na estrutura do programa (estrutural)‏ Baseado.
Fundamentos de Análise Estática
Teste de Software 02: Oracles Marcelo d’Amorim
Adequação do Teste. 2 Teste é incompleto Origem da incompletude –Seqüências insuficientes –Classificadores parciais É necessário uma medida que indique.
Critérios de adequação e os diversos tipos de teste
Teste baseado em falhas. Problema Usuário não sabe se a suíte de teste é adequada ou não para encontrar erro Solução 1 –Medir cobertura. Mas ainda não.
Teste de Software 06: Adequação do Teste Marcelo d’Amorim
Data Flow Testing. Vários critérios de adequação até aqui Baseado em entradas de função (funcional)‏ Baseado na estrutura do programa (estrutural)‏ Baseado.
Engenharia de Software
Estimativa, Teste e Inspeção de Software
Verificação e Validação
SBMF 2008, Salvador-BA, Brasil Marcelo d'Amorim Fundamentos do Teste de Software.
Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.
Associação. 2 Desafio – Aula class Aluno { 2. private String nome; 3. private float nota; 4. public Aluno(String nome, float nota){ 5. this.nome.
CIn-UFPE Seleção de Testes de Regressão para Redução de Defeitos Escapados Juliana Mafra – Novembro
Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm,
Estimativa, Teste e Inspeção de Software
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
18/09/ /12/20082 Testes Baseados Em Modelo Diana Rúbia Paulo César Qualidade, Processos e Gestão de Software Alexandre Vasconcelos {drrr, pco,
Adequação do Teste. 2 Teste é incompleto É necessário uma medida que indique quão completo é o teste –Indica quando o testador deve parar de testar.
Teste de Software 04: Que parte devo testar? Marcelo d’Amorim
Teste de Unidade. Originalmente esse termo é definido como um teste capaz de analisar uma unidade de trabalho, que a IEEE define como: “Atividade capaz.
INTERAÇÃO ENTRE OBJETOS Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Transcrição da apresentação:

Introdução 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Terminologia: Falta e Falha 16161616 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] 16

Quiz: Localize falta e falha 17171717 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

Quiz: Localize falta e falha 18181818 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

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

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

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

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

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

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

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

Enquete ant make JUnit3 JUnit4 26 26