Então, este é vídeo introdutório sobre a técnica chamada teste funcional. Eu espero que ao final você seja capaz de compreender pouquinho mais sobre o contexto e o funcionamento dela. Está certo? Então, imagina o seguinte: você comprou lote, terreno e quer construir uma casa, a casa dos seus sonhos considerando a sua demanda, a sua necessidade. O quê que você faz? Você contrata uma equipe com pedreiros, com engenheiro, que vai construir essa casa para você seguindo as suas vontades e necessidades. Ao longo do desenvolvimento, ao longo da construção da casa, o quê que é normal? Você faz visitas periódicas para verificar questões externas, por exemplo, será que a tinta que eu escolhi lá na loja ficou legal na parede da minha casa? Será que tem alguma rachadura? Será que tem alguma coisa que não está ficando conforme eu esperava? Então, a gente pode compreender que o desenvolvimento de software é bem parecido com a ideia de construção de casas. E essa analogia pode ser utilizada por exemplo para compreendermos a técnica de teste chamada teste funcional. Por quê? Porque o teste funcional pode ser compreendido como sendo aquele proprietário que realiza visitas de vistoria externa na sua casa. Então, considerando que eu tenho a especificação do requisito de software, especificação de requisitos de software. O que é uma especificação? Demanda, necessidade, uma obrigatoriedade, desejo. Eu posso utilizar o teste funcional para projetar casos de teste, submeter esses casos no programa e verificar se a saída obtida está de acordo com a saída que era esperada. Então, o teste funcional de forma geral tende a responder perguntas desse tipo aqui: o usuário consegue fazer tal coisa no sistema? Tal funcionalidade funciona adequadamente, funciona da forma que deveria, da forma que foi identificado antes? Como resultado, o quê que a gente tem? São reveladas inconformidades com os objetivos especificados anteriormente. Que tipo de inconformidade? Funções incorretas ou ausentes, erros na interface, erros estrutura de dados, erros de acesso a softwares externos, bem como a inicialização e o encerramento, o término do programa. Como os critérios da técnica de teste funcional baseiam-se na especificação do produto testado e não no código-fonte si, ela requer boa especificação dos requisitos para que bons casos de teste sejam projetados. Pode ser aplicada todas as fases de testes, por exemplo, unidade, integração, sistemas, dentre outros; permite equipes independentes, por exemplo, eu posso ter equipe de desenvolvimento, equipe de teste, a equipe de teste pode ser separada: a equipe que projeta os testes e a equipe que executa ou automatiza o teste; pode ser realizado de forma manual, de forma automática ou a mistura de ambas; pode ser aplicada produtos criados diversos paradigmas e linguagens de programação, dentre outras questões. Então, aqui a gente tem uma visão geral da aplicação do teste funcional. De forma geral, a gente precisa identificar as funções que o software deveria realizar; projetar os casos de teste que sejam capazes de checar se essas funções estão sendo realizadas pelo software; executar esses casos de teste e comparar se os resultados obtidos estavam de acordo com os resultados que eram esperados. Então, com a técnica de teste funcional ela pode, pode ser aplicada para verificar todo o domínio de entrada, oque é teste exaustivo, principalmente quando o domínio de entrada é infinito ou muito grande, critérios são aplicados para quê? A fim de identificar bons casos de teste, casos de testes mais adequados e que possuam maior cobertura do software si. Então, exemplos de critérios do teste funcional são: particionamento casos de equivalência, análise do valor limite, teste funcional sistemático, gráfico de causa e efeito, dentre outros critérios. Então, aqui a gente tem resuminho da técnica de teste funcional. De forma geral, ela requer a especificação do produto para derivar casos de teste, o foco não é no código si. Considerando essa questão, ela reflete a ótica do usuário, do stakeholder que vai utilizar o programa. Pode ser aplicada qualquer programa, qualquer paradigma de programação; pode ser aplicada todas as fases de teste: unidade, de integração, sistema; para projetar os casos de testes, são aplicados critérios também baseados na especificação do produto. Alguns exemplos de critérios, a gente tem gráfico de causa e efeito, teste funcional sistemático, análise do valor limite, particionamento classes de equivalência e cada critério desses por tipos diferentes de defeitos, utilizando valores específicos do domínio de entrada. Está certo? Então, como próximos passos para a sua aprendizagem, eu deixo para você compreender melhor os critérios da técnica de teste funcional e aplicar a técnica si num contexto verdadeiro, seja de forma manual, seja de forma automática ou uma mistura de ambos.