1) O documento discute técnicas e ferramentas para testes e depuração de código Python, incluindo testes de unidade, integração e doctest.
2) É apresentada uma agenda com visão geral sobre testes e depuração de software, além de técnicas, processos e ferramentas para cada tópico.
3) O documento fornece detalhes sobre módulos e princípios para testes de unidade em Python, como unittest, pytest e nose, assim como técnicas de depuração como print, logging e debug
O documento apresenta uma introdução ao Python e serviços web. Ele discute quem é o apresentador, o que é Python, sua história e implementações, características como tipagem dinâmica e sintaxe concisa, bibliotecas padrão e exemplos de uso. Também aborda conceitos de serviços web como XML, SOAP e REST antes de demonstrar o uso da biblioteca SUDS para consumir uma API SOAP.
O documento apresenta uma introdução à linguagem de programação Python. Ele discute o que é Python, sua história, implementações, sintaxe, biblioteca padrão e comunidades de usuários. Exemplos de uso da linguagem são apresentados e detalhes sobre eventos e a Associação Python Brasil são fornecidos.
Go é uma linguagem de programação open source que faz com que seja fácil construir software simples, confiável e eficiente. A linguagem foi projetada para lidar com grandes sistemas de software, melhorando a produtividade e permitindo a manutenção de código em larga escala. Go não possui herança como em outras linguagens, mas sim composição, onde tipos estruturados podem incorporar campos de outros tipos.
O documento discute práticas ágeis como Test Driven Development (TDD) e como escrever testes automatizados para o framework Django. Apresenta dicas como usar ferramentas como nosetests, django-nose e django-test-utils para facilitar a escrita e execução de testes. Defende que testes são essenciais para refatorar código com tranquilidade e que TDD, embora inicialmente demorado, torna-se mais rápido com a prática.
Django - A sua cápsula de soluções web em pythonPaula Grangeiro
Django é um framework web em Python que facilita o desenvolvimento de aplicações web. Ele inclui recursos como ORM, autenticação, administração e templates para reduzir a complexidade de desenvolvimento. A arquitetura MVT do Django organiza a aplicação em modelos, views e templates.
O documento apresenta uma palestra sobre o uso de Python e Django na Globo.com. Resume os principais pontos como: 1) a Globo.com usa Python/Django há 11 anos com metodologias ágeis; 2) antes usava Java/Vignette com problemas, agora tem desenvolvimento orientado a testes; 3) Django ajuda a construir aplicações, mas não é perfeito e às vezes é preciso ignorá-lo.
O documento apresenta uma introdução ao Python e serviços web. Ele discute quem é o apresentador, o que é Python, sua história e implementações, características como tipagem dinâmica e sintaxe concisa, bibliotecas padrão e exemplos de uso. Também aborda conceitos de serviços web como XML, SOAP e REST antes de demonstrar o uso da biblioteca SUDS para consumir uma API SOAP.
O documento apresenta uma introdução à linguagem de programação Python. Ele discute o que é Python, sua história, implementações, sintaxe, biblioteca padrão e comunidades de usuários. Exemplos de uso da linguagem são apresentados e detalhes sobre eventos e a Associação Python Brasil são fornecidos.
Go é uma linguagem de programação open source que faz com que seja fácil construir software simples, confiável e eficiente. A linguagem foi projetada para lidar com grandes sistemas de software, melhorando a produtividade e permitindo a manutenção de código em larga escala. Go não possui herança como em outras linguagens, mas sim composição, onde tipos estruturados podem incorporar campos de outros tipos.
O documento discute práticas ágeis como Test Driven Development (TDD) e como escrever testes automatizados para o framework Django. Apresenta dicas como usar ferramentas como nosetests, django-nose e django-test-utils para facilitar a escrita e execução de testes. Defende que testes são essenciais para refatorar código com tranquilidade e que TDD, embora inicialmente demorado, torna-se mais rápido com a prática.
Django - A sua cápsula de soluções web em pythonPaula Grangeiro
Django é um framework web em Python que facilita o desenvolvimento de aplicações web. Ele inclui recursos como ORM, autenticação, administração e templates para reduzir a complexidade de desenvolvimento. A arquitetura MVT do Django organiza a aplicação em modelos, views e templates.
O documento apresenta uma palestra sobre o uso de Python e Django na Globo.com. Resume os principais pontos como: 1) a Globo.com usa Python/Django há 11 anos com metodologias ágeis; 2) antes usava Java/Vignette com problemas, agora tem desenvolvimento orientado a testes; 3) Django ajuda a construir aplicações, mas não é perfeito e às vezes é preciso ignorá-lo.
Django Channels - Aplicações real time com DjangoPaula Grangeiro
Já ouviu falar de Channels? Não? Nesta talk vamos destrinchar um pouco mais dessa feature que permite requisições assíncronas no Django e que é perfeita para o desenvolvimento de aplicações real time.
O documento fornece uma visão geral do TypeScript, incluindo o que é TypeScript, compatibilidade com o Visual Studio e frameworks JavaScript, e recomendações para uso.
O documento apresenta uma palestra sobre TypeScript. Resume-se em 3 frases:
1) TypeScript é um superconjunto de JavaScript que adiciona tipagem estática e outras funcionalidades, como classes e módulos, compilando para código JavaScript executável.
2) A palestra discute os principais recursos de tipagem e modularização do TypeScript, comparando-o com CoffeeScript, e demonstra como debugar código TypeScript diretamente na linguagem.
3) Também apresenta como usar TypeScript em diversos ambientes como Node.js, Visual Studio,
O documento discute a ferramenta Vagrant, que permite criar e configurar ambientes de desenvolvimento virtualizados de forma consistente. Vagrant usa arquivos VagrantFile e boxes para automatizar a configuração de máquinas virtuais, eliminando diferenças entre ambientes de desenvolvimento e produção. O documento lista alguns dos principais comandos do Vagrant como vagrant up, vagrant ssh e vagrant destroy.
Este documento discute o desenvolvimento de protótipos mínimos viáveis (MVPs) usando a linguagem de programação Python. Ele fornece exemplos de código Python simples e explica como Python pode ser usado para construir rapidamente MVPs de baixo custo para validar ideias de negócios.
Integração contínua - Você não tem dsculpa para não usarThiago Paes
O documento discute a importância da integração contínua e como ela pode prevenir falhas no processo de desenvolvimento de software. Ele também apresenta algumas ferramentas populares de integração contínua como Travis CI, Codeship e Jenkins, destacando seus pontos fortes e fracos. Por fim, o autor enfatiza que a integração contínua é essencial para garantir a qualidade do código e evitar problemas.
Este documento discute como viver como hacker ético. Apresenta o autor Antonio Costa e seu trabalho como desenvolvedor de segurança e membro do BugSec Team. Discute várias maneiras de seguir uma carreira em segurança cibernética, incluindo participar de conferências, hackerspaces e publicações on-line. Também aborda vários tipos de vulnerabilidades e técnicas de hacking ético, como SQL injection e fuzzing.
1. Apresentação sobre os mitos e esclarecimentos sobre o framework web2py
2. O framework segue os princípios pythonicos de não repetição de código e haver uma única maneira de se fazer algo
3. Apesar de alguns acharem que o framework não é pythonico por usar exec() e import implícito, ele explica porque isso torna o código mais conciso
Testes unitários como ferramentas de design de códigoPaula Grangeiro
Este documento discute como testes unitários podem ser usados como ferramentas de design de código. Testes unitários ajudam a identificar responsabilidades de classes e reduzir acoplamento. Praticar TDD, manter testes pequenos e isolados, e pensar em fluxos alternativos melhora a coesão e estrutura do código.
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 como empreender com Python e Django, fornecendo instruções sobre como escolher uma ideia, desenvolver um produto mínimo viável, hospedar o site e obter feedback inicial.
O documento discute técnicas para burlar um WAF (Web Application Firewall), incluindo detectar a presença de um WAF, usar variações de caixa, substituir palavras-chave, adicionar comentários, codificar payloads, automatizar ataques e sugestões para mitigação.
Django é um framework web Python que segue o padrão MVC. Ele enfatiza reuso, modularidade e produtividade com código limpo e manutenível. Django possui recursos como mapeamento objeto-relacional, URL dispatcher, sistema de views e templates para produzir páginas dinâmicas usando bancos de dados.
O documento discute as desvantagens de publicar arquivos manualmente em produção e propõe a adoção de estratégias de deploy automatizado como Continuous Integration e Continuous Delivery. O autor apresenta ferramentas como Git, Capistrano e outros para automatizar o deploy e garantir que as alterações sejam publicadas de forma segura, controlada e revertida caso necessário. Ele também enfatiza a importância de testes automatizados e ambientes de homologação para evitar problemas.
O documento discute as vantagens e desvantagens de Ruby e Python para o desenvolvimento de um projeto. Ruby é rápido para desenvolvimento, orientado a objetos e tem uma comunidade ativa. Python também é orientado a objetos, de código aberto e possui bons frameworks. Ambas as linguagens possuem desvantagens relacionadas a segurança e desempenho.
O documento discute alternativas ao uso manual do FTP para deploy de aplicações, mencionando ferramentas como Git-FTP, Git-deploy, Capistrano, FTPloy, Deploybot e ContinuousPHP que automatizam o processo de deploy de forma segura e confiável. O documento enfatiza a importância de se ter uma estratégia de deploy clara.
Este documento fornece informações sobre como burlar um WAF (Web Application Firewall) em 3 frases ou menos. O documento discute técnicas como usar maiúsculas e minúsculas, substituir palavras-chave, usar espaços em branco como comentários e codificar payloads para evitar detecção. Ele também descreve ferramentas para automatizar ataques como Payloadmask e 0d1n.
O documento discute testes de integração em microservices, apresentando testes unitários, testcontainers para testes de integração e GraalVM para compilação em linguagem de máquina. Inclui exemplos de testes unitários com mock e embedded database e uso de testcontainers para validar integração entre serviços e banco de dados.
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
Minicurso ministrado na XII SemanaTI na UNIVEM - Marília/SP, nos dias 23 e 24 de setembro de 2019. O título do minicurso é Técnicas de Teste e Automatização do Teste de Unidade e o minicurso tratava na teoria sobre algumas técnicas de Teste de Software, bem como a Técnica de Teste Estrutural, Teste Funcional e Teste Baseado em Defeitos, assim como aprendemos sobre a fase do Teste de Unidade, e ali, aplicamos na prática a Técnica de Teste Estrutural e tratamos sobre a teoria e a prática da automação de testes.
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
O documento discute testes de software e desenvolvimento orientado a testes (TDD). Ele apresenta os principais tópicos: 1) razões para testar software e automatizar testes; 2) tipos de testes como unitários e de integração; 3) os princípios e benefícios do TDD; 4) um exemplo prático de implementação de testes unitários usando TDD.
Django Channels - Aplicações real time com DjangoPaula Grangeiro
Já ouviu falar de Channels? Não? Nesta talk vamos destrinchar um pouco mais dessa feature que permite requisições assíncronas no Django e que é perfeita para o desenvolvimento de aplicações real time.
O documento fornece uma visão geral do TypeScript, incluindo o que é TypeScript, compatibilidade com o Visual Studio e frameworks JavaScript, e recomendações para uso.
O documento apresenta uma palestra sobre TypeScript. Resume-se em 3 frases:
1) TypeScript é um superconjunto de JavaScript que adiciona tipagem estática e outras funcionalidades, como classes e módulos, compilando para código JavaScript executável.
2) A palestra discute os principais recursos de tipagem e modularização do TypeScript, comparando-o com CoffeeScript, e demonstra como debugar código TypeScript diretamente na linguagem.
3) Também apresenta como usar TypeScript em diversos ambientes como Node.js, Visual Studio,
O documento discute a ferramenta Vagrant, que permite criar e configurar ambientes de desenvolvimento virtualizados de forma consistente. Vagrant usa arquivos VagrantFile e boxes para automatizar a configuração de máquinas virtuais, eliminando diferenças entre ambientes de desenvolvimento e produção. O documento lista alguns dos principais comandos do Vagrant como vagrant up, vagrant ssh e vagrant destroy.
Este documento discute o desenvolvimento de protótipos mínimos viáveis (MVPs) usando a linguagem de programação Python. Ele fornece exemplos de código Python simples e explica como Python pode ser usado para construir rapidamente MVPs de baixo custo para validar ideias de negócios.
Integração contínua - Você não tem dsculpa para não usarThiago Paes
O documento discute a importância da integração contínua e como ela pode prevenir falhas no processo de desenvolvimento de software. Ele também apresenta algumas ferramentas populares de integração contínua como Travis CI, Codeship e Jenkins, destacando seus pontos fortes e fracos. Por fim, o autor enfatiza que a integração contínua é essencial para garantir a qualidade do código e evitar problemas.
Este documento discute como viver como hacker ético. Apresenta o autor Antonio Costa e seu trabalho como desenvolvedor de segurança e membro do BugSec Team. Discute várias maneiras de seguir uma carreira em segurança cibernética, incluindo participar de conferências, hackerspaces e publicações on-line. Também aborda vários tipos de vulnerabilidades e técnicas de hacking ético, como SQL injection e fuzzing.
1. Apresentação sobre os mitos e esclarecimentos sobre o framework web2py
2. O framework segue os princípios pythonicos de não repetição de código e haver uma única maneira de se fazer algo
3. Apesar de alguns acharem que o framework não é pythonico por usar exec() e import implícito, ele explica porque isso torna o código mais conciso
Testes unitários como ferramentas de design de códigoPaula Grangeiro
Este documento discute como testes unitários podem ser usados como ferramentas de design de código. Testes unitários ajudam a identificar responsabilidades de classes e reduzir acoplamento. Praticar TDD, manter testes pequenos e isolados, e pensar em fluxos alternativos melhora a coesão e estrutura do código.
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 como empreender com Python e Django, fornecendo instruções sobre como escolher uma ideia, desenvolver um produto mínimo viável, hospedar o site e obter feedback inicial.
O documento discute técnicas para burlar um WAF (Web Application Firewall), incluindo detectar a presença de um WAF, usar variações de caixa, substituir palavras-chave, adicionar comentários, codificar payloads, automatizar ataques e sugestões para mitigação.
Django é um framework web Python que segue o padrão MVC. Ele enfatiza reuso, modularidade e produtividade com código limpo e manutenível. Django possui recursos como mapeamento objeto-relacional, URL dispatcher, sistema de views e templates para produzir páginas dinâmicas usando bancos de dados.
O documento discute as desvantagens de publicar arquivos manualmente em produção e propõe a adoção de estratégias de deploy automatizado como Continuous Integration e Continuous Delivery. O autor apresenta ferramentas como Git, Capistrano e outros para automatizar o deploy e garantir que as alterações sejam publicadas de forma segura, controlada e revertida caso necessário. Ele também enfatiza a importância de testes automatizados e ambientes de homologação para evitar problemas.
O documento discute as vantagens e desvantagens de Ruby e Python para o desenvolvimento de um projeto. Ruby é rápido para desenvolvimento, orientado a objetos e tem uma comunidade ativa. Python também é orientado a objetos, de código aberto e possui bons frameworks. Ambas as linguagens possuem desvantagens relacionadas a segurança e desempenho.
O documento discute alternativas ao uso manual do FTP para deploy de aplicações, mencionando ferramentas como Git-FTP, Git-deploy, Capistrano, FTPloy, Deploybot e ContinuousPHP que automatizam o processo de deploy de forma segura e confiável. O documento enfatiza a importância de se ter uma estratégia de deploy clara.
Este documento fornece informações sobre como burlar um WAF (Web Application Firewall) em 3 frases ou menos. O documento discute técnicas como usar maiúsculas e minúsculas, substituir palavras-chave, usar espaços em branco como comentários e codificar payloads para evitar detecção. Ele também descreve ferramentas para automatizar ataques como Payloadmask e 0d1n.
O documento discute testes de integração em microservices, apresentando testes unitários, testcontainers para testes de integração e GraalVM para compilação em linguagem de máquina. Inclui exemplos de testes unitários com mock e embedded database e uso de testcontainers para validar integração entre serviços e banco de dados.
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
Minicurso ministrado na XII SemanaTI na UNIVEM - Marília/SP, nos dias 23 e 24 de setembro de 2019. O título do minicurso é Técnicas de Teste e Automatização do Teste de Unidade e o minicurso tratava na teoria sobre algumas técnicas de Teste de Software, bem como a Técnica de Teste Estrutural, Teste Funcional e Teste Baseado em Defeitos, assim como aprendemos sobre a fase do Teste de Unidade, e ali, aplicamos na prática a Técnica de Teste Estrutural e tratamos sobre a teoria e a prática da automação de testes.
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
O documento discute testes de software e desenvolvimento orientado a testes (TDD). Ele apresenta os principais tópicos: 1) razões para testar software e automatizar testes; 2) tipos de testes como unitários e de integração; 3) os princípios e benefícios do TDD; 4) um exemplo prático de implementação de testes unitários usando TDD.
A apresentação discute a importância da depuração para desenvolvedores, fornecendo um guia rápido em 8 etapas para depuração eficiente e como utilizar as ferramentas de depuração no Visual Studio Code.
O documento discute princípios de código limpo, incluindo: 1) tratar erros com exceções em vez de códigos de retorno; 2) limitar dependências de código de terceiros; 3) escrever testes de unidade limpos e automatizados para guiar o desenvolvimento. Ele também aborda tópicos como classes pequenas com responsabilidade única, separação de construção e uso de sistemas, e refinamento contínuo aplicando boas práticas.
O documento descreve o desenvolvimento guiado por testes (Test-Driven Development - TDD), incluindo suas regras fundamentais, etapas, tipos de testes, demonstração de um exemplo e conclusões sobre os benefícios do TDD.
[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).
Qualidade no desenvolvimento de Software com TDD e PHPUnitDomingos Teruel
O documento discute testes de software e desenvolvimento orientado a testes (TDD) usando PHPUnit. Ele introduz TDD, testes unitários, e PHPUnit, e enfatiza a importância da qualidade de software e dos testes para prevenir erros.
O documento apresenta os conceitos e objetivos do desenvolvimento orientado a testes (TDD). O TDD é uma metodologia que propõe escrever testes unitários antes de implementar o código, seguindo os passos vermelho-verde-refatoração. O documento explica os benefícios do TDD, como código de melhor qualidade e facilidade de refatoração.
O que seus testes garantem, o funcionamento do código ou das funcionalidades ...Isaac de Souza
A importância de testes de software já deveriam ser um consenso entre times de desenvolvimento. Contudo ainda há profissionais que não compreendem o valor deles, um dos motivos é que de fato muitos softwares possuem testes mas continuam a apresentar bugs a cada entrega. Isso ocorre porque é comum os testes garantirem o funcionamento do código, mas não das funcionalidades como um todo. Na apresentação será abordado como equilibrar testes unitários, de componentes e de integração organizando-os através de uma visão mais direcionada ao negócio, features e histórias do que apenas ao código implementado.
O documento discute testes de software, apresentando conceitos como objetivos de teste de software, frameworks xUnit e PHPUnit. Também fornece exemplos de código PHP para testes de unidade usando PHPUnit.
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/).
Automação de Testes: Ferramentas e Aplicação com Integração ContínuaGabriela Patuci
O documento discute a automação de testes de software e a integração contínua. Ele apresenta diferentes tipos de testes que podem ser automatizados, como fumaça, unitário e de regressão. Ferramentas como Selenium e Hudson são descritas para auxiliar na automação e integração contínua. A integração contínua é definida como a prática de integrar frequentemente códigos desenvolvidos e executar testes automatizados para garantir a qualidade do software.
O documento descreve os conceitos e benefícios do Desenvolvimento Guiado por Testes (TDD), incluindo suas regras fundamentais, ciclo de desenvolvimento, tipos de testes, e consequências como código mais testável e integração contínua.
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
O documento resume as estratégias e ferramentas para testes de performance, incluindo: (1) testes de carga, desempenho e stress; (2) a ferramenta JMeter para automatizar testes; (3) exemplos de melhorias detectadas em testes como aumento de hardware e otimização de código.
O documento discute como criar testes de interface do usuário (e2e) que sejam rápidos, robustos e de fácil manutenção. Ele explica a importância da automação de testes, os problemas comuns de testes e2e, e estratégias para torná-los independentes, paralelizados e baseados em padrões de teste.
Aqui são apresentados as técnicas do framework JUnit
/**Depois que entrei no mundo Java, começei a procurar por conteúdo na internet para estudar, então me deparei com um ótimo site, http://www.argonavis.com.br, de um grande cara chamado Helder Rocha, que disponibiliza este mesmo conteúdo em seu site também. Obrigado pela ajuda a comunidade.*/
O documento discute as vantagens de testes automatizados e desenvolvimento guiado por testes (TDD) para projetos Django. Apresenta diversas ferramentas para teste em Django como nose, django-nose e django-test-utils e discute técnicas como testes unitários, de integração e de regressão. Defende que testes automatizados trazem tranquilidade para refatoração e que TDD, apesar de inicialmente lento, torna-se mais rápido com o tempo.
Testes automatizados de software são essenciais para garantir a qualidade do software e evitar prejuízos. Testes manuais são difíceis, demorados e cobrem poucos casos, enquanto testes automatizados rodam rápido, cobrem muitos casos e ajudam na manutenção do código e documentação. É importante começar a automatizar testes desde o início do projeto, para garantir a testabilidade do código.
Semelhante a Testes e depuração de código com Python (20)
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
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
1. Testes e Depuração
de Código com
Python
CONSEGI, Brasília
20 de Agosto de 2010
http://www.python.org.br
http://associacao.python.org.br
2. Agenda
‣ Visão geral sobre testes de software
‣ Técnicas, processos e ferramentas
de testes
‣ Visão geral sobre depuração de
software
‣ Técnicas, processos e ferramentas
de depuração
3. O que esta oficina
‣ 100% prática
‣ Uma referência completa sobre o
assunto
‣ Algo muito útil para
desenvolvedores já experientes
‣ A solução para todos os seus
problemas
‣ Então para começar descontraído...
7. Testes: Princípios
‣ Para cada entrada, definir a saída
esperada
‣ Deve testar uma entrada por vez
‣ Deve testar entradas válidas e
inválidas
‣ Deve agregar valor ao software
‣ E se você falhar...
8.
9. Testes:
‣ Devem rodar sem interação humana
na entrada de dados
‣ Devem verificar os resultados sem
interação humana
‣ Devem rodar de forma
independente, sem que um teste
cause efeitos colaterais em outros
‣ Se causar...
10.
11. Testes: Vantagens
‣ Garante que o código funcione da
forma esperada, para as situações
testadas
‣ Serve como exemplo/modelo de
como o código desenvolvido pode/
deve ser usado
‣ Dá segurança ao desenvolvedor (ou
a outros membos da equipe de
desenvolvimento) para efetuar
12. Testes:
‣ Alguns testes podem demandar
bastante tempo para serem escritos
‣ O desenvolvedor passa a ter que
manter o código e os testes do
código
‣ Testes não garantem código sem
bugs
‣ Obviamente tinha que existir algo
ruim...
13.
14. Martin Fowler Rules
‣ Não tenha medo de modificar o
código
‣ Integre cedo, integre
frequentemente
‣ Sempre escreva testes
‣ Sempre rode seus testes
‣ Sempre preste atenção quando os
seus testes falharem
15. Testes: Golden
‣ Os testes devem ser reproduzíveis
em todos os aspectos: atenção
especial quando usar data, hora,
fuso horário, arredondamento,
variáveis de ambiente, ...
‣ Sempre teste as condições de
borda/limite: minuto e segundo
antes e depois da meia-noite,
primeiro/último elementos
17. Módulo unittest
‣ Baseado no JUnit do Java (que por
sua vez foi baseado no framework
de testes do Smalltalk), introduzido
na versão 2.1 do Python
‣ http://docs.python.org/library/
unittest.html
‣ assertEqual, assertNotEqual,
assertRaises, assertTrue,
assertFalse, ...
18. Nomenclatura
‣ Test: teste propriamente dito
‣ Test Fixture: preparação necessária
para rodar um ou mais testes
‣ Test Case: agrupamento diferentes
testes sobre um mesmo assunto
‣ Test Suite: agrupamento diferentes
testes ou Test Cases que devem ser
executados juntos
19. Testes: Fixture
‣ setUp: método executado antes de
cada teste, usado para fornecer
qualquer inicialização necessária
‣ tearDown: método executado após
cada teste, usado para limpar a
inicialização utilizada
33. Testivus: Coverage
Numa manhã bem cedo um jovem
programador perguntou ao Grande
Mestre:
- “Estou pronto para escrever alguns
testes de unidade. Qual a cobertura
que devo buscar?”
O Grande Mestre respondeu: “Não se
preocupe com a cobertura, apenas
escreva bons testes.”
34. Testivus: Coverage
Mais tarde naquele dia, um segundo
programador perguntou a mesma
coisa.
O Grande Mestre então apontou para
uma panela com água fervente e disse:
- “Quantos grãos de arroz devo colocar
na panela?”
35. Testivus: Coverage
O programador, perplexo, respondeu:
- “Como poderei dizer? Depende de
quantas pessoas você pretende
alimentar, de quão famintas elas estão,
que outras comidas serão servidas,
quanto arroz está disponível e assim
por diante!”
- “Exatamente!”, disse o Grande
Mestre.
36. Testivus: Coverage
Perto do fim do dia, um terceiro
programador veio e fez a mesma
pergunta sobre cobertura de código.
“Oitenta porcento, no mínimo!”,
respondeu o Grande Mestre em voz
firme, batendo o punho na mesa!
O terceiro programador sorriu, curvou-
se e saiu.
37. Testivus: Coverage
Após essa última resposta, um jovem
aprendiz aproximou-se do Grande
Mestre e perguntou:
- “Grande mestre, hoje eu ouvi o
senhor responder a mesma pergunta
sobre cobertura de código com 3
diferentes respostas. Por quê?”
O Grande mestre levantou-se de sua
cadeira:
38. Testivus: Coverage
Depois deles encherem suas xícaras
com o chá verde quente e fumegante, o
Grande Mestre começou:
- “O primeiro programador é novo e
está apenas iniciando com os testes.
No momento ele tem um monte de
código e nenhum teste. Ele tem um
longo caminho a percorrer; focando na
cobertura de código neste momento
seria deprimente e completamente
39. Testivus: Coverage
- “É melhor ele apenas se acostumar a
escrever e executar alguns testes. Ele
pode se preocupar com a cobertura do
código mais tarde.”
- “O segundo programador, por outro
lado, é bastante experiente tanto na
programação quanto nos testes.
Quando eu respondi, pedindo-lhe
quantos grãos de arroz deveriam ser
colocados na panela, ajudei-o a
40. Testivus: Coverage
- “Ele conhece esse fatores melhor do
que eu, afinal é seu código. Não existe
uma única, simples, resposta, e ele é
inteligente o suficiente para lidar com a
verdade e trabalhar com isso."
- “Eu compreendo”, disse o jovem
aprendiz, mas se não há uma resposta
simples e única, então por que o
senhor disse ao terceiro programador:
“Oitenta porcento, no mínimo!”?
41. Testivus: Coverage
O Grande Mestre caiu na gargalhada e
completou:
- “O terceiro programador só quer
respostas simples, mesmo quando não
existem essas respostas simples... e no
fim ele ainda acaba não seguindo elas!”
O jovem aprendiz e o Grande Mestre
grisalho terminaram de beber o chá,
contemplando, em silêncio.
42. Depuração de
‣ Nem sempre é possível escrever
código do zero, com testes como
deveria ser
‣ Muitas vezes precisamos integrar
aplicações com bases de código
desconhecidas, não
documentadas e
sem testes...
‣ Pior ainda: quando você tiver que