Aspectos de Desenvolvimento e Evolução do Ambiente ProgTest Draylson Micael de Souza, Ana Cláudia Riekstin, Ellen Francine Barbosa Instituto de Ciências Matemáticas e de Computação – ICMC/USP/São Carlos 1. Objetivos No trabalho de mestrado de Corte [1] foram investigados mecanismos de apoio ao ensino integrado de fundamentos de programação e teste de software. Um módulo educacional integrado de programação e teste foi desenvolvido, e um ambiente de apoio para submissão e avaliação automática de trabalhos práticos dos alunos, baseado em atividades de teste, foi proposto – ProgTest. Este trabalho insere-se nessa perspectiva, tendo como objetivo dar continuidade ao desenvolvimento e evolução do ambiente ProgTest. 2. Material e Métodos Para o desenvolvimento do trabalho foram realizadas as seguintes atividades: (1) estudo do ambiente ProgTest; (2) levantamento e estudo de ambientes e ferramentas similares; (3) levantamento e estudo de mecanismos para o desenvolvimento de sistemas web; e (4) desenvolvimento e evolução da ProgTest. 3. Resultados e Discussão O ambiente ProgTest (Figura 1) é baseado na web e na concepção de software livre. Para cada trabalho existe uma implementação de referência – o programa “oráculo” – e um conjunto de casos de teste que são utilizados para testar essa implementação. Para cada trabalho, o aluno submete ao ambiente seu programa e seus casos de teste. Após a submissão, o ambiente compila o programa e os casos de teste do aluno e depois realiza execuções trocadas, utilizando a ferramenta de teste JaBUTi [2] e o framework JUnit. Para cada trabalho executa-se o programa do professor com os casos de teste do professor. Depois, para cada aluno: (1) executa-se o programa do aluno com os seus respectivos casos de teste; (2) executa-se o programa do professor com os casos de teste do aluno; e (3) executa-se o programa do aluno com os casos de teste do professor. Para cada uma dessas execuções a ferramenta JaBUTi realiza a análise de cobertura do código com os casos de teste utilizados e fornece os índices de cobertura nos critérios por ela implementados, obtendo os resultados do teste estrutural dos programas dos alunos. Os casos de teste também são executados no JUnit, obtendo-se os resultados do teste funcional. Com base nos resultados obtidos e nos pesos fornecidos pelo professor para cada critério de teste e para cada execução trocada, o sistema gera uma “sugestão” de nota ao trabalho do aluno. Figura 1: ProgTest – Visão do aluno. 4. Conclusões Este trabalho teve como objetivo dar continuidade ao desenvolvimento e evolução da ProgTest – um ambiente de apoio à submissão e avaliação automática de trabalhos, baseado em atividades de teste. A idéia é que a introdução da atividade de teste no ensino de conceitos básicos de programação possa ajudar o desenvolvimento das habilidades de compreensão e análise, fazendo com que os alunos conheçam o comportamento dos seus programas. Ainda, alunos que aprendem teste mais cedo podem se tornar melhores testadores e desenvolvedores visto que o teste força a integração e aplicação de teorias e habilidades de análise, projeto e implementação. 5. Referências Bibliográficas [1] C. K. D. Corte. Ensino integrado de fundamentos de programação e teste de software. Mestrado, ICMC/USP, 2006. [2] A. M. R. Vincenzi et al. JaBUTi – Java Bytecode Understanding and Testing. Manual do Usuário, 2003. http://incubadora.fapesp.br/projects/jabuti/.