Geração automática de casos de teste para auto-graders baseada em execução simbólica

Resumo


Este artigo apresenta uma abordagem de geração automática de casos de teste para ferramentas de correção de exercícios práticos de programação introdutória, utilizando Execução Simbólica, contemplando os principais tópicos abordados em universidades brasileiras. O artigo detalha o funcionamento da ferramenta construída, bem como todo o processo de geração automática de casos de teste. O estudo de caso proposto revelou que, através da ferramenta, foi possível gerar os casos de teste, de forma automatizada, explorando todos os caminhos de execução da solução algorítmica do professor, o que pode diminuir a sobrecarga dos docentes que utilizam essas ferramentas, garantindo a completude dos testes.
Palavras-chave: Auto-grader, Programação Introdutória, Casos de teste, Execução Simbólica

Referências

Abraham, E. (2015). Building bridges between symbolic computation and satisfiability checking. In Proceedings of the 2015 ACM on International Symposium on Symbolic and Algebraic Computation, pages 1–6.

Ala-Mutka, K. M. (2005). A Survey of Automated Assessment Approaches for Programming Assignments. Computer Science Education, 15(2):83–102. Publisher: Routledge eprint: DOI: 10.1080/08993400500150747.

Anand, S., Pasareanu, C. S., and Visser, W. (2009). Symbolic execution with abstraction. International Journal on Software Tools for Technology Transfer, 11:53–67

Baldoni, R., Coppa, E., Delia, D. C., Demetrescu, C., and Finocchi, I. (2018). A survey of symbolic execution techniques. ACM Computing Surveys (CSUR), 51(3):1–39.

Bariansyah, M. R. I., Rukmono, S. A., and Perdana, R. S. (2021). Semantic approach for increasing test case coverage in automated grading of programming exercise. In 2021 International Conference on Data and Software Engineering (ICoDSE), pages 1–6. IEEE.

Boyer, R. S., Elspas, B., and Levitt, K. N. (1975). Select—a formal system for testing and debugging programs by symbolic execution. ACM SigPlan Notices, 10(6):234–245.

Brito, P. and Fortes, R. (2019). O uso de corretores automaticos para o ensino de programacao de computadores para alunos de engenharia. In Brazilian Symposium on Computers in Education (Simposio Brasileiro de Informatica na Educacao-SBIE), volume 30, page 449.

Chaves, J. O. M., Castro, A. F., Lima, R. W., Lima, M. V. A., and Ferreira, K. H. (2013). Mojo: Uma ferramenta de auxilio a elaboracao, submissao e correcao de atividades em disciplinas de programacao. In XXI Workshop de Educacao em Computacao (WEI)-SBC 2013

De Souza, D. M., Maldonado, J. C., and Barbosa, E. F. (2011). Prog-test: An environment for the submission and evaluation of programming assignments based on testing activities. In 2011 24th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T), pages 1–10. IEEE.

Francisco, R. E., Ambrosio, A. P. L., Junior, C. X. P., and Fernandes, M. A. (2018). Juiz online no ensino de cs1-licoes aprendidas e proposta de uma ferramenta. Revista Brasileira de Informatica na Educacao, 26(03):163

Galasso, R. H. and Moreira, B. G. (2014). Integracao do ambiente boca com o ambiente moodle para avaliacao automatica de algoritmos. Anais do Computer on the Beach, 5:22–31

Galvao, L., Fernandes, D., and Gadelha, B. (2016). Juiz online como ferramenta de apoio a uma metodologia de ensino hibrido em programacao. Brazilian Symposium on Computers in Education (Simposio Brasileiro de Informatica na Educacao - SBIE), 27(1):140. Number: 1

Ihantola, P. (2006). Test data generation for programming exercises with symbolic execution in java pathfinder. In Proceedings of the 6th Baltic Sea conference on Computing education research: Koli Calling 2006, pages 87–94

King, J. C. (1976). Symbolic execution and program testing. Communications of the ACM, 19(7):385–394

Liu, X., Wang, S., Wang, P., and Wu, D. (2019). Automatic grading of programming assignments: an approach based on formal semantics. In 2019 IEEE/ACM 41st International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET), pages 126–137. IEEE

Mabel, E., Tavares, J., Buri, Y., and Pereira, M. (2023). Codetesting: Sistema de apoio ao ensino de logica de programacao. In Anais Estendidos do III Simposio Brasileiro de Educacao em Computacao, pages 22–23. SBC.

Oliveira, M. d., Nogueira, M., and Oliveira, E. (2015). Sistema de Apoio a Pratica Assistida de Programacao por Execucao em Massa e Analise de Programas. In Anais do Workshop sobre Educacao em Computacao (WEI), pages 90–99. SBC. ISSN: 2595-6175.

Pelz, F. D., de Jesus, E. A., and Raabe, A. L. (2012). Um mecanismo para correcao automatica de exercicios praticos de programacao introdutoria. Anais do XXIII Simposio Brasileiro de Informatica na Educacao, 23(1).

Santos, F. A., Segundo, P., and Telvina, M. (2017). CodeTeacher: Uma Ferramenta para Correcao Automatica de Trabalhos Academicos de Programacao em Java. page 1152, Recife, Pernambuco, Brasil.

Serafim, J. and Zanini, A. (2014). Ambiente Virtual de aprendizagem para algoritmos. In Anais do Workshop de Desafios da Computacao aplicada a Educacao (DesafIE), pages 38–46. SBC. ISSN: 0000-0000

Song, D., Lee, M., and Oh, H. (2019). Automatic and scalable detection of logical errors in functional programming assignments. Proceedings of the ACM on Programming Languages, 3(OOPSLA):1–30

Tillmann, N., De Halleux, J., Xie, T., Gulwani, S., and Bishop, J. (2013). Teaching and learning programming and software engineering via interactive gaming. In 2013 35th International Conference on Software Engineering (ICSE), pages 1117–1126. IEEE

Trtik, M. (2013). Symbolic execution and program loops. Brno, Czech Republic.

Webber, C., Zenato, M., and Arrosi, T. (2010). Caderno de Algoritmos: um Ambiente de Resolucao de Problemas de Programacao. RENOTE, 8(3). Number: 3.
Publicado
04/11/2024
SILVA, Loham Santos da; FORTES, Reinaldo Silva; RIBEIRO, Rodrigo Geraldo. Geração automática de casos de teste para auto-graders baseada em execução simbólica. In: SIMPÓSIO BRASILEIRO DE INFORMÁTICA NA EDUCAÇÃO (SBIE), 35. , 2024, Rio de Janeiro/RJ. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2024 . p. 2325-2338. DOI: https://doi.org/10.5753/sbie.2024.242433.