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

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

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

Apresentações semelhantes


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

1 Teste de Software 04: Que parte devo testar? Marcelo d’Amorim damorim@cin.ufpe.br

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

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

4 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 5 Funções diferentes Unidade –checa corretude de unidades Integração –consistência entre interfaces Sistema –valida implementação contra requisitos

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

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

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

9 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 10 Integração Drivers Stubs

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

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

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

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

15 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 16 Stub Pode ser trabalhoso implementar (http://www.easymock.org/, https://jmockit.dev.java.net/)http://www.easymock.org/ https://jmockit.dev.java.net/ Pode requerer modificação na interface do sistema Stub e Stubbed devem respeitar mesma interface

17 17 Example: 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 escrever ou usar // implementacao real é inviável }

18 18 Observe que o sistema nao esta preparado para receber um stub!

19 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 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 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 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 23 Em que ordem integrar? Estática –Big-Bang, Top-Down, Bottom-Up Dinâmica –Feature

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

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


Carregar ppt "Teste de Software 04: Que parte devo testar? Marcelo d’Amorim"

Apresentações semelhantes


Anúncios Google