Investigando o uso de testes para apoiar a resolução de problemas de programação. - ALMEIDA, André. (2023)
Os cursos introdutórios de programação desenvolvem esta habilidade através da resolução de diversos exercícios relacionados aos conceitos apresentados, os quais atuam também como forma de avaliar o desempenho dos alunos. No entanto, antes de produzir o programa o aluno precisa compreender o que é requerido pelo enunciado do exercício. É necessário entender a especificação como primeiro passo para a efetiva resolução de problemas de programação. Neste contexto, o objetivo desta pesquisa de mestrado é investigar a efetividade de uma estratégia baseada em testes para melhor esclarecer a especificação do problema e, com isso, favorecer a sua correta resolução. Iniciamos a pesquisa realizando um mapeamento dos tipos de erro identificados em exercícios de programação, com o objetivo de investigar se os testes automatizados associados capturam falhas na compreensão dos problemas. Com a análise dos dados foi possível perceber que cerca de 80% dos erros cometidos estão relacionados a dificuldade no entendimento ou falsas suposições levantadas com base nos enunciados dos exercícios. Desta forma, percebendo que os testes automatizados buscam capturar minuciosamente determinados cenários especificados nos enunciados dos exercícios, de maneira a verificar se o aluno os compreendeu em sua totalidade, este estudo preliminar denota a estratégia baseada em testes como sendo promissora. Sendo assim, criamos o oráculo para aplicar a abordagem e permitir que os alunos interajam com a solução de referência através de testes, perguntando se a entrada de um problema corresponde com a saída. No estudo principal, realizamos a análise comparativa entre o oráculo e outras estratégias de resolução de problemas com base em métricas associadas a sistemas de avaliação automatizada. Os resultados evidenciam uma melhora significativa no desempenho dos alunos, reduzindo o tempo para traçar a solução correta, que foi menor em 65% dos casos; e também o número de submissões ao sistema utilizado, que foi menor em 68% dos casos. Com estes efeitos somados ao feedback positivo dos alunos participantes, apontamos a estratégia como sendo eficaz na resolução de problemas de programação.