SlideShare uma empresa Scribd logo
1 de 134
Baixar para ler offline
Globalcode – Open4education
Trilha – Python
Adam Brandizzi
Engenheiro de Software para a Liferay
Globalcode – Open4education
Desenvolvimento Orientado a
Documentação?
Utilizando doctest para tornar seu código Python
legível
Globalcode – Open4education
Adam Brandizzi
programador de
computadores há quase
15 anos
trabalha para Liferay
apaixonado por Python
gosta de fazer
apresentações
Globalcode – Open4education
O que é doctest?
Globalcode – Open4education
“O módulo doctest busca por trechos de texto
que pareçam com sessões iterativas de Python, e
então executa estas seções para verificar se elas
executam como mostradas.”
— docs.python.org
Globalcode – Open4education
Como funciona?
O módulo doctest procura por exemplos de
código em arquivos ou docstrings.
Globalcode – Open4education
Nota: o que são docstrings
Docstring
Docstring
Globalcode – Open4education
Como funciona?
O módulo doctest procura por exemplos de
código em arquivos ou docstrings.
Estes exemplos são geralmente chamados de doctests.
Cada exemplo tem duas partes:
Código a executar
Resultado esperado
Globalcode – Open4education
Como funciona?
O código a ser executado é prefixado por >>> na
primeira linha (... nas demais).
O resultado esperado vem na linha seguinte ao
código executado.
Basicamente:
doctests simulam o terminal
Globalcode – Open4education
Formato de um exemplo
Código a
executar Resultado
esperado
Globalcode – Open4education
Um exemplo em uma
docstring
Doctest
Doctest
Globalcode – Open4education
Como checar doctests
É possível executar doctests de várias maneiras
A mais simples é invocando o módulo com
python -m doctest <arquivo>
Globalcode – Open4education
Checando doctests com
erros
Globalcode – Open4education
Qual é o propósito de
doctest?
Globalcode – Open4education
Documentação executável
Com doctest, você pode garantir que os
exemplos de sua documentação estarão
atualizados.
Imagine arquivos README que se garantem!
Globalcode – Open4education
Documentação executável
Caso de uso:
Uma biblioteca em Python 2.7.
Bem documentada, mas abandonada por anos.
De repente, precisei atualizar para Python 3.6.
Como atualizar a documentação disso?
Globalcode – Open4education
Documentação executável
Globalcode – Open4education
Documentação executável
Globalcode – Open4education
Documentação executável
Caso de uso:
Uma biblioteca em Python 2.7.
Bem documentada, mas abandonada por anos.
De repente, precisei atualizar para Python 3.6.
Como atualizar a documentação disso?
Todos os erros encontrados.
Bastou rodar python -m doctest readme.rst
Globalcode – Open4education
Por que doctest não é mais
popular?
Globalcode – Open4education
Os pequenos problemas
Doctests são extremamente literais...
Detalhes irrelevantes quebram exemplos
Não aceitam quebra de linha, espaços extras
Dicionários e sets não podem ser impressos
deterministicamente
...mas estes problemas têm solução.
Globalcode – Open4education
Detalhes quebram exemplos
Globalcode – Open4education
Detalhes quebram exemplos
Globalcode – Open4education
Detalhes quebram exemplos
Globalcode – Open4education
Detalhes quebram exemplos
Globalcode – Open4education
Espaços extras
Globalcode – Open4education
Espaços extras
Globalcode – Open4education
Espaços extras
Globalcode – Open4education
Imprimindo dicionários
Globalcode – Open4education
Imprimindo dicionários
Globalcode – Open4education
Imprimindo dicionários
Globalcode – Open4education
Imprimindo dicionários
Globalcode – Open4education
Imprimindo dicionários
Desde Python 3.6, os pares são ordenados do
menos recente ao mais recente.
Isto é parte da especificação em Python 3.7.
Isto afeta como dicionários são impressos.
Globalcode – Open4education
Imprimindo dicionários
Globalcode – Open4education
Imprimindo sets
Desde Python 3.6, os pares são ordenados do
menos recente ao mais recente.
Isto é parte da especificação em Python 3.7.
Isto afeta como dicionários são impressos.
Infelizmente não vale para sets.
Globalcode – Open4education
Imprimindo sets
Globalcode – Open4education
Imprimindo sets
Globalcode – Open4education
Imprimindo sets
Desde Python 3.6, os pares são ordenados do
menos recente ao mais recente.
Isto é parte da especificação em Python 3.7.
Isto afeta como dicionários são impressos.
Infelizmente não vale para sets.
Só no resta um velho truque:
Comparar o resultado esperado.
Globalcode – Open4education
Imprimindo sets
Globalcode – Open4education
Imprimindo sets
Globalcode – Open4education
As grandes questões
Competindo com frameworks xUnit
Bom teste, má documentação
Falta uma metodologia
Globalcode – Open4education
Competindo com xUnit
TDD revolucionou o desenvolvimento de software.
TDD é baseado em testes unitários.
xUnit (unittest, pytest etc.) são ideais para
testes unitários.
doctest é ideal para contar uma história.
Globalcode – Open4education
Documentação não é teste
Documentação deve ser clara e sucinta.
Não se devem cobrir todos os edge cases em uma
documentação com doctest.
Globalcode – Open4education
Documentação não é teste
Globalcode – Open4education
Documentação não é teste
Documentação deve ser clara e sucinta.
Não se devem cobrir todos os edge cases em uma
documentação com doctest.
Assim, doctest não substitui a necessidade de
testes automatizados.
Globalcode – Open4education
Documentação não é teste
Globalcode – Open4education
Documentação não é teste
Se documentação não substitui testes, qual dos
dois o desenvolvedor preferirá?
Globalcode – Open4education
Documentação não é teste
Se documentação não substitui testes, qual dos
dois o desenvolvedor preferirá?
A resposta, por muito tempo, era: nenhum
Globalcode – Open4education
Documentação não é teste
Se documentação não substitui testes, qual dos
dois o desenvolvedor preferirá?
A resposta, por muito tempo, era: nenhum.
Hoje, preferem testes. Por quê?
Porque TDD é divertido e estimulante!
Globalcode – Open4education
Uma metodologia para
documentação executável
Globalcode – Open4education
Uma metodologia
E se documentarmos antes de implementarmos?
Globalcode – Open4education
Uma metodologia
Desenvolvimento Orientado à Documentação
Novo artefato:
Crie o módulo, classe ou assinatura de função.
Escreva a docstring.
Rode doctest.
Implemente o artefato para fazer o doctest passar.
Globalcode – Open4education
Uma metodologia
Desenvolvimento Orientado à Documentação
Alterar comportamento:
Acrescente doctests à docstring.
Rode doctest.
Altere o artefato para fazer o doctest passar.
Globalcode – Open4education
Uma metodologia
Desenvolvimento Orientado à Documentação
Bonus points: copie a docstring para o README.
Globalcode – Open4education
Uma metodologia
Hora da demonstração
Globalcode – Open4education
Por que eu faria isso?
Globalcode – Open4education
Os ganhos de doctest
Clareza do código
Melhores assinaturas.
Menos interdependências.
Menores unidades de código.
Mais documentação
Documentação atualizada (obviamente)
Desenvolvedores “plantando sementes”
Documentação interna
Globalcode – Open4education
Clareza de código
Melhores assinaturas
Se ao explicar a assinatura de uma função, ou os
métodos de uma classe, você encontra dificuldade, isto
é um sinal de que é possível melhorar esses aspectos.
Esta não é uma questão arquitetural, mas é relevante.
TDD não ajuda muito aqui necessariamente.
Globalcode – Open4education
Clareza de código
Menos interdependências.
TDD facilita extrair grandes blocos de código.
Surge dependência entre o código extraído e o antigo.
Dependências são geralmente detalhes de
implementação, difíceis de explicar.
Se você tiver de documentá-las, terá um incentivo para
torná-las transparentes.
Globalcode – Open4education
Clareza de código
Menores unidades de código
Blocos de código complicados incentivam comentários.
Mas comentários podem ficar desatualizados.
Uma solução:
Mova o bloco para uma função.
Escreva uma docstring para a função.
Ponha doctests na docstring.
Globalcode – Open4education
Mais documentação
Sementes de documentação
Documentação, assim como QA, é uma disciplina.
Você vai querer um time dedicado.
O desenvolvedor tem conhecimento fundamental.
Globalcode – Open4education
Mais documentação
Sementes de documentação
Para programadores, documentar é... chato.
Aproximar do código ajuda. Mas não resolve
Quem gosta de escrever JavaDoc?
Documentação executável é muito mais interessante!
Desenvolvedores bem mais motivados a explicar em docstrings.
As docstrings são “sementes” para os documentadores
expandirem.
Globalcode – Open4education
Mais documentação
Documentação interna
Um pedido comum dos recém-contratados:
“A gente tem documentação para essa classe?”
Geralmente classes internas, resultados de refatoração.
Não há documentação.
Time de documentação foca nas APIs externas.
Globalcode – Open4education
Mais documentação
Documentação interna
Ou o time assume, ou não existe.
Docstrings são parte da solução.
Doctest aproxima o ato de documentar à experiência do
desenvolvedor.
Globalcode – Open4education
E aí, fez sentido?
Globalcode – Open4education
Um comentário off-topic
Eu trabalho para a Liferay. Estamos patrocinando o
TDC e temos uma trilha dedicada! Se você quer saber
mais sobre os produtos e processos de uma grande
empresa multinacional, passe lá! Também temos
muitas vagas abertas em liferay.com/careers.
Globalcode – Open4education
Obrigado!
Se tiverem perguntas, é só fazer!
Também podem me contatar por esses canais:
linkedin.com/in/brandizzi
twitter.com/adambrandizzi
adam@brandizzi.com.br
adam.brandizzi.com.br
Globalcode – Open4education
Trilha – Python
Adam Brandizzi
Engenheiro de Software para a Liferay
Globalcode – Open4education
Desenvolvimento Orientado a
Documentação?
Utilizando doctest para tornar seu código Python
legível
Globalcode – Open4education
Adam Brandizzi
programador de
computadores há quase
15 anos
trabalha para Liferay
apaixonado por Python
gosta de fazer
apresentações
Globalcode – Open4education
O que é doctest?
Globalcode – Open4education
“O módulo doctest busca por trechos de texto
que pareçam com sessões iterativas de Python, e
então executa estas seções para verificar se elas
executam como mostradas.”
— docs.python.org
Globalcode – Open4education
Como funciona?
O módulo doctest procura por exemplos de
código em arquivos ou docstrings.
Globalcode – Open4education
Nota: o que são docstrings
Docstring
Docstring
Globalcode – Open4education
Como funciona?
O módulo doctest procura por exemplos de
código em arquivos ou docstrings.
Estes exemplos são geralmente chamados de doctests.
Cada exemplo tem duas partes:
Código a executar
Resultado esperado
Globalcode – Open4education
Como funciona?
O código a ser executado é prefixado por >>> na
primeira linha (... nas demais).
O resultado esperado vem na linha seguinte ao
código executado.
Basicamente:
doctests simulam o terminal
Globalcode – Open4education
Formato de um exemplo
Código a
executar Resultado
esperado
Globalcode – Open4education
Um exemplo em uma
docstring
Doctest
Doctest
Globalcode – Open4education
Como checar doctests
É possível executar doctests de várias maneiras
A mais simples é invocando o módulo com
python -m doctest <arquivo>
Globalcode – Open4education
Checando doctests com
erros
Globalcode – Open4education
Qual é o propósito de
doctest?
Globalcode – Open4education
Documentação executável
Com doctest, você pode garantir que os
exemplos de sua documentação estarão
atualizados.
Imagine arquivos README que se garantem!
Globalcode – Open4education
Documentação executável
Caso de uso:
Uma biblioteca em Python 2.7.
Bem documentada, mas abandonada por anos.
De repente, precisei atualizar para Python 3.6.
Como atualizar a documentação disso?
Globalcode – Open4education
Documentação executável
●
Python 3.4: https://github.com/confeitaria/inelegant/#inelegant-net---quick-and-dirty-network-tricks
●
Python 2.7:
https://github.com/confeitaria/inelegant/tree/74ee30cbf8b6a2803bfcc255a986d8071e522fd6#inelegant-n
et---quick-and-dirty-network-tricks
Globalcode – Open4education
Documentação executável
●
Python 3.4: https://github.com/confeitaria/inelegant/#inelegant-net---quick-and-dirty-network-tricks
●
Python 2.7:
https://github.com/confeitaria/inelegant/tree/74ee30cbf8b6a2803bfcc255a986d8071e522fd6#inelegant-n
et---quick-and-dirty-network-tricks
Globalcode – Open4education
Documentação executável
Caso de uso:
Uma biblioteca em Python 2.7.
Bem documentada, mas abandonada por anos.
De repente, precisei atualizar para Python 3.6.
Como atualizar a documentação disso?
Todos os erros encontrados.
Bastou rodar python -m doctest readme.rst
Globalcode – Open4education
Por que doctest não é mais
popular?
Globalcode – Open4education
Os pequenos problemas
Doctests são extremamente literais...
Detalhes irrelevantes quebram exemplos
Não aceitam quebra de linha, espaços extras
Dicionários e sets não podem ser impressos
deterministicamente
...mas estes problemas têm solução.
Globalcode – Open4education
Detalhes quebram exemplos
Globalcode – Open4education
Detalhes quebram exemplos
Globalcode – Open4education
Detalhes quebram exemplos
Globalcode – Open4education
Detalhes quebram exemplos
Globalcode – Open4education
Espaços extras
Globalcode – Open4education
Espaços extras
Globalcode – Open4education
Espaços extras
Globalcode – Open4education
Imprimindo dicionários
Globalcode – Open4education
Imprimindo dicionários
Globalcode – Open4education
Imprimindo dicionários
Globalcode – Open4education
Imprimindo dicionários
Globalcode – Open4education
Imprimindo dicionários
Desde Python 3.6, os pares são ordenados do
menos recente ao mais recente.
Isto é parte da especificação em Python 3.7.
Isto afeta como dicionários são impressos.
Globalcode – Open4education
Imprimindo dicionários
Globalcode – Open4education
Imprimindo sets
Desde Python 3.6, os pares são ordenados do
menos recente ao mais recente.
Isto é parte da especificação em Python 3.7.
Isto afeta como dicionários são impressos.
Infelizmente não vale para sets.
Globalcode – Open4education
Imprimindo sets
Globalcode – Open4education
Imprimindo sets
Globalcode – Open4education
Imprimindo sets
Desde Python 3.6, os pares são ordenados do
menos recente ao mais recente.
Isto é parte da especificação em Python 3.7.
Isto afeta como dicionários são impressos.
Infelizmente não vale para sets.
Só no resta um velho truque:
Comparar o resultado esperado.
Globalcode – Open4education
Imprimindo sets
Globalcode – Open4education
Imprimindo sets
Globalcode – Open4education
As grandes questões
Competindo com frameworks xUnit
Bom teste, má documentação
Falta uma metodologia
Globalcode – Open4education
Competindo com xUnit
TDD revolucionou o desenvolvimento de software.
TDD é baseado em testes unitários.
xUnit (unittest, pytest etc.) são ideais para
testes unitários.
doctest é ideal para contar uma história.
Globalcode – Open4education
Documentação não é teste
Documentação deve ser clara e sucinta.
Não se devem cobrir todos os edge cases em uma
documentação com doctest.
Globalcode – Open4education
Documentação não é teste
Globalcode – Open4education
Documentação não é teste
Documentação deve ser clara e sucinta.
Não se devem cobrir todos os edge cases em uma
documentação com doctest.
Assim, doctest não substitui a necessidade de
testes automatizados.
Globalcode – Open4education
Documentação não é teste
Globalcode – Open4education
Documentação não é teste
Se documentação não substitui testes, qual dos
dois o desenvolvedor preferirá?
Globalcode – Open4education
Documentação não é teste
Se documentação não substitui testes, qual dos
dois o desenvolvedor preferirá?
A resposta, por muito tempo, era: nenhum
Globalcode – Open4education
Documentação não é teste
Se documentação não substitui testes, qual dos
dois o desenvolvedor preferirá?
A resposta, por muito tempo, era: nenhum.
Hoje, preferem testes. Por quê?
Porque TDD é divertido e estimulante!
Globalcode – Open4education
Uma metodologia para
documentação executável
Globalcode – Open4education
Uma metodologia
E se documentarmos antes de implementarmos?
Globalcode – Open4education
Uma metodologia
Desenvolvimento Orientado à Documentação
Novo artefato:
Crie o módulo, classe ou assinatura de função.
Escreva a docstring.
Rode doctest.
Implemente o artefato para fazer o doctest passar.
Globalcode – Open4education
Uma metodologia
Desenvolvimento Orientado à Documentação
Alterar comportamento:
Acrescente doctests à docstring.
Rode doctest.
Altere o artefato para fazer o doctest passar.
Globalcode – Open4education
Uma metodologia
Desenvolvimento Orientado à Documentação
Bonus points: copie a docstring para o README.
Globalcode – Open4education
Uma metodologia
Hora da demonstração
Globalcode – Open4education
Por que eu faria isso?
Globalcode – Open4education
Os ganhos de doctest
Clareza do código
Melhores assinaturas.
Menos interdependências.
Menores unidades de código.
Mais documentação
Documentação atualizada (obviamente)
Desenvolvedores “plantando sementes”
Documentação interna
Globalcode – Open4education
Clareza de código
Melhores assinaturas
Se ao explicar a assinatura de uma função, ou os
métodos de uma classe, você encontra dificuldade, isto
é um sinal de que é possível melhorar esses aspectos.
Esta não é uma questão arquitetural, mas é relevante.
TDD não ajuda muito aqui necessariamente.
Globalcode – Open4education
Clareza de código
Menos interdependências.
TDD facilita extrair grandes blocos de código.
Surge dependência entre o código extraído e o antigo.
Dependências são geralmente detalhes de
implementação, difíceis de explicar.
Se você tiver de documentá-las, terá um incentivo para
torná-las transparentes.
Globalcode – Open4education
Clareza de código
Menores unidades de código
Blocos de código complicados incentivam comentários.
Mas comentários podem ficar desatualizados.
Uma solução:
Mova o bloco para uma função.
Escreva uma docstring para a função.
Ponha doctests na docstring.
Globalcode – Open4education
Mais documentação
Sementes de documentação
Documentação, assim como QA, é uma disciplina.
Você vai querer um time dedicado.
O desenvolvedor tem conhecimento fundamental.
Globalcode – Open4education
Mais documentação
Sementes de documentação
Para programadores, documentar é... chato.
Aproximar do código ajuda. Mas não resolve
Quem gosta de escrever JavaDoc?
Documentação executável é muito mais interessante!
Desenvolvedores bem mais motivados a explicar em docstrings.
As docstrings são “sementes” para os documentadores
expandirem.
Globalcode – Open4education
Mais documentação
Documentação interna
Um pedido comum dos recém-contratados:
“A gente tem documentação para essa classe?”
Geralmente classes internas, resultados de refatoração.
Não há documentação.
Time de documentação foca nas APIs externas.
Globalcode – Open4education
Mais documentação
Documentação interna
Ou o time assume, ou não existe.
Docstrings são parte da solução.
Doctest aproxima o ato de documentar à experiência do
desenvolvedor.
Globalcode – Open4education
E aí, fez sentido?
Globalcode – Open4education
Um comentário off-topic
Eu trabalho para a Liferay. Estamos patrocinando o
TDC e temos uma trilha dedicada! Se você quer saber
mais sobre os produtos e processos de uma grande
empresa multinacional, passe lá! Também temos
muitas vagas abertas em liferay.com/careers.
Globalcode – Open4education
Obrigado!
Se tiverem perguntas, é só fazer!
Também podem me contatar por esses canais:
linkedin.com/in/brandizzi
twitter.com/adambrandizzi
adam@brandizzi.com.br
adam.brandizzi.com.br

