Introdu¸˜o
       ca                  Qualidade de Software           Test Anything Protocol           M˜o na massa
      ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                    Qualidade de Software   Test Anything Protocol           M˜o na massa
            ...
Introdu¸˜o
       ca                    Qualidade de Software   Test Anything Protocol           M˜o na massa
            ...
Introdu¸˜o
       ca                   Qualidade de Software   Test Anything Protocol           M˜o na massa
             ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software     Test Anything Protocol           M˜o na massa
            ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software     Test Anything Protocol           M˜o na massa
            ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                   Qualidade de Software    Test Anything Protocol           M˜o na massa
            ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                       Qualidade de Software   Test Anything Protocol           M˜o na massa
         ...
Introdu¸˜o
       ca                       Qualidade de Software   Test Anything Protocol           M˜o na massa
         ...
Introdu¸˜o
       ca                       Qualidade de Software   Test Anything Protocol           M˜o na massa
         ...
Introdu¸˜o
       ca                       Qualidade de Software   Test Anything Protocol           M˜o na massa
         ...
Introdu¸˜o
       ca                       Qualidade de Software   Test Anything Protocol           M˜o na massa
         ...
Introdu¸˜o
       ca                       Qualidade de Software   Test Anything Protocol           M˜o na massa
         ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Introdu¸˜o
       ca                  Qualidade de Software   Test Anything Protocol           M˜o na massa
              ...
Upcoming SlideShare
Loading in …5
×

Testes unitarios no PostgreSQL com pgTAP

1,072 views
948 views

Published on

