# 2.1 Considerações Iniciais

Como observado na [Seção 1.3](https://aurimrv.gitbook.io/tdd-python/1-introducao/1-3-tdd-basico), TDD tem tudo a ver com testes. A qualidade da solução proposta está diretamente relacionada com a qualidade dos testes a partir dos quais a solução é desenvolvida. Assim sendo, neste capítulo são apresentados conceitos básicos sobre teste de software, com ênfase em critérios de teste da técnica funcional ou caixa preta. Eles são os mais utilizados na concepção de casos de teste a partir de dada especificação.

Posteriormente, outros critérios de teste podem ser explorados. [Delamaro et al. (2016)](https://www.grupogen.com.br/e-book-introducao-ao-teste-de-software) apresentam diversos critérios de teste que podem ser utilizados para garantir a qualidade de um produto de software. Os interessados em expandir os conceitos sobre técnicas e critérios de teste podem ler esse livro para mais informações.

O conteúdo apresentado neste capítulo foi extraído e/ou adaptado de várias fontes, sendo a principal delas a Nota Didática de [Introdução ao Teste de Software de Maldonado et al. (2004)](https://web.icmc.usp.br/SCATUSU/RT/nd_65.pdf), o livro sobre [Introdução ao Teste de Software de Delamaro et al. (2016)](https://www.grupogen.com.br/e-book-introducao-ao-teste-de-software) e o livro sobre [Automatização de Teste de Software com Ferramentas de Software Livre de Vincenzi et al. (2018)](https://www.amazon.com.br/Automatiza%C3%A7%C3%A3o-teste-software-ferramentas-livre-ebook/dp/B07D5KMKR9). Este último, está disponível publicamente online a partir deste [link](https://avvts.net.br/livro-ats).

O restante deste capítulo está organizado da seguinte forma. Na [Seção 2.2](https://aurimrv.gitbook.io/tdd-python/2-teste-de-software/2-2-terminologia-e-conceitos-basicos) são apresentados conceitos gerais e parte da terminologia utilizada na área de teste de software. Na [Seção 2.3](https://aurimrv.gitbook.io/tdd-python/2-teste-de-software/2-3-fases-de-teste) são apresentadas as fases de teste e o conceito da pirâmide de teste, diretamente relacionada com o esforço de automatização esperado dos testes automatizados. Na [Seção 2.4](https://aurimrv.gitbook.io/tdd-python/2-teste-de-software/2-4-tecnicas-e-criterios-de-teste) são apresentadas uma descrição geral das técnicas e critérios de teste com ênfase na técnica de teste funcional e alguns de seus critérios de teste. A [Seção 2.5](https://aurimrv.gitbook.io/tdd-python/2-teste-de-software/2-5-consideracoes-finais) apresenta as considerações finais do capítulo.
