Testes Unitarios Com PostgreSQL

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Testes Unitarios Com PostgreSQL - Presentation Transcript

    1. Testes Unitários com PostgreSQL PGDay-RS 2009
    2. Quem sou eu?
      • Diogo Biazus
        • Colaborador
        • Instrutor e Consultor
        • Empresário
        • [email_address]
    3. Como você gostaria de dar manutenção em suas funções?
    4. Como você se sente dando manutenção em suas funções?
    5. TDD
        • É um método para se desenvolver como o sujeito da primeira foto.
        • Teste duas vezes, codifique uma.
        • Muito comum em programação OO.
        • Ainda pouco usado em bancos de dados.
    6. Problemas de desenvolver sem testes
        • Quando o código está pronto?
        • Qual o comportamento esperado?
        • Se eu modificar o código, como garanto a ausência de regressões?
    7. Programador sem testes:
    8. Ok, estou convencido. Como começo?
        • Antes de programar qualquer rotina pense:
       
        • Qual a funcionalidade que ela deve implementar? 
       
        • Quais serão os parâmetros?
       
        • Qual será a saída?
    9. Parece complicado?
        • Fazer testes nos obriga a pensar um pouco mais antes de programar.
        • Rotinas fáceis de testar geralmente tem interfaces mais simples.
        • Tudo isso colabora para que tenhamos rotinas coesas.
    10. Passo a passo...
    11. Passo 1
        • Preciso de uma rotina que valide o tipo sangüineo.
        • O que ela deve fazer?
          • Verificar se um conjunto de caracteres representa um tipo sangüineo existente (A, B, AB, O).
        • Quais serão os parâmetros?
          • O conjunto de caracteres a ser testado.
        • Qual será o retorno?
          • Verdadeiro ou Falso - Vulgo boolean
    12. Passo 2
        • Crio o teste.
        CREATE OR REPLACE FUNCTION test.test_tipo_sanguineo() RETURNS void AS $$ BEGIN     IF valida_tipo_sanguineo('w') THEN         RAISE EXCEPTION 'w nao eh um tipo valido';     END IF;     IF NOT valida_tipo_sanguineo('o') THEN         RAISE EXCEPTION 'o eh valido';     END IF; END;  $$ LANGUAGE plpgsql;
    13. Passo 3
        • Executo o teste e verifico a falha.
        epic=# SELECT test.test_tipo_sanguineo(); ERROR:  function valida_tipo_sanguineo(unknown) does not exist ...
    14. Passo 4
        • Crio a função.
        CREATE OR REPLACE FUNCTION valida_tipo_sanguineo(ptipo varchar) RETURNS boolean AS $$ BEGIN     RETURN lower(ptipo) IN ('a', 'b', 'ab', 'o'); END; $$ LANGUAGE plpgsql;
    15. Passo 5
        • Executo o teste novamente e verifico se ele passa.
        epic=# SELECT test.test_tipo_sanguineo();  test_tipo_sanguineo ---------------------    (1 row)
        • Caso não passe retornamos ao passo 4.
    16. Legal, mas...
        • Em grande volume rodar os testes manualmente se torna impraticável.
        • Eu vim para essa palestra esperando ver umas ferramentas descoladas...
        •   ... ou pelo menos ganhar algum brinde.
    17. Epic comes to the rescue
    18. O framework de testes Epic
        • Existem outras opções para o PostgreSQL:
          • pgTAP
          • PGUnit
        • O Epic no entanto é o que mais me agrada.
        • Equilibra simplicidade e funcionalidade.
    19. Instalando o Epic svn co http://svn.epictest.org/trunk/epic epicpsql meu_banco < epic/epic.sqlOBS: meu_banco deve ter a PL/PgSQL instalada.  
    20. Escrevendo testes com o Epic CREATE OR REPLACE FUNCTION test.test_tipo_sanguineo() RETURNS void AS $$ -- module: validacoes BEGIN     PERFORM test.assert(NOT valida_tipo_sanguineo('w'), 'w nao eh um tipo valido');     PERFORM test.assert(valida_tipo_sanguineo('o'), 'o eh valido');     PERFORM test.pass(); END; $$ LANGUAGE plpgsql;
    21. Executando testes com o Epic epic=# SELECT * from test.run_all();             name             |    module   | result | errcode | errmsg ----------------------------+---------------+--------+----------+--------  test_tipo_sanguineo | validacoes | [OK]   |             | (1 row)
    22. Alguns detalhes
        • O comentário module serve para separarmos os testes em módulos, ele é obrigatório.
        • As funções de teste devem estar no schema test e devem começar o seu nome com test_
        • Para executar apenas um módulo podemos usar:
          epic=# SELECT * from test.run_module('validacoes');
    23. Para mais informações http://www.epictest.org/ [email_address]
    SlideShare Zeitgeist 2009

    + Diogo BiazusDiogo Biazus Nominate

    custom

    106 views, 0 favs, 0 embeds more stats

    Testes unitários em PostgreSQL usando Epic (http:/ more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 106
      • 106 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 1
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories