next up previous contents
Next: Autoria de materiais educacionais Up: Situações teste sob a Previous: Edição de conteúdos em   Sumário


Integração de ferramenta externa ao CALM

A possibilidade de integração de ferramentas externas a ambientes educacionais é um aspecto relevante no que diz respeito ao processo de ensino, aprendizado e treinamento.

Nessa perspectiva, um dos trabalhos realizados dentro do contexto da disciplina Projeto de Objetos Educacionais (ver Seção 2.1.4), no segundo semestre de 1999, consistiu na definição e implementação de um mecanismo para possibilitar a utilização de ferramentas externas a partir do CALM.

Do ponto de vista do aluno, a idéia é que este ao estudar, resolver um exercício prático ou realizar um teste de avaliação possa fazer uso de ferramentas externas ao ambiente CALM, específicas para o ensino/aprendizado do tópico abordado. Sob a ótica do autor, pretende-se manter uma base de dados a respeito das ferramentas integradas ao ambiente, de modo que, durante a autoria, este possa utilizá-las na elaboração de um material didático mais rico e interessante. Com isso o aluno, além de estudar a teoria relacionada a determinado tópico, também pode desenvolver atividades práticas a partir das ferramentas integradas. A Figura 2.11 ilustra a interação entre aluno e autor com ferramentas externas integradas ao ambiente CALM.

Figura: Interação entre aluno e autor com ferramentas externas.
\includegraphics[scale=.7]{intferext.eps}

Basicamente, alunos e autores interagem com um servidor, via applet, o qual é responsável por consultar uma base de dados contendo informações a respeito das ferramentas integradas. Quanto ao servidor, observa-se que este pode ser dedicado ou não, dependendo da sobrecarga de processamento que a execução de determinada ferramenta poderá causar. Ainda, deve-se ressaltar que, em geral, as ferramentas são dependentes de plataforma e, desse modo, faz-se necessária a presença de servidores que possibilitem a execução remota dos diversos tipos de ferramentas. Quanto à base de dados, embora esta a princípio possa ser omitida, posteriormente, com a adição de um maior número de ferramentas ao ambiente, sua presença torna-se um recurso fundamental permitindo armazenar informações específicas de cada ferramenta tais como: parâmetros específicos, sistema operacional, arquivos gerados, perfil de utilização, etc. Com isso, durante a autoria, o autor pode saber quais informações devem ser fornecidas para a execução de determinada ferramenta, evitando que parâmetros importantes sejam omitidos. Além disso, a partir de uma consulta à base de dados, pode-se estabelecer um filtro de modo que somente ferramentas que possuam relação com o tópico abordado possam ser utilizadas.

O primeiro passo na direção de integrar de ferramentas externas ao CALM foi realizado com a ferramenta de teste POKE-TOOL (Potential Uses Criteria Tool for Program Testing) (Maldonado et al., 1989; Chaim, 1991), que apóia a aplicação de critérios estruturais no teste de programas C. As principais operações realizadas pela POKE-TOOL são:

  1. Criação de uma sessão de teste: O termo sessão de teste é utilizado para designar as atividades realizadas durante a execução de um teste. O teste pode ser realizado em etapas onde são armazenados os estados intermediários da aplicação de teste a fim de que possam ser recuperados posteriormente. Desse modo, é possível ao usuário iniciar e encerrar o teste de um programa, bem como retomá-lo a partir de onde este foi interrompido.

  2. Manipulação de casos de teste: Inclui a execução, adição e remoção dos casos de teste fornecidos pelo testador.

  3. Análise de adequação: Determina a porcentagem de cobertura obtida por um conjunto de casos de teste em relação aos requisitos de um determinado critério. Relatórios estatísticos contendo informações sobre os testes realizados também são gerados.

Basicamente, o usuário entra com o programa a ser testado, com o conjunto de casos de teste e seleciona todos ou alguns dos critérios disponíveis (Todos-Potenciais- Usos, Todos-Potenciais-Usos/Du, Todos-Potenciais-Du-Caminhos, Todos-Nós e Todos- Arcos). Como saída, a ferramenta fornece ao usuário o conjunto de arcos primitivos (Chusho, 1987), o Grafo Def obtido do programa em teste, o programa instrumentado para teste, o conjunto de associações necessárias para satisfazer o critério selecionado e o conjunto de associações ainda não exercitadas. O conjunto de arcos primitivos consiste de arcos que uma vez executados garantem a execução de todos os demais arcos do grafo de programa.

