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

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

Teste de Software 04: Que parte devo testar?

Apresentações semelhantes


Apresentação em tema: "Teste de Software 04: Que parte devo testar?"— Transcrição da apresentação:

1 Teste de Software 04: Que parte devo testar?
Marcelo d’Amorim

2 Resumo desta aula Que partes devo testar?
Integração: driver, stub, e mock-up Em que ordem devo testar as partes?

3 Que parte devo testar? Teste de Unidade Teste de Integração
Teste de Sistema

4 Que parte devo testar? Teste de Unidade Teste de Integração Teste de Sistema Segue decomposição do sistema em módulos: classes, pacotes, e fachada.

5 Funções diferentes Unidade Integração Sistema
checa corretude de unidades Integração consistência entre interfaces Sistema valida implementação contra requisitos

6 Por que dividir? Elevar produtividade
Desenvolvimento e teste paralelo Mais fácil construir pacote (/sistema) correto a partir de classes (/pacotes) corretas

7 Quiz É possível desenvolver sistemas corretos com unidades incorretas?

8 Quiz É possível desenvolver sistemas corretos com unidades incorretas?
SIM

9 Quiz É possível desenvolver sistemas corretos com unidades incorretas?
SIM sort(int[] input) { if (input.length > 100) ERROR!!! } ERROR não é alcançável, quando o sistema não chama sort()com arrays de tamanho > 100

10 Integração Drivers Stubs

11 Integração Drivers Stubs main Driver X SUT S1 S2 Stubs

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

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

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

15 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

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

17 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

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

19 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);}

20 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);

21 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);

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

23 Em que ordem integrar? Estática Dinâmica Big-Bang, Top-Down, Bottom-Up
Feature

24 Resumo desta aula Que partes devo testar?
Integração: driver, stub, e mock-up


Carregar ppt "Teste de Software 04: Que parte devo testar?"

Apresentações semelhantes


Anúncios Google