A qualidade e produtividade da atividade de teste dependem, entre outros fatores, do critério de teste utilizado e da existência de ferramentas de teste que o apóiem. De fato, sem o suporte de uma ferramenta automatizada, a aplicação de um critério torna-se uma atividade propensa a erros e limitada a programas muito simples.
A disponibilidade de ferramentas de teste permite ainda a transferência tecnológica entre uni- versidade e indústria, e contribui para a contínua evolução de tais ambientes, fatores indispensáveis
52 2.5. Teste de Software para a produção de software de alta qualidade. Além disso, estas são de fundamental importân- cia no apoio à condução de estudos empíricos, possibilitando avaliar o aspecto complementar das técnicas e critérios de teste.
Outro fator importante é o suporte oferecido aos testes de regressão. Os casos de teste utilizados durante a atividade de teste podem ser facilmente obtidos para revalidação do software após uma modificação. Com isso, é possível checar se a funcionalidade do software foi alterada, reduzir o custo para gerar os testes de regressão e comparar os resultados obtidos nos testes de regressão com os resultados do teste original (Souza, 1996).
Ressalta-se, por fim, que a existência de ferramentas automatizadas auxilia pesquisadores e alunos de Engenharia de Software a adquirirem os conceitos básicos e experiência na comparação, seleção e estabelecimento de estratégias de teste. Nesse sentido, ferramentas de teste desempe- nham um papel relevante no processo de ensino e treinamento de conceitos, técnicas e critérios de teste, contribuindo para a formação e capacitação de pessoal na área.
Dentro do contexto apresentado, uma série de ferramentas de teste pode ser identificada. No apoio à aplicação dos critérios baseados em fluxo de dados, uma das primeiras iniciativas de au- tomatização foi a ferramenta Asset (A System to Select and Evaluate Tests) (Frankl & Weyuker, 1985). A ferramenta foi desenvolvida na New York University, apoiando a aplicação dos critérios definidos por Rapps & Weyuker (1982, 1985) no teste de programas Pascal.
Um dos esforços mais significativos no contexto de ferramentas de teste foi o desenvolvimento da Atac (Automatic Test Analysis for C), pela Telcordia Technologies (Horgan & Mathur, 1992). A ferramenta apóia a aplicação de critérios de fluxo de controle e de dados no teste de programas escritos nas linguagens C e C++. Basicamente, é possível verificar a adequação de um conjunto de casos de teste, visualizar o código não coberto pelos casos de teste, auxiliar na geração de casos de teste e reduzir o tamanho do conjunto de teste, por meio da eliminação de casos de teste redundantes.
Atualmente a Atac está integrada ao ambiente xSuds (Telcordia Software Visualization and
Analysis Toolsuite) (Agrawal et al., 1998), que oferece suporte às atividades de teste, análise e
depuração. O ambiente vem sendo comercializado pela IBM, sendo uma forte evidência de que o uso de critérios baseados em fluxo de dados constituirá, em um futuro próximo, o estado da prática no que diz respeito ao Teste de Software.
Com respeito ao teste de especificações, Wong et al. (2003) investigaram como os critérios baseados em fluxo de controle e em fluxo de dados poderiam ser utilizados no teste de especifica- ções em SDL. Para auxiliar as atividades de teste e validação de especificações, foi desenvolvida a ferramenta CATSDL(Coverage Analysis Tool – SDL), que permite a análise de cobertura de teste
para especificações baseadas em SDL e fornece dicas ao testador que auxiliam na geração de casos de teste. De modo geral, a cobertura dos casos de teste é avaliada em relação a cinco critérios de teste: Todos-Blocos, Todas-Decisões, Todos-Usos, Todos-P-Usos e Todos-C-Usos.
Como apoio à aplicação do critério Análise de Mutantes, tem-se a ferramenta Mothra (Choi et al., 1989b; DeMillo et al., 1988). Desenvolvida na Purdue University e no Georgia Institute
of Technology, a ferramenta apóia a aplicação do critério no teste de programas na linguagem
Fortran, contando com 22 operadores de mutação implementados. A Mothra apresenta interface baseada em janelas, facilitando a visualização das informações, e permite a incorporação de outras ferramentas (tais como gerador de casos de teste, verificador de equivalência e oráculo).
Especificamente no contexto dos trabalhos conduzidos pelo Grupo de Engenharia de Software do ICMC-USP, várias são as iniciativas de pesquisa relacionadas à especificação e implementação de ferramentas de teste. Podem-se destacar, por exemplo, as ferramentas:
• PokeTool (Potential Uses Criteria Tool for Program Testing) (Chaim, 1991): Desenvolvida na FEEC/UNICAMP em colaboração com o ICMC-USP, apóia a aplicação dos critérios Potenciais-Usos (Maldonado, 1991) e também outros critérios estruturais como Todos-Nós e Todos-Arcos.
• Proteum (Program Testing Using Mutants) (Delamaro, 1993): Apóia a aplicação do critério Análise de Mutantes (DeMillo et al., 1978), em nível de unidade, no teste de programas C. • PROTEUM/IM (Delamaro et al., 2000): Apóia a aplicação do critério Mutação de Inter-
face (Delamaro & Maldonado, 1996, 1997; Delamaro et al., 2001a) no teste de programas C, em nível de integração. A ferramenta é uma extensão da Proteum, possuindo arquite- tura e implementação similares a esta. O que diferencia ambas as ferramentas é o conjunto de operadores de mutação utilizados em cada uma e o fato de que aPROTEUM/IM oferece
características para testar a conexão entre as unidades do software.
• PROTEUM/IM2.0(Maldonado et al., 2000b): Ambiente de teste integrado que viabiliza a apli-
cação do teste de mutação tanto em nível de unidade como de integração. APROTEUM/IM2.0
é resultado da integração das ferramentas Proteum ePROTEUM/IM.
Além disso, mecanismos e ferramentas para automatizar a aplicação do critério Análise de Mu- tantes no contexto de especificações formais também têm sido explorados. Utilizando a ferramenta
Proteum como base, foram definidas as ferramentas:
• Proteum-RS/FSM (Fabbri et al., 1999): Apóia o teste de especificações baseadas em Máqui- nas de Estado Finito.
• Proteum-RS/ST (Sugeta, 1999): Apóia o teste de especificações baseadas em Statecharts. • Proteum-RS/PN (Simão et al., 2000): Apóia o teste de especificações baseadas em Redes de
54 2.5. Teste de Software O Grupo de Engenharia de Software do ICMC-USP também tem atuado no contexto de orien- tação a objetos e, nesse sentido, atualmente vem sendo desenvolvida a ferramenta JaBUTi (Java
Bytecode Understanding and Testing) (Vincenzi et al., 2003b). Basicamente, a ferramenta apóia
aplicação do teste estrutural intra-método em programas e componentes Java.
Finalmente, ressalta-se que as ferramentas desenvolvidas pelo grupo também vêm sendo evo- luídas de modo a permitir sua utilização via web, tornando seu acesso independente de plata- forma (Bianchini et al., 2003). A primeira iniciativa nesse sentido foi o desenvolvimento da interface web para a ferramenta PROTEUM/IM2.0. Como resultado correlato destaca-se ainda o
desenvolvimento da estrutura gráfica de um framework para a geração de ferramentas de teste disponibilizadas via web. Em curto prazo, pretende-se que o framework seja instanciado na cons- trução de interfaces web para as demais ferramentas de teste desenvolvidas pelo grupo.
Com a disponibilização via web, a idéia é que tais ferramentas possam ser mais facilmente integradas aos ambientes e sistemas educacionais existentes, sendo utilizadas como mecanismos de apoio ao aprendizado e revisão de conceitos de teste tanto por alunos do ICMC-USP como por alunos de outras instituições e por profissionais da indústria. Trabalhos preliminares (Barbosa et al., 2000) envolvendo a integração de ferramentas de teste no contexto de ambientes educacionais já foram conduzidos no escopo da ferramenta PokeTool (Chaim, 1991) e do ambiente CALM (Adri- ano et al., 1999).