A POKE-TOOL encontra-se disponível para os ambientes DOS e Unix. A versão para DOS possui interface simples, baseada em menus. A versão para Unix possui módulos funcionais cuja utilização se dá através de interface gráfica ou linha de comando (shell scripts). A interface gráfica permite ao usuário iniciante explorar e aprender os conceitos do teste estrutural e da própria ferramenta e oferece melhores recursos para a visualização dos casos de teste e dos requisitos a serem satisfeitos para cada critério. Entretanto, além de ser menos flexível do que os scripts de teste, requer constante interação do testador com a ferramenta, dificultando a realização de estudos empíricos. Quanto aos scripts, embora exijam esforço de programação e completo domínio tanto dos conceitos de teste quanto dos próprios programas que compõem a ferramenta, sua utilização possibilita a execução de longas sessões de teste em batch: o usuário pode construir um programa especificando o teste a ser realizado e a ferramenta simplesmente executa esse programa, permitindo que se economize tempo na atividade de teste devido à redução do número de interações com a ferramenta.

Embora a POKE-TOOL apóie a aplicação de vários critérios estruturais, em uma primeira etapa optou-se por utilizar apenas os critérios baseados em fluxo de controle: Todos-Nós e Todos-Arcos. Tais critérios, além de serem os mais utilizados da técnica estrutural, apresentam conceitos que servem como base para o entendimento de outros critérios de teste.

Para permitir a integração entre o CALM e a POKE-TOOL foi necessário definir um meio de comunicação (interface) entre ambos. Ressalta-se que tal interface deve ser o mais genérica possível de modo a possibilitar que outras ferramentas, além da POKE-TOOL, também possam ser utilizadas a partir do CALM. Nesse sentido, três aspectos foram considerados: o acesso ao código-fonte, a necessidade de um protocolo de comunicação e a forma de interação entre aluno e sistema.

Uma vez que o acesso ao código-fonte nem sempre é possível (e nem desejado), a solução encontrada foi lidar com os arquivos de saída produzidos pela ferramenta. Tal solução exige alguns esforços com respeito à decodificação de tais arquivos. A abordagem adotada -- baseada em arquivos -- requer que os dados produzidos pela ferramenta sejam padronizados conforme uma formatação pré-estabelecida. Visto que a plataforma escolhida é o CALM, a integração foi baseada em componentes de software -- caixas pretas com interface pública que permitem o acesso às funcionalidades do componente. Uniformidade e padronização são aspectos desejáveis na troca de dados, facilitando com isso qualquer eventual intervenção humana ou discussão sobre resultados de entrada e saída. Desse modo, optou-se pela formatação dos dados em XML (eXtensible Markup Language). No caso específico de teste de software, foi definido um conjunto de tags XML tais como Nó, Arco, Requisito e Critério.

Quanto à forma de interação entre aluno e sistema, definiu-se que as interfaces fossem completamente integradas ao CALM. Uma vez que o CALM pode ser visto como um sistema baseado na Web, uma forma natural de integração seria por meio de applets, responsáveis por invocar os comandos da POKE-TOOL e apresentar os resultados ao aluno.

Basicamente, a arquitetura de integração entre o CALM e a POKE-TOOL é composta por dois componentes de software (Figura 2.12). O componente CALM-Converter é responsável por encapsular os dados necessários à execução da POKE-TOOL. O componente POKE-Converter é responsável por receber tais dados e ativar os scripts da ferramenta. Toda saída é processada pelo POKE-Converter e devolvida ao CALM-Converter que, por sua vez, extrai tais dados e os apresenta ao aluno. Todos os dados são transmitidos por meio de invocação a métodos remotos (RMI) e estão em conformidade com o protocolo XML estabelecido.

Figura: Arquitetura de integração: CALM e POKE-TOOL.
\includegraphics[width=\textwidth]{arqintpoke.eps}

Como trabalhos futuros, destacam-se a definição de mecanismos que possibilitem a utilização da POKE-TOOL via scripts de teste e a aplicação de outros critérios estruturais apoiados pela ferramenta, além dos critérios baseados em fluxo de controle. Pretende-se ainda investigar a dificuldade na integração de outras ferramentas de teste ao CALM, avaliando o quão genérica é a interface desenvolvida, sugerindo possíveis modificações.

O trabalho resultou na elaboração do artigo ``Fostering Theoretical, Empirical and Tool Specific Knowledge in a Software Testing Learning Scenario'' (Barbosa et al., 2000a), publicado nos anais da International Conference on Engineering and Computer Education (ICECE'2000).


next up previous contents
Next: Autoria de materiais educacionais Up: Situações teste sob a Previous: Edição de conteúdos em   Sumário
Ivan Luiz Marques Ricarte 2001-03-16