SlideShare una empresa de Scribd logo
1 de 51
Codificamos
Erramos
Depuramos
 Não existe refactoring, apenas rework.
 Se tiver funcionando, não rela a mão.
 Teste é para os fracos.
 Quanto mais XGH você faz, mais precisará fazer.
 Existem 3 formas de se resolver um problema, a
correta, a errada e a XGH, que é igual à errada,
só que mais rápida.
 Seja autêntico, XGH não respeita padrões.
Escreva o código como você bem entender, se
resolver o problema, commit e era isso.
Usuáriofinal
Controlede qualidade
Desenvolvimento
Implantação
Assegurar
qualidade.
Manter código limpo,
simples e testável.
Prover documentação para membros
técnicos.
Repetir testes - Regressão Preparados para mudar rapidamente.
Adicionar um teste
rapidamente
Rodar todos os
testes e ver o
mais nova
falhando
Fazer uma
pequena
mudança
Rodar todos os
testes e ver
todos
funcionando
Refatorar para
remover
duplicações
SucessoErro
Não sei como testar
Vai demorar muito
mais.
Isso não dá para
testar
A funcionalidade é
muito fácil.
Melhor deixar
testes com os
testadores
ATDD é o ato de se definir testes de
aceitação colaborativa no reflexão de
requisitos de negócio, resultando numa
melhor compreensão dos objetivos de
uma estória.
Os testes em ATDD nos forçam a
chegar a um ponto de acordo concreto
sobre o exato comportamento que se
espera que o software deva ter.
• Criar uma conta com uma senha
• Efetuar o login com um nome de usuário válido e
senha
• O que deve acontecer se um usuário informar uma senha insegura?
• Você pode nos dar exemplos de senhas que você considera seguras e inseguras?
• Quais são exatamente os símbolos?
• E quanto a espaços?
• E o que fazer com relação a palavras de dicionário com substituições óbvias que atendam
• aos critérios mais ainda possam ser inseguras, como 'p@ssw0rd'?”
• E quanto a contas já existentes?
• Quando você vai considerar que esta funcionalidade está 'funcionando'?
• O que deve acontecer se um usuário informar uma senha insegura?
• Você pode nos dar exemplos de senhas que você considera seguras e inseguras?
• Quais são exatamente os símbolos?
• E quanto a espaços?
• E o que fazer com relação a palavras de dicionário com substituições óbvias que atendam
• aos critérios mais ainda possam ser inseguras, como 'p@ssw0rd'?”
• E quanto a contas já existentes?
• Quando você vai considerar que esta funcionalidade está 'funcionando'?
test_valid_returns_true_when_all_conventions_met
test_valid_returns_false_when_password_less_than_6_chars
test_valid_returns_false_when_password_missing_symbol
test_valid_returns_false_when_password_missing_letter
test_valid_returns_false_when_password_missing_number
Itens devolvidos devem retornar para o estoque
que um cliente compra um jumper preto
eu tenho três jumper pretos no estoque
ele retorna com o jumper preto para reembolso
eu devo ter quatro jumpers pretos no estoque
Itens substituídos devem ser retornados ao estoque
que uma cliente compra um vestido azul
eu tenho dois vestidos azuis no estoque
eu tenho três vestidos pretos no estoque
ela retorna com o vestido para uma troca por um preto
eu devo ter três vestidos azuis no estoque
dois vestidos pretos no estoque
Fake são objetos extremamente leves e performáticos, construídos para simular
uma funcionalidade de um componente que o depende, ao invés do
real.
Devemos utilizar objetos Fakes sempre que depende de outros
componentes:
1. Que não estão disponíveis;
2. São difíceis de serem testadas (por exemplo post em páginas web);
3. Resultam em maior lentidão na execução dos testes;
4. Maior complexidade no comportamento do método que vale a pena um
Test Stub ou Mock object.
Objetos Mock são criados para testar o comportamento de algum outro objeto
(real). Portanto, mocking é fingir completamente o objeto real e fazer algumas
operações de uma forma controlada para que o (teste) resultado como válido.
Mock é uma maneira poderosa de implementar verificação de comportamento
evitando a duplicação de código de teste entre os testes semelhantes,
delegando a tarefa de verificar as saídas do em Test Double.
Devemos utilizar objetos Mocks quando:
1. O objeto fornece resultados não-determinísticos (por exemplo, o tempo
atual ou a temperatura atual);
2. Possuem estados que não são fáceis de criar ou reproduzir (por exemplo,
um erro de rede);
3. É lento (por exemplo, uma base de dados completa, que tem de ser
inicializado antes do ensaio);
4. Ainda não existe ou pode mudar o comportamento;
5. Necessidade de incluir informações e métodos exclusivos para fins de teste e
não para a sua tarefa real.
Providenciam respostas pré-configuradas para as chamadas feitas
durante os testes, normalmente não respondem a nada que não esteja
programado para o teste.
Stubs também podem gravar informações sobre as chamadas, como um
gateway que lembra as mensagens que 'enviou', ou talvez apenas
quantas mensagens 'enviou'.
Mesmo teste de Stub para Mock.
Stubs providenciam respostas pré-
configuradas para as chamadas feitas
durante os testes, normalmente não
respondem a nada que não esteja
programado para o teste. Também podem
gravar informações sobre as chamadas,
estado das informações.
Mocks são objetos pré-programados com
informações que formam uma especificação
das chamadas que esperam receber.
Padrão Propósito Tem
Comportamento
Injeta entrada
indiretas no SUT
Manipula saídas
indiretas do SUT
Valores fornecidos
pelo testador
Exemplos
Dummy Object
Atributo ou
parâmetro do
método
Não
Não, nunca
chamado
Não, nunca
chamado
Não
Null, "Ignored
String", new
Object()
Test Stub
Verify indirect
inputs of SUT
Sim Sim Ignorá-los Inputs
Test Spy
Verify indirect
outputs of SUT
Sim Opicional
Captura-los para
verificação
posterior
Inputs (opicional)
Mock Object
Verifique saídas
indiretas do SUT
Sim optional
verifica a exatidão
de encontro às
expectativas
Inputs e outputs
(opcional)
Fake Object
Executar
(unrunnable)
testes (mais
rápido)
Sim Não Usa-los Nenhum
Emulador de
banco de dados
em memória
Temporary Test
Stub
Stand in for
procedural code
not yet written
Sim Nao Usa-los Nenhum
Emulador de
banco de dados
em memória
Invertion of
Control (IoC)
Service
Locator
Events Delegates
Template
Methods
Pattern
Dependency
Injection
Construtor
Injection
Property
Injection
Method
Injection
Testes automatizados para validar senhas seguras
Testes automatizados para validar senhas seguras
Testes automatizados para validar senhas seguras
Testes automatizados para validar senhas seguras

