Resumo: |
Os sistemas de software actuais apresentam geralmente interfaces gráficas para o utilizador (GUIs) cuja qualidade é essencial para o sucesso desses sistemas.
Correntemente, o teste de GUIs (com o objectivo de encontrar defeitos na interface ou na aplicação como um todo) é difícil e consome muito tempo e dinheiro, existindo poucas ferramentas e técnicas para auxiliar o processo de teste. A maioria dos métodos de teste de GUIs usados é essencialmente ad hoc, dando pouco ajuda na concepção dos casos de teste e na avaliação da adequação dos casos de teste desenvolvidos.
Os esforços no sentido da automação de teste de GUIs têm-se resumido praticamente ao desenvolvimento de ferramentas ditas de gravação/reprodução (capture/replay), comercialmente disponíveis no mercado. Estas ferramentas permitem gravar as interacções de um utilizador com a aplicação, gerando um guião de teste que pode ser reproduzido posteriormente. Entre outros problemas, estas ferramentas requerem ainda demasiado esforço humano e adiam a geração dos testes para o fim do desenvolvimento. São úteis para testes de regressão, e não tanto para descobrir defeitos em primeira instância.
À custa de um maior investimento na fase de especificação/modelação, os métodos e técnicas de teste baseados em especificações ou modelos formais podem ajudar a sistematizar e a automatizar a um nível mais elevado o processo de teste de GUIs, pois possibilitam a geração automática dos casos de teste. No entanto, esses métodos ainda não são comummente aplicados a GUIs. A disponibilidade de ambientes adequados de modelação, de mecanismos para controlar a explosão de casos de teste e de ferramentas para vencer a distância entre o modelo e a implementação, específicos para GUIs, são necessários para potenciar a adopção deste tipo de métodos.
Em trabalho recente anterior, a equipa de investigação da FEUP (Ana Paiva, João Faria e Raul Vidal), em cooperação com investigadores do grupo Foundations of Software Engineering da |
Resumo Os sistemas de software actuais apresentam geralmente interfaces gráficas para o utilizador (GUIs) cuja qualidade é essencial para o sucesso desses sistemas.
Correntemente, o teste de GUIs (com o objectivo de encontrar defeitos na interface ou na aplicação como um todo) é difícil e consome muito tempo e dinheiro, existindo poucas ferramentas e técnicas para auxiliar o processo de teste. A maioria dos métodos de teste de GUIs usados é essencialmente ad hoc, dando pouco ajuda na concepção dos casos de teste e na avaliação da adequação dos casos de teste desenvolvidos.
Os esforços no sentido da automação de teste de GUIs têm-se resumido praticamente ao desenvolvimento de ferramentas ditas de gravação/reprodução (capture/replay), comercialmente disponíveis no mercado. Estas ferramentas permitem gravar as interacções de um utilizador com a aplicação, gerando um guião de teste que pode ser reproduzido posteriormente. Entre outros problemas, estas ferramentas requerem ainda demasiado esforço humano e adiam a geração dos testes para o fim do desenvolvimento. São úteis para testes de regressão, e não tanto para descobrir defeitos em primeira instância.
À custa de um maior investimento na fase de especificação/modelação, os métodos e técnicas de teste baseados em especificações ou modelos formais podem ajudar a sistematizar e a automatizar a um nível mais elevado o processo de teste de GUIs, pois possibilitam a geração automática dos casos de teste. No entanto, esses métodos ainda não são comummente aplicados a GUIs. A disponibilidade de ambientes adequados de modelação, de mecanismos para controlar a explosão de casos de teste e de ferramentas para vencer a distância entre o modelo e a implementação, específicos para GUIs, são necessários para potenciar a adopção deste tipo de métodos.
Em trabalho recente anterior, a equipa de investigação da FEUP (Ana Paiva, João Faria e Raul Vidal), em cooperação com investigadores do grupo Foundations of Software Engineering da Microsoft Research (FSE/MR), desenvolveu algumas ferramentas e experiências no sentido de demonstrar a viabilidade de automatizar o teste de GUIs com base em especificações ou modelos formais. O grupo FSE/MR disponibilizou os instrumentos básicos para automatizar o teste de APIs com base em especificações formais: a linguagem de especificação Spec# (uma linguagem de especificação formal baseada em modelos, concebida como uma extensão de C#) e a ferramenta de teste Spec Explorer. A equipa da FEUP estendeu as ferramentas e técnicas para permitir a sua aplicação ao teste de GUIs: técnicas e bibliotecas auxiliares para modelar GUIs em Spec#; uma ferramenta para facilitar o mapeamento entre modelos e implementações de GUIs, e uma ferramenta para evitar a explosão de casos de teste tendo em consideração a estrutura hierárquica das GUIs. Foram realizadas experiências bem sucedidas com pequenas aplicações interactivas. Os resultados alcançados foram apresentados a profissionais de grupos de desenvolvimento de produtos, tendo recebido um interesse significativo. No entanto, algumas limitações da abordagem desenvolvida impedem ainda a sua adopção em contextos industriais: o tempo e esforço requeridos para construir os modelos formais das GUI é significativo, os profissionais envolvidos têm relutância em escrever especificações formais (preferem muito mais usar notações gráficas a que estão habituados), e o esforço requerido para configurar o processo de geração de forma a garantir a qualidade dos testes gerados pode ser significativo.
O objectivo deste projecto de investigação é desenvolver um conjunto de ferramentas e técnicas para automatizar e facilitar o teste de GUIs com base em especificações ou modelos, endereçando as limitações referidas, de forma a possibilitar a utilização em ambientes industriais. |