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.
Todas as abordagens de testes dentro do ágilElias Nogueira
Palestra apresentada dia 10/11/2012 no Rio Agile Talks (@rioagile) mostrando a importância do Agile Testing e das visões que mudam sobre modelos, como o quadrande de Brian Merick que pode ser mudado/atualizado pelo novo uadrante proposto por Elisabeth Hendrickson, mas onde uma coida não muda: a pirâmide de automação de teste
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva minastestingconference
Como criar testes automatizados com alto valor de negócio e baixo custo de manutenção de código para construir software com qualidade? Não é novidade que uma das práticas para um time construir software com qualidade é a adoção de testes no processo de desenvolvimento. Mas é muito importante que os testes sejam efetivos para garantir a qualidade das funcionalidades já implementadas e das novas funcionalidades. Esta palestra tem como objetivo compartilhar padrões e ferramentas que, quando combinados, podem oferecer testes automatizados com alto valor de negócio e de baixa manutenção seguindo três passos: definir o valor do negócio, automatizar testes e refatorar para baixa manutenção.
Todas as abordagens de testes dentro do ágilElias Nogueira
Palestra apresentada dia 10/11/2012 no Rio Agile Talks (@rioagile) mostrando a importância do Agile Testing e das visões que mudam sobre modelos, como o quadrande de Brian Merick que pode ser mudado/atualizado pelo novo uadrante proposto por Elisabeth Hendrickson, mas onde uma coida não muda: a pirâmide de automação de teste
3 noções básicas para automação de testes efetivos - Taíse Dias da Silva minastestingconference
Como criar testes automatizados com alto valor de negócio e baixo custo de manutenção de código para construir software com qualidade? Não é novidade que uma das práticas para um time construir software com qualidade é a adoção de testes no processo de desenvolvimento. Mas é muito importante que os testes sejam efetivos para garantir a qualidade das funcionalidades já implementadas e das novas funcionalidades. Esta palestra tem como objetivo compartilhar padrões e ferramentas que, quando combinados, podem oferecer testes automatizados com alto valor de negócio e de baixa manutenção seguindo três passos: definir o valor do negócio, automatizar testes e refatorar para baixa manutenção.
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
DevOps Summit Brasil - O que não te contaram sobre Agile TestingSamanta Cicilia
A comunidade vem falando sobre Agile Testing já faz algum tempo. Termos como Testes Automatizados e Integração Contínua já estão no sangue dos times, mas isso é suficiente? Agile Testing é muito mais que apenas automatizar testes: é enfrentar os desafios e propor soluções que agreguem valor ao produto. Nessa palestra vamos falar de alguns desafios: - Estratégias para data setup em projetos de automação - Como distribuir (na prática) os testes dentro da Pirâmide de Automação de Testes - Desafios que já enfrentamos (por exemplo: como automatizar um login de aplicativo que precisa de um token que chega por SMS?) - Como pensar fora da caixa e agregar valor ao produto usando o mindset de testes
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
Tester, pegue suas coisas, você está demitidoLeonardo Galani
Abortar itens que testadores aprimorar para se tornarem mais técnicos e conseguirem se manter em seus empregos atuais ou conseguir aquela vaga tão sonhada.
Agile Testing é um mindset que tem sido discutido e aplicado em times que utilizam desenvolvimento ágil já faz algum tempo. Nessa palestra vamos entender esse mindset, como muda a disciplina de teste do ambiente tradicional de desenvolvimento para o ágil, por que é importante investir em testes automatizados e como disseminar a cultura de Qualidade dentro do seu time.
Meetup SP - O QA & a Especificação Por ExemploSamanta Cicilia
Especificação por exemplo é um conjunto de patterns que ajudam a construir o produto certo da maneira certa. Muitas pessoas atribuem sua utilização apenas a parte de teste de software, porém ela vai muito além disso e tem dicas valiosas sobre o quanto a colaboração pode nos ajudar a descobrir o que nossos clientes realmente precisam.
Palestra ministrada no evento Javou! #08, realizado pela comunidade JavaCE, dia 12/11/2016 no Auditório Nadir Papi Saboya, Faculdade Farias Brito, em Fortaleza-CE
Entregar software que atenda as objetivos do negócio, em pouco tempo e com um alto padrão de qualidade ainda é um desafio para muitas empresas já que processos de desenvolvimento são muitas vezes burocráticos Nessa palestra vamos mostrar como estamos implementando Entrega Contínua na Infoglobo. Serão abordados os seguintes temas:Introdução à Entrega Contínua de software - Pipeline de Entrega - Estágio de Commit - Deploys nos ambientes de teste - Smoke Tests -Testes de Performance Automatizados - Análise de Log - Promoção dos pacotes para cada ambiente - Testes Regressivos (Automatizados/Manuais) - Deploy em Produção - Desafios Culturais -Próximos Passos
Nesta apresentação faço uma referência ao livro "BDD in Action" do autor John Ferguson Smart, além de comentar os desafios e riscos para a implementação do BDD.
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
DevOps Summit Brasil - O que não te contaram sobre Agile TestingSamanta Cicilia
A comunidade vem falando sobre Agile Testing já faz algum tempo. Termos como Testes Automatizados e Integração Contínua já estão no sangue dos times, mas isso é suficiente? Agile Testing é muito mais que apenas automatizar testes: é enfrentar os desafios e propor soluções que agreguem valor ao produto. Nessa palestra vamos falar de alguns desafios: - Estratégias para data setup em projetos de automação - Como distribuir (na prática) os testes dentro da Pirâmide de Automação de Testes - Desafios que já enfrentamos (por exemplo: como automatizar um login de aplicativo que precisa de um token que chega por SMS?) - Como pensar fora da caixa e agregar valor ao produto usando o mindset de testes
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
Tester, pegue suas coisas, você está demitidoLeonardo Galani
Abortar itens que testadores aprimorar para se tornarem mais técnicos e conseguirem se manter em seus empregos atuais ou conseguir aquela vaga tão sonhada.
Agile Testing é um mindset que tem sido discutido e aplicado em times que utilizam desenvolvimento ágil já faz algum tempo. Nessa palestra vamos entender esse mindset, como muda a disciplina de teste do ambiente tradicional de desenvolvimento para o ágil, por que é importante investir em testes automatizados e como disseminar a cultura de Qualidade dentro do seu time.
Meetup SP - O QA & a Especificação Por ExemploSamanta Cicilia
Especificação por exemplo é um conjunto de patterns que ajudam a construir o produto certo da maneira certa. Muitas pessoas atribuem sua utilização apenas a parte de teste de software, porém ela vai muito além disso e tem dicas valiosas sobre o quanto a colaboração pode nos ajudar a descobrir o que nossos clientes realmente precisam.
Palestra ministrada no evento Javou! #08, realizado pela comunidade JavaCE, dia 12/11/2016 no Auditório Nadir Papi Saboya, Faculdade Farias Brito, em Fortaleza-CE
Entregar software que atenda as objetivos do negócio, em pouco tempo e com um alto padrão de qualidade ainda é um desafio para muitas empresas já que processos de desenvolvimento são muitas vezes burocráticos Nessa palestra vamos mostrar como estamos implementando Entrega Contínua na Infoglobo. Serão abordados os seguintes temas:Introdução à Entrega Contínua de software - Pipeline de Entrega - Estágio de Commit - Deploys nos ambientes de teste - Smoke Tests -Testes de Performance Automatizados - Análise de Log - Promoção dos pacotes para cada ambiente - Testes Regressivos (Automatizados/Manuais) - Deploy em Produção - Desafios Culturais -Próximos Passos
Nesta apresentação faço uma referência ao livro "BDD in Action" do autor John Ferguson Smart, além de comentar os desafios e riscos para a implementação do BDD.
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.
Demonstração de TDD com JUnit sobre um algoritmo de árvore binária.
Conteúdo referente à disciplina Engenharia de Software do curso de Ciência da Computação do Centro Universitário de Belo Horizonte (UniBH), ministrada pelo professor Paulo Henrique Ladeira.
Atenção à órdem dos commits, eles identificam o processo de geração de assinaturas dos métodos, geração de testes e implementação do código.
Código da árvore binária inspirado no seguinte respoitório: https://github.com/Renants/Arvore
Código disponível no repositório https://github.com/guiAlberto/JUnit-Sample
Apresentação sobre TDD(Test-Driven Development) realizada em 18/04/2013.
Tópicos abordados:
- Motivos que contribuem para a falta de testes
- Quais os impactos da falta de testes?
- Visão geral dos diferentes tipos de testes na área de software
- Testes unitários e a plataforma .NET
- TDD: conceitos gerais
- Implementação de um exemplo prático
- Testes unitários e o Visual Studio 2015
Nesta palestra iremos abordar os principais conceitos relacionados ao Desenvolvimento Orientado a Testes (TDD - Test Driven Development) e usaremos exemplos práticos para ilustrar essa poderosa técnica de desenvolvimento de software.
3. Regras fundamentais do TDD:
Escreva o teste da implementação ANTES de
escrevê-la
Escreva somente código suficiente para o teste
passar e nada além disso
Escreva testes pequenos: teste a menor
quantidade possível de código de cada vez
Escreva testes muito rápidos: não devem
demorar mais do que alguns segundos para
serem executados
4. Etapas da programação com TDD:
1. Criar um teste
2. Executar todos os testes da aplicação para ver
o novo teste falhar
3. Escrever a implementação testada
4. Executar os testes para ver se todos passarão
5. Refactoring
6. Executar os testes novamente para garantir
que eles continuam passando
6. Tipos de testes:
• Testes Unitários
• Testes de Integração
• Testes de Aceitação
7. 1. Testes Unitários:
Testam apenas um componente do sistema
Todos os outros componentes são simulados
(mock objects)
Ex. ferramentas: JUnit, JMock
Fundamental para a prática do TDD!
8. 2. Testes de Integração:
Testam a integração entre componentes
Envolvem dois ou mais componentes
(classes+SGBD, classes+SGBD+webservices,
vários layers da aplicação, etc.)
Ex. ferramentas: JUnit, DBUnit, HSQLDB
Normalmente não utilizado em TDD
9. 3. Testes de Aceitação:
Testam uma história, funcionalidade ou caso de
uso
Envolvem vários componentes do sistema
Ex. ferramentas: JUnit, Selenium, Fit/FitNesse
Utilizado em TDD
21. 11. Execução do teste:
(teste passou: temos 100% de certeza que o código CONTINUA funcionando e que
nenhum componente que depende deste código quebrou após o refactor)
27. Consequências:
Suite de regressão
Testes completos podem ser executados no build:
aplicação não sobe para produção se não passar no teste
de regressão
Testes também pode ser feitos na IDE
Não há necessidade de deploy da aplicação para
execução dos testes
Bugs são encontrados com maior facilidade e corrigidos
com maior velocidade
Bugs comprovados por testes unitários
28. Consequências:
Código mais testável
Estimula um design melhor
Força que os designs antigos que são pouco testáveis
sejam refatorados
Facilita o refactoring
Evita “overdesign”
Só se escreve código suficiente para o teste passar
Evita que o desenvolvedor tente adivinhar o futuro
Colabora com a documentação
32. Conclusões:
Colabora para o aumento da qualidade dos
sistemas
Desenvolvedores ficam mais corajosos e
confiantes ao programar!
Software cresce de forma ordenada e com
qualidade de design
Software se adapta com mais facilidade a
mudanças
34. Conclusões:
Demora mais?
No início é necessário escrever muitos testes
Depois da inércia a suite de regressão está pronta e
escrevem-se menos testes
Certeza de que a implementação está funcionando
Maioria dos bugs encontrados em tempo de
desenvolvimento
Bugs de produção são encontrados e corrigidos com
muito mais velocidade
Então no fim das contas demora-se muito menos
tempo e com muito mais qualidade!
36. Leitura complementar:
Introduction to TDD: http://www.agiledata.org/essays/tdd.html
Desenvolvimento Orientado a Testes:
http://www.improveit.com.br/xp/praticas/tdd
Screencast TDD em ação:
http://dojofloripa.wordpress.com/2007/05/21/screencast-tdd-em-
acao/
Improve your unit tests by replacing your collaborators with mock
objects: http://www.opensourcetutorials.com/tutorials/Server-Side-
Coding/Java/java-unit-testing-with-mock-objects
Behaviour-Driven Development: http://behaviour-driven.org/