SlideShare a Scribd company logo
1 of 23
Testes Unitários com PostgreSQL PGDay-RS 2009
Quem sou eu? ,[object Object]
Instrutor e Consultor
Empresário
[email_address]
Como você gostaria de dar manutenção em suas funções?
Como você se sente dando manutenção em suas funções?
TDD ,[object Object]
Teste duas vezes, codifique uma.
Muito comum em programação OO.
Ainda pouco usado em bancos de dados.
Problemas de desenvolver sem testes ,[object Object]
Qual o comportamento esperado?
Se eu modificar o código, como garanto a ausência de regressões?
Programador sem testes:
Ok, estou convencido. Como começo? ,[object Object],  ,[object Object],  ,[object Object],  ,[object Object]
Parece complicado? ,[object Object]
Rotinas fáceis de testar geralmente tem interfaces mais simples.
Tudo isso colabora para que tenhamos rotinas coesas.
Passo a passo...
Passo 1 ,[object Object]
O que ela deve fazer? ,[object Object],[object Object],[object Object],[object Object],[object Object]
Passo 2 ,[object Object],  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;

More Related Content

What's hot

Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de SoftwareMaurício Aniche
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesEverton Rodrigues
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislAdriano Petrich
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scopeCarlos Santos
 
Testes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e DjangoTestes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e Djangofabiocerqueira
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de softwarericardophp
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesFAFICA
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservicesClaudenir Freitas
 
Refatoração básica e obrigatória
Refatoração básica e obrigatóriaRefatoração básica e obrigatória
Refatoração básica e obrigatóriadtelaroli
 
[ATC] Testando sua API com HTTPARTY e Rodando em um CI
[ATC] Testando sua API com HTTPARTY e Rodando em um CI[ATC] Testando sua API com HTTPARTY e Rodando em um CI
[ATC] Testando sua API com HTTPARTY e Rodando em um CINathanael Silva
 

What's hot (20)

Aula14 - Funções em PHP
Aula14 - Funções em PHPAula14 - Funções em PHP
Aula14 - Funções em PHP
 
Aula03 - JavaScript
Aula03 - JavaScriptAula03 - JavaScript
Aula03 - JavaScript
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de Software
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por Testes
 
Aula12- PHP
Aula12- PHPAula12- PHP
Aula12- PHP
 
Aula11 - PHP
Aula11 - PHPAula11 - PHP
Aula11 - PHP
 
Funcao PHP
Funcao PHPFuncao PHP
Funcao PHP
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fisl
 
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope(A11) LabMM3 - JavaScript - Subalgoritmos e scope
(A11) LabMM3 - JavaScript - Subalgoritmos e scope
 
Testes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e DjangoTestes, deploy e integração continua com Python e Django
Testes, deploy e integração continua com Python e Django
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
 
Aula05-JavaScript
Aula05-JavaScriptAula05-JavaScript
Aula05-JavaScript
 
Python 3.+
Python 3.+Python 3.+
Python 3.+
 
Behaviour-Driven Development com Ruby
Behaviour-Driven Development com RubyBehaviour-Driven Development com Ruby
Behaviour-Driven Development com Ruby
 
Tratamento de exceções
Tratamento de exceçõesTratamento de exceções
Tratamento de exceções
 
Testes de integração em microservices
Testes de integração em microservicesTestes de integração em microservices
Testes de integração em microservices
 
Refatoração básica e obrigatória
Refatoração básica e obrigatóriaRefatoração básica e obrigatória
Refatoração básica e obrigatória
 
Além do TDD
Além do TDDAlém do TDD
Além do TDD
 
[ATC] Testando sua API com HTTPARTY e Rodando em um CI
[ATC] Testando sua API com HTTPARTY e Rodando em um CI[ATC] Testando sua API com HTTPARTY e Rodando em um CI
[ATC] Testando sua API com HTTPARTY e Rodando em um CI
 
Testes em go
Testes em goTestes em go
Testes em go
 

Similar to Testes Unitários PostgreSQL

Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Luís Cobucci
 
Testes com python: como fazer uma refatoração segura
Testes com python: como fazer uma refatoração seguraTestes com python: como fazer uma refatoração segura
Testes com python: como fazer uma refatoração seguraValberto Carneiro
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Linguagem de Programação PERL
Linguagem de Programação PERLLinguagem de Programação PERL
Linguagem de Programação PERLTiago R. Sampaio
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Michael Castillo Granados
 
Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)André Justi
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)Júlio de Lima
 
DevTalk Zoox 04/2016
DevTalk Zoox 04/2016DevTalk Zoox 04/2016
DevTalk Zoox 04/2016Leandro Silva
 

Similar to Testes Unitários PostgreSQL (20)

Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 
Testes de Sofware
Testes de SofwareTestes de Sofware
Testes de Sofware
 
J unit
J unitJ unit
J unit
 
Testes com python: como fazer uma refatoração segura
Testes com python: como fazer uma refatoração seguraTestes com python: como fazer uma refatoração segura
Testes com python: como fazer uma refatoração segura
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Linguagem de Programação PERL
Linguagem de Programação PERLLinguagem de Programação PERL
Linguagem de Programação PERL
 
Aula5
Aula5Aula5
Aula5
 
modulo1.pdf
modulo1.pdfmodulo1.pdf
modulo1.pdf
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014
 
Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)Livro - código limpo caps (3,4) (clean code)
Livro - código limpo caps (3,4) (clean code)
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
Será que testar é simples?
Será que testar é simples?Será que testar é simples?
Será que testar é simples?
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Aula3
Aula3Aula3
Aula3
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
 
DevTalk Zoox 04/2016
DevTalk Zoox 04/2016DevTalk Zoox 04/2016
DevTalk Zoox 04/2016
 
Testes com JUnit
Testes com JUnitTestes com JUnit
Testes com JUnit
 

More from Diogo Biazus

More from Diogo Biazus (7)

Utilizando Rails e PostgreSQL
Utilizando Rails e PostgreSQLUtilizando Rails e PostgreSQL
Utilizando Rails e PostgreSQL
 
Hercules
HerculesHercules
Hercules
 
Collectd
CollectdCollectd
Collectd
 
PostgreSQL Ha
PostgreSQL HaPostgreSQL Ha
PostgreSQL Ha
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQL
 
Arquivos No Banco
Arquivos No BancoArquivos No Banco
Arquivos No Banco
 
Git
GitGit
Git
 

Testes Unitários PostgreSQL