Más contenido relacionado

La actualidad más candente

Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDDPHP Day Curitiba
 
TDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaTDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaChristian Cunha
 
Concurso Professor Estado - Dicas Interpretação de Textos - Prof. Arnaldo
Concurso Professor Estado - Dicas Interpretação de Textos - Prof. ArnaldoConcurso Professor Estado - Dicas Interpretação de Textos - Prof. Arnaldo
Concurso Professor Estado - Dicas Interpretação de Textos - Prof. ArnaldoSindicato APEOC
 
// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018
// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018
// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018Tchelinux
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeterEdlaine Zamora
 
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosResolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosAndreano Lanusse
 
Modelagem Analítica – Queueing Theory (Part I)
Modelagem Analítica – Queueing Theory (Part I)Modelagem Analítica – Queueing Theory (Part I)
Modelagem Analítica – Queueing Theory (Part I)Joao Galdino Mello de Souza
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
 
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...Joao Galdino Mello de Souza
 
Qualidade de Código
Qualidade de CódigoQualidade de Código
Qualidade de CódigoJoberto Diniz
 
O que testar abordagens de teste com ruby + rspec
O que testar abordagens de teste com ruby + rspecO que testar abordagens de teste com ruby + rspec
O que testar abordagens de teste com ruby + rspecClaudio Martins
 
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Edlaine Zamora
 