Mais conteúdo relacionado

Mais procurados

TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação Icaro Camelo
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamentothiagodp
 
TDD direto das trincheiras
TDD direto das trincheirasTDD direto das trincheiras
TDD direto das trincheirasLuiz Borba
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETGabriel Schade Cardoso
 
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#Diego Gabriel Cardoso
 
Crescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidadeCrescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidadeFelipe Nascimento
 
Behaviour driven development, com jbehave
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehaveMarcelo Zeferino
 
F# para devs c# tdc
F# para devs c#   tdcF# para devs c#   tdc
F# para devs c# tdcLucas Teles
 
Tdc2013 - Trilha de Teste -
Tdc2013 - Trilha de Teste - Tdc2013 - Trilha de Teste -
Tdc2013 - Trilha de Teste - Leonardo Galani
 
TDC 2012 - Métricas de código na arquitetura
TDC 2012 - Métricas de código na arquiteturaTDC 2012 - Métricas de código na arquitetura
TDC 2012 - Métricas de código na arquiteturaLeandro Daniel
 
Testes unitarios no PostgreSQL com pgTAP
Testes unitarios no PostgreSQL com pgTAPTestes unitarios no PostgreSQL com pgTAP
Testes unitarios no PostgreSQL com pgTAPDickson S. Guedes
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012Luís Cobucci
 

