O documento fornece uma introdução sobre testes unitários no PostgreSQL usando pgTAP. Ele discute conceitos como qualidade de software, testes unitários e o papel do DBA. Também explica como preparar o ambiente pgTAP, entender os scripts de teste e os diferentes tipos de testes suportados pelo pgTAP.
Descrição da palestra no TDC 2014 Poa:
http://www.thedevelopersconference.com.br/tdc/2014/portoalegre/trilha-agile
TDD (Test-driven development) é uma técnica para construção de software que guia o desenvolvimento de software através da escrita de testes. Muito se falou nesse ano, mas pouco se aprendeu. Mas qual é essência real do TDD? A resposta é simples, a essência está em seu mantra: Red / Green / Refactor. O TDD será destilado, explicando seus detalhes além do seu mantra.
Será mostrado o TDD no eXtreme Programming (XP), a importância da refatoração para o TDD, frameworks xUnit, como solucionar problemas complexos com Baby Steps, o valor do Clean Code, e como isso é importante para Coding Dojos. Patterns do TDD serão apresentados, dando a base para a essência do TDD. As relações do TDD com Agile Testing, ATDD e BDD também serão discutidas.
O documento discute testes automatizados de software, incluindo: (1) os tipos de testes automatizados como unitários, de integração e funcionais; (2) a importância da automação para garantir qualidade e evitar regressões; (3) o método de desenvolvimento guiado por testes (Test-Driven Development).
Introdução ao TDD (Test-Driven Development) - #guma10anosDionatan default
Introdução ao TDD (Test-Driven Development) palestrado no #guma10anos. Fazendo uma relação com o TFD (Test First Development) e Refatoração, xUnit, Baby Steps, Clean Code, Patters para TDD, Agile Testing e ATDD (Acceptance Test-Driven Development). Ao final os Coding Dojos já realizados pelo RSJUG. Ao final um Prepared Kata demonstrando o TDD na prática.
Renato Groffe tem mais de 15 anos de experiência em tecnologia e possui diversas certificações. Ele oferece serviços de consultoria em testes de software, com foco em testes unitários, e ministra treinamentos sobre o assunto. Seu portfólio inclui experiência acadêmica e projetos profissionais na área de engenharia de software e business intelligence.
O documento discute as vantagens de testes automatizados e da prática de desenvolvimento guiada por testes (TDD). Apresenta brevemente alguns desenvolvedores que apoiam essas técnicas e descreve um exemplo simples de implementação de um CRUD de usuários usando TDD. Enfatiza a importância de testes de unidade, mocks e a cobertura de código para garantir a qualidade do software.
O documento descreve o processo de testes de software, incluindo introdução aos objetivos e fluxo de informações de teste, bem como técnicas como teste de caixa preta e branca. É apresentada a visão da qualidade no teste e estratégias como teste de unidade, integração e validação.
O documento apresenta uma palestra sobre Desenvolvimento Dirigido por Testes (TDD). A palestra discute o que é TDD, como funciona, frameworks de teste de unidade, mitos sobre TDD e exemplos práticos em .NET e Java. O palestrante tem mais de cinco anos de experiência em engenharia de software e é instrutor de teste de software.
O documento descreve uma palestra sobre testes unitários em Java usando JUnit. A palestra aborda conceitos de desenvolvimento guiado por testes, como escrever testes unitários, o framework JUnit e como implementar testes em JUnit usando Eclipse.
Descrição da palestra no TDC 2014 Poa:
http://www.thedevelopersconference.com.br/tdc/2014/portoalegre/trilha-agile
TDD (Test-driven development) é uma técnica para construção de software que guia o desenvolvimento de software através da escrita de testes. Muito se falou nesse ano, mas pouco se aprendeu. Mas qual é essência real do TDD? A resposta é simples, a essência está em seu mantra: Red / Green / Refactor. O TDD será destilado, explicando seus detalhes além do seu mantra.
Será mostrado o TDD no eXtreme Programming (XP), a importância da refatoração para o TDD, frameworks xUnit, como solucionar problemas complexos com Baby Steps, o valor do Clean Code, e como isso é importante para Coding Dojos. Patterns do TDD serão apresentados, dando a base para a essência do TDD. As relações do TDD com Agile Testing, ATDD e BDD também serão discutidas.
O documento discute testes automatizados de software, incluindo: (1) os tipos de testes automatizados como unitários, de integração e funcionais; (2) a importância da automação para garantir qualidade e evitar regressões; (3) o método de desenvolvimento guiado por testes (Test-Driven Development).
Introdução ao TDD (Test-Driven Development) - #guma10anosDionatan default
Introdução ao TDD (Test-Driven Development) palestrado no #guma10anos. Fazendo uma relação com o TFD (Test First Development) e Refatoração, xUnit, Baby Steps, Clean Code, Patters para TDD, Agile Testing e ATDD (Acceptance Test-Driven Development). Ao final os Coding Dojos já realizados pelo RSJUG. Ao final um Prepared Kata demonstrando o TDD na prática.
Renato Groffe tem mais de 15 anos de experiência em tecnologia e possui diversas certificações. Ele oferece serviços de consultoria em testes de software, com foco em testes unitários, e ministra treinamentos sobre o assunto. Seu portfólio inclui experiência acadêmica e projetos profissionais na área de engenharia de software e business intelligence.
O documento discute as vantagens de testes automatizados e da prática de desenvolvimento guiada por testes (TDD). Apresenta brevemente alguns desenvolvedores que apoiam essas técnicas e descreve um exemplo simples de implementação de um CRUD de usuários usando TDD. Enfatiza a importância de testes de unidade, mocks e a cobertura de código para garantir a qualidade do software.
O documento descreve o processo de testes de software, incluindo introdução aos objetivos e fluxo de informações de teste, bem como técnicas como teste de caixa preta e branca. É apresentada a visão da qualidade no teste e estratégias como teste de unidade, integração e validação.
O documento apresenta uma palestra sobre Desenvolvimento Dirigido por Testes (TDD). A palestra discute o que é TDD, como funciona, frameworks de teste de unidade, mitos sobre TDD e exemplos práticos em .NET e Java. O palestrante tem mais de cinco anos de experiência em engenharia de software e é instrutor de teste de software.
O documento descreve uma palestra sobre testes unitários em Java usando JUnit. A palestra aborda conceitos de desenvolvimento guiado por testes, como escrever testes unitários, o framework JUnit e como implementar testes em JUnit usando Eclipse.
O documento apresenta os principais conceitos e práticas do Desenvolvimento Orientado a Testes (TDD). Resume os tópicos da agenda, incluindo introdução ao TDD, tipos de testes, exemplos práticos do processo red-green-refactor, desafios como onde começar e benefícios como design emergente e menor acoplamento.
O documento discute o desenvolvimento baseado em testes (TDD) em 3 frases:
1) TDD envolve escrever testes unitários antes de escrever o código para guiar o desenvolvimento e garantir a qualidade do código.
2) O ciclo básico do TDD é escrever um teste que falha, escrever o código mínimo para fazer o teste passar, e refatorar o código.
3) Os benefícios do TDD incluem esclarecer os requisitos, desenvolver código de alta qualidade com
Facilitando o desenvolvimento orientado a testes em aplicações PHPPedro Chaves
Palestra sobre Desenvolvimento Orientado a Testes (TDD) em PHP utilizando o framework de testes Codeception. Apresentada no iMasters Developer Week de Belo Horizonte, ocorrido entre 26 e 28 de maio de 2015
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Adam Victor Brandizzi
O documento discute o módulo doctest em Python, que executa exemplos de código em docstrings para verificar se os resultados são os esperados. Isso permite que a documentação seja executável e sempre atualizada. Doctests podem encontrar erros ao atualizar código para novas versões do Python. Embora haja pequenos problemas, como detalhes irrelevantes que quebram exemplos, doctest pode melhorar a clareza do código e manter a documentação atualizada.
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
Este documento discute testes e ambientes de integração contínua para desenvolvimento ágil em PHP. Ele apresenta a pirâmide de testes, explica testes de unidade isolados versus colaborativos, e discute otimizações para execução de testes e configuração de ambientes de integração contínua usando ferramentas como Jenkins.
O documento discute a importância dos testes de unidade e apresenta a ferramenta JUnit para automatizar testes de unidade. Ele também fornece boas e más práticas para escrever testes de unidade e cobre tópicos como as anotações @Test, @Before, @After e @Rule do JUnit.
Testando Aplicações Django: Quando, Como e Onde?Bernardo Fontes
Este documento fornece dicas sobre como testar aplicações Django de forma efetiva. Ele discute a importância de testes e como testar as principais partes de uma aplicação Django, incluindo views, forms e models. Além disso, fornece exemplos de código de teste e sugere ferramentas como o TestClient do Django e o model_mommy para ajudar a escrever bons testes automatizados.
O documento discute Test Driven Development (TDD) e como ele pode ajudar a atender melhor os requisitos, combater a síndrome de Nostradamus, manter o código organizado e promover o design evolutivo. O TDD envolve escrever testes automatizados antes de escrever o código funcional e seguir um ciclo de desenvolvimento baseado em testes. Ferramentas como JUnit podem ser usadas para implementar TDD em Java.
Desenvolvimento Dirigido por Testes com JunitAdolfo Neto
O objetivo desta palestra é apresentar como funciona o desenvolvimento dirigido por testes (TDD, do termo em inglês "test-driven development"), uma técnica de projeto de software utilizada principalmente em métodos ágeis para o desenvolvimento de software. Além disso, serão mostrados exemplos práticos de como desenvolver sofwtare utilizando TDD com o auxílio do framework open source JUnit (http://junit.sourceforge.net/).
[1] O documento discute testes de unidade com o framework Junit, incluindo conceitos de testes de unidade, vantagens dos testes de unidade, como escrever testes com Junit e práticas recomendadas para testes de unidade. [2] Também aborda o uso de bibliotecas como EasyMock e DbUnit para isolar dependências e testar a camada de persistência e [3] discute o desenvolvimento guiado por testes (TDD).
O documento apresenta os principais conceitos e benefícios de testes de software, introduzindo testes unitários, de aceitação e de integração. Defende a importância da escrita de testes para garantir a qualidade do código e reduzir bugs, apresentando TDD e BDD como abordagens que utilizam testes no desenvolvimento de software.
Palestra ministrada na PGConf.Brasil 2022.
A linguagem SQL possui recursos que podem ser utilizados em benefício da nossa preguiça para que possamos automatizar boa parte de algumas tarefas. O forte está na geração de texto e execuções de consultas dinamicamente geradas. Passearemos por alguns exemplos com dicas, casos de usos e um pouco de código, porque ninguém é de ferro.
O mínimo necessário que você precisa conhecer sobre computação quânticaDickson S. Guedes
O documento fornece uma introdução básica sobre computação quântica, abordando seus princípios, aplicações potenciais e desafios. Em particular, discute os conceitos de qubit, circuitos quânticos e algoritmos como o problema de Deutsch-Jozsa. O autor também fornece referências e links para recursos adicionais sobre o assunto.
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorDickson S. Guedes
Este documento discute como aprender várias linguagens de programação pode tornar alguém um melhor DBA (administrador de banco de dados) e desenvolvedor. Aprender novas linguagens ajuda a conectar pontos entre diferentes tecnologias e abordagens, melhorando a comunicação, percepção e pensamento crítico. É importante considerar por que cada linguagem surgiu para escolher aquelas que agregam mais valor.
Este documento apresenta uma introdução ao Machine Learning utilizando o banco de dados PostgreSQL e a biblioteca MADlib. O palestrante explica conceitos básicos de ML, como regressão, classificação e clusterização. Ele também demonstra como construir modelos de ML no PostgreSQL usando Python através de notebooks Jupyter e código exemplo disponível online.
Talk apresentada no 1o. Meetup do DBFloripa. Uma talk introdutória para apresentar alguns utilitários de linha de comando como sed, awk, xargs, csvkit e jq para o cinto de utilidades de desenvolvedores e DBAs
Este documento resume os principais conceitos de bancos de dados relacionais utilizando PostgreSQL. Inclui exemplos de criação de tabelas, tipos de busca como sequencial scan e index scan, diferentes tipos de junções como nested loop, merge join e hash join, e agregações com grupo.
1) A palestra introduz o PostgreSQL e discute como ele se relaciona com o Python, incluindo padrões, documentação, extensibilidade e interoperabilidade entre as duas tecnologias.
2) O documento também discute conceitos importantes do PostgreSQL como tipos JSON, funções de agregação, NULL vs None e registros/tuplas.
3) Finalmente, o documento explora vários recursos avançados do SQL como VALUES, operações com NULL e infinito.
Palestra ministrada no PGDay Curitiba 2016 na CELEPAR.
Nesta palestra demonstro como fazer o PostgreSQL falar conosco criando um bot para o Telegram através de Foreign Data Wrappers.
Mais detalhes em:
- http://guedesoft.net
- http://github.com/guedes/telegram_fdw
O documento apresenta os principais conceitos e práticas do Desenvolvimento Orientado a Testes (TDD). Resume os tópicos da agenda, incluindo introdução ao TDD, tipos de testes, exemplos práticos do processo red-green-refactor, desafios como onde começar e benefícios como design emergente e menor acoplamento.
O documento discute o desenvolvimento baseado em testes (TDD) em 3 frases:
1) TDD envolve escrever testes unitários antes de escrever o código para guiar o desenvolvimento e garantir a qualidade do código.
2) O ciclo básico do TDD é escrever um teste que falha, escrever o código mínimo para fazer o teste passar, e refatorar o código.
3) Os benefícios do TDD incluem esclarecer os requisitos, desenvolver código de alta qualidade com
Facilitando o desenvolvimento orientado a testes em aplicações PHPPedro Chaves
Palestra sobre Desenvolvimento Orientado a Testes (TDD) em PHP utilizando o framework de testes Codeception. Apresentada no iMasters Developer Week de Belo Horizonte, ocorrido entre 26 e 28 de maio de 2015
Desenvolvimento Orientado a Documentação? Utilizando doctests para tornar seu...Adam Victor Brandizzi
O documento discute o módulo doctest em Python, que executa exemplos de código em docstrings para verificar se os resultados são os esperados. Isso permite que a documentação seja executável e sempre atualizada. Doctests podem encontrar erros ao atualizar código para novas versões do Python. Embora haja pequenos problemas, como detalhes irrelevantes que quebram exemplos, doctest pode melhorar a clareza do código e manter a documentação atualizada.
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
Este documento discute testes e ambientes de integração contínua para desenvolvimento ágil em PHP. Ele apresenta a pirâmide de testes, explica testes de unidade isolados versus colaborativos, e discute otimizações para execução de testes e configuração de ambientes de integração contínua usando ferramentas como Jenkins.
O documento discute a importância dos testes de unidade e apresenta a ferramenta JUnit para automatizar testes de unidade. Ele também fornece boas e más práticas para escrever testes de unidade e cobre tópicos como as anotações @Test, @Before, @After e @Rule do JUnit.
Testando Aplicações Django: Quando, Como e Onde?Bernardo Fontes
Este documento fornece dicas sobre como testar aplicações Django de forma efetiva. Ele discute a importância de testes e como testar as principais partes de uma aplicação Django, incluindo views, forms e models. Além disso, fornece exemplos de código de teste e sugere ferramentas como o TestClient do Django e o model_mommy para ajudar a escrever bons testes automatizados.
O documento discute Test Driven Development (TDD) e como ele pode ajudar a atender melhor os requisitos, combater a síndrome de Nostradamus, manter o código organizado e promover o design evolutivo. O TDD envolve escrever testes automatizados antes de escrever o código funcional e seguir um ciclo de desenvolvimento baseado em testes. Ferramentas como JUnit podem ser usadas para implementar TDD em Java.
Desenvolvimento Dirigido por Testes com JunitAdolfo Neto
O objetivo desta palestra é apresentar como funciona o desenvolvimento dirigido por testes (TDD, do termo em inglês "test-driven development"), uma técnica de projeto de software utilizada principalmente em métodos ágeis para o desenvolvimento de software. Além disso, serão mostrados exemplos práticos de como desenvolver sofwtare utilizando TDD com o auxílio do framework open source JUnit (http://junit.sourceforge.net/).
[1] O documento discute testes de unidade com o framework Junit, incluindo conceitos de testes de unidade, vantagens dos testes de unidade, como escrever testes com Junit e práticas recomendadas para testes de unidade. [2] Também aborda o uso de bibliotecas como EasyMock e DbUnit para isolar dependências e testar a camada de persistência e [3] discute o desenvolvimento guiado por testes (TDD).
O documento apresenta os principais conceitos e benefícios de testes de software, introduzindo testes unitários, de aceitação e de integração. Defende a importância da escrita de testes para garantir a qualidade do código e reduzir bugs, apresentando TDD e BDD como abordagens que utilizam testes no desenvolvimento de software.
Palestra ministrada na PGConf.Brasil 2022.
A linguagem SQL possui recursos que podem ser utilizados em benefício da nossa preguiça para que possamos automatizar boa parte de algumas tarefas. O forte está na geração de texto e execuções de consultas dinamicamente geradas. Passearemos por alguns exemplos com dicas, casos de usos e um pouco de código, porque ninguém é de ferro.
O mínimo necessário que você precisa conhecer sobre computação quânticaDickson S. Guedes
O documento fornece uma introdução básica sobre computação quântica, abordando seus princípios, aplicações potenciais e desafios. Em particular, discute os conceitos de qubit, circuitos quânticos e algoritmos como o problema de Deutsch-Jozsa. O autor também fornece referências e links para recursos adicionais sobre o assunto.
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorDickson S. Guedes
Este documento discute como aprender várias linguagens de programação pode tornar alguém um melhor DBA (administrador de banco de dados) e desenvolvedor. Aprender novas linguagens ajuda a conectar pontos entre diferentes tecnologias e abordagens, melhorando a comunicação, percepção e pensamento crítico. É importante considerar por que cada linguagem surgiu para escolher aquelas que agregam mais valor.
Este documento apresenta uma introdução ao Machine Learning utilizando o banco de dados PostgreSQL e a biblioteca MADlib. O palestrante explica conceitos básicos de ML, como regressão, classificação e clusterização. Ele também demonstra como construir modelos de ML no PostgreSQL usando Python através de notebooks Jupyter e código exemplo disponível online.
Talk apresentada no 1o. Meetup do DBFloripa. Uma talk introdutória para apresentar alguns utilitários de linha de comando como sed, awk, xargs, csvkit e jq para o cinto de utilidades de desenvolvedores e DBAs
Este documento resume os principais conceitos de bancos de dados relacionais utilizando PostgreSQL. Inclui exemplos de criação de tabelas, tipos de busca como sequencial scan e index scan, diferentes tipos de junções como nested loop, merge join e hash join, e agregações com grupo.
1) A palestra introduz o PostgreSQL e discute como ele se relaciona com o Python, incluindo padrões, documentação, extensibilidade e interoperabilidade entre as duas tecnologias.
2) O documento também discute conceitos importantes do PostgreSQL como tipos JSON, funções de agregação, NULL vs None e registros/tuplas.
3) Finalmente, o documento explora vários recursos avançados do SQL como VALUES, operações com NULL e infinito.
Palestra ministrada no PGDay Curitiba 2016 na CELEPAR.
Nesta palestra demonstro como fazer o PostgreSQL falar conosco criando um bot para o Telegram através de Foreign Data Wrappers.
Mais detalhes em:
- http://guedesoft.net
- http://github.com/guedes/telegram_fdw
Curiosidades que você (talvez) não sabia e se sabia vale a pena lembrarDickson S. Guedes
Este documento fornece várias curiosidades sobre o PostgreSQL, resumidas em 3 frases:
1) O documento apresenta diversos truques e funcionalidades avançadas do PostgreSQL, incluindo o uso de funções aninhadas, manipulação de datas e NULLs, e formas alternativas de escrever consultas.
2) Também mostra como usar recursos como o PSQL para facilitar a execução de consultas, como variáveis e conexões, e discute conceitos como serials e operadores.
3) Por fim, incentiva o leitor a apre
O documento descreve como transformar um servidor Postgres em um servidor WEB utilizando recursos como PLV8, LISTEN/NOTIFY e pg_web_app para criar uma aplicação TODO list que pode ser acessada via requisições HTTP. O documento também discute outros recursos do Postgres como extensibilidade, tipos de dados e linguagens de programação integradas.
This document provides an overview of using Logstash, Elasticsearch, and Kibana to parse, index, and visualize log data. It discusses:
1) How these tools can help "find a needle in a haystack" by extracting useful information from logs and making it searchable.
2) Setting up the ELK stack with Logstash to collect log data from stdin, Elasticsearch for indexing, and Kibana for visualization.
3) Examples of using Logstash pipelines, querying data with Elasticsearch, and visualizing results in Kibana.
Como encontrar uma agulha no palheiro de logs do PostgreSQLDickson S. Guedes
O documento discute como analisar logs do PostgreSQL para encontrar informações importantes. Ele explica o que compõe um evento de log e dá exemplos de como adicionar contexto aos logs. Também apresenta Logstash como uma ferramenta para processar logs e fala sobre a importância de registrar eventos de forma estruturada.
Gerenciando múltiplas versões do PostgreSQL com pgvmDickson S. Guedes
The document discusses PGVM, a tool for managing multiple versions of PostgreSQL. It demonstrates installing PostgreSQL version 9.1 using PGVM, creating and starting a cluster named "teste123_pgbr" running version 9.2.4, and connecting to the cluster through the PGVM console. The document ends by providing contact information for any questions.
PGXN - Como distribuir suas extensões com o PostgreSQLDickson S. Guedes
O documento discute como distribuir extensões para PostgreSQL usando o PGXN. O PGXN fornece um índice central de extensões com documentação e ferramentas para pesquisa e instalação fácil. Demostrações mostram como usar o cliente PGXN e as utilidades PGXN para criar e empacotar extensões. O documento encoraja o compartilhamento de conhecimento através de extensões de código aberto.
O documento discute como distribuir extensões para PostgreSQL usando o PGXN. O PGXN fornece um índice central de extensões com documentação e ferramentas para pesquisa e instalação fácil. Demonstrações mostram como usar o cliente PGXN e as utilidades PGXN para criar e empacotar extensões. O documento encoraja o compartilhamento de conhecimento através de extensões de código aberto.
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Dickson S. Guedes
O documento discute como dividir aplicações complexas em módulos menores utilizando extensões do PostgreSQL. Isso permite melhor modularidade, reutilização de código e gerenciamento de versões. O exemplo mostra como criar validadores de CPF e e-mail como uma extensão, permitindo validações no banco de dados de forma centralizada.
Plante uma árvore, escreva um livro, tenha um filho e contribua com software ...Dickson S. Guedes
O documento discute a importância de contribuir com software livre, seja plantando árvores, escrevendo livros ou tendo filhos. Ele explica a diferença entre software livre e gratuito e encoraja as pessoas a participarem de projetos de código aberto, seja traduzindo, documentando ou escrevendo código. Também fornece dicas sobre como começar a contribuir e como gerenciar projetos de software livre.
O documento fornece uma visão geral do banco de dados PostgreSQL, discutindo sua história, desenvolvimento, recursos necessários e funcionalidades. Ele resume a evolução do PostgreSQL desde seu início como projeto acadêmico até se tornar uma opção popular e poderosa de banco de dados open source.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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