Testes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
Testes Funcionais e Estruturais utilizando Selenium IDE e CoberturaTestes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
Testes Funcionais e Estruturais utilizando Selenium IDE e CoberturaTiago Antônio da Silva
 
Testes Unitarios Com PostgreSQL
Testes Unitarios Com PostgreSQLTestes Unitarios Com PostgreSQL
Testes Unitarios Com PostgreSQLDiogo Biazus
 

La actualidad más candente (15)

Zend Framework Estrutura e TDD
Zend Framework Estrutura e TDDZend Framework Estrutura e TDD
Zend Framework Estrutura e TDD
 
TDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian CunhaTDD no Community Launch 2010 - Christian Cunha
TDD no Community Launch 2010 - Christian Cunha
 
Concurso Professor Estado - Dicas Interpretação de Textos - Prof. Arnaldo
Concurso Professor Estado - Dicas Interpretação de Textos - Prof. ArnaldoConcurso Professor Estado - Dicas Interpretação de Textos - Prof. Arnaldo
Concurso Professor Estado - Dicas Interpretação de Textos - Prof. Arnaldo
 
// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018
// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018
// Não comente seu código, ... - Márcio Torres - Tchelinux Pelotas 2018
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeter
 
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dadosResolvendo problemas de performance em aplicações Delphi e bancos de dados
Resolvendo problemas de performance em aplicações Delphi e bancos de dados
 
Modelagem Analítica – Queueing Theory (Part I)
Modelagem Analítica – Queueing Theory (Part I)Modelagem Analítica – Queueing Theory (Part I)
Modelagem Analítica – Queueing Theory (Part I)
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
Estudo comparativo entre treinamento supervisionado e não supervisionado em a...
 
Qualidade de Código
Qualidade de CódigoQualidade de Código
Qualidade de Código
 
O que testar abordagens de teste com ruby + rspec
O que testar abordagens de teste com ruby + rspecO que testar abordagens de teste com ruby + rspec
O que testar abordagens de teste com ruby + rspec
 
Testes Unitários
Testes UnitáriosTestes Unitários
Testes Unitários
 
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
 
Testes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
Testes Funcionais e Estruturais utilizando Selenium IDE e CoberturaTestes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
Testes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
 
Testes Unitarios Com PostgreSQL
Testes Unitarios Com PostgreSQLTestes Unitarios Com PostgreSQL
Testes Unitarios Com PostgreSQL
 

Destacado

Presentación ejemplo
Presentación ejemploPresentación ejemplo
Presentación ejemploDiego Zalles
 
Diseño de materiales didácticos - parte 2
Diseño de materiales didácticos - parte 2Diseño de materiales didácticos - parte 2
Diseño de materiales didácticos - parte 2Diego Zalles
 
Desarrollo de materiales didácticos - parte 1
Desarrollo de materiales didácticos - parte 1Desarrollo de materiales didácticos - parte 1
Desarrollo de materiales didácticos - parte 1Diego Zalles
 
Automated keyword driven framework using selenesse
Automated keyword driven framework using selenesseAutomated keyword driven framework using selenesse
Automated keyword driven framework using selenesseIndicThreads
 
BDD, ATDD, Page Objects: The Road to Sustainable Web Testing
BDD, ATDD, Page Objects: The Road to Sustainable Web TestingBDD, ATDD, Page Objects: The Road to Sustainable Web Testing
BDD, ATDD, Page Objects: The Road to Sustainable Web TestingJohn Ferguson Smart Limited
 

Destacado (6)

Presentación ejemplo
Presentación ejemploPresentación ejemplo
Presentación ejemplo
 