Mais procurados (20)

Python tdc2019
Python tdc2019 Python tdc2019
Python tdc2019
 
TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação TDD: Técnicas, Benefícios e Limitação
TDD: Técnicas, Benefícios e Limitação
 
Coding Dojo - Funcionamento
Coding Dojo - FuncionamentoCoding Dojo - Funcionamento
Coding Dojo - Funcionamento
 
Refatorar é preciso! 2.0
Refatorar é preciso! 2.0Refatorar é preciso! 2.0
Refatorar é preciso! 2.0
 
TDD direto das trincheiras
TDD direto das trincheirasTDD direto das trincheiras
TDD direto das trincheiras
 
Teste Driven Development
Teste Driven DevelopmentTeste Driven Development
Teste Driven Development
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NET
 
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
 
Crescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidadeCrescendo profissionalmente com o apoio comunidade
Crescendo profissionalmente com o apoio comunidade
 
Behaviour driven development, com jbehave
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehave
 
F# para devs c# tdc
F# para devs c#   tdcF# para devs c#   tdc
F# para devs c# tdc
 
Tdc2013 - Trilha de Teste -
Tdc2013 - Trilha de Teste - Tdc2013 - Trilha de Teste -
Tdc2013 - Trilha de Teste -
 
TDC 2012 - Métricas de código na arquitetura
TDC 2012 - Métricas de código na arquiteturaTDC 2012 - Métricas de código na arquitetura
TDC 2012 - Métricas de código na arquitetura
 
