Desenvolvimento baseado em testes com aplicação de critérios de teste no ensino introdutório de computação
Resumo
Estudos relatam dificuldades enfrentadas no ensino de programação para alunos iniciantes em cursos de graduação da área da Computação e afins. O teste de software pode contribuir nesse processo de aprendizagem e o TDD (Test-driven development) pode ser utilizado como uma forma de guiar a integração de teste de software com a programação, estabelecendo um plano de aprendizado de programação que tende a melhorar a capacidade do aluno de interpretar e resolver o problema computacional em questão. O objetivo do trabalho é o desenvolvimento de uma abordagem para o ensino introdutório de programação considerando TDD com critérios de teste de software. A abordagem consiste no desenvolvimento iterativo de casos de teste e da implementação de soluções para um problema (tarefa de programação), com o escalonamento dos critérios de teste considerados a cada iteração. Desta forma, além de auxiliar a evolução da compreensão sobre um problema computacional e, consequentemente, na implementação de uma solução, os critérios podem contribuir para entender situações atípicas do espaço do problema e dos aspectos computacionais. Para avaliar os resultados desta abordagem, os alunos, após a instrução sobre conceitos computacionais e criação de casos de tese, resolverão tarefas de programação com níveis de dificuldade escalonado. Dos resultados, serão verificadas a qualidade das soluções implementadas e o desempenho dos alunos na disciplina. Espera-se que o resultado do desenvolvimento de casos de teste, considerando critérios de teste antes de iniciar a codificação, possa auxiliar os alunos a desenvolver a lógica da resolução do problema computacional de uma forma mais eficaz e, consequentemente, ter um melhor desempenho nas disciplinas introdutórias de programação.
Link para o vídeo da apresentação: https://youtu.be/TQPpQB95tGU
Referências
Stephen H. Edwards. 2004. Using software testing to move students from trial-and-error to reflection-in-action. In35th SIGCSE Technical Symposium on ComputerScience Education(35 ed.) (Norfolk, VA, EUA). ACM, New York, NY, EUA, 26–30.https://doi.org/10.1145/971300.971312
André Luiz Villar Forbellone and Henri Frederico Eberspächer. 2005. (3 ed.). Pearson, São Paulo, SP, Brasil. 218 pages.
Pei Hsia and Frederick E. Petry. 1980. A Framework for Discipline in Pro-gramming.Transactions on Software EngineeringSE-6, 2 (March 1980), 226–32.https://doi.org/10.1109/TSE.1980.234479
ISO, IEC, and IEEE. 2017. ISO/IEC/IEEE 24765:2017 – Systems and softwareengineering – Vocabulary. Padrão Internacional. 525 pages. https://doi.org/10.1109/IEEESTD.2017.8016712
Vesa Lappalainen, Jonne Itkonen, Ville Isomöttönen, and Sami Kollanus. 2010.ComTest: a tool to impart TDD and unit testing to introductory level program-ming. In15th Annual Conference on Innovation and Technology in Computer ScienceEducation(15 ed.) (Bilkent, Ankara, Turquia). ACM, New York, NY, EUA, 63–67.https://doi.org/10.1145/1822090.1822110
Andrew Luxton-Reilly, Simon, Ibrahim Albluwi, Brett A. Becker, Michail Gian-nakos, Amruth N. Kumar, Linda Ott, James Paterson, Michael James Scott, JudySheard, and Claudia Szabo. 2018. Introductory Programming: A Systematic Lite-rature Review. InProceedings of the 23rd Annual ACM Conference on Innovationand Technology in Computer Science Education(23 ed.) (Larnaca, Cyprus). ACM,New York, NY, EUA, 55–106. https://doi.org/10.1145/3293881.3295779
Bruno Henrique Pachulski Camara and Marco Aurélio Graciotto Silva. 2016.A Strategy to Combine Test-Driven Development and Test Criteria to ImproveLearning of Programming Skills. In47th ACM Technical Symposium on ComputingScience Education(47 ed.) (Memphis, TN, EUA). ACM, New York, NY, EUA, 443–448. https://doi.org/10.1145/2839509.2844633
Arnold Pears, Stephen Seidman, Lauri Malmi, Linda Mannila, Elizabeth Adams,Jens Bennedsen, Marie Devlin, and James Paterson. 2007. A Survey of Literatureon the Teaching of Introductory Programming. InWorking Group Reports onITiCSE on Innovation and Technology in Computer Science Education (ITiCSE-WGR 2007)(Dundee, Scotland). ACM, New York, NY, EUA, 204–223.https://doi.org/10.1145/1345443.1345441
Python Software Foundation. 1999. doctest – Test interactive Python examples.Software. https://docs.python.org/3/library/doctest.html
Lilian Passos Scatalon, Jeffrey C. Carver, Rogério Eduardo Garcia, and Ellen Fran-cine Barbosa. 2019. Software Testing in Introductory Programming Courses: A Systematic Mapping Study. InProceedings of the 50th ACM Technical Symposiumon Computer Science Education(50 ed.) (Minneapolis, MN, EUA). ACM, New York,NY, EUA, 421–427. https://doi.org/10.1145/3287324.3287384
Allison Elliott Tew and Mark Guzdial. 2011. The FCS1: A Language IndependentAssessment of CS1 Knowledge. In42nd ACM Technical Symposium on ComputerScience Education(42 ed.) (Dallas, TX, EUA). ACM, New York, NY, EUA, 111–116.https://doi.org/10.1145/1953163.1953200