Este curso tem como objetivo promover o domínio e a disseminação de conhecimentos técnico-científicos em Teste de Software. De modo geral, o domínio do conhecimento na área pode ser caracterizado por meio de aspectos teóricos e empíricos, associados à existência de ferramentas de apoio. Em outras palavras, o conhecimento pode ser dividido em: conhecimento teórico, conhecimento empírico (prática) e desenvolvimento/utilização de ferramentas.
O curso proposto está baseado no material elaborado para o minicurso Introdução ao Teste de Software (Barbosa et al., 2000b), ministrado no XIV Simpósio Brasileiro de Engenharia de Software, realizado em João Pessoa em outubro de 2000. Pretende explorar os aspectos teóricos e práticos relacionados à atividade de teste de software, em particular, à técnica baseada em mutação, com o apoio das ferramentas de teste PROTEUM (Program Testing Using Mutants) (Delamaro & Maldonado, 1996) e PROTEUM/IM (Delamaro & Maldonado, 1999), desenvolvidas no contexto do grupo de Engenharia de Software do ICMC/USP, que apóiam a aplicação do teste de mutação para programas em C, em nível de unidade e de integração, respectivamente.
O curso apresenta a seguinte estrutura:
O curso proposto deverá ser desenvolvido para diferentes ambientes educacionais, entre eles o CALM (Seção 2.2.1). Com isso, espera-se avaliar os recursos existentes nesses ambientes e, a partir dessa avaliação, caracterizar os requisitos necessários ao ferramental de autoria, apresentação e avaliação, do ponto de vista da atividade de teste. Além disso, os requisitos identificados no processo de avaliação deverão ser incorporados ao CALM, servindo assim para a evolução do ambiente.
É importante observar que o curso aborda, em uma primeira etapa, aspectos e conceitos introdutórios na área de Teste de Software. Posteriormente, outros conceitos e mecanismos mais abrangentes devem ser incorporados ao material desenvolvido. Por exemplo, a aplicação do paradigma de orientação a objetos no desenvolvimento de software e, em particular, de linguagens orientadas a objetos, tem introduzido novos desafios no teste de produtos. O teste de especificações e a geração de dados de teste são outras linhas de pesquisa que também têm merecido destaque dentro da área. Nessa perspectiva, tanto o material didático elaborado quanto o curso desenvolvido devem ser continuamente aprimorados e evoluídos, incorporando aos tópicos existentes temas relevantes e novas linhas de pesquisa em Teste de Software, acompanhando a própria evolução da área.
Outro aspecto importante a ser considerado no contexto de um curso de teste diz respeito à utilização de ferramentas que apóiem a aplicação dos critérios de teste estudados, conforme abordado na Seção 2.2.4. A disponibilidade de ferramentas de teste, além de possibilitar que os testes possam ser conduzidos de maneira satisfatória e de minimizar os erros decorrentes da intervenção humana, auxilia pesquisadores e alunos a adquirirem os conceitos básicos relacionados ao teste e experiência na comparação, seleção e estabelecimento de estratégias de teste.