Título
White-box assessment for programming education
Autor
Caniço, Afonso Manuel Barral
Resumo
pt
A testagem de software é maioritariamente realizada em modo de black-box, isto é, sem
incorporar nos testes qualquer conhecimento relativo ao funcionamento interno de um
programa. Esta prática é usualmente suficiente em contexto empresarial ou para desenvolvedores
no geral, onde o foco é a produção de resultados fiáveis em que a maioria das
tarefas algorítmicas são realizadas por bibliotecas externas. Contudo, para estudantes de
programação a um nível introdutório ou similares, pode não ser direto discernir as causas
subjacentes de um resultado incorreto num teste ou compreender o incumprimento de
certos objetivos no que toca ao funcionamento algorítmico.
Esta dissertação apresenta o Witter, uma biblioteca de testagem de software que
permite a educadores de programação definir testes white-box para código fonte Java.
Os testes analisam a execução e um método contra uma solução de referência, para
verificar que não só produz resultados corretos mas também que cumpre o comportamento
algorítmico desejado. É detalhada a motivação para o desenvolvimento da biblioteca e
descrito esse processo de acordo com os nossos objetivos de investigação.
Avaliamos a eficácia do Witter em avaliar submissões de estudantes para determinar se
uma ferramenta de avaliação baseada em eventos na execução do código poderia oferecer
informação adicional relativamente a requisitos de comportamento algorítmico incompletos,
mesmo quando o código do estudante produz os resultados esperados. Concluímos que
uma quantidade considerável de estudantes cometem erros relativos ao comportamento
algorítmico das suas implementações, podendo então beneficiar de uma ferramenta de
avaliação que fornecesse informação relativa à execução dos seus programas.
en
Software testing is mostly performed in a black-box manner, that is, without incorporating
any knowledge of the internal workings of programs into the tests. This practice usually
suffices for enterprises and general practitioners, where the focus lies on producing reliable
results while most algorithmic tasks are provided by third-party libraries. However, for
computer science students and the like, it might not be straightforward to discern the
underlying causes of an incorrect test result or to understand why certain algorithmic
goals are not met.
This dissertation presents Witter, a software testing library that allows programming
instructors to define white-box tests for Java source code. Our tests analyse the execution
of a method against a reference solution, to verify that the code not only produces correct
results but is also in accordance with a desired algorithm behaviour. We detail the
motivation for the development of the library and describe its development process in
accordance with our research goals.
We evaluate Witter’s efficacy in evaluating student submissions for an introductory
university programming course to determine if an assessment tool based on code execution
events could offer additional insight regarding incomplete algorithmic behaviour requirements,
even when the student’s code produces correct outputs. The results support our
hypothesis, and we conclude that a considerable amount of students make mistakes related
to the algorithmic behaviour of their implemented solutions, and could thus benefit from
an assessment tool providing them with information regarding their program’s execution.