Uma vez que a atividade de teste é complexa, ela não pode ser conduzida de maneira oportunista. Devemos aplicar técnicas que nos ajudem a projetar casos de teste, capazes de encontrar o maior número de erros possível, despendendo o menor esforço possível. Considere as seguintes afirmações sobre técnicas de teste de software:
1. Teste funcional é uma técnica utilizada para projetar casos de teste, na qual o programa ou sistema é considerado uma caixa-preta. Essa técnica leva em conta, para o projeto de casos de teste, apenas as informações da interface do programa ou sistema (entradas e saídas) e a sua especificação. Detalhes de implementação não são considerados.
2. Teste estrutural ou caixa-branca estabelece casos de teste com base em uma dada implementação, procurando exercitar caminhos lógicos internos do software, tais como código sequencial, conjuntos de condições e/ou laços.
3. É possível e viável garantir a correção de um programa, aplicando-se apenas testes estruturais. Para tal, bastaria definir casos de testes capazes de exercitar todos os caminhos lógicos de um programa.
Qual das alternativas abaixo é correta?