Execução de testes: driver e stub

Slides:



Advertisements
Apresentações semelhantes
Classes Abstratas e Interfaces
Advertisements

List templates Vamos considerar a lista ligada (singly linked list) O objecto da classe slink O objecto da classe slink O objecto da classe slink NULL.
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Factory Method Projeto de Sistemas de Software
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
Singleton.
Walfredo Cirne walfredo.dsc.ufpb.br
Polimorfismo e Classes Abstratas Profa
Invocação de Métodos Remotos RMI
Programação Concorrente
Wagner Santos C. de Jesus
Classes & Objectos em JAVA5
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
CRIANDO OBJETOS EM JAVA
O Mecanismo de Threads em Java 2. Criar uma classe herdeira da super classe Thread public class minhaThread extends Thread{ public class minhaThread extends.
Concorrência em Java Threads em Java.
C# Herança Sharp Shooters .NET Universidade Federal de Pernambuco Centro de Informática Recife, 23/09/2002 Autor: Marden Menezes Costa.
DBUnit Framework Componentes: Fábio Gomes Claver Pari Eni Conde
Métodos de Construção de Software: Orientação a Objetos
Chamada Remota de Procedimentos
OPERADORESOPERADORES SCJP – Otimize-TI. Operadores Java Resultado: Maioria das operações é um booleano ou numérico. Não podem ser sobrecarregados (Existem.
Utilizando Testes Unitários Gleibson Rodrigo “dartanham” Fontes: antiga apresentação de testes da disciplina de ESS e na curso de testes do PDesigner.
Desenvolvimento de Aplicações CORBA
Sistemas Distribuídos Carlos A. G. Ferraz DI/UFPE Aula 07.
Um Framework Para Testes
Introdução – Teste de Unidade usando JUnit
Orientação a Objetos e Java Graduação em Ciência da Computação
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Wagner Santos C. de Jesus
Introdução à Linguagem C
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
Java Kickstart, day 2 Semelhanças com linguagem C.
Polimorfismo.
POO II JEAN CARLO MENDES
Aula prática 3 Aprofundando em Funções Parâmetros de uma função Uso do return Execução Variáveis Global, local e estática Monitoria de Introdução à.
Revisão Luis Antonio Tavares
Aula Prática 5 05/05/2010. //Estrutura do método public int subtrair (int a, int b){ //Calcule a operação desejada. int resultado = a – b; //Retorne o.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE AULA 5
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.
Factory.
1 JUnit. 2 Por que testar? Qualidade: Código testado é mais confiável –Como saber se o recurso funciona sem testar? Coragem para mudar: o programador.
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
C# Universidade Federal de Pernambuco Centro de Informática Recife, 10/10/2002 Autor: Alexandre T. Vasconcelos Delegates.
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.
Conceitos de OO em Java Parte I
J U nit Um Framework Para Testes. Motivação  Todos os programadores sabem que devem testar seu código  Quanto mais curto o prazo menos testes são realizados.
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Aula 7 – Padrão Abstract Factory
Capítulo 7 Métodos. 2Capítulo 7 – Métodos Métodos Criação e chamada de métodos Passagem de parâmetros VarArgs Sobrecarga Método com valor de retorno Métodos.
Teste de Software 04: Que parte devo testar? Marcelo d’Amorim
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
IDENTIFICAÇÃO DOS RELACIONAMENTOS Nesta atividade devem ser definidos os relacionamentos entre as classes Podem ser representados pela: – associação, –
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Jean Carlo mendes
Funções definidas pelo usuário Escola Olímpio Professor Marcelo Josué Telles Linguagem de Programação I1 de 36.
(baseado em slides de ex-alunos)
Java: Interfaces Alcides Calsavara.
Testes e Qualidade de Software
Usando JUnit.
Teste de Software 04: Que parte devo testar?
Transcrição da apresentação:

Execução de testes: driver e stub

Driver e Stub main Driver X SUT S1 S2 Stubs

Driver Operação que exercita o módulo sob teste Exemplo: Envia valores, coleta e compara resultados Exemplo: JUnit test cases 3

Exemplo: Driver public class TestDriver extends TestCase { … public static void testDeposito(){ BankAccount sut = new BankAccount(100); sut.remove(60); Assert.assertEquals(sut.saldo(), 40); } 4

Stub Cenário: Stub: Substituto de B para testar A A e B são unidades A depende de B B não pode ser usado Stub: Substituto de B para testar A 5

Por que usar stubs? O componente real (B) não está pronto Usar componente real não é prático para o teste. Exemplos: Requer conexão de rede É ineficiente

Custo de Stubs Pode ser trabalhoso implementar manualmente Stub e Stubbed devem respeitar mesma interface Pode deixar o código menos legível

Exemplo: Stub public static int testPath(int x){ y = foo(x); if (x > y) return x – y else if (x < y) return x + y; else x/y; } public static int foo(int x) { // assuma que implementacão real // nao está pronta ou é inviável // de usar para o teste

Observe que o sistema não está preparado para receber um stub!

Passo 1: preparação da interface public static int testPath(int x, CmdFoo cf){ y = cf.foo(x); if (x > y) return x – y else if (x < y) return x + y; else return x/y; } static interface CmdFoo {public int foo(int x);}

Passo 2: instanciação da interface public static int testPath(int x, CmdFoo cf){ y = cf.foo(x); if (x > y) return x – y else if (x < y) return x + y; else return x/y; } static interface CmdFoo {public int foo(int x);} … public static void test1() { int x = 1; CmdFoo foo1 = new CmdFoo() { public int foo(int x) { return x + 1; }; testPath(x, foo1);

Passo 2: instanciação da interface public static int testPath(int x, CmdFoo cf){ y = cf.foo(x); if (x > y) return x – y else if (x < y) return x + y; else return x/y; } static interface CmdFoo {public int foo(int x);} … public static void test2() { int x = 1; CmdFoo foo1 = new CmdFoo() { public int foo(int x) { return x - 1; }; testPath(x, foo1);

Passo 2: instanciação da interface public static int testPath(int x, CmdFoo cf){ y = cf.foo(x); if (x > y) return x – y else if (x < y) return x + y; else x/y; } static interface CmdFoo {public int foo(int x);} … public static void test3() { int x = 0; CmdFoo foo1 = new CmdFoo() { public int foo(int x) { return 0; }; testPath(x, foo1); BANG!!!

Existem ferramentas para apoiar a construção de stubs. E.g., jmock.