1 / 14

Execução de testes: driver e stub

Execução de testes: driver e stub. Driver e Stub. Driver. main. X. SUT. S1. S2. Stubs. Driver. Operação que exercita o módulo sob teste Envia valores, coleta e compara resultados Exemplo: JUnit test cases. Exemplo: Driver. public class TestDriver extends TestCase { …

john
Download Presentation

Execução de testes: driver e stub

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Execução de testes: driver e stub

  2. Driver e Stub Driver main X SUT S1 S2 Stubs

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

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

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

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

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

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

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

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

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

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

  13. 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!!!

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

More Related