3.1. Relembrar os conceitos de desenvolvimento orientado a testes, desenvolvimento orientado para teste de aceitação, e desenvolvimento orientado a comportamento
Introdução
Existem certas práticas de teste que podem ser seguidas em todos os projetos de desenvolvimento (Ágil ou não) para produzir produtos de qualidade.

- Modelagem antecipada dos testes;
- Prevenção, detecção e remoção antecipada de defeitos;
- Garantir que os tipos de teste corretos sejam realizados no momento certo e no nível correto de teste.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
TDD, ATDD e BDD

- São três técnicas complementares em uso entre as equipes do Ágil para realizar testes entre os vários níveis de teste;
- Cada técnica é um exemplo de um princípio fundamental do teste – o benefício de testar cedo, pois o teste é definido antes do código ser escrito.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
TDD – Desenvolvimento orientado a teste
Usado para desenvolver código guiado por casos de testes automatizados
| Adicionar o teste primeiro | Adicionar um teste que captura o conceito do programador do funcionamento desejado de uma pequena parte do código |
| Realizar teste | Realizar o teste, o qual falhará uma vez que o código não existe |
| Codificar | Escrever o código e realizar o teste em um ciclo contínuo até o teste ser aprovado |
| Refatorar | Refatorar o código após a aprovação do teste, reexecutar o teste para garantir que o teste continua passando após a refatoração do código |
| Repetir | Repetir esse processo para a próxima pequena parte do código, realizando os testes anteriores, bem como os testes adicionados |
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
ATDD – Desenvolvimento orientado a teste de aceite
Define critérios e testes de aceitação durante a criação de estórias de usuários
| Abordagem Colaborativa | Permite que todas as partes interessadas compreendam como o componente de software tem que se comportar e o que os desenvolvedores, testadores e as partes interessadas precisam para garantir esse comportamento |
| Testes Reutilizáveis | Cria testes reutilizáveis para teste de regressão. Ferramentas específicas apoiam a criação e execução de tais testes, muitas vezes dentro do processo de integração contínua |
| Eficiência | Permite a resolução rápida de defeitos e validação de comportamento da funcionalidade. Ele ajuda a determinar se os critérios de aceitação são cumpridos para a funcionalidade |
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
BDD – Desenvolvimento orientado a comportamento
Permite que um desenvolvedor se concentre em testar o código com base no comportamento esperado do software
| Facilidade de Entendimento | Os testes serem baseados no comportamento do software facilitam o entendimento para os outros membros da equipe e demais envolvidos |
| Ferramentas | Frameworks específicos de desenvolvimento orientado a comportamento podem ser utilizados para definir os critérios de aceitação com base no formato: Dado algum contexto inicial, quando ocorre um evento, em seguida assegurar alguns resultados |
| Reuso | Gera um código que pode ser usado por desenvolvedores para criar casos de teste. Ajuda o desenvolvedor a colaborar com outras partes interessadas, para definir testes de unidade acurados focados nas necessidades de negócio |