Palestra ministrada no PGDay SP em Abril de 2009.

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,072
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Testes unitarios no PostgreSQL com pgTAP

  1. 1. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Testes unit´rios no PostgreSQL com pgTAP a Dickson S. Guedes guedes@guedesoft.net PGDay S˜o Paulo, 2009 a 24 de abril de 2009 Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  2. 2. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Uma vis˜o geral... a Introdu¸˜o ca Compreendendo os ambientes Compreendendo os resultados inesperados Supostas alternativas Qualidade de Software Conceitos b´sicos a Compreendendo os testes O papel do DBA Test Anything Protocol Compreendendo o TAP Compreendendo o pgTAP M˜o na massa a Preparando o ambiente Entendendo os scripts Entendendo os tipos de testes Executando um script Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  3. 3. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Compreendendo os ambientes Por onde come¸amos? c Laborat´rio o Desenvolvimento Teste Homologa¸˜o ca Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  4. 4. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Compreendendo os ambientes Por onde come¸amos? c Laborat´rio o Desenvolvimento Teste Homologa¸˜o ca Produ¸˜o ca Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  5. 5. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Compreendendo os resultados inesperados O tempo passa... o tempo voa... e o software vai sofrendo altera¸oes... c˜ ”Mas antes funcionava!” ”Isso piorou!” ”Eu n˜o fiz nada, foi essa mudan¸a a´ a c ı!” Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  6. 6. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Supostas alternativas Op¸oes c˜ Ignorar, fingir que n˜o ´ com vocˆ; a e e Melhorar a infra-estrutura de suporte; Utilizar o efeito placebo; Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  7. 7. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Supostas alternativas Op¸oes c˜ Ignorar, fingir que n˜o ´ com vocˆ; a e e Melhorar a infra-estrutura de suporte; Utilizar o efeito placebo; Melhorar a qualidade do software! Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  8. 8. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Conceitos b´sicos a Qualidade de Software O que ´? e Por que? Quem precisa? Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  9. 9. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Compreendendo os testes Teste Unit´rio? a O que ´? e Por que? Quem precisa? Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  10. 10. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Compreendendo os testes Quem precisa estar envolvido? Analistas de Neg´cio o Analistas de Sistemas Desenvolvedores Testadores Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  11. 11. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Compreendendo os testes Quem precisa estar envolvido? Analistas de Neg´cio o Analistas de Sistemas Desenvolvedores Testadores DBA Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  12. 12. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a O papel do DBA Qual o papel do DBA? Manter os ambientes versionados Testar as mudan¸as c Validar Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  13. 13. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a O papel do DBA Evite perder... tempo... paciˆncia... e cabelos... Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  14. 14. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Compreendendo o TAP TAP Protocolo de Teste de Qualquer coisa O que ´? e Por quˆ? e Quem usa? Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  15. 15. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Compreendendo o pgTAP Como o pgTAP pode ajudar? auxiliando nos testes de regress˜o a Testar Estrutura tabelas, campos, restri¸˜es, vis˜es co o Testar Dados valida¸˜es de CPF, tipos de dados financeiros... co Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  16. 16. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Preparando o ambiente Obtendo o pgTAP Baixe e descompacte http://pgtap.projects.postgresql.org/ Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  17. 17. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Preparando o ambiente Obtendo o pgTAP Baixe e descompacte http://pgtap.projects.postgresql.org/ Instalar via make make USE PGXS=1 make install USE PGXS=1 make installcheck USE PGXS=1 Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  18. 18. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Preparando o ambiente Obtendo o pgTAP Baixe e descompacte http://pgtap.projects.postgresql.org/ Instalar via make Instalar via gmake make USE PGXS=1 gmake USE PGXS=1 make install USE PGXS=1 gmake install USE PGXS=1 make installcheck gmake installcheck USE PGXS=1 USE PGXS=1 Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  19. 19. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Preparando o ambiente Preparando o pgTAP Variaveis que ajudam $PGDATABASE $PGHOST $PGPORT $PGUSER Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  20. 20. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Preparando o ambiente Preparando o pgTAP Variaveis que ajudam $PGDATABASE $PGHOST $PGPORT $PGUSER Exemplo export PGDATABASE=testedb export PGHOST=dbteste.srv.intranet export PGPORT=5433 export PGUSER=teste Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  21. 21. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Preparando o ambiente Gerenciando o pacote pgTAP Diretamente no banco de dados psql -f pgtap.sql psql -f uninstall pgtap.sql Diretamente no banco template psql -d template1 -f pgtap.sql psql -d template1 -f uninstall pgtap.sql Sem altera¸˜es no banco co Neste caso utilizamos o pgtap apenas dentro de uma transa¸˜o, ca sem inserir as fun¸˜es no banco. co Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  22. 22. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Entendendo os scripts Anatomia de um script de teste O pseudo-c´digo o Configurar silenciamento Configurar formata¸˜o da saida ca Configurar rever¸˜o das mudan¸as em caso de falhas ca c BEGIN Carregar as fun¸˜es do pgTAP (se necess´rio) co a Planejar os testes Executar os testes Finalizar e limpar ROLLBACK Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  23. 23. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Entendendo os scripts Anatomia de um script de teste O cabe¸alho do script c -- Configura silenciamento set ECHO set QUIET 1 -- Configura formata¸~o de saida ca pset format unaligned pset tuples_only true pset pager -- Configura recer¸~o das mudan¸as em caso de falhas ca c set ON_ERROR_ROLLBACK 1 set ON_ERROR_STOP true set QUIET 1 Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  24. 24. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Entendendo os scripts Anatomia de um script de teste O corpo do script BEGIN; i pgtap.sql -- Carrega as fun¸~es do pgTAP co -- Planeja os testes SELECT plan(1); -- Executa os testes SELECT pass( ’Passei no teste!’ ); -- Finaliza e limpa SELECT * FROM finish(); ROLLBACK; Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  25. 25. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Entendendo os scripts Executando o teste Via psql Exemplo de um teste individual $ psql -Xf teste.sql 1..1 ok 1 - Passei no teste! Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  26. 26. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Entendendo os scripts Executando o teste Via pg prove Exemplo de um conjunto de testes $ pg_prove testes/*.sql sql/coltap.....ok sql/hastap.....ok sql/moretap....ok sql/pktap......ok All tests successful. Files=4, Tests=216, 1 wallclock secs ( 0.06 usr 0.02 sys + 0.08 cusr 0.07 csys = 0.23 CPU) Result: PASS Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  27. 27. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Entendendo os tipos de testes Tipos de testes OK? N˜o OK? a ok( boolean, descricao ) is( elemento, elemento, descricao ) isnt( elemento, elemento, descricao ) matches( elemento, regex, descricao ) imatch( anyelement, regex, description ) doesnt match( anyelement, regex, description ) doesnt imatch( anyelement, regex, description ) Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  28. 28. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Entendendo os tipos de testes Tipos de testes Errar ´ umano e throws ok( consulta, errcode, errmsg, descricao ) lives ok( query, description ) Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  29. 29. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Entendendo os tipos de testes Tipos de testes O esquema est´ certinho? a has tablespace( tablespace, location, description ) hasnt tablespace( tablespace, tablespace, description ) has schema( schema, description ) hasnt schema( schema, schema, description ) Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  30. 30. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Entendendo os tipos de testes Tipos de testes Os objetos existem? has table( schema, table, description ) hasnt table( schema, table, description ) has view( schema, view, description ) hasnt view( schema, view, description ) has sequence( schema, sequence, description ) hasnt sequence( schema, sequence, description ) has index( schema, table, index, columns[], description ) Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  31. 31. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Entendendo os tipos de testes Tipos de testes E a estrutura das tabelas? has column( schema, table, column, description ) col not null( schema, table, column, description ) col is null( schema, table, column, description ) col has default( schema, table, column, description ) col default is( schema, table, column, default, description ) col type is( schema, table, column, type, description ) Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  32. 32. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Entendendo os tipos de testes Tipos de testes N˜o podemos esquecer das restri¸oes... a c˜ has pk( schema, table, description ) has fk( schema, table, description ) col is pk( schema, table, column[], description ) col is fk( schema, table, column[], description ) fk ok( fk schema, fk table, fk column[], pk schema, pk table, pk column[], description ) Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  33. 33. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Executando um script Um exemplo a estrutura dos bancos Banco teste Lista de rela¸~es co Esquema | Nome | Tipo | Dono ------------+-------------+--------+---------- aplicativo | cargo | tabela | postgres aplicativo | funcionario | tabela | postgres aplicativo | pessoa | tabela | postgres Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  34. 34. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Executando um script Um exemplo a estrutura dos bancos Banco homologacao Lista de rela¸~es co Esquema | Nome | Tipo | Dono ------------+-------------+--------+---------- aplicativo | cargo | tabela | postgres aplicativo | pessoa | tabela | postgres Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  35. 35. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Executando um script Um exemplo a estrutura dos bancos Banco teste Tabela "aplicativo.cargo" Coluna | Tipo | Modificadores -----------+-----------------------+--------------- sigla | character varying(10) | not null descricao | character varying(20) | not null salario | numeric(17,2) | ´ndices: I "cargo_pkey" PRIMARY KEY, btree (sigla) Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  36. 36. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Executando um script Um exemplo a estrutura dos bancos Banco homologacao Tabela "aplicativo.cargo" Coluna | Tipo | Modificadores -----------+-----------------------+--------------- sigla | character varying(10) | not null descricao | character varying(20) | not null salario | numeric(12,2) | ´ndices: I "cargo_pkey" PRIMARY KEY, btree (sigla) Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  37. 37. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Executando um script Um exemplo a estrutura dos bancos Banco teste Tabela "aplicativo.funcionario" Coluna | Tipo | Modificadores -------------+-----------------------+--------------- cpf | numeric(14,0) | not null sigla_cargo | character varying(10) | not null ´ndices: I "pk_funcionario" PRIMARY KEY, btree (cpf, sigla_cargo) Restri¸~es de chave estrangeira: co "funcionario_cpf_fkey" FOREIGN KEY (cpf) REFERENCES pessoa(cpf) "funcionario_sigla_cargo_fkey" FOREIGN KEY (sigla_cargo) REFERENCES cargo(sigla) Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  38. 38. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Executando um script Um exemplo a estrutura dos bancos Banco homologacao N˜o existe tabela ”funcionario”... a Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  39. 39. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Executando um script Um exemplo a estrutura dos bancos Banco teste Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  40. 40. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Executando um script Um exemplo a estrutura dos bancos Banco teste Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  41. 41. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Executando um script Um exemplo a estrutura dos bancos Banco teste Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  42. 42. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Executando um script Um exemplo a estrutura dos bancos Banco teste Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a
  43. 43. Introdu¸˜o ca Qualidade de Software Test Anything Protocol M˜o na massa a Executando um script Um exemplo a estrutura dos bancos Banco teste Testes unit´rios no PostgreSQL com pgTAP a PGDay S˜o Paulo, 2009 a

×