To atdd-and-beyond
To atdd-and-beyondTo atdd-and-beyond
To atdd-and-beyond
 
Diseño de materiales didácticos - parte 2
Diseño de materiales didácticos - parte 2Diseño de materiales didácticos - parte 2
Diseño de materiales didácticos - parte 2
 
Desarrollo de materiales didácticos - parte 1
Desarrollo de materiales didácticos - parte 1Desarrollo de materiales didácticos - parte 1
Desarrollo de materiales didácticos - parte 1
 
Automated keyword driven framework using selenesse
Automated keyword driven framework using selenesseAutomated keyword driven framework using selenesse
Automated keyword driven framework using selenesse
 
BDD, ATDD, Page Objects: The Road to Sustainable Web Testing
BDD, ATDD, Page Objects: The Road to Sustainable Web TestingBDD, ATDD, Page Objects: The Road to Sustainable Web Testing
BDD, ATDD, Page Objects: The Road to Sustainable Web Testing
 

Similar a Testes automatizados para validar senhas seguras

Não há agile sem práticas ágeis
Não há agile sem práticas ágeisNão há agile sem práticas ágeis
Não há agile sem práticas ágeisMarco Baccaro
 
Confirmation – O 1/3 Mais Importante da História de Usuário - Eduardo Silva
Confirmation – O 1/3 Mais Importante da História de Usuário - Eduardo SilvaConfirmation – O 1/3 Mais Importante da História de Usuário - Eduardo Silva
Confirmation – O 1/3 Mais Importante da História de Usuário - Eduardo Silvagutssc
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesEverton Rodrigues
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In TubaRafael Paz
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninDevInPF
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de softwareHeider Lopes
 
Aula12 T EES UFS Testes de SW
Aula12  T EES  UFS  Testes de SWAula12  T EES  UFS  Testes de SW
Aula12 T EES UFS Testes de SWguest8ae21d
 
Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...Thiago Faria de Andrade
 
Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )Iure Guimaraes
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...Rodrigo Oliveira, Msc, PMP
 
Workshop - Plano de Testes End to End com o Microsoft Test Manager
Workshop   - Plano de Testes End to End com o Microsoft Test ManagerWorkshop   - Plano de Testes End to End com o Microsoft Test Manager
Workshop - Plano de Testes End to End com o Microsoft Test ManagerAlan Carlos
 
Papel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilPapel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilElias Nogueira
 
Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POAAline Zanin
 

Similar a Testes automatizados para validar senhas seguras (20)

Não há agile sem práticas ágeis
Não há agile sem práticas ágeisNão há agile sem práticas ágeis
Não há agile sem práticas ágeis
 
Confirmation – O 1/3 Mais Importante da História de Usuário - Eduardo Silva
Confirmation – O 1/3 Mais Importante da História de Usuário - Eduardo SilvaConfirmation – O 1/3 Mais Importante da História de Usuário - Eduardo Silva
Confirmation – O 1/3 Mais Importante da História de Usuário - Eduardo Silva
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por Testes
 
Introdução a tdd
Introdução a tddIntrodução a tdd
Introdução a tdd
 
TDD (Resumo)
TDD (Resumo)TDD (Resumo)
TDD (Resumo)
 
Clean Code - Fork In Tuba
Clean Code - Fork In TubaClean Code - Fork In Tuba
Clean Code - Fork In Tuba
 
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline ZaninFundamentos de Teste de Software - Dev in PF. por Aline Zanin
Fundamentos de Teste de Software - Dev in PF. por Aline Zanin
 
Introdução ao TDD
Introdução ao TDDIntrodução ao TDD
Introdução ao TDD
 
1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software1 2 3 - Testando - Automatizando os testes de software
1 2 3 - Testando - Automatizando os testes de software
 
Testes de Sofware
Testes de SofwareTestes de Sofware
Testes de Sofware
 
Apresentacao teste
Apresentacao testeApresentacao teste
Apresentacao teste
 
Introdução ao design de teste de software
Introdução ao design de teste de softwareIntrodução ao design de teste de software
Introdução ao design de teste de software
 
Aula12 T EES UFS Testes de SW
Aula12  T EES  UFS  Testes de SWAula12  T EES  UFS  Testes de SW
Aula12 T EES UFS Testes de SW
 
Aula12 TEES UFS Testes de SW
Aula12 TEES UFS Testes de SWAula12 TEES UFS Testes de SW
Aula12 TEES UFS Testes de SW
 
Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...Test-Driven Development - Introdução ao método de construção de software guia...
Test-Driven Development - Introdução ao método de construção de software guia...
 
Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )Introdução a Desenvolvimento Orientado a Testes ( TDD )
Introdução a Desenvolvimento Orientado a Testes ( TDD )
 
A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...A importância dos testes unitários: do código legado ao pipeline de testes em...
A importância dos testes unitários: do código legado ao pipeline de testes em...
 
Workshop - Plano de Testes End to End com o Microsoft Test Manager
Workshop   - Plano de Testes End to End com o Microsoft Test ManagerWorkshop   - Plano de Testes End to End com o Microsoft Test Manager
Workshop - Plano de Testes End to End com o Microsoft Test Manager
 
Papel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilPapel do QA na Transformação Ágil
Papel do QA na Transformação Ágil
 
Palestra Fundamentos de Testes - Tche linux POA
Palestra Fundamentos de Testes  - Tche linux POAPalestra Fundamentos de Testes  - Tche linux POA
Palestra Fundamentos de Testes - Tche linux POA
 

