• Nenhum resultado encontrado

Estrutura para Utilização de Recuperação de Imagens Baseada em Conteúdo em Oráculos de Teste de Software com Saída Gráfica

N/A
N/A
Protected

Academic year: 2021

Share "Estrutura para Utilização de Recuperação de Imagens Baseada em Conteúdo em Oráculos de Teste de Software com Saída Gráfica"

Copied!
6
0
0

Texto

(1)

Estrutura para Utilização de Recuperação de Imagens Baseada em Conteúdo em

Oráculos de Teste de Software com Saída Gráfica

Rafael A. P. Oliveira

1

, Márcio E. Delamaro

2

, Fátima L. S. Nunes

1 1

Univem – Centro Universitário Eurípedes de Marília

Av. Hygino Muzzi Filho, 529, CEP 17509-901, Marília, SP

2

ICMC/USP - Instituto de Ciências Matemáticas e de Computação, Universidade de São Paulo,

Av. do Trabalhador São-Carlense, 400, CEP 13560-970,

São Carlos, SP

rafa@univem.edu.br, delamaro@icmc.usp.br, fatima@univem.edu.br

Abstract

This paper presented a prototype of a system whose goal is to highlight the opportunity to explore computer vision applied in the Content-based Image Retrievial (CBIR), in order to testing oracles for software that generate graphical output. Using libraries of Java programming language Java, a structure that allows the alliance of two such disparate areas in the current scenario of computing has been implemented. A great flexibility was given to the structure, so that the user chooses the way of analysis of images. In this context it is possible such a user choose the characteristics that must be extracted from the images and how these should be considered in the test, thus creating what was called ‘Graph Oracle’.

1. Introdução

Embalados pela contínua evolução do meio gráfico dos mais distintos sistemas computacionais, os aplicativos que têm como finalidade de processamento alguma saída gráfica são muito comuns em diversas áreas de conhecimento. Um exemplo evidente é a área das ciências médicas que ganhou muito conforto com os esquemas CAD (Computer-Aided Diagnosis) usados com a finalidade de auxiliar diagnósticos médicos.

Tais sistemas devem ter o acerto como característica fundamental. É essencial que tais programas forneçam alto grau de confiança e, para tanto, é necessário que sejam implantadas técnicas de teste de software em seu processo de desenvolvimento.

O presente trabalho visa a apresentar um sistema para utilizar Recuperação de Imagem Baseada em Conteúdo (CBIR - Content-Based Image Retrieval), para apoiar a criação de oráculos de teste, que neste caso poderão ser chamados de “oráculos gráficos”. Esses são

capazes de apoiar o teste do produto final de softwares com saída gráfica, avaliando assim seu funcionamento de uma forma bem objetiva.

A primeira, a segunda e a terceira seções são introdutórias e visam a apresentar alguns conceitos importantes que foram levados em consideração para a idealização do projeto. A forma como se deve usar a parametrização de extratores de características de imagens é apresentada na quarta seção. Um exemplo de utilização do protótipo pode ser visto na quinta seção do artigo, que apresenta os resultados obtidos até o momento. Por fim, a última seção apresenta as conclusões preliminares do trabalho e as contribuições para as quais ele pode remeter.

2. Oráculos de teste

Todo desenvolvedor de software sabe que no mercado competitivo atual, a qualidade de seu produto final é fator essencial em qualquer processo de desenvolvimento. Também é de domínio dos desenvolvedores que a implantação de atividades de avaliação e testes, durante todo o processo de desenvolvimento, eleva consideravelmente o tempo e o custo do projeto [2].

Isso se dá em função da grande dificuldade encontrada quando se busca uma definição precisa do modo de avaliar a qualidade de determinado processamento. Dificuldade similar é encontrada na procura de um conjunto ideal de testes que seja completo o bastante para revelar os mais diferentes defeitos.

Nesse contexto é que se insere o conceito genérico de oráculo, definido como “mecanismo que se utiliza para definir a saída ou comportamento esperado de uma execução qualquer” [4]. É importante salientar que diferentes aspectos influenciam no modo de obtenção de um oráculo para determinado sistema.

Quando se pode extrair o comportamento de determinado processamento usando um modelo formal, é possível automatizar uma função de oráculo por intermédio de um comparador entre a saída produzida e a

(2)

saída esperada definida por meio do modelo.

Oráculos automatizados de teste são componentes essenciais na atividade de teste de software. Definir um Oráculo implica em sintetizar uma estrutura formal, ou até mesmo informal, automatizada, que seja capaz de oferecer ao usuário um veredicto indicativo da exatidão de uma execução do sistema ao final das aplicações do teste. Sendo assim, pode ser dito que oráculo é o mecanismo que define e dá um veredicto acerca da correção de uma execução de um programa em teste [1].

2.1. Oráculos gráficos e CBIR

Quando se trata de processamento com saídas gráficas, o problema de determinar a correção torna-se mais complexo, uma vez que nem sempre estão claras quais são as características que devem ser consideradas. Outro obstáculo se deve ao fato de que o formato gráfico não é trivial para a automação de testes. Em particular, decidir se a saída gerada por uma execução corresponde à saída esperada – papel do oráculo de teste – é uma tarefa complicada. É exatamente o mesmo problema que se tem ao efetuar-se uma busca em uma base de dados: quando a busca é textual, ela pode ser realizada facilmente, existindo para tanto técnicas conhecidas e consolidadas. Quando se trata de busca baseada em conteúdo gráfico, a situação se torna mais complexa.

O princípio dos sistemas que utilizam CBIR é pesquisar em base de imagens uma determinada quantidade de imagens similares a uma imagem de consulta, de acordo com um ou mais critérios fornecidos [7]. Os critérios de similaridade de imagens são obtidos a partir da extração de características de imagem como cor, textura e forma. A extração de características de imagens é uma etapa fundamental em um sistema de recuperação de imagens baseada em conteúdo. As características representam alguma propriedade (quantitativa ou qualitativa) relativa ao objeto, à região ou à imagem toda [7]. Essas propriedades são agrupadas em um vetor de características.

Dada uma imagem modelo, a busca é realizada calculando se a proximidade do seu vetor de características em relação aos vetores de características das imagens armazenadas na base de imagens. Essa comparação é realizada por meio de funções de similaridade [7].

A forma com a qual se utilizou os conceitos apresentados para a confecção de oráculos gráficos está descrita na seção seguinte.

3. Modelo de CBIR para Oráculos gráficos

Para a concepção do protótipo de Oráculo

Gráfico aproveitou-se do princípio de CBIR para criar uma estrutura flexível de tal maneira que seu próprio usuário-testador fosse capaz de selecionar quais características devem ser consideradas em um teste e como as mesmas devem ser parametrizadas. Um diagrama do funcionamento do protótipo pode ser observado na Figura 1.

Figura 1. Estrutura obtida do protótipo desenvolvido.

Obteve-se, assim, um ambiente que possibilita a criação de extratores e funções de similaridade particulares. Dessa forma, os critérios do teste que serão realizados dependerão diretamente do processamento de imagens para comparar o resultado da execução de um programa que tenha saída gráfica com as características de uma imagem modelo. O sistema foi implementado na linguagem de programação Java, devido principalmente às virtudes de portabilidade e flexibilidade por ela apresentadas. Em complemento a esta linguagem de programação foi utilizada a API (Application Program

Interface) JAI (Java Advanced Image) [5], que facilita a

manipulação de imagens, implementando uma grande quantidade de operadores e transformações sobre eles.

A flexibilidade da estrutura possibilita que extratores das mais variadas características de imagens possam ser instalados na ferramenta e usados nos mais variados testes. Isso acontece porque é fácil a adaptação de classes extratoras de características de imagens para sua utilização na estrutura. Uma instalação de um extrator de característica nada mais é do que a realização de uma cópia do pacote principal das classes Java de tal extrator para um diretório de conhecimento da estrutura que administrará o ambiente.

Assim, basta fazer com que tal classe extratora de característica realize a implementação de uma determinada interface Java, chamada de IExtractor. Esta interface deve ser implementada por todos os extratores de características de imagens que serão instalados para uso do programa. É um contrato ou um protocolo que

(3)

deve ser seguido por uma classe para que ela seja considerada um Extrator de características de imagens válido.

Tal interface contém alguns métodos Java que são de fundamental importância durante a parametrização dos testes, possibilitando o sucesso do oráculo gráfico.

Classes Java que implementam funções de similaridade podem ser instaladas na estrutura da mesma maneira que são instalados os extratores de características. A interface Java que é necessária para o funcionamento adequado das funções de similaridade é nomeada no projeto de ISimilarity. Tal interface consiste basicamente de alguns métodos que facilitam a manipulação dos extratores escolhidos pelo usuário para serem usados nos testes.

Para cada tipo de acessório, extrator de característica ou função de similaridade, o programa mantém um arquivo no formato XML (eXtensible Markup

Language) de estrutura simples, que contém os nomes de

instalação dos acessórios e os nomes da classes principais dentro do pacote de classes que será instalado. Cada vez que o núcleo do sistema é executado, ele consulta esses arquivos para saber quais são os extratores e funções de similaridade disponíveis para uso.

Em função da possibilidade de ocorrerem problemas de acesso aos diretórios onde são armazenados os extratores e as funções de similaridade, foram implementados dois tipos de instalações: locais e globais.

Instalações globais são aquelas realizadas em um diretório particular de conhecimento do núcleo da estrutura. As instalações locais são aquelas em que o pacote com as classes do acessório a ser instalado é copiado para um diretório dentro da área do usuário, eliminando possíveis problemas de acesso aos arquivos durante uma execução de comando do usuário ao oráculo gráfico.

3.1. Instalações globais de extratores de características e funções de similaridade

Para realizar a instalação de um acessório de forma global é necessário que sejam passados os seguintes argumentos:

"install" - que corresponde ao comando de instalação de acessórios na estrutura, logo deve ser o primeiro parâmetro do programa (args[0]);

"Nome_do_Acessorio" - corresponde ao nome pelo qual o acessório será identificado na ferramenta, deve ser inédito para que não haja conflito com outro acessório instalado. Este deve ser o segundo argumento de chamada do programa (args[1]);

“Diretório da raiz do acessório" - corresponde ao caminho em disco até o diretório raiz do acessório a

ser instalado. O caractere "/" deve ser usado como separador de pastas, este deve ser o terceiro parâmetro passado à estrutura quando se deseja instalar um acessório local (args[2]);

"Nome completo da classe principal do acessório", trata-se do nome da classe, usando a notação de “.” para separar pacotes e classe. Este deve ser o quarto e último argumento exigido para a instalação bem sucedida de um extrator de características de imagem ou uma função de similaridade (args[3]);

A Figura 2 ilustra como podem ser passados os comandos de instalação de acessórios globais à estrutura.

Figura 2. Parâmetros necessários para a instalação global de acessórios na estrutura.

No exemplo, um extrator de características de imagens denominado pelo usuário de “Extrator de Área” e com classe principal br.extractors.MainExtArea é instalado. Isso implica em informar ao sistema que tal classe implementa IExtractor e/ou ISimilarity. Após o reconhecimento do comando, a estrutura verificará qual interface é implementada, ou até mesmo se as duas interfaces são implementadas pela classe referenciada. Caso isso se confirme ela fará a cópia do pacote inteiro para um diretório de seu conhecimento.

Antes da realização da cópia, o arquivo XML de controle de acessórios é atualizado com o nome do acessório instalado e sua classe principal. Caso já exista algum acessório instalado com aquele mesmo nome, uma mensagem de erro é enviada para o usuário, e o diretório não é copiado para o destino.

Pode-se perceber que há a possibilidade de um acessório ser enxergado pela estrutura como função de similaridade e extrator de característica de imagens ao mesmo tempo. Para isso, basta que ao executar o programa, a classe principal passada como quarto argumento implemente as duas interfaces definidas correspondentes. Quando isso acontecer, o item em processo de instalação será copiado para cada um dos diretórios de acessório, ou seja, uma cópia do pacote raiz será criada no diretório de extratores de características e

(4)

outra cópia será criada no diretório de funções de similaridade.

3.2. Instalações locais de extratores de características e funções de similaridade

Para realizar a instalação de um acessório de forma local, ou seja, para que tal item tenha seu pacote raiz copiado para um diretório de conhecimento da estrutura, que seja localizado dentro da área do usuário, os comandos que devem ser passados durante a execução do sistema são os mesmo de uma instalação global, exceto que o primeiro argumento deve ser “localinstall” em vez de “install”.

Como pode ser observado, os comandos para instalações locais são muito similares aos comandos de instalações globais. Além disso, instalações de funções de similaridade e extratores de características de imagens são iguais e a diferenciação destes acessórios fica a critério da estrutura.

3.3. Acesso aos acessórios instalados corretamente no protótipo

A estrutura criada também permite ao usuário verificar quais são os acessórios que estão disponíveis para que ele os utilize da forma como desejar para customizar um oráculo gráfico qualquer.

Podem ser realizados dois tipos de buscas. A primeira delas é a busca que realiza pesquisa fundamentando-se no nome do acessório e no tipo deste acessório, que devem ser passados como parâmetro para o programa. Esta pesquisa revela se determinado acessório está instalado com sucesso na ferramenta. Para isso é necessário que os seguintes argumentos sejam fornecidos:

"search" - corresponde ao parâmetro entendido pela estrutura como comando de busca (args[0]);

"extractor" ou "function" - será o parâmetro que determina o tipo de acessório que está sendo buscado nos arquivos XML comandados pela estrutura (args[1]);

"nome_do_acessorio" - deve corresponder ao nome de instalação do item buscado (args[2]);

A estrutura permite também a busca por todos os itens de determinado tipo de acessório. Esse tipo de busca retorna uma pesquisa contendo o nome de instalação e a classe principal de todos os acessórios de determinado tipo passado como parâmetro à estrutura. Os comandos de busca são similares aos comandos da pesquisa por nome. No entanto, no comando que faz referência ao nome do item a ser buscado, deve ser passado como parâmetro o nome “all”, para referenciar a todos os acessórios.

3.4. CBIR para Definição de Oráculos de Teste

A definição de oráculos para testar programas com um processamento gráfico, ou seja, que têm o resultado de execução em uma forma não textual, é uma atividade complexa.

Como já se sabe, o CBIR é usado para fazer buscas em uma base de imagens, de uma forma geral, seguindo juízos de similaridade. Tais juízos ou critérios de similaridade entre imagens são obtidos através da extração de algumas de suas características. Em linhas gerais, tem-se uma imagem de consulta qualquer da qual se pode extrair características e compará-las com as características das imagens armazenadas em uma base de dados, recuperando as que lhe forem conveniente.

Dependendo do objetivo que se tenha, a extração de características de uma imagem pode variar sobremaneira. Embasado nisso flexionou-se a estrutura de tal forma que seu usuário possa criar um oráculo gráfico particular para cada teste. O formato que possibilita essa manipulação está explicado e exemplificado nas seções seguintes.

4. Parametrização dos extratores de

características de imagens nos testes

Comandos passados ao protótipo possibilitam ajustar os testes de forma que qualquer função de similaridade, previamente instalada na ferramenta possa ser associada a quaisquer extratores de características de imagens. Isso é possível utilizando-se um parametrizador construído com auxílio da ferramenta Javacc [6], que é uma geradora de analisadores sintáticos em linguagem Java. O parametrizador lê um arquivo com a descrição do oráculo e passa essa descrição para o núcleo da ferramenta.

Um arquivo de parâmetros deve ser iniciado com a palavra reservada "similarity", seguida do nome da função de similaridade que é desejada no teste, a qual deve estar previamente instalada na ferramenta. Verificada a validade da função de similaridade, um objeto da função de similaridade escolhida é instanciado, ficando, assim, à disposição do oráculo que será criado.

Uma função de similaridade sempre trabalha associada a, no mínimo, um extrator de características. Sendo assim, o parâmetro seguinte deve ser a palavra reservada "extractor", seguida do nome de um extrator já instalado na ferramenta. Dessa forma a estrutura verifica a validade de instalação do extrator e, caso ele seja válido, adiciona o extrator ao oráculo. A parte mais flexível e interessante proporcionada pela estrutura propicia que o usuário ajuste os parâmetros particulares de cada extrator de características de imagens. A seqüência de parâmetros para que isso seja entendido com sucesso pela estrutura

(5)

deve aparecer entre os caracteres de abertura e fechamento de chaves na seguinte seqüência: nome do parâmetro, sinal de igual para representar atribuição, valor de ajuste do parâmetro. Parâmetros do tipo vetor devem ser designados separados por vírgulas e entre os caracteres de abertura e fechamento de colchetes. Dessa forma, podem existir vários extratores associados à função de similaridade, desde que todos estejam instalados corretamente na estrutura. Um exemplo de uso dessa estrutura é apresentado na próxima seção.

Mais de uma função de similaridade pode ser ajustada no mesmo arquivo de parâmetros de teste, desde que cada uma delas tenha pelo menos um extrator adicionado.

4.1. Uso de acessórios para gerar Oráculos gráficos

Para ilustrar o trabalho realizado pelo protótipo, criaram-se alguns acessórios para a apresentação de um exemplo. Trata-se de dois extratores de características de imagens e uma função de similaridade.

A Função Similaridade que aqui será usada é muito conhecida, trata-se do cálculo da distância Euclidiana entre dois vetores de características de imagens [3]. Estes vetores de características serão povoados com os valores resultantes dos extratores de características denominados “Diâmetro” e/ou “Área”.

O extrator de diâmetro foi implementado para retornar a maior distância entre dois extremos de uma elipse qualquer, sendo normalizado em função da área da figura em teste. O extrator de área foi implementado para retornar um valor normalizado da área da figura.

A Figura 3 exemplifica a forma com a qual a estrutura pode ser manipulada para realizar um teste utilizando-se dos acessórios acima descritos.

Figura 3. Exemplo de comandos de parametrização.

No exemplo da Figura 3, o oráculo gráfico trata-se de uma associação da função de similaridade denominada ‘Euclidiana’, utilizando-se o extrator de área, denominado apenas de “Area” pela estrutura, com o parâmetro ‘thr’, que corresponde à variação permitida máxima entre os pixels, com valor um. Para finalizar, o oráculo utiliza o extrator de diâmetro, denominado apenas de “Diameter”, sem ajuste de parâmetros.

5. Resultados obtidos

O resultado do trabalho realizado até o momento foi uma estrutura para ser utilizada ou associada a outras ferramentas, especificamente em automatização de oráculos de teste para programas com saída gráfica empregando-se técnicas de CBIR para flexibilizar as avaliações.

Os mais diversos extratores de características de imagens podem ser adaptados de modo que funcionem sob a estrutura criada, o mesmo podendo acontecer com funções de similaridade, bastando que o testador verifique qual característica e como a mesma deve ser comparada no teste.

Obteve-se assim uma ferramenta flexível o bastante para que seus usuários possam customizar cada teste através da adição de extratores às funções de similaridade e de modificações nos parâmetros dos extratores de características, criando assim seu próprio oráculo gráfico.

5.1. Exemplo de execução do oráculo gráfico

A Figura 4 apresenta uma imagem modelo, cujas características de área e diâmetro devem ser comparadas às correspondentes características de uma imagem que o usuário escolher, usando a distância Euclidiana como critério para mensurar a similaridade.

Figura 4. Modelo considerado como ideal para o caso de teste (tamanho (400x300)).

O resultado da similaridade obtido pelo comando apresentado pelo oráculo gráfico da Figura 3, levando-se em consideração a imagem modelo e a imagem apresentada na Figura 5, tem o seguinte valor “0.0798375103291401”.

É importante salientar que na função de similaridade da distância Euclidiana, quanto mais similares forem as imagens (considerando as características utilizadas), mais o valor de retorno se aproxima de zero.

(6)

Figura 5. Figura que teve sua similaridade comparada à imagem modelo (Figura 4),(tamanho

(400x300)).

