Evaluación automática de casos de prueba de ejercicios de programación de computadores

dc.contributor.advisorRestrepo Calle, Felipespa
dc.contributor.advisorGonzález Osorio, Fabio Augustospa
dc.contributor.authorRivera Cárdenas, David Leonardospa
dc.contributor.refereeVergara Vargas, Jeisson Andrésspa
dc.contributor.researchgroupPlas Programming languages And Systemsspa
dc.date.accessioned2025-07-17T19:23:49Z
dc.date.available2025-07-17T19:23:49Z
dc.date.issued2025-07-15
dc.descriptionilustraciones, diagramasspa
dc.description.abstractEl 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.abstractThe 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.degreelevelMaestríaspa
dc.description.degreenameMagíster en Ingeniería - Ingeniería de Sistemas y Computaciónspa
dc.description.researchareaComputación aplicada - educación en ingenieríaspa
dc.format.extent69 páginasspa
dc.format.mimetypeapplication/pdfspa
dc.identifier.instnameUniversidad Nacional de Colombiaspa
dc.identifier.reponameRepositorio Institucional Universidad Nacional de Colombiaspa
dc.identifier.repourlhttps://repositorio.unal.edu.co/spa
dc.identifier.urihttps://repositorio.unal.edu.co/handle/unal/88357
dc.language.isospaspa
dc.publisherUniversidad Nacional de Colombiaspa
dc.publisher.branchUniversidad Nacional de Colombia - Sede Bogotáspa
dc.publisher.departmentDepartamento de Ingeniería de Sistemas e Industrialspa
dc.publisher.facultyFacultad de Ingenieríaspa
dc.publisher.placeBogotá, Colombiaspa
dc.publisher.programBogotá - Ingeniería - Maestría en Ingeniería - Ingeniería de Sistemas y Computaciónspa
dc.relation.referencesAaltonen, 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-160spa
dc.relation.referencesAbarca, 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-66spa
dc.relation.referencesAl-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-3380spa
dc.relation.referencesAla-Mutka, K. (2005). A Survey of Automated Assessment Approaches for Programming Assignmentsspa
dc.relation.referencesAllowatt, 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-104spa
dc.relation.referencesBarbosa, E. F., Silva, M. A. G., Corte, C. K. D., y Maldonado, J. C. (2021). Integrated Teaching of Programming Foundations and Software Testingspa
dc.relation.referencesBatchelder, N. (2024). Coverage.py Documentation, Release 7.6.1 [[Accessed: Sep. 16, 2024]]spa
dc.relation.referencesBetts, J. (2017). Software Testing: A Practical Guide. Wileyspa
dc.relation.referencesBuffardi, K., y Edwards, S. H. (2021). A Formative Study of Influences on Student Testing Behaviorsspa
dc.relation.referencesCaiza, J. C., y Del Alamo, J. M. (2013). Programming assignments automatic grading: Review of tools and implementationsspa
dc.relation.referencesCharan, 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.10193275spa
dc.relation.referencesClifton, 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.pdfspa
dc.relation.referencesCombé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.91308spa
dc.relation.referencesCombéfis, S., y Saint-Marcq, V. (2012). Teaching Programming and Algorithm Design with Pythia, a Web-Based Learning Platform. 6, 31-43spa
dc.relation.referencesCorreia, 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 Publishingspa
dc.relation.referencesDe 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-9spa
dc.relation.referencesDe 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-10spa
dc.relation.referencesDe 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-8spa
dc.relation.referencesDelgado-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áticaspa
dc.relation.referencesDelgado-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 Systemsspa
dc.relation.referencesDennis, A., Wixom, B. H., y Tegarden, D. (2009). Systems Analysis and Design with OOP Approach with UML 2.0, 4th Edition. John Wiley & Sons, Incspa
dc.relation.referencesDerval, G., Gégo, A., y Reinbold, P. (2014). INGINIOUS [software]spa
dc.relation.referencesEdwards, 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-30spa
dc.relation.referencesEdwards, S. H., Kandru, N., y Rajagopal, M. (2020). Investigating Static Analysis Errors in Student Java Programsspa
dc.relation.referencesFox, A., y Patterson, D. (2012). Teaching Software Engineering with Agile and Cloud Computing. Communications of the ACM, 55(5), 48-55spa
dc.relation.referencesgcovr. (2024). gcovr documentation [[Accessed: Sep. 25, 2024]]spa
dc.relation.referencesGonzá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/su132112050spa
dc.relation.referencesGuerrero, 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ónspa
dc.relation.referencesHassan, M. A., Al-Qaderi, M. A., y Al-Masri, H. M. (2021). A Review of Unit Testing Metrics for Educational Purposesspa
dc.relation.referencesHetzel, W. (1988). The Complete Guide to Software Testing. Wileyspa
dc.relation.referencesHidalgo, J. M., y Calderón, G. (2021). Usability of an Online Judge for Concurrent Programming Educationspa
dc.relation.referencesHora, 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.3644875spa
dc.relation.referencesKaner, C., Bach, J., Pettichord, S., y Pels, P. (2002). Lessons Learned in Software Testing. Addison-Wesleyspa
dc.relation.referencesKemerer, 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-550spa
dc.relation.referencesKeuning, 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-46spa
dc.relation.referencesLeal, 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.522spa
dc.relation.referencesLiu, 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-1050spa
dc.relation.referencesLobb, R., y Harlow, J. (2016). Coderunner: A tool for assessing computer programming skills. ACM Inroads, 7(1), 47-51. https://doi.org/10.1145/2810041spa
dc.relation.referencesLozano 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.referencesLuo, L. (2023). A Report on Software Testing Techniquesspa
dc.relation.referencesMatthies, 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 Conferencespa
dc.relation.referencesMorgan, P., Samaroo, A., Thompson, G., y Williams, P. (2010). SOFTWARE TESTING (B. Hambling, Ed.)spa
dc.relation.referencesMorgan, P., Samaroo, A., Thompson, G., y Williams, P. (2019). Software Testing - An ISTQB-BCS Certified Tester Foundation guide (4th)spa
dc.relation.referencesMyers, G. J., Sandler, C., y Badgett, T. (2011). The Art of Software Testingspa
dc.relation.referencesMyers, G. J., Sandler, C., y Badgett, T. (2012). The Art of Software Testing, 3rd Edition. John Wiley & Sons, Incspa
dc.relation.referencesPaiva, J. C., Leal, J. P., y Figueroa, A. (2022). Automated Assessment in Computer Science Education: A State-of-the-Art Reviewspa
dc.relation.referencesPham, 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.8840660spa
dc.relation.referencesPizzorno, 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.3598128spa
dc.relation.referencesPressman, R. S. (2010). Software Engineering: A Practitioner’s Approach (7th). McGraw-Hill Educationspa
dc.relation.referencesRajagopal, 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.referencesRamí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.pdfspa
dc.relation.referencesRestrepo-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.1632spa
dc.relation.referencesRestrepo-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 Educationspa
dc.relation.referencesRestrepo-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.22058spa
dc.relation.referencesRubio, 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-350spa
dc.relation.referencesRubio-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-6spa
dc.relation.referencesSaha, 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-29spa
dc.relation.referencesSangwin, C. (2019). Automatic assessment of students’ code using CodeRunner (inf. téc.). University of Edinburghspa
dc.relation.referencesSathyaraj, 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-2283spa
dc.relation.referencesSkalka, 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-697spa
dc.relation.referencesSommerville, I. (2011). Software Engineering (9th). Pearson Educationspa
dc.relation.referencesSousa Silva, G. R. (2022). Impact of a pseudocode online judge on programming language learningspa
dc.relation.referencesSouza, D., Isotani, S., y Barbosa, E. (2015). Teaching novice programmers using ProgTestspa
dc.relation.referencesSpacco, 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 Parkspa
dc.relation.referencesStraubinger, 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.3648466spa
dc.relation.referencesSun, 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.00073spa
dc.relation.referencesTarek, 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-237spa
dc.relation.referencesUllah, 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.referencesUmar, M. (2019). Comprehensive study of software testing: Categories, levels, techniques, and types [Unpublished]spa
dc.relation.referencesVan den Brand, J. A. M., Van der Wiel, J. L., y Van Gurp, J. M. (2013). Metrics for Unit Testing: A Surveyspa
dc.relation.referencesZhauniarovich, 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.70spa
dc.rights.accessrightsinfo:eu-repo/semantics/openAccessspa
dc.rights.licenseAtribución-NoComercial-SinDerivadas 4.0 Internacionalspa
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/4.0/spa
dc.subject.ddc000 - Ciencias de la computación, información y obras generales::005 - Programación, programas, datos de computaciónspa
dc.subject.ddc000 - Ciencias de la computación, información y obras generales::004 - Procesamiento de datos Ciencia de los computadoresspa
dc.subject.proposalEvaluación automáticaspa
dc.subject.proposalCobertura de códigospa
dc.subject.proposalEnseñanza de programaciónspa
dc.subject.proposalCasos de pruebaspa
dc.subject.proposalRetroalimentación en educaciónspa
dc.subject.proposalProgramación de computadoresspa
dc.subject.proposalAutomated assessmenteng
dc.subject.proposalCode coverageeng
dc.subject.proposalProgramming educationeng
dc.subject.proposalTest caseseng
dc.subject.proposalFeedback in educationeng
dc.subject.proposalComputer programmingeng
dc.subject.unescoEvaluación del estudiantespa
dc.subject.unescoStudent evaluationeng
dc.subject.unescoMétodo de evaluaciónspa
dc.subject.unescoEvaluation methodseng
dc.subject.unescoTecnología de la informaciónspa
dc.subject.unescoInformation technologyeng
dc.subject.unescoRetroalimentación (comunicación)spa
dc.subject.unescoFeedback (communication)eng
dc.subject.unescoAplicación informáticaspa
dc.subject.unescoComputer applicationseng
dc.titleEvaluación automática de casos de prueba de ejercicios de programación de computadoresspa
dc.title.translatedAutomated assessment of test cases for computer programming exerciseseng
dc.typeTrabajo de grado - Maestríaspa
dc.type.coarhttp://purl.org/coar/resource_type/c_bdccspa
dc.type.coarversionhttp://purl.org/coar/version/c_ab4af688f83e57aaspa
dc.type.contentTextspa
dc.type.driverinfo:eu-repo/semantics/masterThesisspa
dc.type.redcolhttp://purl.org/redcol/resource_type/TMspa
dc.type.versioninfo:eu-repo/semantics/acceptedVersionspa
dcterms.audience.professionaldevelopmentEstudiantesspa
dcterms.audience.professionaldevelopmentInvestigadoresspa
dcterms.audience.professionaldevelopmentMaestrosspa
dcterms.audience.professionaldevelopmentPúblico generalspa
oaire.accessrightshttp://purl.org/coar/access_right/c_abf2spa

Archivos

Bloque original

Mostrando 1 - 1 de 1
Cargando...
Miniatura
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

Mostrando 1 - 1 de 1
Cargando...
Miniatura
Nombre:
license.txt
Tamaño:
5.74 KB
Formato:
Item-specific license agreed upon to submission
Descripción: