O documento discute técnicas de teste de software como Test Driven Development (TDD) e mocks. Ele lista benefícios do TDD como identificar falhas de design mais cedo e facilitar a cobertura de requisitos, e discute ferramentas para testes unitários, funcionais e mocks.
5. Test Driven Development .
Cool!
• Trata sobre Design
• Foco no “como” e não no “o quê”
• Pode ser unitário, funcional e até BDD
• Não substitui testes automatizados
• Tem regras e é bom segui-las (pq?)
6. Test Driven Development.
Benefícios!
• Falhas de design aparecem mais cedo
• Fácil saber quando já cobrimos todos os
requisitos
• Baby Steps
• Bom quando não se sabe o que quer
• Melhor ainda quando já se sabe o que quer
7. Para ajudar. Um zilhão de
ferramentas!
• Testes unitários: qUnit, YUITest, JSUnit
• BDD: Screw.Unit, JSpec, JSSpec
• Mock: qMock, Jack, Chameleon
• Testes funcionais: YUITest (apenas o básico),
Pyccuracy, Letuce, Cucumber
8. qUnit.
Porque?
Pros
• Mantido pelo time do jQuery
• Testes assíncronos
• Setup e TearDown
Cons
• Variáveis globais pra tudo que é lado
• Poucos asserts
12. Faz sentido criar um mock
quando o objeto:
• gera resultados não deterministicos
• tem estados difíceis de criar ou reproduzir
• ainda não existe ou pode ter o comportamento
alterado
• é necessário adicionar informações ou métodos,
exclusivamente para os testes
• ou simplesmente quer abstrair o resultado
13. O que esperar de uma
ferramenta de Mock?
• Simular a chamada para um método
• Adicionar expectativas
• Validar se o esperado foi chamado
• Informar, com clareza, falhas na expectativa
• Deixa o teste legível, claro
Nenhuma mudança é pequena de fato; Permite refactor; Viabiliza integração contínua; Paz de espirito;
As interações com usuários são complexas, dependem de controlarmos eventos o tempo inteiro. Requisições que podem ser assincronas e ainda termos que ter uma URL em algum canto que funcione e retorne algo. Navegadores: o que funciona em um pode não funcionar em outro. Como integrar nossos testes em nosso CI?
Desenhar bem! E é disso que TDD trata: Design.
Definir como seu código será usado. Interfaces com o mundo exterior. Isso não é o quê...
Você pode fazer TDD tanto inside-out ou outside-in.
Você ainda vai precisar criar mais testes para melhorar sua cobertura e ter a Paz de espírito
Pq ver o teste quebrar? Pq implementar mais simples? Pq ver o teste passar? Pq refatorar?
O que vc idealizou pode não ser tão simples de consumir.
O “como” mantém o foco no requisito e não no código em sí.
Sabedoria popular... Economia de esforço... Carpem Diem... Próximo passo o mais curto possível
É complexo, é chato, é desconhecido? Baby steps torna mais digerível...
Já sabe o que quer. Economize o cérebro deixando a metodologia trabalhar pra você.
Muitas foram descontinuadas, outras tantas possuem documentação deficiente. (open source)
YUITest é possível fazer testes funcionais básicos apenas.
SYN, para auxiliaem testes funcionais.
Curva de aprendizado menor, comparado com os demais frameworks de teste unitário;
Integração com inúmeras bibliotecas de mock;
jqUnit: Surgiu para acabar com a bagunça de variáveis globais.
Poucos asserts: equals, ok, same
CODAR