Evaluación automática de casos de prueba de ejercicios de programación de computadores
dc.contributor.advisor | Restrepo Calle, Felipe | spa |
dc.contributor.advisor | González Osorio, Fabio Augusto | spa |
dc.contributor.author | Rivera Cárdenas, David Leonardo | spa |
dc.contributor.referee | Vergara Vargas, Jeisson Andrés | spa |
dc.contributor.researchgroup | Plas Programming languages And Systems | spa |
dc.date.accessioned | 2025-07-17T19:23:49Z | |
dc.date.available | 2025-07-17T19:23:49Z | |
dc.date.issued | 2025-07-15 | |
dc.description | ilustraciones, diagramas | spa |
dc.description.abstract | El reciente crecimiento de plataformas de evaluación automática de ejercicios de programación de computadores ha ayudado a los docentes en la retroalimentación de las soluciones propuestas por los estudiantes; esto es un factor importante en el desarrollo de habilidades de programación de computadores. Sin embargo, los docentes enfrentan desafíos a la hora de conocer si los casos de prueba que han creado tienen la suficiente cobertura, la cual hace referencia a la cantidad o porcentaje de código que es alcanzado por las pruebas. El objetivo general del presente trabajo es proponer y desarrollar un prototipo funcional de una herramienta que mida, de manera automática, la calidad de un conjunto de casos de prueba usados para evaluar la solución de ejercicios de programación de computadores. La herramienta mide el nivel de cobertura de estos casos mediante métricas como cobertura de rama y línea, proporcionando información de su calidad. La metodología empleada incluyó una revisión de la literatura sobre técnicas, métricas y herramientas de evaluación de pruebas, seguida del diseño, implementación y validación del prototipo utilizando un conjunto de datos de soluciones y casos de prueba de 18 ejercicios del curso Introducción a la Programación en Python de la Universidad Nacional de Colombia. Los resultados muestran que la herramienta permite identificar deficiencias en la cobertura de los casos de prueba y, a partir de ellos, se sugieren oportunidades de mejora para fortalecer el proceso de creación de casos de prueba para la evaluación de ejercicios de programación. Este trabajo contribuye a la mejora continua de la enseñanza de programación de computadores, al ofrecer una solución automática para la evaluación de pruebas, que proporcione una orientación a los docentes para la generación de casos de prueba más completos y efectivos, por medio de la identificación del nivel de cobertura alcanzado. (Texto tomado de la fuente). | spa |
dc.description.abstract | The recent growth of automated evaluation platforms for computer programming exercises has helped teachers in providing feedback on the solutions proposed by students; this is an important factor in the development of computer programming skills. However, teachers face challenges in knowing whether the test cases they have created have sufficient coverage, which refers to the amount or percentage of code that is achieved by the tests. The overall objective of this work is to propose and develop a functional prototype of a tool that automatically measures the quality of a set of test cases used to assess programming exercise solutions. The tool evaluates the coverage level of these test cases using metrics such as branch and line coverage, providing valuable insights into their quality. The methodology employed included a literature review on test evaluation techniques, metrics and tools, followed by the design, implementation and validation of the prototype using a dataset of 18 exercises from the course Introduction to Python Programming of the National University of Colombia. The results show that the tool allows the identification of deficiencies in the coverage of test cases and, based on them, improvement opportunities are suggested to strengthen the process of creating test cases for the evaluation of programming exercises. This work contributes to the continuous improvement of computer programming education by offering an automated solution for test evaluation. It provides instructors with guidance for generating more comprehensive and effective test cases by identifying the achieved level of coverage. | eng |
dc.description.degreelevel | Maestría | spa |
dc.description.degreename | Magíster en Ingeniería - Ingeniería de Sistemas y Computación | spa |
dc.description.researcharea | Computación aplicada - educación en ingeniería | spa |
dc.format.extent | 69 páginas | spa |
dc.format.mimetype | application/pdf | spa |
dc.identifier.instname | Universidad Nacional de Colombia | spa |
dc.identifier.reponame | Repositorio Institucional Universidad Nacional de Colombia | spa |
dc.identifier.repourl | https://repositorio.unal.edu.co/ | spa |
dc.identifier.uri | https://repositorio.unal.edu.co/handle/unal/88357 | |
dc.language.iso | spa | spa |
dc.publisher | Universidad Nacional de Colombia | spa |
dc.publisher.branch | Universidad Nacional de Colombia - Sede Bogotá | spa |
dc.publisher.department | Departamento de Ingeniería de Sistemas e Industrial | spa |
dc.publisher.faculty | Facultad de Ingeniería | spa |
dc.publisher.place | Bogotá, Colombia | spa |
dc.publisher.program | Bogotá - Ingeniería - Maestría en Ingeniería - Ingeniería de Sistemas y Computación | spa |
dc.relation.references | Aaltonen, K., Ihantola, P., y Seppälä, O. (2010). Mutation analysis vs. code coverage in automated assessment of students’ testing skills. Proceedings of the ACM International Conference Companion on Object Oriented Programming Systems Languages and Applications Companion (SPLASH ’10), 153-160 | spa |
dc.relation.references | Abarca, J., y Díaz, F. (2018). Casos de prueba: una revisión sistemática de la literatura. Revista Ibérica de Sistemas e Tecnologias de Informação, 15(1), 51-66 | spa |
dc.relation.references | Al-Ahmad, B. I., Al-Harbi, A. A., Al-Mansoori, A. A., Al-Mansoori, A. A., y Al-Mansoori, A. A. (2021). A Statistical-Ranked Based Approach for Selecting Key Classes in Object-Oriented Software. Journal of Engineering Science and Technology, 16(4), 3360-3380 | spa |
dc.relation.references | Ala-Mutka, K. (2005). A Survey of Automated Assessment Approaches for Programming Assignments | spa |
dc.relation.references | Allowatt, A., y Edwards, S. H. (2005). IDE support for test-driven development and automated grading in both Java and C++. Proceedings of the 2005 OOPSLA Workshop on Eclipse Technology Exchange (eclipse’05), 100-104 | spa |
dc.relation.references | Barbosa, E. F., Silva, M. A. G., Corte, C. K. D., y Maldonado, J. C. (2021). Integrated Teaching of Programming Foundations and Software Testing | spa |
dc.relation.references | Batchelder, N. (2024). Coverage.py Documentation, Release 7.6.1 [[Accessed: Sep. 16, 2024]] | spa |
dc.relation.references | Betts, J. (2017). Software Testing: A Practical Guide. Wiley | spa |
dc.relation.references | Buffardi, K., y Edwards, S. H. (2021). A Formative Study of Influences on Student Testing Behaviors | spa |
dc.relation.references | Caiza, J. C., y Del Alamo, J. M. (2013). Programming assignments automatic grading: Review of tools and implementations | spa |
dc.relation.references | Charan, K., Karthikeya, N., Narasimharao, P. B., Devi, S. A., Abhilash, V., y Srinivas, P. V. V. S. (2023). Effective code testing strategies in DevOps: A comprehensive study of techniques and tools for ensuring code quality and reliability. Proceedings of the 4th International Conference on Electronics and Sustainable Communication Systems (ICESC), 302-309. https: / / doi.org / 10.1109 /ICESC57686.2023.10193275 | spa |
dc.relation.references | Clifton, J. (2010). A Simple Judging System for the ACM Programming Contest (inf. téc.). Computer Science y Software Engineering, University of Wisconsin – Platteville. http://micsymposium.org/mics_2010_proceedings/mics2010_submission_7.pdf | spa |
dc.relation.references | Combéfis, S., y de Moffarts, G. (2019). Automated Generation of Computer Graded Unit Testing-Based Programming Assessments for Education. 6th International Conference on Computer Science, Engineering and Information Technology (CSEIT-2019). https://doi.org/10.5121/csit.2019.91308 | spa |
dc.relation.references | Combéfis, S., y Saint-Marcq, V. (2012). Teaching Programming and Algorithm Design with Pythia, a Web-Based Learning Platform. 6, 31-43 | spa |
dc.relation.references | Correia, H., Leal, J. P., y Paiva, J. C. (2018). Improving Diagram Assessment in Mooshak. En E. Ras y A. E. Guerrero Roldán (Eds.), Technology Enhanced Assessment (pp. 69-82). Springer International Publishing | spa |
dc.relation.references | De Oliveira, L., Bosse, Y., y Gerosa, M. A. (2016). Visual programming and automatic evaluation of exercises: An experience with a STEM course. Proceedings of the 2016 IEEE Frontiers in Education Conference (FIE’16), 1-9 | spa |
dc.relation.references | De Souza, D. M., Maldonado, J. C., y Barbosa, E. F. (2011). ProgTest: An environment for the submission and evaluation of programming assignments based on testing activities. 24th IEEECS Conference on Software Engineering Education and Training (CSEE&T), 1-10 | spa |
dc.relation.references | De Souza, D. M., Oliveira, B. H., Maldonado, J. C., Souza, S., y Barbosa, E. F. (2014). Towards the use of an automatic assessment system in the teaching of software testing. Proceedings of the 2014 IEEE Frontiers in Education Conference (FIE’14), 1-8 | spa |
dc.relation.references | Delgado-Pérez, P., y Medina-Bulo, I. (2015). Automatización de la Corrección de Prácticas de Programación a través del Compilador Clang. Actas de las XXI Jornadas de la Enseñanza Universitaria de la Informática | spa |
dc.relation.references | Delgado-Pérez, P., Medina-Bulo, I., Domínguez-Jiménez, J. J., García-Domínguez, A., y Palomo-Lozano, F. (2014). Class Mutation Operators for C++ Object-Oriented Systems | spa |
dc.relation.references | Dennis, A., Wixom, B. H., y Tegarden, D. (2009). Systems Analysis and Design with OOP Approach with UML 2.0, 4th Edition. John Wiley & Sons, Inc | spa |
dc.relation.references | Derval, G., Gégo, A., y Reinbold, P. (2014). INGINIOUS [software] | spa |
dc.relation.references | Edwards, S. H. (2004). Using software testing to move students from trial-and-error to reflection-inaction. Proceedings of the 35th SIGCSE Technical Symposium on Computer Science Education (SIGCSE’04), 26-30 | spa |
dc.relation.references | Edwards, S. H., Kandru, N., y Rajagopal, M. (2020). Investigating Static Analysis Errors in Student Java Programs | spa |
dc.relation.references | Fox, A., y Patterson, D. (2012). Teaching Software Engineering with Agile and Cloud Computing. Communications of the ACM, 55(5), 48-55 | spa |
dc.relation.references | gcovr. (2024). gcovr documentation [[Accessed: Sep. 25, 2024]] | spa |
dc.relation.references | González-Carrillo, C. D., Restrepo-Calle, F., Ramírez-Echeverry, J. J., y González, F. A. (2021). Automatic Grading Tool for Jupyter Notebooks in Artificial Intelligence Courses. Sustainability, 13(21). https://doi.org/10.3390/su132112050 | spa |
dc.relation.references | Guerrero, M., Guamán, D. S., y Caiza, J. C. (2015). Revisión de Herramientas de Apoyo en el Proceso de Enseñanza-Aprendizaje de Programación | spa |
dc.relation.references | Hassan, M. A., Al-Qaderi, M. A., y Al-Masri, H. M. (2021). A Review of Unit Testing Metrics for Educational Purposes | spa |
dc.relation.references | Hetzel, W. (1988). The Complete Guide to Software Testing. Wiley | spa |
dc.relation.references | Hidalgo, J. M., y Calderón, G. (2021). Usability of an Online Judge for Concurrent Programming Education | spa |
dc.relation.references | Hora, A. (2024). TestDossier: A Dataset of Tested Values Automatically Extracted from Test Execution. Proceedings of the MSR ’24, 1-5. https://doi.org/10.1145/3643991.3644875 | spa |
dc.relation.references | Kaner, C., Bach, J., Pettichord, S., y Pels, P. (2002). Lessons Learned in Software Testing. Addison-Wesley | spa |
dc.relation.references | Kemerer, C. F., y Paulk, M. C. (2009). The impact of design and code reviews on software quality: an mpirical study based on PSP data. IEEE Transactions on Software Engineering, 35(4), 534-550 | spa |
dc.relation.references | Keuning, H., Jeuring, J., y Heeren, B. (2016). Towards a Systematic Review of Automated Feedback Generation for Programming Exercises [[Online]. Available: https://doi.org/10.1145/2899415.2899422]. Proceedings of the 2016 ACM Conference on Innovation and Technology in Computer Science Education, 41-46 | spa |
dc.relation.references | Leal, J. P., y Silva, F. (2003). Mooshak: a Web-based multi-site programming contest system. Software: Practice and Experience, 567-581. https://doi.org/10.1002/spe.522 | spa |
dc.relation.references | Liu, Y., Hu, B., Rao, L., y Pan, L. (2014). Java Code Coverage Test Technology Based on EMMA. Modern Technologies in Materials, Mechanics and Intelligent Systems, 1049-1050, 2069-2072. https://doi.org/10.4028/www.scientific.net/AMR.1049-1050 | spa |
dc.relation.references | Lobb, R., y Harlow, J. (2016). Coderunner: A tool for assessing computer programming skills. ACM Inroads, 7(1), 47-51. https://doi.org/10.1145/2810041 | spa |
dc.relation.references | Lozano Rojas, H. D. (2022). Evaluación del impacto en la motivación en el aprendizaje de los estudiantes de programación de computadores mediante el uso de una herramienta de evaluación automática [M.S.thesis]. Facultad de Ingeniería, Universidad Nacional de Colombia. | spa |
dc.relation.references | Luo, L. (2023). A Report on Software Testing Techniques | spa |
dc.relation.references | Matthies, C., Treffer, A., y Uflacker, M. (2017). Prof. CI: Employing Continuous Integration Services and GitHub Workflows to Teach Test-Driven Development. Proceedings of the 2017 IEEE Frontiers in Education Conference | spa |
dc.relation.references | Morgan, P., Samaroo, A., Thompson, G., y Williams, P. (2010). SOFTWARE TESTING (B. Hambling, Ed.) | spa |
dc.relation.references | Morgan, P., Samaroo, A., Thompson, G., y Williams, P. (2019). Software Testing - An ISTQB-BCS Certified Tester Foundation guide (4th) | spa |
dc.relation.references | Myers, G. J., Sandler, C., y Badgett, T. (2011). The Art of Software Testing | spa |
dc.relation.references | Myers, G. J., Sandler, C., y Badgett, T. (2012). The Art of Software Testing, 3rd Edition. John Wiley & Sons, Inc | spa |
dc.relation.references | Paiva, J. C., Leal, J. P., y Figueroa, A. (2022). Automated Assessment in Computer Science Education: A State-of-the-Art Review | spa |
dc.relation.references | Pham, M. T., y Nguyen, T. B. (2019). The DOMJudge based Online Judge System with Plagiarism Detection. 2019 IEEE International Conference on Communication and Electronics (ICCE), 1-6. https://doi.org/10.1109/ICCE.2019.8840660 | spa |
dc.relation.references | Pizzorno, J. A., y Berger, E. D. (2023). SlipCover: Near Zero-Overhead Code Coverage for Python. Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA’23), 1-12. https://doi.org/10.1145/3597926.3598128 | spa |
dc.relation.references | Pressman, R. S. (2010). Software Engineering: A Practitioner’s Approach (7th). McGraw-Hill Education | spa |
dc.relation.references | Rajagopal, M. B. (2018). Virtual Teaching Assistant to Support Students’ Efforts in Programming [Tesis de maestría, Virginia Polytechnic Institute y State University] | spa |
dc.relation.references | Ramírez-Echeverry, J. J., Restrepo-Calle, F., y González, F. (2022). A case study in technology-enhanced learning in an introductory computer programming course. Global Journal of Engineering Education, 24(1), 65-71. http://www.wiete.com.au/journals/GJEE/Publish/vol24no1/10-RestrepoCalle-F.pdf | spa |
dc.relation.references | Restrepo-Calle, F., Ramírez-Echeverry, J. J., y Gonzalez, F. A. (2018). UNCODE: Interactive system for learning and automatic evaluation of computer programming skills. Proceedings of the 10th Annual International Conference on Education and New Learning Technologies EDULEARN 2018, 1, 6888-6898. https://doi.org/10.21125/edulearn.2018.1632 | spa |
dc.relation.references | Restrepo-Calle, F., Ramírez-Echeverry, J. J., y González, F. (2020). Using an interactive software tool for the formative and summative evaluation in a computer programming course: an experience report. Global Journal of Engineering Education | spa |
dc.relation.references | Restrepo-Calle, F., Ramírez-Echeverry, J. J., y González, F. A. (2019). Continuous assessment in a computer programming course supported by a software tool. Computer Applications in Engineering Education, 27(1), 80-89. https://doi.org/10.1002/cae.22058 | spa |
dc.relation.references | Rubio, M. A., y González del Valle, F. (2018). Uso de una herramienta de corrección automática en un curso de programación: Una experiencia docente. Actas de las Jenui, 3, 343-350 | spa |
dc.relation.references | Rubio-Sánchez, M., Kinnunen, P., Pareja-Flores, C., y Velázquez-Iturbide, J. Á. (2012). Lessons learned from using the automated assessment tool “Mooshak”. 2012 International Symposium on Computers in Education (SIIE), 1-6 | spa |
dc.relation.references | Saha, R. K., Lyu, Y., Lam, W., Yoshida, H., y Prasad, M. R. (2018). Bugs.jar: A Large-scale, Diverse Dataset of Real-world Java Bugs. Proceedings of the 15th International Conference on Mining Software Repositories (MSR), 28-29 | spa |
dc.relation.references | Sangwin, C. (2019). Automatic assessment of students’ code using CodeRunner (inf. téc.). University of Edinburgh | spa |
dc.relation.references | Sathyaraj, B., y Arya, P. (2013). Structural coverage analysis for software testing in critical systems. SAE Technical Paper 2013-01-2283. https://doi.org/10.4271/2013-01-2283 | spa |
dc.relation.references | Skalka, J., Drlík, M., y Obonya, J. (2019). Automated Assessment in Learning and Teaching Programming Languages using Virtual Learning Environment [[Online]. Available: https://doi.org/10. 1109/EDUCON.2019.8725127], 689-697 | spa |
dc.relation.references | Sommerville, I. (2011). Software Engineering (9th). Pearson Education | spa |
dc.relation.references | Sousa Silva, G. R. (2022). Impact of a pseudocode online judge on programming language learning | spa |
dc.relation.references | Souza, D., Isotani, S., y Barbosa, E. (2015). Teaching novice programmers using ProgTest | spa |
dc.relation.references | Spacco, J. W. (2006). MARMOSET: A Programming Project Assignment Framework to Improve the Feedback Cycle for Students, Faculty and Researchers [Ph.D. dissertation]. University of Maryland, College Park | spa |
dc.relation.references | Straubinger, P., Fulcini, T., Fraser, G., y Torchiano, M. (2024). IntelliGame in Action: An Experience Report on Gamifying JavaScript Unit Tests. 2024 First IDE Workshop (IDE ’24), 1-5. https://doi.org/10.1145/3643796.3648466 | spa |
dc.relation.references | Sun, B., Shao, Y., y Chen, C. (2019). Study on the Automated Unit Testing Solution on the Linux Platform. 2019 IEEE 19th International Conference on Software Quality, Reliability and Security Companion (QRS-C), 358-361. https://doi.org/10.1109/QRS-C.2019.00073 | spa |
dc.relation.references | Tarek, M., Ashraf, A., Heidar, M., y Eliwa, E. (2022). Review of Programming Assignments Automated Assessment Systems [[Online]. Available: https : / / doi . org / 10 . 1109 / MIUCC55081 .2022.9781736]. 2022 2nd International Mobile, Intelligent, and Ubiquitous Computing Conference (MIUCC), 230-237 | spa |
dc.relation.references | Ullah, Z., Lajis, A., Jamjoom, M., Altalhi, A., Al-Ghamdi, A., y Saleem, F. (2018). The effect of automatic assessment on novice programming: Strengths and limitations of existing systems [[Online]. Available: https://doi.org/10.1002/cae.21974] | spa |
dc.relation.references | Umar, M. (2019). Comprehensive study of software testing: Categories, levels, techniques, and types [Unpublished] | spa |
dc.relation.references | Van den Brand, J. A. M., Van der Wiel, J. L., y Van Gurp, J. M. (2013). Metrics for Unit Testing: A Survey | spa |
dc.relation.references | Zhauniarovich, Y., Philippov, A., Gadyatskaya, O., Crispo, B., y Massacci, F. (2015). Towards Black Box Testing of Android Apps. 2015 10th International Conference on Availability, Reliability and Security (ARES), 501-510. https://doi.org/10.1109/ARES.2015.70 | spa |
dc.rights.accessrights | info:eu-repo/semantics/openAccess | spa |
dc.rights.license | Atribución-NoComercial-SinDerivadas 4.0 Internacional | spa |
dc.rights.uri | http://creativecommons.org/licenses/by-nc-nd/4.0/ | spa |
dc.subject.ddc | 000 - Ciencias de la computación, información y obras generales::005 - Programación, programas, datos de computación | spa |
dc.subject.ddc | 000 - Ciencias de la computación, información y obras generales::004 - Procesamiento de datos Ciencia de los computadores | spa |
dc.subject.proposal | Evaluación automática | spa |
dc.subject.proposal | Cobertura de código | spa |
dc.subject.proposal | Enseñanza de programación | spa |
dc.subject.proposal | Casos de prueba | spa |
dc.subject.proposal | Retroalimentación en educación | spa |
dc.subject.proposal | Programación de computadores | spa |
dc.subject.proposal | Automated assessment | eng |
dc.subject.proposal | Code coverage | eng |
dc.subject.proposal | Programming education | eng |
dc.subject.proposal | Test cases | eng |
dc.subject.proposal | Feedback in education | eng |
dc.subject.proposal | Computer programming | eng |
dc.subject.unesco | Evaluación del estudiante | spa |
dc.subject.unesco | Student evaluation | eng |
dc.subject.unesco | Método de evaluación | spa |
dc.subject.unesco | Evaluation methods | eng |
dc.subject.unesco | Tecnología de la información | spa |
dc.subject.unesco | Information technology | eng |
dc.subject.unesco | Retroalimentación (comunicación) | spa |
dc.subject.unesco | Feedback (communication) | eng |
dc.subject.unesco | Aplicación informática | spa |
dc.subject.unesco | Computer applications | eng |
dc.title | Evaluación automática de casos de prueba de ejercicios de programación de computadores | spa |
dc.title.translated | Automated assessment of test cases for computer programming exercises | eng |
dc.type | Trabajo de grado - Maestría | spa |
dc.type.coar | http://purl.org/coar/resource_type/c_bdcc | spa |
dc.type.coarversion | http://purl.org/coar/version/c_ab4af688f83e57aa | spa |
dc.type.content | Text | spa |
dc.type.driver | info:eu-repo/semantics/masterThesis | spa |
dc.type.redcol | http://purl.org/redcol/resource_type/TM | spa |
dc.type.version | info:eu-repo/semantics/acceptedVersion | spa |
dcterms.audience.professionaldevelopment | Estudiantes | spa |
dcterms.audience.professionaldevelopment | Investigadores | spa |
dcterms.audience.professionaldevelopment | Maestros | spa |
dcterms.audience.professionaldevelopment | Público general | spa |
oaire.accessrights | http://purl.org/coar/access_right/c_abf2 | spa |
Archivos
Bloque original
1 - 1 de 1
Cargando...
- Nombre:
- 1014272875.2025.pdf
- Tamaño:
- 730.1 KB
- Formato:
- Adobe Portable Document Format
- Descripción:
- Tesis de Maestría en Ingeniería - Ingeniería de Sistemas y Computación
Bloque de licencias
1 - 1 de 1
Cargando...
- Nombre:
- license.txt
- Tamaño:
- 5.74 KB
- Formato:
- Item-specific license agreed upon to submission
- Descripción: