- Engenharia Informática
- Inteligência Artificial e Ciência de Dados
- Segurança Informática
- Design e Multimédia
- Inteligência Artifical
- Computação Musical e Design de Som
- Acertar o Rumo - Programação em Java
Acesso Privado
Titulo Estágio
Criação automática de modelos de GUIs
Área Tecnológica
Sistemas de Informação
Local do Estágio
TELBIT - Aveiro
Enquadramento
A criação de casos de teste para interfaces gráficas tem recorrido principalmente à gravação de sessões de utilização de uma aplicação, sendo os eventos posteriormente gravados em forma de script para mais rapidamente poderem ser duplicados e alterados. Este processo é muito lento, principalmente durante a fase de gravação, e por isso têm-se procurado gerar automaticamente casos de teste com o mínimo de intervenção humana. Em aplicações comerciais ainda há um grande vazio nesta área. No entanto, alguns investigadores, dos quais se destaca o Dr. Atif Memon da Universidade de Maryland, têm vindo a trabalhar em técnicas de engenharia reversa de modo a que se possa extrair automaticamente um modelo da aplicação a ser testada. Estas técnicas facilitam o uso de práticas de Testes Baseados em Modelos na área específica de testes à interface gráfica de aplicações, sendo desta maneira possível de gerar automaticamente casos de teste. Nas frameworks .Net e Java, por exemplo, já existe suporte para o uso de Reflection o que nos permite extrair dados sobre a estrutura e comportamento da aplicação. O facto de estas frameworks correrem em cima de uma máquina virtual facilita a extracção de informação sobre o programa que vai ser testado.
As interfaces gráficas são, por natureza, máquinas de estado, cuja combinação de estados possíveis tem uma evolução exponencial conforme a complexidade da aplicação a ser testada. Por esse motivo o próprio modelo da interface tem vindo a ser estudado de modo a que este seja: simples, para permitir que o uso do modelo seja eficiente; e completo, para que possa haver um elevado grau de confiança nos casos de teste gerados. Do trabalho de investigação já feito na área ressalta-se as estruturas propostas pelo Dr. Atif Memon, os Grafos de Fluxo de Eventos (EFG em inglês) e pela Dr. Ana Paiva, as Máquinas de Estado Finitas Hierárquicas (HFSM em inglês). Os primeiros permitem saber num determinado instante (sendo que instante não é dado pelo tempo mas sim pelas acções executadas anteriormente) que acções podem ser executadas, e é utilizado pelo autor para gerar sequências de acções que compõem os casos de teste. As segundas são uma abordagem mais natural à modelação de interfaces. O uso de HFSMs permite conter a explosão de estados possíveis da interface, isolando os elementos-filho dos elementos-filho de outros elementos-pai. Um possível modelo a ser testado poderá ser a combinação destas duas estruturas que permita ter a informação dos HFSMs numa estrutura “temporalmente” dinâmica como os EFGs.
Objetivo
Neste projecto pretende-se implementar uma aplicação para a instrumentação de aplicações com interface gráfico, aplicando técnicas de engenharia reversa para a extracção de modelos da interface gráfica que possam ser usados para gerar casos de teste.
Para tal, o estado da arte vai ter uma importância vital na procura de outras técnicas, para além das já mencionadas anteriormente, que possam ser aplicadas no desenvolvimento da aplicação.
Esta aplicação deverá conseguir abrir uma aplicação em Java (AWT/Swing/SWT) e/ou C# (WinForms/WPF), analisando a sua estrutura e comportamento (eventos possíveis de ser executados), criando um modelo que possa depois ser manipulado e usado para gerar casos de teste sobre uma aplicação alvo. O relevo deve ser dado sobre aplicações Java Swing e C# WinForms. O modelo adoptado deverá ser implementado não só como estrutura de dados, mas também visualmente de modo a que seja mais facilmente manipulado e validado pelo tester.
Plano de Trabalhos - Semestre 1
Plano de Trabalhos para o 1º Semestre (Tempo parcial 16h/s): No primeiro semestre o trabalho de estágio deverá incidir sobre a análise do estado da arte (1ª fase) e a elaboração de uma proposta para a arquitectura da aplicação que irá instrumentar aplicações em Java e C# (2ª fase). Durante a primeira fase, a decorrer de Setembro a Novembro, é requerido ao estagiário que produza resumos dos artigos lidos e que produza, no final desta fase, um resumo do estado da arte. Na segunda fase, a decorrer de Dezembro a Fevereiro, o estagiário deverá elaborar um documento onde esteja descrita a sua proposta inicial para a aplicação.
Plano de Trabalhos - Semestre 2
Plano de Trabalhos para o 2º Semestre (Tempo inteiro 36h/s):
No segundo semestre decorrerá a implementação da aplicação, que irá decorrer em três fases:
a) implementação de uma aplicação que receberá a informação sobre a aplicação que está a ser instrumentada e deverá mostrar a visualização do modelo, durante o mês de Março;
b) implementação da aplicação/módulo que irá instrumentar aplicações escritas em Java, a realizar durante o mês de Abril;
c) implementação da aplicação/módulo que irá instrumentar aplicações escritas em C#, a realizar durante o mês de Maio.
Durante o mês de Junho deverá ser escrito o relatório final de estágio.
Condições
O estagiário terá um posto de trabalho fixo na sede da empresa.
O estágio é remunerado.
Observações
Referências bibliográficas: Paiva, A., Tillmann, N., Faria, J., & Vidal, R. (2005). Modeling and testing hierarchical GUIs. Memon, A., Banerjee, Memon, A., Banerjee, Observações ou Elementos Adicionais: De preferência o candidato deve ter conhecimentos em Java e C#.
Aspectos inovadores da proposta:
O trabalho de estágio é sobre uma área ainda em investigação e por isso, qualquer proposta pode ter cariz inovador para o campo.
Orientador
José Pedro dos Santos Silva Tavares
jtavares@telbit.pt 📩