Observa-se a imagem apresentada na Figura 6 que se trata de uma imagem com o tamanho maior que o tamanho da figura modelo, por este motivo é que foi salientado que o retorno é normalizado, levando-se em conta a área da imagem em teste. Sendo assim, o resultado obtido quando se aplica o mesmo oráculo gráfico para tal imagem terá o valor “0.04652242538140137”.

Utilizando-se os critérios do oráculo de teste citados para exemplificar o funcionamento da estrutura, ou seja, um extrator de área com a variação máxima de pixels valendo “um” e um extrator de diâmetro normalizado em função da área da imagem, a imagem da Figura 6 é mais similar à imagem modelo do que àquela apresentada na Figura 5. Isso se dá em função do valor de similaridade aqui obtido ser mais próximo de zero que o valor resultando do outro exemplo.

Figura 6. Nova figura que terá sua similaridade comparada à imagem modelo (tamanho

(400x400)).

Para concluir os testes, aproveitou-se a mesma imagem da Figura 5, desta vez com uma resolução de 400x400 pixels, e mais uma vez baseando-se no oráculo gráfico proposto pela Figura 3, tendo como modelo de execução a Figura 4. Obteve-se o seguinte resultado “0.024512683171874945”. Logo se concluí que a imagem da Figura 5, quando na resolução 400x400 pixels é mais similar que a Figura 6, em relação à imagem modelo.

6. Conclusões

Os oráculos são baseados no armazenamento dos resultados da execução de outros programas. Observa-se que a complexidade de sua automatização é diretamente proporcional à complexidade de sua saída. Dessa forma, quando a saída de processamento é complexa, em particular, no formato gráfico, sua automatização também será complexa.

A contribuição almejada neste projeto é inédita, uma vez que se pretende utilizar um conceito relativamente novo na Computação (recuperação baseada em conteúdo) para realizar testes em programas com saídas gráficas, que são pouco explorados na literatura.

Referências

[1] Delamaro, M. E., Maldonado, J. C., Mathur, A. P. Interface

Mutation: An approach for integration testing. IEEE Transactions on Software Engineering, v. 27, n. 3, p. 228-247,

2001.

[2] Delamaro, M. E., Maldonado, J. C., Jino, M. Introdução ao

teste de Software. – Rio de Janeiro: Elsevier, 2007.

[3] Gato, H. E. R., Nunes, F. L. S., Schiabel, H. Uma proposta de recuperação de imagens mamográficas baseada em conteúdo. In: IX Congresso Brasileiro de Informática em Saúde. Nanais do Congresso Brasileiro de Informática em Saúde.Ribeirão Preto, 2004.

[4] Hoffman, D., Using oracles in testing automation. Pacific Northwest Software Conference, (PNSQC, 2001).

[5] JAI, (2008) disponível em

http://java.sun.com/products/java-media/jai/downloads/download-1_1_2.html, acessada em 05 de

maio de 2008.

[6] Javacc, disponível em https://javacc.dev.java.net/, acessada em 20 de maio de 2008.

[7] Santos, A. P. O., (2006), Recuperação de imagens

mamográficas baseada em conteúdo. Marília, p.21. Trabalho de

conclusão de curso apresentada ao Centro Universitário Eurípedes de Marília – Univem.

Referências

Documentos relacionados

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

 Buscar nos manuais pedagógicos, orientações para tentar solucionar o problema de pesquisa do presente trabalho. Ou seja, elucidar que propostas de ensino em

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

servidores, software, equipamento de rede, etc, clientes da IaaS essencialmente alugam estes recursos como um serviço terceirizado completo...

Para disciplinar o processo de desenvolvimento, a Engenharia de Usabilidade, também conceituada e descrita neste capítulo, descreve os métodos estruturados, a

The strict partition problem is relaxed into a bi-objective set covering problem with k-cliques which allows over-covered and uncovered nodes.. The information extracted

Atualmente os currículos em ensino de ciências sinalizam que os conteúdos difundidos em sala de aula devem proporcionar ao educando o desenvolvimento de competências e habilidades

Contudo, sendo um campo de pesquisa e de atuação muito específico e novo no Brasil, ainda existe uma série de dificuldades para a eleição de parâmetros de conservação