Clean code v3
Clean code v3Clean code v3
Clean code v3
 
[RockAndRails] TDD com RSpec
[RockAndRails] TDD com RSpec[RockAndRails] TDD com RSpec
[RockAndRails] TDD com RSpec
 
Testes unitarios no PostgreSQL com pgTAP
Testes unitarios no PostgreSQL com pgTAPTestes unitarios no PostgreSQL com pgTAP
Testes unitarios no PostgreSQL com pgTAP
 
Gherkin
Gherkin   Gherkin
Gherkin
 
DDD e PHP - TDC 2012
DDD e PHP - TDC 2012DDD e PHP - TDC 2012
DDD e PHP - TDC 2012
 

Semelhante a Doctest - Documentação executável para Python

Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPRodrigo Dos Santos
 
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesTDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesSandro Giacomozzi
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...GessdaSilvaMachado
 
Existem informações valiosas escondidas nos code-reviews do seu time
Existem informações valiosas escondidas nos code-reviews do seu timeExistem informações valiosas escondidas nos code-reviews do seu time
Existem informações valiosas escondidas nos code-reviews do seu timeDécio Heinzelmann Luckow
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...Bruno Tanoue
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7tdc-globalcode
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosDionatan default
 
Organizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gostaOrganizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gostaJohnathan Cardoso
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Renato Groff
 
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...Rafael Chiavegatto
 