Testes automatizados para validar senhas seguras

  • 1.
  • 2.
  • 3.
  • 5.
  • 6.  Não existe refactoring, apenas rework.  Se tiver funcionando, não rela a mão.  Teste é para os fracos.  Quanto mais XGH você faz, mais precisará fazer.  Existem 3 formas de se resolver um problema, a correta, a errada e a XGH, que é igual à errada, só que mais rápida.  Seja autêntico, XGH não respeita padrões. Escreva o código como você bem entender, se resolver o problema, commit e era isso.
  • 8.
  • 9.
  • 10.
  • 11. Assegurar qualidade. Manter código limpo, simples e testável. Prover documentação para membros técnicos. Repetir testes - Regressão Preparados para mudar rapidamente.
  • 12. Adicionar um teste rapidamente Rodar todos os testes e ver o mais nova falhando Fazer uma pequena mudança Rodar todos os testes e ver todos funcionando Refatorar para remover duplicações SucessoErro
  • 13.
  • 14. Não sei como testar Vai demorar muito mais. Isso não dá para testar A funcionalidade é muito fácil. Melhor deixar testes com os testadores
  • 15.
  • 16.
  • 17. ATDD é o ato de se definir testes de aceitação colaborativa no reflexão de requisitos de negócio, resultando numa melhor compreensão dos objetivos de uma estória. Os testes em ATDD nos forçam a chegar a um ponto de acordo concreto sobre o exato comportamento que se espera que o software deva ter.
  • 18. • Criar uma conta com uma senha • Efetuar o login com um nome de usuário válido e senha • O que deve acontecer se um usuário informar uma senha insegura? • Você pode nos dar exemplos de senhas que você considera seguras e inseguras? • Quais são exatamente os símbolos? • E quanto a espaços? • E o que fazer com relação a palavras de dicionário com substituições óbvias que atendam • aos critérios mais ainda possam ser inseguras, como 'p@ssw0rd'?” • E quanto a contas já existentes? • Quando você vai considerar que esta funcionalidade está 'funcionando'? • O que deve acontecer se um usuário informar uma senha insegura? • Você pode nos dar exemplos de senhas que você considera seguras e inseguras? • Quais são exatamente os símbolos? • E quanto a espaços? • E o que fazer com relação a palavras de dicionário com substituições óbvias que atendam • aos critérios mais ainda possam ser inseguras, como 'p@ssw0rd'?” • E quanto a contas já existentes? • Quando você vai considerar que esta funcionalidade está 'funcionando'? test_valid_returns_true_when_all_conventions_met test_valid_returns_false_when_password_less_than_6_chars test_valid_returns_false_when_password_missing_symbol test_valid_returns_false_when_password_missing_letter test_valid_returns_false_when_password_missing_number
  • 19.
  • 20.
  • 21.
  • 22. Itens devolvidos devem retornar para o estoque que um cliente compra um jumper preto eu tenho três jumper pretos no estoque ele retorna com o jumper preto para reembolso eu devo ter quatro jumpers pretos no estoque Itens substituídos devem ser retornados ao estoque que uma cliente compra um vestido azul eu tenho dois vestidos azuis no estoque eu tenho três vestidos pretos no estoque ela retorna com o vestido para uma troca por um preto eu devo ter três vestidos azuis no estoque dois vestidos pretos no estoque
  • 23.
  • 24.
  • 25.
  • 26. Fake são objetos extremamente leves e performáticos, construídos para simular uma funcionalidade de um componente que o depende, ao invés do real. Devemos utilizar objetos Fakes sempre que depende de outros componentes: 1. Que não estão disponíveis; 2. São difíceis de serem testadas (por exemplo post em páginas web); 3. Resultam em maior lentidão na execução dos testes; 4. Maior complexidade no comportamento do método que vale a pena um Test Stub ou Mock object.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31. Objetos Mock são criados para testar o comportamento de algum outro objeto (real). Portanto, mocking é fingir completamente o objeto real e fazer algumas operações de uma forma controlada para que o (teste) resultado como válido. Mock é uma maneira poderosa de implementar verificação de comportamento evitando a duplicação de código de teste entre os testes semelhantes, delegando a tarefa de verificar as saídas do em Test Double.
  • 32. Devemos utilizar objetos Mocks quando: 1. O objeto fornece resultados não-determinísticos (por exemplo, o tempo atual ou a temperatura atual); 2. Possuem estados que não são fáceis de criar ou reproduzir (por exemplo, um erro de rede); 3. É lento (por exemplo, uma base de dados completa, que tem de ser inicializado antes do ensaio); 4. Ainda não existe ou pode mudar o comportamento; 5. Necessidade de incluir informações e métodos exclusivos para fins de teste e não para a sua tarefa real.
  • 33.
  • 34.
  • 35.
  • 36. Providenciam respostas pré-configuradas para as chamadas feitas durante os testes, normalmente não respondem a nada que não esteja programado para o teste. Stubs também podem gravar informações sobre as chamadas, como um gateway que lembra as mensagens que 'enviou', ou talvez apenas quantas mensagens 'enviou'.
  • 37.
  • 38.
  • 39.
  • 40. Mesmo teste de Stub para Mock.
  • 41. Stubs providenciam respostas pré- configuradas para as chamadas feitas durante os testes, normalmente não respondem a nada que não esteja programado para o teste. Também podem gravar informações sobre as chamadas, estado das informações. Mocks são objetos pré-programados com informações que formam uma especificação das chamadas que esperam receber.
  • 42.
  • 43.
  • 44. Padrão Propósito Tem Comportamento Injeta entrada indiretas no SUT Manipula saídas indiretas do SUT Valores fornecidos pelo testador Exemplos Dummy Object Atributo ou parâmetro do método Não Não, nunca chamado Não, nunca chamado Não Null, "Ignored String", new Object() Test Stub Verify indirect inputs of SUT Sim Sim Ignorá-los Inputs Test Spy Verify indirect outputs of SUT Sim Opicional Captura-los para verificação posterior Inputs (opicional) Mock Object Verifique saídas indiretas do SUT Sim optional verifica a exatidão de encontro às expectativas Inputs e outputs (opcional) Fake Object Executar (unrunnable) testes (mais rápido) Sim Não Usa-los Nenhum Emulador de banco de dados em memória Temporary Test Stub Stand in for procedural code not yet written Sim Nao Usa-los Nenhum Emulador de banco de dados em memória
  • 45.
  • 46.
  • 47. Invertion of Control (IoC) Service Locator Events Delegates Template Methods Pattern Dependency Injection Construtor Injection Property Injection Method Injection