Do protótipo ao produto: técnicas que fazem sentido
Do protótipo ao produto: técnicas que fazem sentidoDo protótipo ao produto: técnicas que fazem sentido
Do protótipo ao produto: técnicas que fazem sentidoBarbara Wolff Dick
 
Da introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools FlowDa introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools FlowRicardo Longa
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Gabriel Rubens
 
TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017Renato Groff
 

Semelhante a Doctest - Documentação executável para Python (20)

Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
 
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesTDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
 
Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...Test driven development teste e design no mundo real by mauricio aniche (z-li...
Test driven development teste e design no mundo real by mauricio aniche (z-li...
 
Existem informações valiosas escondidas nos code-reviews do seu time
Existem informações valiosas escondidas nos code-reviews do seu timeExistem informações valiosas escondidas nos code-reviews do seu time
Existem informações valiosas escondidas nos code-reviews do seu time
 
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
TDC 2015 - Trilha PHP - Testes e Ambiente de Integração Contínua PHP para o D...
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7TDC2016POA | Trilha .NET - O que esperar do C# 7
TDC2016POA | Trilha .NET - O que esperar do C# 7
 
Introdução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anosIntrodução ao TDD (Test-Driven Development) - #guma10anos
Introdução ao TDD (Test-Driven Development) - #guma10anos
 
TDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - FloripaTDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - Floripa
 
Organizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gostaOrganizando a casa. o front end do jeitinho que a mamãe gosta
Organizando a casa. o front end do jeitinho que a mamãe gosta
 
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
Indo além dos testes de classes com BDD (Behavior-Driven Development) - Inter...
 
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...Testes de aceitação automatizados com robotium utilizando a técnica bdd   TDC...
Testes de aceitação automatizados com robotium utilizando a técnica bdd TDC...
 
Do protótipo ao produto: técnicas que fazem sentido
Do protótipo ao produto: técnicas que fazem sentidoDo protótipo ao produto: técnicas que fazem sentido
Do protótipo ao produto: técnicas que fazem sentido
 
Da introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools FlowDa introdução à prática com Drools Expert e Drools Flow
Da introdução à prática com Drools Expert e Drools Flow
 
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
Profissao-programador-praticas-para-melhoria-continua-unimonte-outubro-2013
 
TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017TDD e BDD - Developers-SP - Abril/2017
TDD e BDD - Developers-SP - Abril/2017
 

Mais de Adam Victor Brandizzi

Mais de Adam Victor Brandizzi (8)

Busca Textual com Elasticsearch
Busca Textual com ElasticsearchBusca Textual com Elasticsearch
Busca Textual com Elasticsearch
 
Learning to Rank
Learning to RankLearning to Rank
Learning to Rank
 
Centenas de Entidades, uma Única Pesquisa: Busca Textual com Elasticsearch
Centenas de Entidades, uma Única Pesquisa: Busca Textual com ElasticsearchCentenas de Entidades, uma Única Pesquisa: Busca Textual com Elasticsearch
Centenas de Entidades, uma Única Pesquisa: Busca Textual com Elasticsearch
 
Centenas de Bases, uma Única Pesquisa: Busca Textual com Elasticsearch
Centenas de Bases, uma Única Pesquisa: Busca Textual com ElasticsearchCentenas de Bases, uma Única Pesquisa: Busca Textual com Elasticsearch
Centenas de Bases, uma Única Pesquisa: Busca Textual com Elasticsearch
 
Issue Trackers para Programadores
Issue Trackers para ProgramadoresIssue Trackers para Programadores
Issue Trackers para Programadores
 
Dates, Times and Time Zones
Dates, Times and Time ZonesDates, Times and Time Zones
Dates, Times and Time Zones
 
Shell Script
Shell ScriptShell Script
Shell Script
 
Haskell
HaskellHaskell
Haskell
 

Doctest - Documentação executável para Python