Notas del editor

  1. No cronograma, o testesempre é oprimeiro a ser cortadoparaentregar no prazo.Depois de adicionar 200 classes, é muitomaisdifícilmudar.Nãoestamosfalandoapenas de teste, mas de prática de design. Fazerestruturacoesa, objetiva, flexível!Simplicidade, vamosparar de imaginar e colocar o mínimonecessário.TDD nosfazpensarem boa práticas de arquitetura, nosfazdesenvolverpara interfaces.http://blog.lambda3.com.br/2009/10/tdd-nao-existe/http://viniciusquaiato.com/blog/tdd-test-driven-development-c-parte-ii/http://viniciusquaiato.com/blog/tdd-test-driven-development-c-parte-iii/
  2. Teste de unidadetesta o pedaço, nãoquerdizerquesomandotodas as unidadeseutenho um sistema. Precisamospensaremsistema, pensarem user story. Vamosenriquecernãopensandoemteste de classes e tecnologias e vamostrazer o negócio, a linguagem do clientenos testes.
  3. depended-on component (DOC)An individual class or a large-grained component on which the system under test (SUT) depends. The dependency is usually one of delegation via method calls. In test automation, it is primarily of interest in that we need to be able to examine and control its interactions with the SUT to get complete test coverage.SUTThe "system under test". It is short for "whatever thing we are testing" and is always defined from the perspective of the test. When we are writing unit tests the system under test (SUT) is whatever class (a.k.a. CUT), object (a.k.a. OUT) or method(s) (a.k.a. MUT) we are testing; when we are writing customer tests, the SUT is probably the entire application (a.k.a. AUT) or at least a major subsystem of it. The parts of the application that we are notverifying in this particular test may still be involved as a depended-on component (DOC).
  4. http://xunitpatterns.com/Fake%20Object.htmlhttp://xunitpatterns.com/DOC.html
  5. http://xunitpatterns.com/Fake%20Object.htmlhttp://xunitpatterns.com/DOC.html
  6. http://xunitpatterns.com/Dummy%20Object.html
  7. http://xunitpatterns.com/Dummy%20Object.html
  8. http://www.agile-code.com/blog/mocking-with-moq/http://xunitpatterns.com/Mock%20Object.html
  9. http://www.agile-code.com/blog/mocking-with-moq/http://xunitpatterns.com/Mock%20Object.html
  10. http://www.agile-code.com/blog/mocking-with-moq/http://xunitpatterns.com/Mock%20Object.html
  11. http://www.agile-code.com/blog/mocking-with-moq/http://xunitpatterns.com/Mock%20Object.html
  12. http://www.agile-code.com/blog/mocking-with-moq/http://xunitpatterns.com/Mock%20Object.html
  13. http://xunitpatterns.com/Mocks,%20Fakes,%20Stubs%20and%20Dummies.html
  14. Dependency Injection is a set of software design principles and patterns that enable us to develop loosely coupled code.
  15. Inversion of control (IoC) is an abstract principle describing an aspect of some software architecture designs in which the flow of control of a system is inverted in comparison to procedural programming.
  16. Inversion of control (IoC) is an abstract principle describing an aspect of some software architecture designs in which the flow of control of a system is inverted in comparison to procedural programming.
  17. Inversion of control (IoC) is an abstract principle describing an aspect of some software architecture designs in which the flow of control of a system is inverted in comparison to procedural programming.
  18. Inversion of control (IoC) is an abstract principle describing an aspect of some software architecture designs in which the flow of control of a system is inverted in comparison to procedural programming.